@huntsman-cancer-institute/cod 16.0.0 → 17.0.0

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 (56) hide show
  1. package/cod.module.d.ts +31 -31
  2. package/components/attribute-absolute.component.d.ts +28 -28
  3. package/components/attribute-base.d.ts +135 -135
  4. package/components/attribute-configuration.component.d.ts +52 -52
  5. package/components/attribute-container.component.d.ts +50 -50
  6. package/components/attribute-default.component.d.ts +20 -20
  7. package/components/attribute-edit.component.d.ts +15 -15
  8. package/components/attribute-flex.component.d.ts +25 -25
  9. package/date/date-util.d.ts +9 -9
  10. package/esm2022/cod.module.mjs +119 -119
  11. package/esm2022/components/attribute-absolute.component.mjs +104 -104
  12. package/esm2022/components/attribute-base.mjs +564 -564
  13. package/esm2022/components/attribute-configuration.component.mjs +138 -138
  14. package/esm2022/components/attribute-container.component.mjs +155 -155
  15. package/esm2022/components/attribute-default.component.mjs +63 -63
  16. package/esm2022/components/attribute-edit.component.mjs +33 -33
  17. package/esm2022/components/attribute-flex.component.mjs +58 -58
  18. package/esm2022/date/date-util.mjs +59 -59
  19. package/esm2022/huntsman-cancer-institute-cod.mjs +4 -4
  20. package/esm2022/index.mjs +20 -20
  21. package/esm2022/model/attribute-choice.entity.mjs +1 -1
  22. package/esm2022/model/attribute-configuration.dto.mjs +1 -1
  23. package/esm2022/model/attribute-configuration.entity.mjs +1 -1
  24. package/esm2022/model/attribute-container.entity.mjs +1 -1
  25. package/esm2022/model/attribute-dictionary.entity.mjs +1 -1
  26. package/esm2022/model/attribute-long-text.entity.mjs +1 -1
  27. package/esm2022/model/attribute-value-grid-row.entity.mjs +1 -1
  28. package/esm2022/model/attribute-value-set.entity.mjs +1 -1
  29. package/esm2022/model/attribute-value.entity.mjs +2 -2
  30. package/esm2022/model/attribute.entity.mjs +1 -1
  31. package/esm2022/model/dictionary-entries.dto.mjs +2 -2
  32. package/esm2022/model/extractable-field-status.entity.mjs +1 -1
  33. package/esm2022/model/graphical-attribute.entity.mjs +1 -1
  34. package/esm2022/model/pre-eval.dto.mjs +2 -2
  35. package/esm2022/pipes/is-group-attribute.pipe.mjs +32 -32
  36. package/esm2022/services/attribute.service.mjs +1211 -1211
  37. package/fesm2022/huntsman-cancer-institute-cod.mjs +2409 -2409
  38. package/fesm2022/huntsman-cancer-institute-cod.mjs.map +1 -1
  39. package/index.d.ts +27 -27
  40. package/model/attribute-choice.entity.d.ts +16 -16
  41. package/model/attribute-configuration.dto.d.ts +13 -13
  42. package/model/attribute-configuration.entity.d.ts +12 -12
  43. package/model/attribute-container.entity.d.ts +9 -9
  44. package/model/attribute-dictionary.entity.d.ts +12 -12
  45. package/model/attribute-long-text.entity.d.ts +4 -4
  46. package/model/attribute-value-grid-row.entity.d.ts +7 -7
  47. package/model/attribute-value-set.entity.d.ts +11 -11
  48. package/model/attribute-value.entity.d.ts +28 -28
  49. package/model/attribute.entity.d.ts +26 -26
  50. package/model/dictionary-entries.dto.d.ts +6 -6
  51. package/model/extractable-field-status.entity.d.ts +8 -8
  52. package/model/graphical-attribute.entity.d.ts +13 -13
  53. package/model/pre-eval.dto.d.ts +5 -5
  54. package/package.json +23 -7
  55. package/pipes/is-group-attribute.pipe.d.ts +13 -13
  56. package/services/attribute.service.d.ts +263 -263
@@ -1,121 +1,121 @@
1
- import { ChangeDetectorRef, Component, ElementRef, Input, Renderer2, HostBinding } from "@angular/core";
2
- import { Subscription } from "rxjs";
3
- import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
4
- import { AttributeService } from "../services/attribute.service";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../services/attribute.service";
7
- import * as i2 from "@ng-bootstrap/ng-bootstrap";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@huntsman-cancer-institute/misc";
10
- import * as i5 from "./attribute-absolute.component";
11
- import * as i6 from "./attribute-flex.component";
12
- import * as i7 from "./attribute-edit.component";
13
- import * as i8 from "../pipes/is-group-attribute.pipe";
14
- /**
15
- * This component should be added on to any screen that displays a container with COD content. This container
16
- * represents the one of the containers, which in turn contain attributes which display those values in the
17
- * attributeValueSet.
18
- */
19
- export class AttributeContainerComponent {
20
- constructor(attributeService, elementRef, renderer, changeDetectorRef, modalService) {
21
- this.attributeService = attributeService;
22
- this.elementRef = elementRef;
23
- this.renderer = renderer;
24
- this.changeDetectorRef = changeDetectorRef;
25
- this.modalService = modalService;
26
- this.classList = "hci-attribute-configuration hci-cod d-flex flex-column flex-grow-1";
27
- this.editInline = true;
28
- this.editPopup = false;
29
- this.editable = true;
30
- this.windowDimension = {};
31
- this.subscriptions = new Subscription();
32
- this.getBusySubjects = () => {
33
- let subjects = [];
34
- //subjects.push(this.attributeService.getAttributeConfigurationLoadingSubject());
35
- subjects.push(this.attributeService.getLoadingSubject());
36
- return subjects;
37
- };
38
- }
39
- /**
40
- * Upon init, subscribe to the configuration and value set.
41
- */
42
- ngOnInit() {
43
- if (!this.editable) {
44
- this.editInline = false;
45
- this.editPopup = false;
46
- }
47
- this.attributeService.setAttributeConfigurationById(this.idAttributeConfiguration, this.idAttributeValueSet, this.idParentObject);
48
- this.subscriptions.add(this.attributeService.getAttributeConfigurationSubject().subscribe((attributeConfiguration) => {
49
- if (attributeConfiguration) {
50
- this.attributeConfiguration = attributeConfiguration;
51
- if (this.idAttributeContainer !== undefined) {
52
- this.attributeContainer = this.getAttributeContainerById(this.idAttributeContainer);
53
- }
54
- if (this.indexOfContainer !== undefined) {
55
- if (this.attributeConfiguration.attributeContainers[this.indexOfContainer]) {
56
- this.attributeContainer = this.attributeConfiguration.attributeContainers[this.indexOfContainer];
57
- }
58
- }
59
- }
60
- }));
61
- this.subscriptions.add(this.attributeService.attributeConfigurationDimensionSubject.subscribe((windowDimension) => {
62
- if (windowDimension) {
63
- this.windowDimension = windowDimension;
64
- }
65
- }));
66
- this.subscriptions.add(this.attributeService.getAttributeValueSet().subscribe((attributeValueSet) => {
67
- this.attributeValueSet = attributeValueSet;
68
- if (this.attributeValueSet) {
69
- this.attributeService.notifyAttributes();
70
- }
71
- }));
72
- }
73
- set boundData(value) {
74
- this.attributeService.setBoundData(value);
75
- }
76
- ngOnDestroy() {
77
- this.subscriptions.unsubscribe();
78
- }
79
- ngOnChanges(changes) {
80
- if (!this.editable) {
81
- this.editInline = false;
82
- this.editPopup = false;
83
- }
84
- if (changes.idAttributeContainer) {
85
- this.idAttributeContainer = changes.idAttributeContainer.currentValue;
86
- this.attributeContainer = this.getAttributeContainerById(this.idAttributeContainer);
87
- }
88
- if (changes.indexOfContainer) {
89
- this.indexOfContainer = changes.indexOfContainer.currentValue;
90
- if (this.attributeConfiguration && this.attributeConfiguration.attributeContainers[this.indexOfContainer]) {
91
- this.attributeContainer = this.attributeConfiguration.attributeContainers[this.indexOfContainer];
92
- }
93
- }
94
- }
95
- getAttributeService() {
96
- return this.attributeService;
97
- }
98
- edit(modal, editContainer) {
99
- this.editContainer = editContainer;
100
- this.modalService.open(modal, { windowClass: "modal-lg" }).result.then((result) => {
101
- if (result === "Save") {
102
- this.attributeService.updateAttributeValueSet();
103
- }
104
- else if (result === "Cancel") {
105
- this.attributeService.clearUpdatedAttributeValues();
106
- }
107
- }, (reason) => { });
108
- }
109
- post() {
110
- this.attributeService.updateAttributeValueSet();
111
- }
112
- getAttributeContainerById(idAttributeContainer) {
113
- if (this.attributeConfiguration) {
114
- return this.attributeConfiguration.attributeContainers.find(x => x.idAttributeContainer === idAttributeContainer);
115
- }
116
- }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeContainerComponent, deps: [{ token: i1.AttributeService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i2.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
118
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AttributeContainerComponent, selector: "hci-attribute-container", inputs: { idAttributeValueSet: "idAttributeValueSet", idAttributeConfiguration: "idAttributeConfiguration", idAttributeContainer: "idAttributeContainer", indexOfContainer: "indexOfContainer", idParentObject: "idParentObject", attributeContainer: "attributeContainer", attributeConfiguration: "attributeConfiguration", attributeValueSet: "attributeValueSet", editInline: "editInline", editPopup: "editPopup", editable: "editable", boundData: "boundData" }, host: { properties: { "class": "this.classList" } }, usesOnChanges: true, ngImport: i0, template: `
1
+ import { ChangeDetectorRef, Component, ElementRef, Input, Renderer2, HostBinding } from "@angular/core";
2
+ import { Subscription } from "rxjs";
3
+ import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
4
+ import { AttributeService } from "../services/attribute.service";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../services/attribute.service";
7
+ import * as i2 from "@ng-bootstrap/ng-bootstrap";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@huntsman-cancer-institute/misc";
10
+ import * as i5 from "./attribute-absolute.component";
11
+ import * as i6 from "./attribute-flex.component";
12
+ import * as i7 from "./attribute-edit.component";
13
+ import * as i8 from "../pipes/is-group-attribute.pipe";
14
+ /**
15
+ * This component should be added on to any screen that displays a container with COD content. This container
16
+ * represents the one of the containers, which in turn contain attributes which display those values in the
17
+ * attributeValueSet.
18
+ */
19
+ export class AttributeContainerComponent {
20
+ constructor(attributeService, elementRef, renderer, changeDetectorRef, modalService) {
21
+ this.attributeService = attributeService;
22
+ this.elementRef = elementRef;
23
+ this.renderer = renderer;
24
+ this.changeDetectorRef = changeDetectorRef;
25
+ this.modalService = modalService;
26
+ this.classList = "hci-attribute-configuration hci-cod d-flex flex-column flex-grow-1";
27
+ this.editInline = true;
28
+ this.editPopup = false;
29
+ this.editable = true;
30
+ this.windowDimension = {};
31
+ this.subscriptions = new Subscription();
32
+ this.getBusySubjects = () => {
33
+ let subjects = [];
34
+ //subjects.push(this.attributeService.getAttributeConfigurationLoadingSubject());
35
+ subjects.push(this.attributeService.getLoadingSubject());
36
+ return subjects;
37
+ };
38
+ }
39
+ /**
40
+ * Upon init, subscribe to the configuration and value set.
41
+ */
42
+ ngOnInit() {
43
+ if (!this.editable) {
44
+ this.editInline = false;
45
+ this.editPopup = false;
46
+ }
47
+ this.attributeService.setAttributeConfigurationById(this.idAttributeConfiguration, this.idAttributeValueSet, this.idParentObject);
48
+ this.subscriptions.add(this.attributeService.getAttributeConfigurationSubject().subscribe((attributeConfiguration) => {
49
+ if (attributeConfiguration) {
50
+ this.attributeConfiguration = attributeConfiguration;
51
+ if (this.idAttributeContainer !== undefined) {
52
+ this.attributeContainer = this.getAttributeContainerById(this.idAttributeContainer);
53
+ }
54
+ if (this.indexOfContainer !== undefined) {
55
+ if (this.attributeConfiguration.attributeContainers[this.indexOfContainer]) {
56
+ this.attributeContainer = this.attributeConfiguration.attributeContainers[this.indexOfContainer];
57
+ }
58
+ }
59
+ }
60
+ }));
61
+ this.subscriptions.add(this.attributeService.attributeConfigurationDimensionSubject.subscribe((windowDimension) => {
62
+ if (windowDimension) {
63
+ this.windowDimension = windowDimension;
64
+ }
65
+ }));
66
+ this.subscriptions.add(this.attributeService.getAttributeValueSet().subscribe((attributeValueSet) => {
67
+ this.attributeValueSet = attributeValueSet;
68
+ if (this.attributeValueSet) {
69
+ this.attributeService.notifyAttributes();
70
+ }
71
+ }));
72
+ }
73
+ set boundData(value) {
74
+ this.attributeService.setBoundData(value);
75
+ }
76
+ ngOnDestroy() {
77
+ this.subscriptions.unsubscribe();
78
+ }
79
+ ngOnChanges(changes) {
80
+ if (!this.editable) {
81
+ this.editInline = false;
82
+ this.editPopup = false;
83
+ }
84
+ if (changes.idAttributeContainer) {
85
+ this.idAttributeContainer = changes.idAttributeContainer.currentValue;
86
+ this.attributeContainer = this.getAttributeContainerById(this.idAttributeContainer);
87
+ }
88
+ if (changes.indexOfContainer) {
89
+ this.indexOfContainer = changes.indexOfContainer.currentValue;
90
+ if (this.attributeConfiguration && this.attributeConfiguration.attributeContainers[this.indexOfContainer]) {
91
+ this.attributeContainer = this.attributeConfiguration.attributeContainers[this.indexOfContainer];
92
+ }
93
+ }
94
+ }
95
+ getAttributeService() {
96
+ return this.attributeService;
97
+ }
98
+ edit(modal, editContainer) {
99
+ this.editContainer = editContainer;
100
+ this.modalService.open(modal, { windowClass: "modal-lg" }).result.then((result) => {
101
+ if (result === "Save") {
102
+ this.attributeService.updateAttributeValueSet();
103
+ }
104
+ else if (result === "Cancel") {
105
+ this.attributeService.clearUpdatedAttributeValues();
106
+ }
107
+ }, (reason) => { });
108
+ }
109
+ post() {
110
+ this.attributeService.updateAttributeValueSet();
111
+ }
112
+ getAttributeContainerById(idAttributeContainer) {
113
+ if (this.attributeConfiguration) {
114
+ return this.attributeConfiguration.attributeContainers.find(x => x.idAttributeContainer === idAttributeContainer);
115
+ }
116
+ }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AttributeContainerComponent, deps: [{ token: i1.AttributeService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i2.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
118
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AttributeContainerComponent, selector: "hci-attribute-container", inputs: { idAttributeValueSet: "idAttributeValueSet", idAttributeConfiguration: "idAttributeConfiguration", idAttributeContainer: "idAttributeContainer", indexOfContainer: "indexOfContainer", idParentObject: "idParentObject", attributeContainer: "attributeContainer", attributeConfiguration: "attributeConfiguration", attributeValueSet: "attributeValueSet", editInline: "editInline", editPopup: "editPopup", editable: "editable", boundData: "boundData" }, host: { properties: { "class": "this.classList" } }, usesOnChanges: true, ngImport: i0, template: `
119
119
  <hci-busy [getBusySubjects]="getBusySubjects"></hci-busy>
120
120
 
121
121
  <ng-container *ngIf="attributeContainer">
@@ -167,12 +167,12 @@ export class AttributeContainerComponent {
167
167
  <button class="btn btn-primary" (click)="close('Cancel')">Cancel</button>
168
168
  </div>
169
169
  </ng-template>
170
- `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.BusyComponent, selector: "hci-busy", inputs: ["busy", "busySubjects", "getBusySubjects", "parentSelector", "rootClass", "icon", "iconSize", "showIcon", "mxAuto", "myAuto", "text", "template", "config"] }, { kind: "component", type: i5.AttributeAbsoluteComponent, selector: "hci-attribute-absolute" }, { kind: "component", type: i6.AttributeFlexComponent, selector: "hci-attribute-flex" }, { kind: "component", type: i7.AttributeEditComponent, selector: "hci-attribute-edit" }, { kind: "pipe", type: i8.IsGroupAttributePipe, name: "isGroupAttribute" }] }); }
171
- }
172
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeContainerComponent, decorators: [{
173
- type: Component,
174
- args: [{
175
- selector: "hci-attribute-container",
170
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.BusyComponent, selector: "hci-busy", inputs: ["busy", "busySubjects", "getBusySubjects", "parentSelector", "rootClass", "icon", "iconSize", "showIcon", "mxAuto", "myAuto", "text", "template", "config"] }, { kind: "component", type: i5.AttributeAbsoluteComponent, selector: "hci-attribute-absolute" }, { kind: "component", type: i6.AttributeFlexComponent, selector: "hci-attribute-flex" }, { kind: "component", type: i7.AttributeEditComponent, selector: "hci-attribute-edit" }, { kind: "pipe", type: i8.IsGroupAttributePipe, name: "isGroupAttribute" }] }); }
171
+ }
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AttributeContainerComponent, decorators: [{
173
+ type: Component,
174
+ args: [{
175
+ selector: "hci-attribute-container",
176
176
  template: `
177
177
  <hci-busy [getBusySubjects]="getBusySubjects"></hci-busy>
178
178
 
@@ -225,34 +225,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
225
225
  <button class="btn btn-primary" (click)="close('Cancel')">Cancel</button>
226
226
  </div>
227
227
  </ng-template>
228
- `
229
- }]
230
- }], ctorParameters: function () { return [{ type: i1.AttributeService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i2.NgbModal }]; }, propDecorators: { classList: [{
231
- type: HostBinding,
232
- args: ["class"]
233
- }], idAttributeValueSet: [{
234
- type: Input
235
- }], idAttributeConfiguration: [{
236
- type: Input
237
- }], idAttributeContainer: [{
238
- type: Input
239
- }], indexOfContainer: [{
240
- type: Input
241
- }], idParentObject: [{
242
- type: Input
243
- }], attributeContainer: [{
244
- type: Input
245
- }], attributeConfiguration: [{
246
- type: Input
247
- }], attributeValueSet: [{
248
- type: Input
249
- }], editInline: [{
250
- type: Input
251
- }], editPopup: [{
252
- type: Input
253
- }], editable: [{
254
- type: Input
255
- }], boundData: [{
256
- type: Input
257
- }] } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2Qvc3JjL2NvbXBvbmVudHMvYXR0cmlidXRlLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUFFLFNBQVMsRUFBbUIsVUFBVSxFQUFFLEtBQUssRUFDckQsU0FBUyxFQUErQixXQUFXLEVBQy9ELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBVyxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBSy9EOzs7O0dBSUc7QUF5REgsTUFBTSxPQUFPLDJCQUEyQjtJQWdDdEMsWUFBb0IsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLGlCQUFvQyxFQUNwQyxZQUFzQjtRQUp0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBbkNwQixjQUFTLEdBQVcsb0VBQW9FLENBQUM7UUFZdEcsZUFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixjQUFTLEdBQWEsS0FBSyxDQUFDO1FBQzVCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFJbEMsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFFMUIsa0JBQWEsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRCxvQkFBZSxHQUFhLEdBQUcsRUFBRTtZQUMvQixJQUFJLFFBQVEsR0FBVSxFQUFFLENBQUM7WUFFekIs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LElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsS0FBSyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQzsrR0FwSVUsMkJBQTJCO21HQUEzQiwyQkFBMkIsaWxCQXRENUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvRFQ7OzRGQUVVLDJCQUEyQjtrQkF4RHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RUO2lCQUNGOytNQUV1QixTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU87Z0JBRVgsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBaUVPLFNBQVM7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSW5wdXQsIGlzRGV2TW9kZSxcclxuICBRdWVyeUxpc3QsIFJlbmRlcmVyMiwgVmlld0NoaWxkcmVuLCBTaW1wbGVDaGFuZ2VzLCBIb3N0QmluZGluZywgVGVtcGxhdGVSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge05nYk1vZGFsLCBOZ2JQYW5lbH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7QWNjb3JkaW9uTmF2Q29tcG9uZW50fSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvbWlzY1wiO1xyXG5pbXBvcnQge0F0dHJpYnV0ZVNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy9hdHRyaWJ1dGUuc2VydmljZVwiO1xyXG5pbXBvcnQge0F0dHJpYnV0ZUNvbmZpZ3VyYXRpb259IGZyb20gXCIuLi9tb2RlbC9hdHRyaWJ1dGUtY29uZmlndXJhdGlvbi5lbnRpdHlcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVWYWx1ZVNldH0gZnJvbSBcIi4uL21vZGVsL2F0dHJpYnV0ZS12YWx1ZS1zZXQuZW50aXR5XCI7XHJcbmltcG9ydCB7QXR0cmlidXRlQ29udGFpbmVyfSBmcm9tIFwiLi4vbW9kZWwvYXR0cmlidXRlLWNvbnRhaW5lci5lbnRpdHlcIjtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGNvbXBvbmVudCBzaG91bGQgYmUgYWRkZWQgb24gdG8gYW55IHNjcmVlbiB0aGF0IGRpc3BsYXlzIGEgY29udGFpbmVyIHdpdGggQ09EIGNvbnRlbnQuICBUaGlzIGNvbnRhaW5lclxyXG4gKiByZXByZXNlbnRzIHRoZSBvbmUgb2YgdGhlIGNvbnRhaW5lcnMsIHdoaWNoIGluIHR1cm4gY29udGFpbiBhdHRyaWJ1dGVzIHdoaWNoIGRpc3BsYXkgdGhvc2UgdmFsdWVzIGluIHRoZVxyXG4gKiBhdHRyaWJ1dGVWYWx1ZVNldC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1hdHRyaWJ1dGUtY29udGFpbmVyXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxoY2ktYnVzeSBbZ2V0QnVzeVN1YmplY3RzXT1cImdldEJ1c3lTdWJqZWN0c1wiPjwvaGNpLWJ1c3k+XHJcbiAgXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlQ29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJlZGl0UG9wdXBcIiBbaWRdPVwiJ2lkLWF0dHJpYnV0ZS1jb250YWluZXItJyArIGF0dHJpYnV0ZUNvbnRhaW5lci5pZEF0dHJpYnV0ZUNvbnRhaW5lciArICctaGVhZGVyJ1wiXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYXR0cmlidXRlLWNvbnRhaW5lci1oZWFkZXIge3snc29ydC1vcmRlci0nICsgYXR0cmlidXRlQ29udGFpbmVyLnNvcnRPcmRlcn19XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG8gbXItMFwiIChjbGljayk9XCJlZGl0KGVkaXRNb2RhbCwgYXR0cmlidXRlQ29udGFpbmVyKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGVuY2lsXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMSB5LWF1dG9cIiBzdHlsZT1cImZsZXg6IDEgMSAxcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF0dHJpYnV0ZS1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgW2NsYXNzLmNvbC1tZC0xMl09XCJhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ICYmIGF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICBbY2xhc3MuZmxleF09XCJhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ICYmIGF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICBbY2xhc3MuZmxleC13cmFwXT1cImF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgJiYgYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgIFtjbGFzcy5hYnNvbHV0ZV09XCIhYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCB8fCBhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ID09PSAnTidcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVDb250YWluZXIuZ3JhcGhpY2FsQXR0cmlidXRlcyB8IGlzR3JvdXBBdHRyaWJ1dGU6IGZhbHNlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ICYmIGF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgPT09ICdZJyAmJiBhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlICE9PSAnTElORSdcIj5cclxuICAgICAgICAgICAgICA8aGNpLWF0dHJpYnV0ZS1mbGV4IFtpZF09XCInaWQtYXR0cmlidXRlLScgKyBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJpYnV0ZV09XCJhdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRJbmxpbmVdPVwiZWRpdElubGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXR0cmlidXRlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNvbC00XT1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgIT09ICdHQScgJiYgYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSAhPT0gJ0xJTkUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jb2wtMTJdPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0dBJyB8fCBhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnTElORSdcIj48L2hjaS1hdHRyaWJ1dGUtZmxleD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCB8fCBhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ID09PSAnTidcIj5cclxuICAgICAgICAgICAgICA8aGNpLWF0dHJpYnV0ZS1hYnNvbHV0ZSBbaWRdPVwiJ2lkLWF0dHJpYnV0ZS0nICsgYXR0cmlidXRlLmlkQXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cmlidXRlXT1cImF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRJbmxpbmVdPVwiZWRpdElubGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF0dHJpYnV0ZV09XCJ0cnVlXCI+PC9oY2ktYXR0cmlidXRlLWFic29sdXRlPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZWRpdE1vZGFsIGxldC1jbG9zZT1cImNsb3NlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICB7e2VkaXRDb250YWluZXIuY29udGFpbmVyTmFtZX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBkLWZsZXggZmxleC1jb2x1bW4gaGNpLWNvZC1lZGl0XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlIG9mIGVkaXRDb250YWluZXIuZ3JhcGhpY2FsQXR0cmlidXRlcyB8IGlzR3JvdXBBdHRyaWJ1dGU6IGZhbHNlXCI+XHJcbiAgICAgICAgICA8aGNpLWF0dHJpYnV0ZS1lZGl0IFtpZF09XCInZWRpdC1pZC1hdHRyaWJ1dGUtJyArIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyaWJ1dGVdPVwiYXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdHRyaWJ1dGVcIj48L2hjaS1hdHRyaWJ1dGUtZWRpdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKCdTYXZlJylcIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJjbG9zZSgnQ2FuY2VsJylcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGBcclxufSlcclxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZUNvbnRhaW5lckNvbXBvbmVudCB7XHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIikgY2xhc3NMaXN0OiBzdHJpbmcgPSBcImhjaS1hdHRyaWJ1dGUtY29uZmlndXJhdGlvbiBoY2ktY29kIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWdyb3ctMVwiO1xyXG5cclxuICBASW5wdXQoKSBpZEF0dHJpYnV0ZVZhbHVlU2V0OiBudW1iZXI7XHJcbiAgQElucHV0KCkgaWRBdHRyaWJ1dGVDb25maWd1cmF0aW9uOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaWRBdHRyaWJ1dGVDb250YWluZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSBpbmRleE9mQ29udGFpbmVyOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaWRQYXJlbnRPYmplY3Q6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCkgYXR0cmlidXRlQ29udGFpbmVyOiBBdHRyaWJ1dGVDb250YWluZXI7XHJcbiAgQElucHV0KCkgYXR0cmlidXRlQ29uZmlndXJhdGlvbjogQXR0cmlidXRlQ29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBhdHRyaWJ1dGVWYWx1ZVNldDogQXR0cmlidXRlVmFsdWVTZXQ7XHJcbiAgXHJcbiAgQElucHV0KCkgZWRpdElubGluZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZWRpdFBvcHVwOiBib29sZWFuID0gIGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgZWRpdENvbnRhaW5lcjogQXR0cmlidXRlQ29udGFpbmVyO1xyXG5cclxuICB3aW5kb3dEaW1lbnNpb246IGFueSA9IHt9O1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgXHJcbiAgZ2V0QnVzeVN1YmplY3RzOiBGdW5jdGlvbiA9ICgpID0+IHtcclxuICAgIGxldCBzdWJqZWN0czogYW55W10gPSBbXTtcclxuICBcclxuICAgIC8vc3ViamVjdHMucHVzaCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0QXR0cmlidXRlQ29uZmlndXJhdGlvbkxvYWRpbmdTdWJqZWN0KCkpO1xyXG4gICAgc3ViamVjdHMucHVzaCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0TG9hZGluZ1N1YmplY3QoKSk7XHJcbiAgICBcclxuICAgIHJldHVybiBzdWJqZWN0cztcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF0dHJpYnV0ZVNlcnZpY2U6IEF0dHJpYnV0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwb24gaW5pdCwgc3Vic2NyaWJlIHRvIHRoZSBjb25maWd1cmF0aW9uIGFuZCB2YWx1ZSBzZXQuXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoISB0aGlzLmVkaXRhYmxlKSB7XHJcbiAgICAgIHRoaXMuZWRpdElubGluZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRQb3B1cCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2Uuc2V0QXR0cmlidXRlQ29uZmlndXJhdGlvbkJ5SWQodGhpcy5pZEF0dHJpYnV0ZUNvbmZpZ3VyYXRpb24sIHRoaXMuaWRBdHRyaWJ1dGVWYWx1ZVNldCwgdGhpcy5pZFBhcmVudE9iamVjdCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0QXR0cmlidXRlQ29uZmlndXJhdGlvblN1YmplY3QoKS5zdWJzY3JpYmUoKGF0dHJpYnV0ZUNvbmZpZ3VyYXRpb246IEF0dHJpYnV0ZUNvbmZpZ3VyYXRpb24pID0+IHtcclxuICAgICAgaWYoYXR0cmlidXRlQ29uZmlndXJhdGlvbikge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbiA9IGF0dHJpYnV0ZUNvbmZpZ3VyYXRpb247XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlkQXR0cmlidXRlQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuYXR0cmlidXRlQ29udGFpbmVyID0gdGhpcy5nZXRBdHRyaWJ1dGVDb250YWluZXJCeUlkKHRoaXMuaWRBdHRyaWJ1dGVDb250YWluZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaW5kZXhPZkNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uLmF0dHJpYnV0ZUNvbnRhaW5lcnNbdGhpcy5pbmRleE9mQ29udGFpbmVyXSkge1xyXG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZUNvbnRhaW5lciA9IHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbi5hdHRyaWJ1dGVDb250YWluZXJzW3RoaXMuaW5kZXhPZkNvbnRhaW5lcl07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuYXR0cmlidXRlQ29uZmlndXJhdGlvbkRpbWVuc2lvblN1YmplY3Quc3Vic2NyaWJlKCh3aW5kb3dEaW1lbnNpb246IGFueSkgPT4ge1xyXG4gICAgICBpZih3aW5kb3dEaW1lbnNpb24pe1xyXG4gICAgICAgIHRoaXMud2luZG93RGltZW5zaW9uID0gd2luZG93RGltZW5zaW9uO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZ2V0QXR0cmlidXRlVmFsdWVTZXQoKS5zdWJzY3JpYmUoKGF0dHJpYnV0ZVZhbHVlU2V0OiBBdHRyaWJ1dGVWYWx1ZVNldCkgPT4ge1xyXG4gICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlU2V0ID0gYXR0cmlidXRlVmFsdWVTZXQ7XHJcblxyXG4gICAgICBpZiAodGhpcy5hdHRyaWJ1dGVWYWx1ZVNldCkge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5ub3RpZnlBdHRyaWJ1dGVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBib3VuZERhdGEodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnNldEJvdW5kRGF0YSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKCEgdGhpcy5lZGl0YWJsZSkge1xyXG4gICAgICB0aGlzLmVkaXRJbmxpbmUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0UG9wdXAgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKGNoYW5nZXMuaWRBdHRyaWJ1dGVDb250YWluZXIpIHtcclxuICAgICAgdGhpcy5pZEF0dHJpYnV0ZUNvbnRhaW5lciA9IGNoYW5nZXMuaWRBdHRyaWJ1dGVDb250YWluZXIuY3VycmVudFZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5hdHRyaWJ1dGVDb250YWluZXIgPSB0aGlzLmdldEF0dHJpYnV0ZUNvbnRhaW5lckJ5SWQodGhpcy5pZEF0dHJpYnV0ZUNvbnRhaW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXMuaW5kZXhPZkNvbnRhaW5lcikge1xyXG4gICAgICB0aGlzLmluZGV4T2ZDb250YWluZXIgPSBjaGFuZ2VzLmluZGV4T2ZDb250YWluZXIuY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uICYmIHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbi5hdHRyaWJ1dGVDb250YWluZXJzW3RoaXMuaW5kZXhPZkNvbnRhaW5lcl0pIHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZUNvbnRhaW5lciA9IHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbi5hdHRyaWJ1dGVDb250YWluZXJzW3RoaXMuaW5kZXhPZkNvbnRhaW5lcl07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEF0dHJpYnV0ZVNlcnZpY2UoKTogQXR0cmlidXRlU2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlO1xyXG4gIH1cclxuXHJcbiAgZWRpdChtb2RhbDogVGVtcGxhdGVSZWY8YW55PiwgZWRpdENvbnRhaW5lcjogQXR0cmlidXRlQ29udGFpbmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRDb250YWluZXIgPSBlZGl0Q29udGFpbmVyO1xyXG5cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWwsIHt3aW5kb3dDbGFzczogXCJtb2RhbC1sZ1wifSkucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09PSBcIlNhdmVcIikge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS51cGRhdGVBdHRyaWJ1dGVWYWx1ZVNldCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gXCJDYW5jZWxcIikge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5jbGVhclVwZGF0ZWRBdHRyaWJ1dGVWYWx1ZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSwgKHJlYXNvbikgPT4ge30pO1xyXG4gIH1cclxuXHJcbiAgcG9zdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS51cGRhdGVBdHRyaWJ1dGVWYWx1ZVNldCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXR0cmlidXRlQ29udGFpbmVyQnlJZChpZEF0dHJpYnV0ZUNvbnRhaW5lcjogbnVtYmVyKTogQXR0cmlidXRlQ29udGFpbmVyIHtcclxuICAgIGlmICh0aGlzLmF0dHJpYnV0ZUNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbi5hdHRyaWJ1dGVDb250YWluZXJzLmZpbmQoeCA9PiB4LmlkQXR0cmlidXRlQ29udGFpbmVyID09PSBpZEF0dHJpYnV0ZUNvbnRhaW5lcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
228
+ `
229
+ }]
230
+ }], ctorParameters: () => [{ type: i1.AttributeService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i2.NgbModal }], propDecorators: { classList: [{
231
+ type: HostBinding,
232
+ args: ["class"]
233
+ }], idAttributeValueSet: [{
234
+ type: Input
235
+ }], idAttributeConfiguration: [{
236
+ type: Input
237
+ }], idAttributeContainer: [{
238
+ type: Input
239
+ }], indexOfContainer: [{
240
+ type: Input
241
+ }], idParentObject: [{
242
+ type: Input
243
+ }], attributeContainer: [{
244
+ type: Input
245
+ }], attributeConfiguration: [{
246
+ type: Input
247
+ }], attributeValueSet: [{
248
+ type: Input
249
+ }], editInline: [{
250
+ type: Input
251
+ }], editPopup: [{
252
+ type: Input
253
+ }], editable: [{
254
+ type: Input
255
+ }], boundData: [{
256
+ type: Input
257
+ }] } });
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2Qvc3JjL2NvbXBvbmVudHMvYXR0cmlidXRlLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUFFLFNBQVMsRUFBbUIsVUFBVSxFQUFFLEtBQUssRUFDckQsU0FBUyxFQUErQixXQUFXLEVBQy9ELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBVyxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBSy9EOzs7O0dBSUc7QUF5REgsTUFBTSxPQUFPLDJCQUEyQjtJQWdDdEMsWUFBb0IsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLGlCQUFvQyxFQUNwQyxZQUFzQjtRQUp0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBbkNwQixjQUFTLEdBQVcsb0VBQW9FLENBQUM7UUFZdEcsZUFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixjQUFTLEdBQWEsS0FBSyxDQUFDO1FBQzVCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFJbEMsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFFMUIsa0JBQWEsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRCxvQkFBZSxHQUFhLEdBQUcsRUFBRTtZQUMvQixJQUFJLFFBQVEsR0FBVSxFQUFFLENBQUM7WUFFekIs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b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBJbnB1dCwgaXNEZXZNb2RlLFxyXG4gIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGRyZW4sIFNpbXBsZUNoYW5nZXMsIEhvc3RCaW5kaW5nLCBUZW1wbGF0ZVJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7TmdiTW9kYWwsIE5nYlBhbmVsfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHtBY2NvcmRpb25OYXZDb21wb25lbnR9IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9taXNjXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0dHJpYnV0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlQ29uZmlndXJhdGlvbn0gZnJvbSBcIi4uL21vZGVsL2F0dHJpYnV0ZS1jb25maWd1cmF0aW9uLmVudGl0eVwiO1xyXG5pbXBvcnQge0F0dHJpYnV0ZVZhbHVlU2V0fSBmcm9tIFwiLi4vbW9kZWwvYXR0cmlidXRlLXZhbHVlLXNldC5lbnRpdHlcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVDb250YWluZXJ9IGZyb20gXCIuLi9tb2RlbC9hdHRyaWJ1dGUtY29udGFpbmVyLmVudGl0eVwiO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgY29tcG9uZW50IHNob3VsZCBiZSBhZGRlZCBvbiB0byBhbnkgc2NyZWVuIHRoYXQgZGlzcGxheXMgYSBjb250YWluZXIgd2l0aCBDT0QgY29udGVudC4gIFRoaXMgY29udGFpbmVyXHJcbiAqIHJlcHJlc2VudHMgdGhlIG9uZSBvZiB0aGUgY29udGFpbmVycywgd2hpY2ggaW4gdHVybiBjb250YWluIGF0dHJpYnV0ZXMgd2hpY2ggZGlzcGxheSB0aG9zZSB2YWx1ZXMgaW4gdGhlXHJcbiAqIGF0dHJpYnV0ZVZhbHVlU2V0LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLWF0dHJpYnV0ZS1jb250YWluZXJcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGhjaS1idXN5IFtnZXRCdXN5U3ViamVjdHNdPVwiZ2V0QnVzeVN1YmplY3RzXCI+PC9oY2ktYnVzeT5cclxuICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGVDb250YWluZXJcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cImVkaXRQb3B1cFwiIFtpZF09XCInaWQtYXR0cmlidXRlLWNvbnRhaW5lci0nICsgYXR0cmlidXRlQ29udGFpbmVyLmlkQXR0cmlidXRlQ29udGFpbmVyICsgJy1oZWFkZXInXCJcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhdHRyaWJ1dGUtY29udGFpbmVyLWhlYWRlciB7eydzb3J0LW9yZGVyLScgKyBhdHRyaWJ1dGVDb250YWluZXIuc29ydE9yZGVyfX1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWwtYXV0byBtci0wXCIgKGNsaWNrKT1cImVkaXQoZWRpdE1vZGFsLCBhdHRyaWJ1dGVDb250YWluZXIpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wZW5jaWxcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIHktYXV0b1wiIHN0eWxlPVwiZmxleDogMSAxIDFweDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0cmlidXRlLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICBbY2xhc3MuY29sLW1kLTEyXT1cImF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgJiYgYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgJiYgYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXdyYXBdPVwiYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCAmJiBhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0ID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgW2NsYXNzLmFic29sdXRlXT1cIiFhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0IHx8IGF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgPT09ICdOJ1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZUNvbnRhaW5lci5ncmFwaGljYWxBdHRyaWJ1dGVzIHwgaXNHcm91cEF0dHJpYnV0ZTogZmFsc2VcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgJiYgYXR0cmlidXRlQ29udGFpbmVyLmlzQXV0b0xheW91dCA9PT0gJ1knICYmIGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgIT09ICdMSU5FJ1wiPlxyXG4gICAgICAgICAgICAgIDxoY2ktYXR0cmlidXRlLWZsZXggW2lkXT1cIidpZC1hdHRyaWJ1dGUtJyArIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cmlidXRlXT1cImF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdElubGluZV09XCJlZGl0SW5saW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hdHRyaWJ1dGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuY29sLTRdPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSAhPT0gJ0dBJyAmJiBhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlICE9PSAnTElORSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNvbC0xMl09XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnR0EnIHx8IGF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdMSU5FJ1wiPjwvaGNpLWF0dHJpYnV0ZS1mbGV4PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhdHRyaWJ1dGVDb250YWluZXIuaXNBdXRvTGF5b3V0IHx8IGF0dHJpYnV0ZUNvbnRhaW5lci5pc0F1dG9MYXlvdXQgPT09ICdOJ1wiPlxyXG4gICAgICAgICAgICAgIDxoY2ktYXR0cmlidXRlLWFic29sdXRlIFtpZF09XCInaWQtYXR0cmlidXRlLScgKyBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyaWJ1dGVdPVwiYXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdElubGluZV09XCJlZGl0SW5saW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXR0cmlidXRlXT1cInRydWVcIj48L2hjaS1hdHRyaWJ1dGUtYWJzb2x1dGU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNlZGl0TW9kYWwgbGV0LWNsb3NlPVwiY2xvc2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIHt7ZWRpdENvbnRhaW5lci5jb250YWluZXJOYW1lfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGQtZmxleCBmbGV4LWNvbHVtbiBoY2ktY29kLWVkaXRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGUgb2YgZWRpdENvbnRhaW5lci5ncmFwaGljYWxBdHRyaWJ1dGVzIHwgaXNHcm91cEF0dHJpYnV0ZTogZmFsc2VcIj5cclxuICAgICAgICAgIDxoY2ktYXR0cmlidXRlLWVkaXQgW2lkXT1cIidlZGl0LWlkLWF0dHJpYnV0ZS0nICsgYXR0cmlidXRlLmlkQXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJpYnV0ZV09XCJhdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF0dHJpYnV0ZVwiPjwvaGNpLWF0dHJpYnV0ZS1lZGl0PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiY2xvc2UoJ1NhdmUnKVwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKCdDYW5jZWwnKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlQ29udGFpbmVyQ29tcG9uZW50IHtcclxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBjbGFzc0xpc3Q6IHN0cmluZyA9IFwiaGNpLWF0dHJpYnV0ZS1jb25maWd1cmF0aW9uIGhjaS1jb2QgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI7XHJcblxyXG4gIEBJbnB1dCgpIGlkQXR0cmlidXRlVmFsdWVTZXQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBpZEF0dHJpYnV0ZUNvbmZpZ3VyYXRpb246IG51bWJlcjtcclxuICBASW5wdXQoKSBpZEF0dHJpYnV0ZUNvbnRhaW5lcjogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGluZGV4T2ZDb250YWluZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSBpZFBhcmVudE9iamVjdDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKSBhdHRyaWJ1dGVDb250YWluZXI6IEF0dHJpYnV0ZUNvbnRhaW5lcjtcclxuICBASW5wdXQoKSBhdHRyaWJ1dGVDb25maWd1cmF0aW9uOiBBdHRyaWJ1dGVDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dCgpIGF0dHJpYnV0ZVZhbHVlU2V0OiBBdHRyaWJ1dGVWYWx1ZVNldDtcclxuICBcclxuICBASW5wdXQoKSBlZGl0SW5saW5lOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBlZGl0UG9wdXA6IGJvb2xlYW4gPSAgZmFsc2U7XHJcbiAgQElucHV0KCkgZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBlZGl0Q29udGFpbmVyOiBBdHRyaWJ1dGVDb250YWluZXI7XHJcblxyXG4gIHdpbmRvd0RpbWVuc2lvbjogYW55ID0ge307XHJcblxyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBcclxuICBnZXRCdXN5U3ViamVjdHM6IEZ1bmN0aW9uID0gKCkgPT4ge1xyXG4gICAgbGV0IHN1YmplY3RzOiBhbnlbXSA9IFtdO1xyXG4gIFxyXG4gICAgLy9zdWJqZWN0cy5wdXNoKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRBdHRyaWJ1dGVDb25maWd1cmF0aW9uTG9hZGluZ1N1YmplY3QoKSk7XHJcbiAgICBzdWJqZWN0cy5wdXNoKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRMb2FkaW5nU3ViamVjdCgpKTtcclxuICAgIFxyXG4gICAgcmV0dXJuIHN1YmplY3RzO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXR0cmlidXRlU2VydmljZTogQXR0cmlidXRlU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkge31cclxuXHJcbiAgLyoqXHJcbiAgICogVXBvbiBpbml0LCBzdWJzY3JpYmUgdG8gdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHZhbHVlIHNldC5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghIHRoaXMuZWRpdGFibGUpIHtcclxuICAgICAgdGhpcy5lZGl0SW5saW5lID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdFBvcHVwID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuYXR0cmlidXRlU2VydmljZS5zZXRBdHRyaWJ1dGVDb25maWd1cmF0aW9uQnlJZCh0aGlzLmlkQXR0cmlidXRlQ29uZmlndXJhdGlvbiwgdGhpcy5pZEF0dHJpYnV0ZVZhbHVlU2V0LCB0aGlzLmlkUGFyZW50T2JqZWN0KTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRBdHRyaWJ1dGVDb25maWd1cmF0aW9uU3ViamVjdCgpLnN1YnNjcmliZSgoYXR0cmlidXRlQ29uZmlndXJhdGlvbjogQXR0cmlidXRlQ29uZmlndXJhdGlvbikgPT4ge1xyXG4gICAgICBpZihhdHRyaWJ1dGVDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uID0gYXR0cmlidXRlQ29uZmlndXJhdGlvbjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaWRBdHRyaWJ1dGVDb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5hdHRyaWJ1dGVDb250YWluZXIgPSB0aGlzLmdldEF0dHJpYnV0ZUNvbnRhaW5lckJ5SWQodGhpcy5pZEF0dHJpYnV0ZUNvbnRhaW5lcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pbmRleE9mQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZUNvbmZpZ3VyYXRpb24uYXR0cmlidXRlQ29udGFpbmVyc1t0aGlzLmluZGV4T2ZDb250YWluZXJdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlQ29udGFpbmVyID0gdGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uLmF0dHJpYnV0ZUNvbnRhaW5lcnNbdGhpcy5pbmRleE9mQ29udGFpbmVyXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYXR0cmlidXRlU2VydmljZS5hdHRyaWJ1dGVDb25maWd1cmF0aW9uRGltZW5zaW9uU3ViamVjdC5zdWJzY3JpYmUoKHdpbmRvd0RpbWVuc2lvbjogYW55KSA9PiB7XHJcbiAgICAgIGlmKHdpbmRvd0RpbWVuc2lvbil7XHJcbiAgICAgICAgdGhpcy53aW5kb3dEaW1lbnNpb24gPSB3aW5kb3dEaW1lbnNpb247XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYXR0cmlidXRlU2VydmljZS5nZXRBdHRyaWJ1dGVWYWx1ZVNldCgpLnN1YnNjcmliZSgoYXR0cmlidXRlVmFsdWVTZXQ6IEF0dHJpYnV0ZVZhbHVlU2V0KSA9PiB7XHJcbiAgICAgIHRoaXMuYXR0cmlidXRlVmFsdWVTZXQgPSBhdHRyaWJ1dGVWYWx1ZVNldDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZVZhbHVlU2V0KSB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLm5vdGlmeUF0dHJpYnV0ZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGJvdW5kRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmF0dHJpYnV0ZVNlcnZpY2Uuc2V0Qm91bmREYXRhKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoISB0aGlzLmVkaXRhYmxlKSB7XHJcbiAgICAgIHRoaXMuZWRpdElubGluZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRQb3B1cCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAoY2hhbmdlcy5pZEF0dHJpYnV0ZUNvbnRhaW5lcikge1xyXG4gICAgICB0aGlzLmlkQXR0cmlidXRlQ29udGFpbmVyID0gY2hhbmdlcy5pZEF0dHJpYnV0ZUNvbnRhaW5lci5jdXJyZW50VmFsdWU7XHJcblxyXG4gICAgICB0aGlzLmF0dHJpYnV0ZUNvbnRhaW5lciA9IHRoaXMuZ2V0QXR0cmlidXRlQ29udGFpbmVyQnlJZCh0aGlzLmlkQXR0cmlidXRlQ29udGFpbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlcy5pbmRleE9mQ29udGFpbmVyKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhPZkNvbnRhaW5lciA9IGNoYW5nZXMuaW5kZXhPZkNvbnRhaW5lci5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZUNvbmZpZ3VyYXRpb24gJiYgdGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uLmF0dHJpYnV0ZUNvbnRhaW5lcnNbdGhpcy5pbmRleE9mQ29udGFpbmVyXSkge1xyXG4gICAgICAgIHRoaXMuYXR0cmlidXRlQ29udGFpbmVyID0gdGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uLmF0dHJpYnV0ZUNvbnRhaW5lcnNbdGhpcy5pbmRleE9mQ29udGFpbmVyXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXR0cmlidXRlU2VydmljZSgpOiBBdHRyaWJ1dGVTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZVNlcnZpY2U7XHJcbiAgfVxyXG5cclxuICBlZGl0KG1vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+LCBlZGl0Q29udGFpbmVyOiBBdHRyaWJ1dGVDb250YWluZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdENvbnRhaW5lciA9IGVkaXRDb250YWluZXI7XHJcblxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbCwge3dpbmRvd0NsYXNzOiBcIm1vZGFsLWxnXCJ9KS5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT09IFwiU2F2ZVwiKSB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnVwZGF0ZUF0dHJpYnV0ZVZhbHVlU2V0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSBcIkNhbmNlbFwiKSB7XHJcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmNsZWFyVXBkYXRlZEF0dHJpYnV0ZVZhbHVlcygpO1xyXG4gICAgICB9XHJcbiAgICB9LCAocmVhc29uKSA9PiB7fSk7XHJcbiAgfVxyXG5cclxuICBwb3N0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLnVwZGF0ZUF0dHJpYnV0ZVZhbHVlU2V0KCk7XHJcbiAgfVxyXG5cclxuICBnZXRBdHRyaWJ1dGVDb250YWluZXJCeUlkKGlkQXR0cmlidXRlQ29udGFpbmVyOiBudW1iZXIpOiBBdHRyaWJ1dGVDb250YWluZXIge1xyXG4gICAgaWYgKHRoaXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbikge1xyXG4gICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVDb25maWd1cmF0aW9uLmF0dHJpYnV0ZUNvbnRhaW5lcnMuZmluZCh4ID0+IHguaWRBdHRyaWJ1dGVDb250YWluZXIgPT09IGlkQXR0cmlidXRlQ29udGFpbmVyKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,43 +1,43 @@
1
- import { Component, forwardRef, Input } from "@angular/core";
2
- import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/forms";
6
- import * as i3 from "@huntsman-cancer-institute/input";
7
- export class AttributeDefaultComponent {
8
- get value() {
9
- return this._value;
10
- }
11
- ;
12
- set value(v) {
13
- this.onTouched();
14
- if (v !== this.value) {
15
- this._value = v;
16
- this.onChange(v);
17
- }
18
- }
19
- constructor() {
20
- this._value = "";
21
- this.onChange = (_) => { };
22
- this.onTouched = () => { };
23
- }
24
- ngOnInit() { }
25
- writeValue(v) {
26
- this._value = v;
27
- }
28
- registerOnChange(fn) {
29
- this.onChange = fn;
30
- }
31
- registerOnTouched(fn) {
32
- this.onTouched = fn;
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeDefaultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AttributeDefaultComponent, selector: "hci-attribute-default", inputs: { id: "id", name: "name", attribute: "attribute" }, providers: [
36
- {
37
- provide: NG_VALUE_ACCESSOR,
38
- useExisting: forwardRef(() => AttributeDefaultComponent),
39
- multi: true
40
- }
1
+ import { Component, forwardRef, Input } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "@huntsman-cancer-institute/input";
7
+ export class AttributeDefaultComponent {
8
+ get value() {
9
+ return this._value;
10
+ }
11
+ ;
12
+ set value(v) {
13
+ this.onTouched();
14
+ if (v !== this.value) {
15
+ this._value = v;
16
+ this.onChange(v);
17
+ }
18
+ }
19
+ constructor() {
20
+ this._value = "";
21
+ this.onChange = (_) => { };
22
+ this.onTouched = () => { };
23
+ }
24
+ ngOnInit() { }
25
+ writeValue(v) {
26
+ this._value = v;
27
+ }
28
+ registerOnChange(fn) {
29
+ this.onChange = fn;
30
+ }
31
+ registerOnTouched(fn) {
32
+ this.onTouched = fn;
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AttributeDefaultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AttributeDefaultComponent, selector: "hci-attribute-default", inputs: { id: "id", name: "name", attribute: "attribute" }, providers: [
36
+ {
37
+ provide: NG_VALUE_ACCESSOR,
38
+ useExisting: forwardRef(() => AttributeDefaultComponent),
39
+ multi: true
40
+ }
41
41
  ], ngImport: i0, template: `
42
42
  <!-- String -->
43
43
  <ng-container *ngIf="attribute.codeAttributeDataType.toUpperCase() === 'S'">
@@ -169,12 +169,12 @@ export class AttributeDefaultComponent {
169
169
  [name]="name"
170
170
  disabled>
171
171
  </ng-container>
172
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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.NativeSelectComponent, selector: "hci-native-select", inputs: ["class", "name", "label", "url", "entries", "required", "idKey", "displayKey", "disabled", "sortKey", "sortNumeric", "filterKey", "filter"] }] }); }
173
- }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeDefaultComponent, decorators: [{
175
- type: Component,
176
- args: [{
177
- selector: "hci-attribute-default",
172
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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.NativeSelectComponent, selector: "hci-native-select", inputs: ["class", "name", "label", "url", "entries", "required", "idKey", "displayKey", "disabled", "sortKey", "sortNumeric", "filterKey", "filter"] }] }); }
173
+ }
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AttributeDefaultComponent, decorators: [{
175
+ type: Component,
176
+ args: [{
177
+ selector: "hci-attribute-default",
178
178
  template: `
179
179
  <!-- String -->
180
180
  <ng-container *ngIf="attribute.codeAttributeDataType.toUpperCase() === 'S'">
@@ -306,20 +306,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
306
306
  [name]="name"
307
307
  disabled>
308
308
  </ng-container>
309
- `,
310
- providers: [
311
- {
312
- provide: NG_VALUE_ACCESSOR,
313
- useExisting: forwardRef(() => AttributeDefaultComponent),
314
- multi: true
315
- }
316
- ]
317
- }]
318
- }], ctorParameters: function () { return []; }, propDecorators: { id: [{
319
- type: Input
320
- }], name: [{
321
- type: Input
322
- }], attribute: [{
323
- type: Input
324
- }] } });
325
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWRlZmF1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kL3NyYy9jb21wb25lbnRzL2F0dHJpYnV0ZS1kZWZhdWx0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7OztBQWtKdkUsTUFBTSxPQUFPLHlCQUF5QjtJQVdwQyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUFBLENBQUM7SUFFRixJQUFJLEtBQUssQ0FBQyxDQUFTO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQ7UUFyQkEsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQU1wQixhQUFRLEdBQVEsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUMvQixjQUFTLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBY1gsQ0FBQztJQUVoQixRQUFRLEtBQVUsQ0FBQztJQUVuQixVQUFVLENBQUMsQ0FBUztRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOytHQXJDVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw0R0FSekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJBMUlTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1JVDs7NEZBU1UseUJBQXlCO2tCQTlJckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUlUO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7MEVBS1UsRUFBRTtzQkFBVixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHtHcmFwaGljYWxBdHRyaWJ1dGV9IGZyb20gXCIuLi9tb2RlbC9ncmFwaGljYWwtYXR0cmlidXRlLmVudGl0eVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLWF0dHJpYnV0ZS1kZWZhdWx0XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDwhLS0gU3RyaW5nIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ1MnXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIFRleHQgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZS50b1VwcGVyQ2FzZSgpID09PSAnVFhUJ1wiPlxyXG4gICAgICA8dGV4dGFyZWEgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cInNwZWxsY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgbGFuZz1cImVuXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIj5cclxuICAgICAgPC90ZXh0YXJlYT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQ0InXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICBbY2hlY2tlZF09XCJ2YWx1ZSAmJiB2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSAnWSdcIj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gTnVtZXJpYyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlLnRvVXBwZXJDYXNlKCkgPT09ICdOJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEludGVnZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZS50b1VwcGVyQ2FzZSgpID09PSAnSSdcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBEYXRlIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0QnXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIERhdGUgVGltZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlLnRvVXBwZXJDYXNlKCkgPT09ICdEVCdcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQm9vbGVhbiAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlLnRvVXBwZXJDYXNlKCkgPT09ICdCJ1wiPlxyXG4gICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZWRpdC1yZW5kZXJlclwiXHJcbiAgICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiPlxyXG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1knXCIgW3NlbGVjdGVkXT1cInZhbHVlICYmIHZhbHVlLnRvVXBwZXJDYXNlKCkgPT09ICdZJ1wiPlk8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidOJ1wiIFtzZWxlY3RlZF09XCJ2YWx1ZSAmJiB2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSAnTidcIj5OPC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBFeHRlbmRlZCBCb29sZWFuIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0VCJ1wiPlxyXG4gICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGVkaXQtcmVuZGVyZXJcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiPlxyXG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1knXCIgW3NlbGVjdGVkXT1cInZhbHVlICYmIHZhbHVlLnRvVXBwZXJDYXNlKCkgPT09ICdZJ1wiPlk8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidOJ1wiIFtzZWxlY3RlZF09XCJ2YWx1ZSAmJiB2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSAnTidcIj5OPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCInVSdcIiBbc2VsZWN0ZWRdPVwidmFsdWUgJiYgdmFsdWUudG9VcHBlckNhc2UoKSA9PT0gJ1UnXCI+VTwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQ2hvaWNlOiBTaW5nbGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQUMnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUudG9VcHBlckNhc2UoKSA9PT0gJ04nXCI+XHJcbiAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZWRpdC1yZW5kZXJlclwiXHJcbiAgICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCI+XHJcbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYXR0cmlidXRlQ2hvaWNlIG9mIGF0dHJpYnV0ZS5hdHRyaWJ1dGVDaG9pY2VzXCJcclxuICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImF0dHJpYnV0ZUNob2ljZVwiXHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwidmFsdWUgJiYgdmFsdWUudG9VcHBlckNhc2UoKSA9PT0gYXR0cmlidXRlQ2hvaWNlLmlkQXR0cmlidXRlQ2hvaWNlLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKVwiPlxyXG4gICAgICAgICAge3sgYXR0cmlidXRlQ2hvaWNlLmNob2ljZSB9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQ2hvaWNlOiBNdWx0aSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlLnRvVXBwZXJDYXNlKCkgPT09ICdBQycgJiYgYXR0cmlidXRlLmlzTXVsdGlWYWx1ZS50b1VwcGVyQ2FzZSgpID09PSAnWSdcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgICAgICAgICAgIGRpc2FibGVkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBEaWN0aW9uYXJ5IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0RJQ1QnXCI+XHJcbiAgICAgIDxoY2ktbmF0aXZlLXNlbGVjdCBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc05hbWVdPVwiYXR0cmlidXRlLmF0dHJpYnV0ZURpY3Rpb25hcnkuY2xhc3NOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCI+XHJcbiAgICAgIDwvaGNpLW5hdGl2ZS1zZWxlY3Q+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEdyaWQgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZS50b1VwcGVyQ2FzZSgpID09PSAnR0EnXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgICBkaXNhYmxlZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdHRyaWJ1dGVEZWZhdWx0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGVEZWZhdWx0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBfdmFsdWU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGF0dHJpYnV0ZTogR3JhcGhpY2FsQXR0cmlidXRlO1xyXG5cclxuICBvbkNoYW5nZTogYW55ID0gKF86IGFueSkgPT4ge307XHJcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfTtcclxuXHJcbiAgc2V0IHZhbHVlKHY6IHN0cmluZykge1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgIGlmICh2ICE9PSB0aGlzLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcclxuICAgICAgdGhpcy5vbkNoYW5nZSh2KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxyXG5cclxuICB3cml0ZVZhbHVlKHY6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2O1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxufVxyXG4iXX0=
309
+ `,
310
+ providers: [
311
+ {
312
+ provide: NG_VALUE_ACCESSOR,
313
+ useExisting: forwardRef(() => AttributeDefaultComponent),
314
+ multi: true
315
+ }
316
+ ]
317
+ }]
318
+ }], ctorParameters: () => [], propDecorators: { id: [{
319
+ type: Input
320
+ }], name: [{
321
+ type: Input
322
+ }], attribute: [{
323
+ type: Input
324
+ }] } });
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWRlZmF1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kL3NyYy9jb21wb25lbnRzL2F0dHJpYnV0ZS1kZWZhdWx0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7OztBQWtKdkUsTUFBTSxPQUFPLHlCQUF5QjtJQVdwQyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUFBLENBQUM7SUFFRixJQUFJLEtBQUssQ0FBQyxDQUFTO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVEO1FBckJBLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFNcEIsYUFBUSxHQUFRLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDL0IsY0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQWNYLENBQUM7SUFFaEIsUUFBUSxLQUFVLENBQUM7SUFFbkIsVUFBVSxDQUFDLENBQVM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0FyQ1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsNEdBUnpCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDeEQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQTFJUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtSVQ7OzJGQVNVLHlCQUF5QjtrQkE5SXJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1JVDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGO3dEQUtVLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmltcG9ydCB7R3JhcGhpY2FsQXR0cmlidXRlfSBmcm9tIFwiLi4vbW9kZWwvZ3JhcGhpY2FsLWF0dHJpYnV0ZS5lbnRpdHlcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1hdHRyaWJ1dGUtZGVmYXVsdFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8IS0tIFN0cmluZyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlLnRvVXBwZXJDYXNlKCkgPT09ICdTJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBUZXh0IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ1RYVCdcIj5cclxuICAgICAgPHRleHRhcmVhIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJzcGVsbGNoZWNrXCJcclxuICAgICAgICAgICAgICAgIGxhbmc9XCJlblwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCI+XHJcbiAgICAgIDwvdGV4dGFyZWE+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIENoZWNrYm94IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0NCJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgW2NoZWNrZWRdPVwidmFsdWUgJiYgdmFsdWUudG9VcHBlckNhc2UoKSA9PT0gJ1knXCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIE51bWVyaWMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZS50b1VwcGVyQ2FzZSgpID09PSAnTidcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBJbnRlZ2VyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0knXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRGF0ZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlLnRvVXBwZXJDYXNlKCkgPT09ICdEJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBEYXRlIFRpbWUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZS50b1VwcGVyQ2FzZSgpID09PSAnRFQnXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEJvb2xlYW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQidcIj5cclxuICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGVkaXQtcmVuZGVyZXJcIlxyXG4gICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIj5cclxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidZJ1wiIFtzZWxlY3RlZF09XCJ2YWx1ZSAmJiB2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSAnWSdcIj5ZPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCInTidcIiBbc2VsZWN0ZWRdPVwidmFsdWUgJiYgdmFsdWUudG9VcHBlckNhc2UoKSA9PT0gJ04nXCI+Tjwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRXh0ZW5kZWQgQm9vbGVhbiAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlLnRvVXBwZXJDYXNlKCkgPT09ICdFQidcIj5cclxuICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBlZGl0LXJlbmRlcmVyXCJcclxuICAgICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIj5cclxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidZJ1wiIFtzZWxlY3RlZF09XCJ2YWx1ZSAmJiB2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSAnWSdcIj5ZPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCInTidcIiBbc2VsZWN0ZWRdPVwidmFsdWUgJiYgdmFsdWUudG9VcHBlckNhc2UoKSA9PT0gJ04nXCI+Tjwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1UnXCIgW3NlbGVjdGVkXT1cInZhbHVlICYmIHZhbHVlLnRvVXBwZXJDYXNlKCkgPT09ICdVJ1wiPlU8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIENob2ljZTogU2luZ2xlIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0FDJyAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlLnRvVXBwZXJDYXNlKCkgPT09ICdOJ1wiPlxyXG4gICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGVkaXQtcmVuZGVyZXJcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiPlxyXG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGF0dHJpYnV0ZUNob2ljZSBvZiBhdHRyaWJ1dGUuYXR0cmlidXRlQ2hvaWNlc1wiXHJcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJhdHRyaWJ1dGVDaG9pY2VcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInZhbHVlICYmIHZhbHVlLnRvVXBwZXJDYXNlKCkgPT09IGF0dHJpYnV0ZUNob2ljZS5pZEF0dHJpYnV0ZUNob2ljZS50b1N0cmluZygpLnRvVXBwZXJDYXNlKClcIj5cclxuICAgICAgICAgIHt7IGF0dHJpYnV0ZUNob2ljZS5jaG9pY2UgfX1cclxuICAgICAgICA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIENob2ljZTogTXVsdGkgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQUMnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUudG9VcHBlckNhc2UoKSA9PT0gJ1knXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgICBkaXNhYmxlZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRGljdGlvbmFyeSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlLnRvVXBwZXJDYXNlKCkgPT09ICdESUNUJ1wiPlxyXG4gICAgICA8aGNpLW5hdGl2ZS1zZWxlY3QgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NOYW1lXT1cImF0dHJpYnV0ZS5hdHRyaWJ1dGVEaWN0aW9uYXJ5LmNsYXNzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiPlxyXG4gICAgICA8L2hjaS1uYXRpdmUtc2VsZWN0PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBHcmlkIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0dBJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgZGlzYWJsZWQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXR0cmlidXRlRGVmYXVsdENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlRGVmYXVsdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgX3ZhbHVlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBhdHRyaWJ1dGU6IEdyYXBoaWNhbEF0dHJpYnV0ZTtcclxuXHJcbiAgb25DaGFuZ2U6IGFueSA9IChfOiBhbnkpID0+IHt9O1xyXG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH07XHJcblxyXG4gIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICBpZiAodiAhPT0gdGhpcy52YWx1ZSkge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHY7XHJcbiAgICAgIHRoaXMub25DaGFuZ2Uodik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcbiAgd3JpdGVWYWx1ZSh2OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3ZhbHVlID0gdjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcbn1cclxuIl19