@colijnit/corecomponents_v12 259.1.20 → 259.1.22

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 (30) hide show
  1. package/bundles/colijnit-corecomponents_v12.umd.js +78 -39
  2. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
  3. package/colijnit-corecomponents_v12.metadata.json +1 -1
  4. package/esm2015/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component.js +36 -33
  5. package/esm2015/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.module.js +20 -0
  6. package/esm2015/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.component.js +10 -5
  7. package/esm2015/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.module.js +3 -4
  8. package/esm2015/lib/components/list-of-icons/list-of-icons.component.js +29 -32
  9. package/esm2015/lib/components/list-of-values/list-of-values-popup.component.js +61 -32
  10. package/esm2015/lib/components/list-of-values/list-of-values.component.js +4 -1
  11. package/esm2015/lib/components/list-of-values/list-of-values.module.js +4 -2
  12. package/esm2015/lib/components/simple-grid/simple-grid.component.js +28 -28
  13. package/esm2015/lib/model/icon-list-item.js +1 -1
  14. package/esm2015/public-api.js +2 -1
  15. package/fesm2015/colijnit-corecomponents_v12.js +182 -140
  16. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
  17. package/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component.d.ts +1 -1
  18. package/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.module.d.ts +2 -0
  19. package/lib/components/hour-scheduling-expandable/style/_layout.scss +1 -0
  20. package/lib/components/list-of-icons/list-of-icons.component.d.ts +1 -3
  21. package/lib/components/list-of-icons/style/_layout.scss +3 -2
  22. package/lib/components/list-of-values/list-of-values-popup.component.d.ts +4 -0
  23. package/lib/components/list-of-values/list-of-values.component.d.ts +1 -0
  24. package/lib/components/list-of-values/style/_layout.scss +7 -0
  25. package/lib/components/simple-grid/style/_layout.scss +47 -8
  26. package/lib/model/icon-list-item.d.ts +1 -0
  27. package/package.json +1 -1
  28. package/public-api.d.ts +1 -0
  29. package/esm2015/lib/core/enum/batch-delivery-category.enum.js +0 -13
  30. package/lib/core/enum/batch-delivery-category.enum.d.ts +0 -10
@@ -1,4 +1,4 @@
1
- import { Component, HostBinding, Input, ViewEncapsulation } from "@angular/core";
1
+ import { Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';
2
2
  export class HourSchedulingExpandableTemplateComponent {
3
3
  constructor() {
4
4
  this.layouts = [];
@@ -14,8 +14,10 @@ export class HourSchedulingExpandableTemplateComponent {
14
14
  return true;
15
15
  }
16
16
  onExpandableDragStart(event, obj, onDragStartCustom) {
17
- onDragStartCustom === null || onDragStartCustom === void 0 ? void 0 : onDragStartCustom.call(obj);
18
- event.dataTransfer.setData("text", JSON.stringify({ obj }));
17
+ event.dataTransfer.setData('text', JSON.stringify({ obj }));
18
+ if (onDragStartCustom) {
19
+ onDragStartCustom === null || onDragStartCustom === void 0 ? void 0 : onDragStartCustom.call(obj);
20
+ }
19
21
  }
20
22
  calculateLeftAndWidthOfObjects() {
21
23
  const layoutData = new Array(this._objects.length);
@@ -27,8 +29,9 @@ export class HourSchedulingExpandableTemplateComponent {
27
29
  const overlapGroups = [];
28
30
  const processed = new Set();
29
31
  for (let i = 0; i < this._objects.length; i++) {
30
- if (processed.has(i))
32
+ if (processed.has(i)) {
31
33
  continue;
34
+ }
32
35
  const group = [i];
33
36
  const objA = this._objects[i];
34
37
  const startA = new Date(objA.start);
@@ -61,37 +64,37 @@ export class HourSchedulingExpandableTemplateComponent {
61
64
  }
62
65
  HourSchedulingExpandableTemplateComponent.decorators = [
63
66
  { type: Component, args: [{
64
- selector: "co-hour-scheduling-expandable-template",
67
+ selector: 'co-hour-scheduling-expandable-template',
65
68
  template: `
66
-
67
- <div
68
- *ngFor="let obj of objects"
69
- [class]="'custom-scheduled-object'"
70
- [class.selected]="obj.selected"
71
- [draggable]="!obj.selected"
72
- [style.--height]="obj.height + 'px'"
73
- [style.--top]="obj.top + 'px'"
74
- [style.--left]="layouts[objects.indexOf(obj)].leftPercent + '%'"
75
- [style.--width]="layouts[objects.indexOf(obj)].widthPercent + '%'"
76
- (click)="onSelectBlock(obj)"
77
- (dragstart)="onExpandableDragStart($event, obj, onDragStartCustom(obj) )">
78
69
 
79
- <div
80
- *ngIf="obj.selected"
81
- class="top-resizer"
82
- (mousedown)="onResizeStart($event, obj, 'top')"></div>
83
- <ng-template
84
- [ngTemplateOutlet]="objectTemplate"
85
- [ngTemplateOutletContext]="{
70
+ <div
71
+ *ngFor="let obj of objects"
72
+ [class]="'custom-scheduled-object'"
73
+ [class.selected]="obj.selected"
74
+ [draggable]="!obj.selected"
75
+ [style.--height]="obj.height + 'px'"
76
+ [style.--top]="obj.top + 'px'"
77
+ [style.--left]="layouts[objects.indexOf(obj)].leftPercent + '%'"
78
+ [style.--width]="layouts[objects.indexOf(obj)].widthPercent + '%'"
79
+ (click)="onSelectBlock(obj)"
80
+ (dragstart)="onExpandableDragStart($event, obj, onDragStartCustom(obj) )">
81
+
82
+ <div
83
+ *ngIf="obj.selected"
84
+ class="top-resizer"
85
+ (mousedown)="onResizeStart($event, obj, 'top')"></div>
86
+ <ng-template
87
+ [ngTemplateOutlet]="objectTemplate"
88
+ [ngTemplateOutletContext]="{
86
89
  object: obj
87
90
  }"
88
- >
89
- </ng-template>
90
- <div *ngIf="obj.selected"
91
- class="bottom-resizer"
92
- (mousedown)="onResizeStart($event, obj, 'bottom')"></div>
93
- </div>
94
- `,
91
+ >
92
+ </ng-template>
93
+ <div *ngIf="obj.selected"
94
+ class="bottom-resizer"
95
+ (mousedown)="onResizeStart($event, obj, 'bottom')"></div>
96
+ </div>
97
+ `,
95
98
  encapsulation: ViewEncapsulation.None
96
99
  },] }
97
100
  ];
@@ -103,6 +106,6 @@ HourSchedulingExpandableTemplateComponent.propDecorators = {
103
106
  onSelectBlock: [{ type: Input }],
104
107
  startTimeProp: [{ type: Input }],
105
108
  endTimeProp: [{ type: Input }],
106
- showClass: [{ type: HostBinding, args: ["class.co-hour-scheduling-expandable-template",] }]
109
+ showClass: [{ type: HostBinding, args: ['class.co-hour-scheduling-expandable-template',] }]
107
110
  };
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQXFDNUYsTUFBTSxPQUFPLHlDQUF5QztJQWxDdEQ7UUFxQ1MsWUFBTyxHQUFtRCxFQUFFLENBQUM7SUFpR3RFLENBQUM7SUE1RkMsSUFDVyxPQUFPLENBQUMsT0FBMkI7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBcUJNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHTSxxQkFBcUIsQ0FBQyxLQUFnQixFQUFFLEdBQVcsRUFBRSxpQkFBMkI7UUFDckYsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxZQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFHTSw4QkFBOEI7UUFDbkMsTUFBTSxVQUFVLEdBQW9ELElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEcsMkNBQTJDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBWSxFQUFFLElBQVUsRUFBRSxNQUFZLEVBQUUsSUFBVSxFQUFXLEVBQUU7WUFDcEYsT0FBTyxNQUFNLEdBQUcsSUFBSSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDeEMsQ0FBQyxDQUFDO1FBRUYsK0JBQStCO1FBQy9CLE1BQU0sYUFBYSxHQUFlLEVBQUUsQ0FBQztRQUVyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBRXBDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3QyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUFFLFNBQVM7WUFFL0IsTUFBTSxLQUFLLEdBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRWhDLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO29CQUM3QyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNkLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2xCO2FBQ0Y7WUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzdDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7UUFFRCxrQ0FBa0M7UUFDbEMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM1QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCLE1BQU0sS0FBSyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7WUFFMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDL0IsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHO29CQUN4QixXQUFXLEVBQUUsQ0FBQyxHQUFHLEtBQUs7b0JBQ3RCLFlBQVksRUFBRSxLQUFLO2lCQUNwQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7OztZQXBJRixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHdDQUF3QztnQkFDbEQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTZCVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7OzZCQU1FLEtBQUs7c0JBR0wsS0FBSztnQ0FVTCxLQUFLOzRCQUlMLEtBQUs7NEJBSUwsS0FBSzs0QkFHTCxLQUFLOzBCQUdMLEtBQUs7d0JBSUwsV0FBVyxTQUFDLDhDQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTY2hlZHVsaW5nT2JqZWN0fSBmcm9tICcuLi8uLi8uLi9ob3VyLXNjaGVkdWxpbmcvbW9kZWwvZW51bS9zY2hlZHVsaW5nLW9iamVjdC5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZVwiLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2N1c3RvbS1zY2hlZHVsZWQtb2JqZWN0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm9iai5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCIhb2JqLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1oZWlnaHRdPVwib2JqLmhlaWdodCArICdweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvcF09XCJvYmoudG9wICsgJ3B4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tbGVmdF09XCJsYXlvdXRzW29iamVjdHMuaW5kZXhPZihvYmopXS5sZWZ0UGVyY2VudCArICclJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0td2lkdGhdPVwibGF5b3V0c1tvYmplY3RzLmluZGV4T2Yob2JqKV0ud2lkdGhQZXJjZW50ICsgJyUnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RCbG9jayhvYmopXCJcclxuICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cIm9uRXhwYW5kYWJsZURyYWdTdGFydCgkZXZlbnQsIG9iaiwgb25EcmFnU3RhcnRDdXN0b20ob2JqKSApXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9iai5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wLXJlc2l6ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplU3RhcnQoJGV2ZW50LCBvYmosICd0b3AnKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9iamVjdFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgICBvYmplY3Q6IG9ialxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3R0b20tcmVzaXplclwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25SZXNpemVTdGFydCgkZXZlbnQsIG9iaiwgJ2JvdHRvbScpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZVRlbXBsYXRlQ29tcG9uZW50IHtcclxuXHJcbiAgcHJpdmF0ZSBfb2JqZWN0czogU2NoZWR1bGluZ09iamVjdFtdO1xyXG4gIHB1YmxpYyBsYXlvdXRzOnsgbGVmdFBlcmNlbnQ6IG51bWJlcjsgd2lkdGhQZXJjZW50OiBudW1iZXIgfVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9iamVjdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgb2JqZWN0cyhvYmplY3RzOiBTY2hlZHVsaW5nT2JqZWN0W10pIHtcclxuICAgIHRoaXMuX29iamVjdHMgPSBvYmplY3RzXHJcbiAgICB0aGlzLmxheW91dHMgPSB0aGlzLmNhbGN1bGF0ZUxlZnRBbmRXaWR0aE9mT2JqZWN0cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBvYmplY3RzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdHM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb247XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvblJlc2l6ZVN0YXJ0OiBGdW5jdGlvbjtcclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9uU2VsZWN0QmxvY2s6IEZ1bmN0aW9uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdGFydFRpbWVQcm9wOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVuZFRpbWVQcm9wOiBzdHJpbmc7XHJcblxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZVwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgb25FeHBhbmRhYmxlRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIG9iajogT2JqZWN0LCBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb24pIHtcclxuICAgIG9uRHJhZ1N0YXJ0Q3VzdG9tPy5jYWxsKG9iaik7XHJcbiAgICBldmVudC5kYXRhVHJhbnNmZXIhLnNldERhdGEoXCJ0ZXh0XCIsIEpTT04uc3RyaW5naWZ5KHsgb2JqIH0pKTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlTGVmdEFuZFdpZHRoT2ZPYmplY3RzKCk6IHsgbGVmdFBlcmNlbnQ6IG51bWJlcjsgd2lkdGhQZXJjZW50OiBudW1iZXIgfVtdIHtcclxuICAgIGNvbnN0IGxheW91dERhdGE6IHsgbGVmdFBlcmNlbnQ6IG51bWJlcjsgd2lkdGhQZXJjZW50OiBudW1iZXIgfVtdID0gbmV3IEFycmF5KHRoaXMuX29iamVjdHMubGVuZ3RoKTtcclxuXHJcbiAgICAvLyBIZWxwZXI6IGNoZWNrIGlmIHR3byB0aW1lIHJhbmdlcyBvdmVybGFwXHJcbiAgICBjb25zdCBpc092ZXJsYXBwaW5nID0gKHN0YXJ0QTogRGF0ZSwgZW5kQTogRGF0ZSwgc3RhcnRCOiBEYXRlLCBlbmRCOiBEYXRlKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIHJldHVybiBzdGFydEEgPCBlbmRCICYmIHN0YXJ0QiA8IGVuZEE7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFN0ZXAgMTogYnVpbGQgb3ZlcmxhcCBncm91cHNcclxuICAgIGNvbnN0IG92ZXJsYXBHcm91cHM6IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBwcm9jZXNzZWQgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX29iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHByb2Nlc3NlZC5oYXMoaSkpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgY29uc3QgZ3JvdXA6IG51bWJlcltdID0gW2ldO1xyXG4gICAgICBjb25zdCBvYmpBID0gdGhpcy5fb2JqZWN0c1tpXTtcclxuICAgICAgY29uc3Qgc3RhcnRBID0gbmV3IERhdGUob2JqQS5zdGFydCk7XHJcbiAgICAgIGNvbnN0IGVuZEEgPSBuZXcgRGF0ZShvYmpBLmVuZCk7XHJcblxyXG4gICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCB0aGlzLl9vYmplY3RzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgY29uc3Qgb2JqQiA9IHRoaXMuX29iamVjdHNbal07XHJcbiAgICAgICAgY29uc3Qgc3RhcnRCID0gbmV3IERhdGUob2JqQi5zdGFydCk7XHJcbiAgICAgICAgY29uc3QgZW5kQiA9IG5ldyBEYXRlKG9iakIuZW5kKTtcclxuXHJcbiAgICAgICAgaWYgKGlzT3ZlcmxhcHBpbmcoc3RhcnRBLCBlbmRBLCBzdGFydEIsIGVuZEIpKSB7XHJcbiAgICAgICAgICBncm91cC5wdXNoKGopO1xyXG4gICAgICAgICAgcHJvY2Vzc2VkLmFkZChqKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGdyb3VwLmZvckVhY2goaW5kZXggPT4gcHJvY2Vzc2VkLmFkZChpbmRleCkpO1xyXG4gICAgICBvdmVybGFwR3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN0ZXAgMjogYXNzaWduIGxheW91dCBwZXIgZ3JvdXBcclxuICAgIG92ZXJsYXBHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGNvbnN0IHRvdGFsID0gZ3JvdXAubGVuZ3RoO1xyXG4gICAgICBjb25zdCB3aWR0aCA9IDEwMCAvIHRvdGFsO1xyXG5cclxuICAgICAgZ3JvdXAuZm9yRWFjaCgob2JqZWN0SW5kZXgsIGkpID0+IHtcclxuICAgICAgICBsYXlvdXREYXRhW29iamVjdEluZGV4XSA9IHtcclxuICAgICAgICAgIGxlZnRQZXJjZW50OiBpICogd2lkdGgsXHJcbiAgICAgICAgICB3aWR0aFBlcmNlbnQ6IHdpZHRoXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbGF5b3V0RGF0YTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQXFDNUYsTUFBTSxPQUFPLHlDQUF5QztJQWxDdEQ7UUFxQ1MsWUFBTyxHQUFvRCxFQUFFLENBQUM7SUFnR3ZFLENBQUM7SUEzRkMsSUFDVyxPQUFPLENBQUMsT0FBMkI7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBa0JNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFnQixFQUFFLEdBQVcsRUFBRSxpQkFBMkI7UUFDckYsS0FBSyxDQUFDLFlBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxpQkFBaUIsRUFBRTtZQUNyQixpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxJQUFJLENBQUMs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SztzQkFHTCxLQUFLO2dDQVVMLEtBQUs7NEJBR0wsS0FBSzs0QkFHTCxLQUFLOzRCQUdMLEtBQUs7MEJBR0wsS0FBSzt3QkFHTCxXQUFXLFNBQUMsOENBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTY2hlZHVsaW5nT2JqZWN0fSBmcm9tICcuLi8uLi8uLi9ob3VyLXNjaGVkdWxpbmcvbW9kZWwvZW51bS9zY2hlZHVsaW5nLW9iamVjdC5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGU6IGBcclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb2JqIG9mIG9iamVjdHNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzc109XCInY3VzdG9tLXNjaGVkdWxlZC1vYmplY3QnXCJcclxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwib2JqLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cIiFvYmouc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWhlaWdodF09XCJvYmouaGVpZ2h0ICsgJ3B4J1wiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tdG9wXT1cIm9iai50b3AgKyAncHgnXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuLS1sZWZ0XT1cImxheW91dHNbb2JqZWN0cy5pbmRleE9mKG9iaildLmxlZnRQZXJjZW50ICsgJyUnXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuLS13aWR0aF09XCJsYXlvdXRzW29iamVjdHMuaW5kZXhPZihvYmopXS53aWR0aFBlcmNlbnQgKyAnJSdcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEJsb2NrKG9iailcIlxyXG4gICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwib25FeHBhbmRhYmxlRHJhZ1N0YXJ0KCRldmVudCwgb2JqLCBvbkRyYWdTdGFydEN1c3RvbShvYmopIClcIj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwib2JqLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b3AtcmVzaXplclwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25SZXNpemVTdGFydCgkZXZlbnQsIG9iaiwgJ3RvcCcpXCI+PC9kaXY+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib2JqZWN0VGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAgIG9iamVjdDogb2JqXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmouc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImJvdHRvbS1yZXNpemVyXCJcclxuICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblJlc2l6ZVN0YXJ0KCRldmVudCwgb2JqLCAnYm90dG9tJylcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVUZW1wbGF0ZUNvbXBvbmVudCB7XHJcblxyXG4gIHByaXZhdGUgX29iamVjdHM6IFNjaGVkdWxpbmdPYmplY3RbXTtcclxuICBwdWJsaWMgbGF5b3V0czogeyBsZWZ0UGVyY2VudDogbnVtYmVyOyB3aWR0aFBlcmNlbnQ6IG51bWJlciB9W10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb2JqZWN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBvYmplY3RzKG9iamVjdHM6IFNjaGVkdWxpbmdPYmplY3RbXSkge1xyXG4gICAgdGhpcy5fb2JqZWN0cyA9IG9iamVjdHM7XHJcbiAgICB0aGlzLmxheW91dHMgPSB0aGlzLmNhbGN1bGF0ZUxlZnRBbmRXaWR0aE9mT2JqZWN0cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBvYmplY3RzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdHM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9uUmVzaXplU3RhcnQ6IEZ1bmN0aW9uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvblNlbGVjdEJsb2NrOiBGdW5jdGlvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc3RhcnRUaW1lUHJvcDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBlbmRUaW1lUHJvcDogc3RyaW5nO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLXRlbXBsYXRlJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25FeHBhbmRhYmxlRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIG9iajogT2JqZWN0LCBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb24pIHtcclxuICAgIGV2ZW50LmRhdGFUcmFuc2ZlciEuc2V0RGF0YSgndGV4dCcsIEpTT04uc3RyaW5naWZ5KHtvYmp9KSk7XHJcbiAgICBpZiAob25EcmFnU3RhcnRDdXN0b20pIHtcclxuICAgICAgb25EcmFnU3RhcnRDdXN0b20/LmNhbGwob2JqKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYWxjdWxhdGVMZWZ0QW5kV2lkdGhPZk9iamVjdHMoKTogeyBsZWZ0UGVyY2VudDogbnVtYmVyOyB3aWR0aFBlcmNlbnQ6IG51bWJlciB9W10ge1xyXG4gICAgY29uc3QgbGF5b3V0RGF0YTogeyBsZWZ0UGVyY2VudDogbnVtYmVyOyB3aWR0aFBlcmNlbnQ6IG51bWJlciB9W10gPSBuZXcgQXJyYXkodGhpcy5fb2JqZWN0cy5sZW5ndGgpO1xyXG5cclxuICAgIC8vIEhlbHBlcjogY2hlY2sgaWYgdHdvIHRpbWUgcmFuZ2VzIG92ZXJsYXBcclxuICAgIGNvbnN0IGlzT3ZlcmxhcHBpbmcgPSAoc3RhcnRBOiBEYXRlLCBlbmRBOiBEYXRlLCBzdGFydEI6IERhdGUsIGVuZEI6IERhdGUpOiBib29sZWFuID0+IHtcclxuICAgICAgcmV0dXJuIHN0YXJ0QSA8IGVuZEIgJiYgc3RhcnRCIDwgZW5kQTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gU3RlcCAxOiBidWlsZCBvdmVybGFwIGdyb3Vwc1xyXG4gICAgY29uc3Qgb3ZlcmxhcEdyb3VwczogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IHByb2Nlc3NlZCA9IG5ldyBTZXQ8bnVtYmVyPigpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fb2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAocHJvY2Vzc2VkLmhhcyhpKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBncm91cDogbnVtYmVyW10gPSBbaV07XHJcbiAgICAgIGNvbnN0IG9iakEgPSB0aGlzLl9vYmplY3RzW2ldO1xyXG4gICAgICBjb25zdCBzdGFydEEgPSBuZXcgRGF0ZShvYmpBLnN0YXJ0KTtcclxuICAgICAgY29uc3QgZW5kQSA9IG5ldyBEYXRlKG9iakEuZW5kKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IHRoaXMuX29iamVjdHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBjb25zdCBvYmpCID0gdGhpcy5fb2JqZWN0c1tqXTtcclxuICAgICAgICBjb25zdCBzdGFydEIgPSBuZXcgRGF0ZShvYmpCLnN0YXJ0KTtcclxuICAgICAgICBjb25zdCBlbmRCID0gbmV3IERhdGUob2JqQi5lbmQpO1xyXG5cclxuICAgICAgICBpZiAoaXNPdmVybGFwcGluZyhzdGFydEEsIGVuZEEsIHN0YXJ0QiwgZW5kQikpIHtcclxuICAgICAgICAgIGdyb3VwLnB1c2goaik7XHJcbiAgICAgICAgICBwcm9jZXNzZWQuYWRkKGopO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZ3JvdXAuZm9yRWFjaChpbmRleCA9PiBwcm9jZXNzZWQuYWRkKGluZGV4KSk7XHJcbiAgICAgIG92ZXJsYXBHcm91cHMucHVzaChncm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3RlcCAyOiBhc3NpZ24gbGF5b3V0IHBlciBncm91cFxyXG4gICAgb3ZlcmxhcEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgY29uc3QgdG90YWwgPSBncm91cC5sZW5ndGg7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gMTAwIC8gdG90YWw7XHJcblxyXG4gICAgICBncm91cC5mb3JFYWNoKChvYmplY3RJbmRleCwgaSkgPT4ge1xyXG4gICAgICAgIGxheW91dERhdGFbb2JqZWN0SW5kZXhdID0ge1xyXG4gICAgICAgICAgbGVmdFBlcmNlbnQ6IGkgKiB3aWR0aCxcclxuICAgICAgICAgIHdpZHRoUGVyY2VudDogd2lkdGhcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBsYXlvdXREYXRhO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,20 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule, DatePipe } from "@angular/common";
3
+ import { HourSchedulingExpandableTemplateComponent } from './hour-scheduling-expandable-template.component';
4
+ export class HourSchedulingExpandableTemplateModule {
5
+ }
6
+ HourSchedulingExpandableTemplateModule.decorators = [
7
+ { type: NgModule, args: [{
8
+ imports: [
9
+ CommonModule,
10
+ ],
11
+ declarations: [
12
+ HourSchedulingExpandableTemplateComponent
13
+ ],
14
+ exports: [
15
+ HourSchedulingExpandableTemplateComponent
16
+ ],
17
+ providers: [DatePipe]
18
+ },] }
19
+ ];
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBRSxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMseUNBQXlDLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQWdCMUcsTUFBTSxPQUFPLHNDQUFzQzs7O1lBYmxELFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtpQkFDYjtnQkFDQyxZQUFZLEVBQUU7b0JBQ1oseUNBQXlDO2lCQUMxQztnQkFDSCxPQUFPLEVBQUU7b0JBQ1AseUNBQXlDO2lCQUMxQztnQkFDRCxTQUFTLEVBQUUsQ0FBRSxRQUFRLENBQUM7YUFFdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZSwgRGF0ZVBpcGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVUZW1wbGF0ZUNvbXBvbmVudH0gZnJvbSAnLi9ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gIF0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtcclxuICAgICAgSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlVGVtcGxhdGVDb21wb25lbnRcclxuICAgIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlVGVtcGxhdGVDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogWyBEYXRlUGlwZV1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVUZW1wbGF0ZU1vZHVsZXtcclxufVxyXG4iXX0=
@@ -97,6 +97,11 @@ export class HourSchedulingExpandableComponent {
97
97
  this.currentDraggingObject = obj;
98
98
  }
99
99
  handleDrop(dragEvent, hour) {
100
+ dragEvent.preventDefault();
101
+ dragEvent.stopPropagation();
102
+ if (!this.schedule[this.objectsProp] || !this.schedule[this.objectsProp].find((object) => { var _a; return object[this.idProp] === this.currentDraggingObject && ((_a = this.currentDraggingObject) === null || _a === void 0 ? void 0 : _a.id); })) {
103
+ this.currentDraggingObject = undefined;
104
+ }
100
105
  if (this.currentDraggingObject) {
101
106
  //The order was scheduled and needs to be moved
102
107
  let start = this.currentDraggingObject.start;
@@ -114,17 +119,17 @@ export class HourSchedulingExpandableComponent {
114
119
  scheduledObject.top = this.timeDifference(this.schedule[this.childProp][this.startTimeProp], scheduledObject.start);
115
120
  scheduledObject.height = this.timeDifference(scheduledObject.start, scheduledObject.end);
116
121
  this.timeChangeEvent.emit(originalObject);
117
- this.currentDraggingObject = undefined;
118
122
  }
123
+ this.currentDraggingObject = undefined;
119
124
  }
120
125
  else {
121
126
  let parsed = this.tryParseJSONObject(dragEvent.dataTransfer.getData("text"));
122
127
  if (!parsed) {
123
128
  this.newObjectPlanEvent.emit({ currentHour: hour, data: parsed.toString() });
124
- return;
125
129
  }
126
- //Move between calendars is still too buggy
127
- // this.moveBetweenCalendarsEvent.emit({hour: hour, data: parsed});
130
+ else {
131
+ this.moveBetweenCalendarsEvent.emit({ hour: hour, data: parsed });
132
+ }
128
133
  }
129
134
  }
130
135
  allowDrop(event, hour) {
@@ -328,4 +333,4 @@ HourSchedulingExpandableComponent.propDecorators = {
328
333
  onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }],
329
334
  clickOut: [{ type: HostListener, args: ['document:click', ['$event'],] }]
330
335
  };
331
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQUUsVUFBVSxFQUNyQixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQWdFdkIsTUFBTSxPQUFPLGlDQUFpQztJQTZENUMsWUFDVSxLQUF3QixFQUN4QixJQUFnQjtRQURoQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBN0RuQixlQUFVLEdBQWEsRUFBRSxDQUFDO1FBQzFCLHFCQUFnQixHQUF1QixFQUFFLENBQUM7UUFHekMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUsxQiwwQkFBcUIsR0FBNEIsSUFBSSxDQUFDO1FBQ3RELDBCQUFxQixHQUE0QixJQUFJLENBQUM7UUFDdEQsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBdUJkLG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkUsdUJBQWtCLEdBQXdELElBQUksWUFBWSxFQUd2RyxDQUFDO1FBRVksOEJBQXlCLEdBQXdELElBQUksWUFBWSxFQUF5QyxDQUFDO1FBR3JKLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFtQmpDLENBQUM7SUFoREQsSUFBb0IsUUFBUSxDQUFFLEtBQWE7UUFDekMsSUFBRyxLQUFLLElBQUksS0FBSyxLQUFLLElBQUks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QUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRU0scUJBQXFCLENBQUMsSUFBVTtRQUNyQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFFLENBQUMsZUFBaUMsRUFBRSxFQUFFO1lBQ25FLElBQUcsZUFBZSxDQUFDLFFBQVEsRUFBRTtnQkFDM0IsZUFBZSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDbEM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7OztZQWxaRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLCtCQUErQjtnQkFDekMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q1Q7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUF6RUMsaUJBQWlCO1lBQ04sVUFBVTs7O3VCQTBGcEIsS0FBSzs0QkFhTCxLQUFLOzBCQUNMLEtBQUs7MEJBQ0wsS0FBSzt3QkFDTCxLQUFLOzZCQUNMLEtBQUs7cUJBQ0wsS0FBSzs4QkFFTCxNQUFNO2lDQUNOLE1BQU07d0NBS04sTUFBTTt3QkFFTixXQUFXLFNBQUMscUNBQXFDO3VCQUdqRCxZQUFZLFNBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO3VCQUt4QyxZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbnRlcmZhY2UgU2NoZWR1bGluZ09iamVjdCB7XHJcbiAgc3RhcnQ6IERhdGU7XHJcbiAgZW5kOiBEYXRlO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHN1YlRpdGxlPzogc3RyaW5nO1xyXG4gIGhlaWdodD86IG51bWJlcjtcclxuICB0b3A/OiBudW1iZXI7XHJcbiAgaWQ6IG51bWJlciB8IHN0cmluZztcclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuICBzaG93VG9wUmVzaXplcj86IGJvb2xlYW47XHJcbiAgc2hvd0JvdHRvbVJlc2l6ZXI/OiBib29sZWFuO1xyXG5cclxuXHJcbiAgW2tleTogc3RyaW5nXTogYW55OyAvLyBBbGxvd3MgZHluYW1pYyBwcm9wZXJ0aWVzIGluY2x1ZGluZyB1bmlxdWUgaWRlbnRpZmllcnNcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWJsb2NrXCIgKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91ckxhYmVsc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJob3VyLWxhYmVsXCI+PHNwYW4gW3RleHRDb250ZW50XT1cImhvdXJcIj48L3NwYW4+PC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtZGlzcGxheVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpcnN0LWhhbGYtaG91ciBvYmplY3QtaGFsZlwiXHJcbiAgICAgICAgICAgICAgIChkcmFnb3Zlcik9XCJhbGxvd0Ryb3AoJGV2ZW50LCBob3VyKVwiXHJcbiAgICAgICAgICAgICAgIChkcmFnbGVhdmUpPVwiaGFuZGxlRHJhZ0xlYXZlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoZHJvcCk9XCJoYW5kbGVEcm9wKCRldmVudCwgaG91cilcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmQtaGFsZi1ob3VyIG9iamVjdC1oYWxmXCJcclxuICAgICAgICAgICAgICAgKGRyYWdvdmVyKT1cImFsbG93RHJvcCgkZXZlbnQsIGFkZEhhbGZIb3VyKGhvdXIpKVwiXHJcbiAgICAgICAgICAgICAgIChkcmFnbGVhdmUpPVwiaGFuZGxlRHJhZ0xlYXZlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoZHJvcCk9XCJoYW5kbGVEcm9wKCRldmVudCwgYWRkSGFsZkhvdXIoaG91cikpXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2NoZWR1bGVkLW9iamVjdHNcIiA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICAgICAgb2JqZWN0czogc2NoZWR1bGVkT2JqZWN0cyxcclxuICAgICAgICAgICAgICBvblNlbGVjdEJsb2NrOiB0aGlzLm9uU2VsZWN0QmxvY2suYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICBvblJlc2l6ZVN0YXJ0OiB0aGlzLm9uUmVzaXplU3RhcnQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICBvbkRyYWdTdGFydEN1c3RvbTogdGhpcy5vbkRyYWdTdGFydEN1c3RvbS5iaW5kKHRoaXMpXHJcblxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBob3VyTGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHB1YmxpYyBzY2hlZHVsZWRPYmplY3RzOiBTY2hlZHVsaW5nT2JqZWN0W10gPSBbXTtcclxuXHJcblxyXG4gIHByaXZhdGUgcmVzaXppbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIHJlc2l6ZURpcmVjdGlvbjogJ3RvcCcgfCAnYm90dG9tJztcclxuICBwcml2YXRlIGluaXRpYWxZOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBpbml0aWFsSGVpZ2h0OiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBpbml0aWFsVG9wOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBjdXJyZW50UmVzaXppbmdPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGN1cnJlbnREcmFnZ2luZ09iamVjdDogU2NoZWR1bGluZ09iamVjdCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgTUlOX0hFSUdIVCA9IDMwO1xyXG4gIHByaXZhdGUgX3NjaGVkdWxlOiBPYmplY3QgPSB7fTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2NoZWR1bGUoIHZhbHVlOiBPYmplY3QpIHtcclxuICAgIGlmKHZhbHVlICYmIHZhbHVlICE9PSB0aGlzLl9zY2hlZHVsZSkge1xyXG4gICAgICB0aGlzLnJlbmRlck9iamVjdHMoKTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLl9zY2hlZHVsZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzY2hlZHVsZSgpOiBPYmplY3Qge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NjaGVkdWxlO1xyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdGFydFRpbWVQcm9wOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGVuZFRpbWVQcm9wOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIG9iamVjdHNQcm9wOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoaWxkUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgaWRQcm9wOiBzdHJpbmc7ICAvLyBJbnB1dCBmb3IgdW5pcXVlIGlkZW50aWZpZXIgcHJvcGVydHlcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyB0aW1lQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBuZXdPYmplY3RQbGFuRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IGN1cnJlbnRIb3VyOiBzdHJpbmcsIGRhdGE6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgY3VycmVudEhvdXI6IHN0cmluZyxcclxuICAgIGRhdGE6IHN0cmluZ1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW92ZUJldHdlZW5DYWxlbmRhcnNFdmVudDogRXZlbnRFbWl0dGVyPHtob3VyOiBzdHJpbmcsIGRhdGE6U2NoZWR1bGluZ09iamVjdH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7aG91cjogc3RyaW5nLCBkYXRhOlNjaGVkdWxpbmdPYmplY3R9PigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlJylcclxuICBwdWJsaWMgc2hvd0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIG9uUmVzaXplKGV2ZW50OiB7IHRhcmdldDogeyBpbm5lcldpZHRoOiBhbnk7IH07IH0pIHtcclxuICAgIGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBjbGlja091dChldmVudDogeyB0YXJnZXQ6IGFueTsgfSkge1xyXG4gICAgaWYoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5oYW5kbGVEZXNlbGVjdEFsbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVSZWY6IEVsZW1lbnRSZWZcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZW5lcmF0ZVRpbWVCbG9ja3MoKTtcclxuICAgIGlmKHRoaXMuc2NoZWR1bGUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJPYmplY3RzKCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuICAvLyBDYWxjdWxhdGUgcHJvcGVydGllcyBmb3IgZWFjaCBzY2hlZHVsZWQgb2JqZWN0IHRvIGRldGVybWluZSByZXNpemVyIHZpc2liaWxpdHlcclxuXHJcblxyXG4gIC8vIEZpbmQgdGhlIG5leHQgb2JqZWN0IGluIHRoZSBzY2hlZHVsZWRPYmplY3RzIGxpc3RcclxuICBwcml2YXRlIF9maW5kTmV4dE9iamVjdChjdXJyZW50T2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0KTogU2NoZWR1bGluZ09iamVjdCB8IG51bGwge1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5zY2hlZHVsZWRPYmplY3RzLmluZGV4T2YoY3VycmVudE9iamVjdCk7XHJcbiAgICBpZiAoY3VycmVudEluZGV4ID49IDAgJiYgY3VycmVudEluZGV4IDwgdGhpcy5zY2hlZHVsZWRPYmplY3RzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVkT2JqZWN0c1tjdXJyZW50SW5kZXggKyAxXTsgLy8gVGhlIG5leHQgb2JqZWN0IGluIHRoZSBsaXN0XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDsgLy8gTm8gbmV4dCBvYmplY3QgKGl0J3MgdGhlIGxhc3Qgb25lKVxyXG4gIH1cclxuXHJcbiAgLy8gRmluZCB0aGUgcHJldmlvdXMgb2JqZWN0IGluIHRoZSBzY2hlZHVsZWRPYmplY3RzIGxpc3RcclxuICBwcml2YXRlIF9maW5kUHJldmlvdXNPYmplY3QoY3VycmVudE9iamVjdDogU2NoZWR1bGluZ09iamVjdCk6IFNjaGVkdWxpbmdPYmplY3QgfCBudWxsIHtcclxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5pbmRleE9mKGN1cnJlbnRPYmplY3QpO1xyXG4gICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVkT2JqZWN0c1tjdXJyZW50SW5kZXggLSAxXTsgLy8gVGhlIHByZXZpb3VzIG9iamVjdCBpbiB0aGUgbGlzdFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7IC8vIE5vIHByZXZpb3VzIG9iamVjdCAoaXQncyB0aGUgZmlyc3Qgb25lKVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyByZW5kZXJPYmplY3RzKCkge1xyXG4gICAgaWYodGhpcy5zY2hlZHVsZSkge1xyXG4gICAgICBpZiAodGhpcy5zY2hlZHVsZWRPYmplY3RzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgb2JqZWN0czogT2JqZWN0W10gPSB0aGlzLnNjaGVkdWxlW3RoaXMub2JqZWN0c1Byb3BdO1xyXG5cclxuICAgICAgbGV0IHNjaGVkdWxpbmdPYmplY3RzOiBTY2hlZHVsaW5nT2JqZWN0W10gPSBbXTtcclxuXHJcblxyXG4gICAgICBpZiAob2JqZWN0cyAmJiBvYmplY3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBvYmplY3RzLmZvckVhY2gob2JqZWN0ID0+IHtcclxuICAgICAgICAgIGxldCB0b3BEaWZmZXJlbmNlOiBudW1iZXIgPSB0aGlzLnRpbWVEaWZmZXJlbmNlKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0sIG9iamVjdFt0aGlzLnN0YXJ0VGltZVByb3BdKTtcclxuICAgICAgICAgIHNjaGVkdWxpbmdPYmplY3RzLnB1c2goXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogb2JqZWN0Wyd0aXRsZSddLFxyXG4gICAgICAgICAgICAgIHN1YlRpdGxlOiBvYmplY3RbJ3N1YlRpdGxlJ10sXHJcblxyXG4gICAgICAgICAgICAgIHN0YXJ0OiB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbihvYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSksXHJcbiAgICAgICAgICAgICAgZW5kOiB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbihvYmplY3RbdGhpcy5lbmRUaW1lUHJvcF0pLFxyXG4gICAgICAgICAgICAgIGlkOiBvYmplY3RbdGhpcy5pZFByb3BdLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogdGhpcy50aW1lRGlmZmVyZW5jZShvYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSwgb2JqZWN0W3RoaXMuZW5kVGltZVByb3BdKSxcclxuICAgICAgICAgICAgICB0b3A6IHRvcERpZmZlcmVuY2UsXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHMgPSBzY2hlZHVsaW5nT2JqZWN0cztcclxuXHJcbiAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2VsZWN0QmxvY2sob2JqOiBTY2hlZHVsaW5nT2JqZWN0KSB7XHJcbiAgICBvYmouc2VsZWN0ZWQgPSAhb2JqLnNlbGVjdGVkO1xyXG4gICAgaWYob2JqLnNlbGVjdGVkKSB7XHJcbiAgICAgIHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5mb3JFYWNoKChzY2hlZHVsZWRPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QpID0+IHtcclxuICAgICAgICBpZiAoc2NoZWR1bGVkT2JqZWN0LnNlbGVjdGVkICYmIHNjaGVkdWxlZE9iamVjdCAhPT0gb2JqKSB7XHJcbiAgICAgICAgICBzY2hlZHVsZWRPYmplY3Quc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QgPSBvYmo7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EcmFnU3RhcnRDdXN0b20ob2JqOiBTY2hlZHVsaW5nT2JqZWN0KSB7XHJcbiAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdCA9IG9iajtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgaGFuZGxlRHJvcChkcmFnRXZlbnQ6IERyYWdFdmVudCwgaG91cjogc3RyaW5nKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0KSB7XHJcbiAgICAgIC8vVGhlIG9yZGVyIHdhcyBzY2hlZHVsZWQgYW5kIG5lZWRzIHRvIGJlIG1vdmVkXHJcblxyXG4gICAgICBsZXQgc3RhcnQ6IERhdGUgPSB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdC5zdGFydDtcclxuICAgICAgbGV0IGhvdXJTcGxpdCA9IGhvdXIuc3BsaXQoXCI6XCIpXHJcbiAgICAgIHN0YXJ0LnNldEhvdXJzKHBhcnNlSW50KGhvdXJTcGxpdFswXSkpO1xyXG4gICAgICBzdGFydC5zZXRNaW51dGVzKHBhcnNlSW50KGhvdXJTcGxpdFsxXSkpO1xyXG4gICAgICBsZXQgc2NoZWR1bGVkT2JqZWN0ID0gdGhpcy5zY2hlZHVsZWRPYmplY3RzLmZpbmQoIHNjaGVkdWxlZE9iamVjdCA9PiBzY2hlZHVsZWRPYmplY3QuaWQgPT09IHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0LmlkKTtcclxuICAgICAgaWYoc2NoZWR1bGVkT2JqZWN0KSB7XHJcbiAgICAgICAgc2NoZWR1bGVkT2JqZWN0LnN0YXJ0ID0gc3RhcnQ7XHJcblxyXG4gICAgICAgIGxldCBvcmlnaW5hbE9iamVjdDogT2JqZWN0ID0gdGhpcy5zY2hlZHVsZVt0aGlzLm9iamVjdHNQcm9wXS5maW5kKChvYmplY3Q6IE9iamVjdCkgPT4gb2JqZWN0W3RoaXMuaWRQcm9wXSA9PT0gdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QuaWQpO1xyXG4gICAgICAgIG9yaWdpbmFsT2JqZWN0W3RoaXMuc3RhcnRUaW1lUHJvcF0gPSBzdGFydDtcclxuICAgICAgICBsZXQgZW5kOiBEYXRlID0gdGhpcy5hZGRNaW51dGVzKG9yaWdpbmFsT2JqZWN0W3RoaXMuc3RhcnRUaW1lUHJvcF0sIHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0LmhlaWdodCk7XHJcbiAgICAgICAgb3JpZ2luYWxPYmplY3RbdGhpcy5lbmRUaW1lUHJvcF0gPSBlbmQ7XHJcbiAgICAgICAgc2NoZWR1bGVkT2JqZWN0LmVuZCA9IGVuZDtcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3QudG9wID0gdGhpcy50aW1lRGlmZmVyZW5jZSh0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLnN0YXJ0VGltZVByb3BdLCBzY2hlZHVsZWRPYmplY3Quc3RhcnQpO1xyXG4gICAgICAgIHNjaGVkdWxlZE9iamVjdC5oZWlnaHQgPSB0aGlzLnRpbWVEaWZmZXJlbmNlKHNjaGVkdWxlZE9iamVjdC5zdGFydCwgc2NoZWR1bGVkT2JqZWN0LmVuZCk7XHJcblxyXG4gICAgICAgIHRoaXMudGltZUNoYW5nZUV2ZW50LmVtaXQob3JpZ2luYWxPYmplY3QpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICBsZXQgcGFyc2VkOiBTY2hlZHVsaW5nT2JqZWN0ID0gdGhpcy50cnlQYXJzZUpTT05PYmplY3QoZHJhZ0V2ZW50LmRhdGFUcmFuc2ZlciEuZ2V0RGF0YShcInRleHRcIikpO1xyXG5cclxuICAgICAgaWYgKCFwYXJzZWQpIHtcclxuICAgICAgICB0aGlzLm5ld09iamVjdFBsYW5FdmVudC5lbWl0KHtjdXJyZW50SG91cjogaG91ciwgZGF0YTogcGFyc2VkLnRvU3RyaW5nKCl9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vTW92ZSBiZXR3ZWVuIGNhbGVuZGFycyBpcyBzdGlsbCB0b28gYnVnZ3lcclxuICAgICAgLy8gdGhpcy5tb3ZlQmV0d2VlbkNhbGVuZGFyc0V2ZW50LmVtaXQoe2hvdXI6IGhvdXIsIGRhdGE6IHBhcnNlZH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgYWxsb3dEcm9wKGV2ZW50OiBEcmFnRXZlbnQsIGhvdXI6IHN0cmluZykge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCF0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkcmFnLW92ZXInKSkge1xyXG4gICAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgnZHJhZy1vdmVyJyk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdCkge1xyXG4gICAgICBsZXQgbmV3U3RhcnREYXRlOiBEYXRlID0gdGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4odGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3Quc3RhcnQpO1xyXG4gICAgICBsZXQgaG91clNwbGl0OiBzdHJpbmdbXSA9IGhvdXIuc3BsaXQoXCI6XCIpO1xyXG4gICAgICBuZXdTdGFydERhdGUuc2V0SG91cnMocGFyc2VJbnQoaG91clNwbGl0WzBdKSk7XHJcbiAgICAgIG5ld1N0YXJ0RGF0ZS5zZXRIb3VycyhwYXJzZUludChob3VyU3BsaXRbMV0pKTtcclxuXHJcbiAgICAgIGlmKHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5maW5kKCAoc2NoZWR1bGVkT2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0KSA9PiBzY2hlZHVsZWRPYmplY3Quc3RhcnQgPT09IG5ld1N0YXJ0RGF0ZSApKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBwdWJsaWMgaGFuZGxlRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICh0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkcmFnLW92ZXInKSkge1xyXG4gICAgICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZy1vdmVyJyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIFRyaWdnZXJlZCB3aGVuIHJlc2l6aW5nIHN0YXJ0c1xyXG5cclxuICBwdWJsaWMgb25SZXNpemVTdGFydChldmVudDogTW91c2VFdmVudCwgb2JqOiBTY2hlZHVsaW5nT2JqZWN0LCBkaXJlY3Rpb246ICd0b3AnIHwgJ2JvdHRvbScpIHtcclxuICAgIHRoaXMucmVzaXppbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5yZXNpemVEaXJlY3Rpb24gPSBkaXJlY3Rpb247XHJcbiAgICB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdCA9IG9iajtcclxuICAgIHRoaXMuaW5pdGlhbFkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgdGhpcy5pbml0aWFsSGVpZ2h0ID0gb2JqLmhlaWdodCB8fCAwO1xyXG4gICAgdGhpcy5pbml0aWFsVG9wID0gb2JqLnRvcCB8fCAwO1xyXG5cclxuICAgIC8vIExpc3RlbiB0byBtb3VzZW1vdmUgYW5kIG1vdXNldXAgZXZlbnRzIGdsb2JhbGx5XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXppbmcuYmluZCh0aGlzKSk7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZUVuZC5iaW5kKHRoaXMpKTtcclxuICB9XHJcbiAgLy8gSGFuZGxlIHJlc2l6aW5nIHdpdGggc25hcHBpbmcgdG8gMzBweCBpbmNyZW1lbnRzIGFuZCBtaW5pbXVtIGhlaWdodCByZXN0cmljdGlvblxyXG5cclxuICBwdWJsaWMgb25SZXNpemluZyhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLnJlc2l6aW5nIHx8ICF0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGRlbHRhWSA9IGV2ZW50LmNsaWVudFkgLSB0aGlzLmluaXRpYWxZO1xyXG4gICAgY29uc3Qgc25hcHBlZERlbHRhWSA9IE1hdGgucm91bmQoZGVsdGFZIC8gMzApICogMzA7XHJcblxyXG4gICAgaWYgKHRoaXMucmVzaXplRGlyZWN0aW9uID09PSAnYm90dG9tJykge1xyXG4gICAgICBjb25zdCBuZXh0T2JqZWN0ID0gdGhpcy5fZmluZE5leHRPYmplY3QodGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QpO1xyXG4gICAgICBjb25zdCBtYXhIZWlnaHQgPSBuZXh0T2JqZWN0ID8gbmV4dE9iamVjdC50b3AgLSB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdC50b3AgOiBJbmZpbml0eTtcclxuXHJcbiAgICAgIC8vIEJsb2NrIGV4cGFuZGluZyBiZXlvbmQgdGhlIG5leHQgb2JqZWN0IGFuZCBzaHJpbmtpbmcgYmVsb3cgMzBweFxyXG4gICAgICBjb25zdCBuZXdIZWlnaHQgPSBNYXRoLm1heCh0aGlzLmluaXRpYWxIZWlnaHQgKyBzbmFwcGVkRGVsdGFZLCB0aGlzLk1JTl9IRUlHSFQpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdC5oZWlnaHQgPSBNYXRoLm1pbihuZXdIZWlnaHQsIG1heEhlaWdodCk7XHJcblxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJlc2l6ZURpcmVjdGlvbiA9PT0gJ3RvcCcpIHtcclxuICAgICAgY29uc3QgcHJldmlvdXNPYmplY3QgPSB0aGlzLl9maW5kUHJldmlvdXNPYmplY3QodGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QpO1xyXG4gICAgICBjb25zdCBtaW5Ub3AgPSBwcmV2aW91c09iamVjdCA/IHByZXZpb3VzT2JqZWN0LnRvcCArIHByZXZpb3VzT2JqZWN0LmhlaWdodCA6IDA7XHJcblxyXG4gICAgICBjb25zdCBuZXdIZWlnaHQgPSBNYXRoLm1heCh0aGlzLmluaXRpYWxIZWlnaHQgLSBzbmFwcGVkRGVsdGFZLCB0aGlzLk1JTl9IRUlHSFQpO1xyXG4gICAgICBjb25zdCBuZXdUb3AgPSB0aGlzLmluaXRpYWxUb3AgKyAodGhpcy5pbml0aWFsSGVpZ2h0IC0gbmV3SGVpZ2h0KTtcclxuXHJcbiAgICAgIC8vIEJsb2NrIG1vdmluZyBhYm92ZSB0aGUgcHJldmlvdXMgb2JqZWN0J3MgYm90dG9tIGFuZCBzaHJpbmtpbmcgYmVsb3cgTUlOX0hFSUdIVFxyXG4gICAgICBpZiAobmV3SGVpZ2h0ID49IHRoaXMuTUlOX0hFSUdIVCAmJiBuZXdUb3AgPj0gbWluVG9wKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QudG9wID0gbmV3VG9wO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0LmhlaWdodCA9IG5ld0hlaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEVuc3VyZSBjaGFuZ2UgZGV0ZWN0aW9uIGhhcHBlbnNcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyBUcmlnZ2VyZWQgd2hlbiByZXNpemluZyBlbmRzXHJcblxyXG4gIHB1YmxpYyBvblJlc2l6ZUVuZChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgbGV0IG9iamVjdDogU2NoZWR1bGluZ09iamVjdCA9IHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0O1xyXG5cclxuICAgIGlmKG9iamVjdCAmJiBvYmplY3Quc2VsZWN0ZWQpIHtcclxuICAgICAgbGV0IG9yaWdpbmFsT2JqZWN0ID0gdGhpcy5zY2hlZHVsZVt0aGlzLm9iamVjdHNQcm9wXS5maW5kKChzY2hlZHVsZWRPYmplY3Q6IE9iamVjdCkgPT4gc2NoZWR1bGVkT2JqZWN0W3RoaXMuaWRQcm9wXSA9PT0gb2JqZWN0LmlkKTtcclxuXHJcbiAgICAgIGlmIChvcmlnaW5hbE9iamVjdCkge1xyXG4gICAgICAgIC8vIFN0YXJ0IGRhdGUgY2FsY3VsYXRpb24gZmlyc3RcclxuICAgICAgICBvcmlnaW5hbE9iamVjdFt0aGlzLnN0YXJ0VGltZVByb3BdID0gdGhpcy5hZGRNaW51dGVzKHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0pLCBvYmplY3QudG9wKTtcclxuXHJcbiAgICAgICAgLy8gVGhlbiAgZW5kIGRhdGUgY2FsY3VsYXRpb24gYmFzZWQgb24gdGhlIGhlaWdodCBvZiB0aGUgb2JqZWN0XHJcbiAgICAgICAgb3JpZ2luYWxPYmplY3RbdGhpcy5lbmRUaW1lUHJvcF0gPSB0aGlzLmFkZE1pbnV0ZXModGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4ob3JpZ2luYWxPYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSksIG9iamVjdC5oZWlnaHQpO1xyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpbWVDaGFuZ2VFdmVudC5lbWl0KG9yaWdpbmFsT2JqZWN0KTtcclxuXHJcbiAgICAgIHRoaXMucmVzaXppbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3Quc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QgPSBudWxsO1xyXG5cclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIFJlbW92ZSBnbG9iYWwgZXZlbnQgbGlzdGVuZXJzXHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXppbmcuYmluZCh0aGlzKSk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZUVuZC5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0aW1lRGlmZmVyZW5jZShkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpIHtcclxuICAgIGxldCBkaWZmZXJlbmNlID0gdGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4oZGF0ZTEpLmdldFRpbWUoKSAvIDEwMDAgLSB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbihkYXRlMikuZ2V0VGltZSgpIC8gMTAwMDtcclxuICAgIHJldHVybiBNYXRoLmFicyhkaWZmZXJlbmNlIC8gNjApO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBnZW5lcmF0ZVRpbWVCbG9ja3MoKSB7XHJcbiAgICBsZXQgc3RhcnRVbml4OiBudW1iZXIgPSAhdGhpcy5jaGlsZFByb3AgPyB0aGlzLmRhdGVUb1VuaXhFcG9jaCh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLnNjaGVkdWxlW3RoaXMuc3RhcnRUaW1lUHJvcF0pKSA6IHRoaXMuZGF0ZVRvVW5peEVwb2NoKHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0pKTtcclxuICAgIGxldCBlbmRVbml4OiBudW1iZXIgPSAhdGhpcy5jaGlsZFByb3AgPyB0aGlzLmRhdGVUb1VuaXhFcG9jaCh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLnNjaGVkdWxlW3RoaXMuZW5kVGltZVByb3BdKSkgOiB0aGlzLmRhdGVUb1VuaXhFcG9jaCh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLmVuZFRpbWVQcm9wXSkpO1xyXG5cclxuICAgIGxldCBpbnRlcnZhbCA9IDYwICogNjA7XHJcblxyXG4gICAgZm9yIChsZXQgaG91ckNvdW50ID0gc3RhcnRVbml4OyBob3VyQ291bnQgPD0gZW5kVW5peDsgaG91ckNvdW50ICs9IGludGVydmFsKSB7XHJcbiAgICAgIGxldCBob3VyID0gbmV3IERhdGUoaG91ckNvdW50ICogMTAwMClcclxuICAgICAgbGV0IGhvdXJTdHJpbmcgPSBgJHtob3VyLmdldEhvdXJzKCl9OiR7aG91ci5nZXRNaW51dGVzKCkgPT09IDAgPyAnMDAnIDogaG91ci5nZXRNaW51dGVzKCl9YDtcclxuICAgICAgdGhpcy5ob3VyTGFiZWxzLnB1c2goaG91clN0cmluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGF0ZVRvVW5peEVwb2NoKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoZGF0ZS5nZXRUaW1lKCkpIC8gMTAwMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRNaW51dGVzKGRhdGU6IERhdGUsIG1pbnV0ZXM6IG51bWJlcik6IERhdGUge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgbWludXRlcyAqIDYwMDAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cnlQYXJzZUpTT05PYmplY3QoanNvblN0cmluZzogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgbyA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XHJcbiAgICAgIGlmIChvICYmIHR5cGVvZiBvID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgcmV0dXJuIG87XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkSGFsZkhvdXIoaG91cjogc3RyaW5nKSB7XHJcbiAgICBsZXQgc3BsaXQgPSBob3VyLnNwbGl0KFwiOlwiKTtcclxuICAgIHNwbGl0WzFdID0gXCIzMFwiO1xyXG4gICAgcmV0dXJuIHNwbGl0LmpvaW4oJzonKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0VFooZGF0ZSwgdHpTdHJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSgodHlwZW9mIGRhdGUgPT09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZShkYXRlKSA6IGRhdGUpLnRvTG9jYWxlU3RyaW5nKFwiZW4tVVNcIiwge3RpbWVab25lOiB0elN0cmluZ30pKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0RGF0ZVRvRXVyb3BlYW4oZGF0ZTogRGF0ZSk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRaKGRhdGUsICdFdXJvcGUvQW1zdGVyZGFtJylcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZXNlbGVjdEFsbCgpIHtcclxuICAgIHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5mb3JFYWNoKCAoc2NoZWR1bGVkT2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0KSA9PiB7XHJcbiAgICAgIGlmKHNjaGVkdWxlZE9iamVjdC5zZWxlY3RlZCkge1xyXG4gICAgICAgIHNjaGVkdWxlZE9iamVjdC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbn1cclxuIl19
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQUUsVUFBVSxFQUNyQixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQWdFdkIsTUFBTSxPQUFPLGlDQUFpQztJQTZENUMsWUFDVSxLQUF3QixFQUN4QixJQUFnQjtRQURoQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBN0RuQixlQUFVLEdBQWEsRUFBRSxDQUFDO1FBQzFCLHFCQUFnQixHQUF1QixFQUFFLENBQUM7UUFHekMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUsxQiwwQkFBcUIsR0FBNEIsSUFBSSxDQUFDO1FBQ3RELDBCQUFxQixHQUE0QixJQUFJLENBQUM7UUFDdEQsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBdUJkLG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkUsdUJBQWtCLEdBQXdELElBQUksWUFBWSxFQUd2RyxDQUFDO1FBRVksOEJBQXlCLEdBQXdELElBQUksWUFBWSxFQUF5QyxDQUFDO1FBR3JKLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFtQmpDLENBQUM7SUFoREQsSUFBb0IsUUFBUSxDQUFFLEtBQWE7UUFDekMsSUFBRyxLQUFLLElBQUksS0FBSyxLQUFLLElBQUks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Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUF6RUMsaUJBQWlCO1lBQ04sVUFBVTs7O3VCQTBGcEIsS0FBSzs0QkFhTCxLQUFLOzBCQUNMLEtBQUs7MEJBQ0wsS0FBSzt3QkFDTCxLQUFLOzZCQUNMLEtBQUs7cUJBQ0wsS0FBSzs4QkFFTCxNQUFNO2lDQUNOLE1BQU07d0NBS04sTUFBTTt3QkFFTixXQUFXLFNBQUMscUNBQXFDO3VCQUdqRCxZQUFZLFNBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO3VCQUt4QyxZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbnRlcmZhY2UgU2NoZWR1bGluZ09iamVjdCB7XHJcbiAgc3RhcnQ6IERhdGU7XHJcbiAgZW5kOiBEYXRlO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHN1YlRpdGxlPzogc3RyaW5nO1xyXG4gIGhlaWdodD86IG51bWJlcjtcclxuICB0b3A/OiBudW1iZXI7XHJcbiAgaWQ6IG51bWJlciB8IHN0cmluZztcclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuICBzaG93VG9wUmVzaXplcj86IGJvb2xlYW47XHJcbiAgc2hvd0JvdHRvbVJlc2l6ZXI/OiBib29sZWFuO1xyXG5cclxuXHJcbiAgW2tleTogc3RyaW5nXTogYW55OyAvLyBBbGxvd3MgZHluYW1pYyBwcm9wZXJ0aWVzIGluY2x1ZGluZyB1bmlxdWUgaWRlbnRpZmllcnNcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWJsb2NrXCIgKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91ckxhYmVsc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJob3VyLWxhYmVsXCI+PHNwYW4gW3RleHRDb250ZW50XT1cImhvdXJcIj48L3NwYW4+PC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtZGlzcGxheVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpcnN0LWhhbGYtaG91ciBvYmplY3QtaGFsZlwiXHJcbiAgICAgICAgICAgICAgIChkcmFnb3Zlcik9XCJhbGxvd0Ryb3AoJGV2ZW50LCBob3VyKVwiXHJcbiAgICAgICAgICAgICAgIChkcmFnbGVhdmUpPVwiaGFuZGxlRHJhZ0xlYXZlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoZHJvcCk9XCJoYW5kbGVEcm9wKCRldmVudCwgaG91cilcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmQtaGFsZi1ob3VyIG9iamVjdC1oYWxmXCJcclxuICAgICAgICAgICAgICAgKGRyYWdvdmVyKT1cImFsbG93RHJvcCgkZXZlbnQsIGFkZEhhbGZIb3VyKGhvdXIpKVwiXHJcbiAgICAgICAgICAgICAgIChkcmFnbGVhdmUpPVwiaGFuZGxlRHJhZ0xlYXZlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoZHJvcCk9XCJoYW5kbGVEcm9wKCRldmVudCwgYWRkSGFsZkhvdXIoaG91cikpXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2NoZWR1bGVkLW9iamVjdHNcIiA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICAgICAgb2JqZWN0czogc2NoZWR1bGVkT2JqZWN0cyxcclxuICAgICAgICAgICAgICBvblNlbGVjdEJsb2NrOiB0aGlzLm9uU2VsZWN0QmxvY2suYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICBvblJlc2l6ZVN0YXJ0OiB0aGlzLm9uUmVzaXplU3RhcnQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICBvbkRyYWdTdGFydEN1c3RvbTogdGhpcy5vbkRyYWdTdGFydEN1c3RvbS5iaW5kKHRoaXMpXHJcblxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBob3VyTGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHB1YmxpYyBzY2hlZHVsZWRPYmplY3RzOiBTY2hlZHVsaW5nT2JqZWN0W10gPSBbXTtcclxuXHJcblxyXG4gIHByaXZhdGUgcmVzaXppbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIHJlc2l6ZURpcmVjdGlvbjogJ3RvcCcgfCAnYm90dG9tJztcclxuICBwcml2YXRlIGluaXRpYWxZOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBpbml0aWFsSGVpZ2h0OiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBpbml0aWFsVG9wOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBjdXJyZW50UmVzaXppbmdPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGN1cnJlbnREcmFnZ2luZ09iamVjdDogU2NoZWR1bGluZ09iamVjdCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgTUlOX0hFSUdIVCA9IDMwO1xyXG4gIHByaXZhdGUgX3NjaGVkdWxlOiBPYmplY3QgPSB7fTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2NoZWR1bGUoIHZhbHVlOiBPYmplY3QpIHtcclxuICAgIGlmKHZhbHVlICYmIHZhbHVlICE9PSB0aGlzLl9zY2hlZHVsZSkge1xyXG4gICAgICB0aGlzLnJlbmRlck9iamVjdHMoKTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLl9zY2hlZHVsZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzY2hlZHVsZSgpOiBPYmplY3Qge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NjaGVkdWxlO1xyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdGFydFRpbWVQcm9wOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGVuZFRpbWVQcm9wOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIG9iamVjdHNQcm9wOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoaWxkUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgaWRQcm9wOiBzdHJpbmc7ICAvLyBJbnB1dCBmb3IgdW5pcXVlIGlkZW50aWZpZXIgcHJvcGVydHlcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyB0aW1lQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBuZXdPYmplY3RQbGFuRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IGN1cnJlbnRIb3VyOiBzdHJpbmcsIGRhdGE6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgY3VycmVudEhvdXI6IHN0cmluZyxcclxuICAgIGRhdGE6IHN0cmluZ1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW92ZUJldHdlZW5DYWxlbmRhcnNFdmVudDogRXZlbnRFbWl0dGVyPHtob3VyOiBzdHJpbmcsIGRhdGE6U2NoZWR1bGluZ09iamVjdH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7aG91cjogc3RyaW5nLCBkYXRhOlNjaGVkdWxpbmdPYmplY3R9PigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWhvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlJylcclxuICBwdWJsaWMgc2hvd0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIG9uUmVzaXplKGV2ZW50OiB7IHRhcmdldDogeyBpbm5lcldpZHRoOiBhbnk7IH07IH0pIHtcclxuICAgIGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBjbGlja091dChldmVudDogeyB0YXJnZXQ6IGFueTsgfSkge1xyXG4gICAgaWYoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5oYW5kbGVEZXNlbGVjdEFsbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVSZWY6IEVsZW1lbnRSZWZcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZW5lcmF0ZVRpbWVCbG9ja3MoKTtcclxuICAgIGlmKHRoaXMuc2NoZWR1bGUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJPYmplY3RzKCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuICAvLyBDYWxjdWxhdGUgcHJvcGVydGllcyBmb3IgZWFjaCBzY2hlZHVsZWQgb2JqZWN0IHRvIGRldGVybWluZSByZXNpemVyIHZpc2liaWxpdHlcclxuXHJcblxyXG4gIC8vIEZpbmQgdGhlIG5leHQgb2JqZWN0IGluIHRoZSBzY2hlZHVsZWRPYmplY3RzIGxpc3RcclxuICBwcml2YXRlIF9maW5kTmV4dE9iamVjdChjdXJyZW50T2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0KTogU2NoZWR1bGluZ09iamVjdCB8IG51bGwge1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5zY2hlZHVsZWRPYmplY3RzLmluZGV4T2YoY3VycmVudE9iamVjdCk7XHJcbiAgICBpZiAoY3VycmVudEluZGV4ID49IDAgJiYgY3VycmVudEluZGV4IDwgdGhpcy5zY2hlZHVsZWRPYmplY3RzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVkT2JqZWN0c1tjdXJyZW50SW5kZXggKyAxXTsgLy8gVGhlIG5leHQgb2JqZWN0IGluIHRoZSBsaXN0XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDsgLy8gTm8gbmV4dCBvYmplY3QgKGl0J3MgdGhlIGxhc3Qgb25lKVxyXG4gIH1cclxuXHJcbiAgLy8gRmluZCB0aGUgcHJldmlvdXMgb2JqZWN0IGluIHRoZSBzY2hlZHVsZWRPYmplY3RzIGxpc3RcclxuICBwcml2YXRlIF9maW5kUHJldmlvdXNPYmplY3QoY3VycmVudE9iamVjdDogU2NoZWR1bGluZ09iamVjdCk6IFNjaGVkdWxpbmdPYmplY3QgfCBudWxsIHtcclxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5pbmRleE9mKGN1cnJlbnRPYmplY3QpO1xyXG4gICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVkT2JqZWN0c1tjdXJyZW50SW5kZXggLSAxXTsgLy8gVGhlIHByZXZpb3VzIG9iamVjdCBpbiB0aGUgbGlzdFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7IC8vIE5vIHByZXZpb3VzIG9iamVjdCAoaXQncyB0aGUgZmlyc3Qgb25lKVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyByZW5kZXJPYmplY3RzKCkge1xyXG4gICAgaWYodGhpcy5zY2hlZHVsZSkge1xyXG4gICAgICBpZiAodGhpcy5zY2hlZHVsZWRPYmplY3RzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgb2JqZWN0czogT2JqZWN0W10gPSB0aGlzLnNjaGVkdWxlW3RoaXMub2JqZWN0c1Byb3BdO1xyXG5cclxuICAgICAgbGV0IHNjaGVkdWxpbmdPYmplY3RzOiBTY2hlZHVsaW5nT2JqZWN0W10gPSBbXTtcclxuXHJcblxyXG4gICAgICBpZiAob2JqZWN0cyAmJiBvYmplY3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBvYmplY3RzLmZvckVhY2gob2JqZWN0ID0+IHtcclxuICAgICAgICAgIGxldCB0b3BEaWZmZXJlbmNlOiBudW1iZXIgPSB0aGlzLnRpbWVEaWZmZXJlbmNlKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0sIG9iamVjdFt0aGlzLnN0YXJ0VGltZVByb3BdKTtcclxuICAgICAgICAgIHNjaGVkdWxpbmdPYmplY3RzLnB1c2goXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogb2JqZWN0Wyd0aXRsZSddLFxyXG4gICAgICAgICAgICAgIHN1YlRpdGxlOiBvYmplY3RbJ3N1YlRpdGxlJ10sXHJcblxyXG4gICAgICAgICAgICAgIHN0YXJ0OiB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbihvYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSksXHJcbiAgICAgICAgICAgICAgZW5kOiB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbihvYmplY3RbdGhpcy5lbmRUaW1lUHJvcF0pLFxyXG4gICAgICAgICAgICAgIGlkOiBvYmplY3RbdGhpcy5pZFByb3BdLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogdGhpcy50aW1lRGlmZmVyZW5jZShvYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSwgb2JqZWN0W3RoaXMuZW5kVGltZVByb3BdKSxcclxuICAgICAgICAgICAgICB0b3A6IHRvcERpZmZlcmVuY2UsXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHMgPSBzY2hlZHVsaW5nT2JqZWN0cztcclxuXHJcbiAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2VsZWN0QmxvY2sob2JqOiBTY2hlZHVsaW5nT2JqZWN0KSB7XHJcbiAgICBvYmouc2VsZWN0ZWQgPSAhb2JqLnNlbGVjdGVkO1xyXG4gICAgaWYob2JqLnNlbGVjdGVkKSB7XHJcbiAgICAgIHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5mb3JFYWNoKChzY2hlZHVsZWRPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QpID0+IHtcclxuICAgICAgICBpZiAoc2NoZWR1bGVkT2JqZWN0LnNlbGVjdGVkICYmIHNjaGVkdWxlZE9iamVjdCAhPT0gb2JqKSB7XHJcbiAgICAgICAgICBzY2hlZHVsZWRPYmplY3Quc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QgPSBvYmo7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EcmFnU3RhcnRDdXN0b20ob2JqOiBTY2hlZHVsaW5nT2JqZWN0KSB7XHJcbiAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdCA9IG9iajtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgaGFuZGxlRHJvcChkcmFnRXZlbnQ6IERyYWdFdmVudCwgaG91cjogc3RyaW5nKSB7XHJcbiAgICBkcmFnRXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGRyYWdFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZighdGhpcy5zY2hlZHVsZVt0aGlzLm9iamVjdHNQcm9wXSB8fCAhdGhpcy5zY2hlZHVsZVt0aGlzLm9iamVjdHNQcm9wXS5maW5kKChvYmplY3Q6IE9iamVjdCkgPT4gb2JqZWN0W3RoaXMuaWRQcm9wXSA9PT0gdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QgJiYgdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3Q/LmlkKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QpIHtcclxuICAgICAgLy9UaGUgb3JkZXIgd2FzIHNjaGVkdWxlZCBhbmQgbmVlZHMgdG8gYmUgbW92ZWRcclxuXHJcbiAgICAgIGxldCBzdGFydDogRGF0ZSA9IHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0LnN0YXJ0O1xyXG4gICAgICBsZXQgaG91clNwbGl0ID0gaG91ci5zcGxpdChcIjpcIilcclxuICAgICAgc3RhcnQuc2V0SG91cnMocGFyc2VJbnQoaG91clNwbGl0WzBdKSk7XHJcbiAgICAgIHN0YXJ0LnNldE1pbnV0ZXMocGFyc2VJbnQoaG91clNwbGl0WzFdKSk7XHJcbiAgICAgIGxldCBzY2hlZHVsZWRPYmplY3QgPSB0aGlzLnNjaGVkdWxlZE9iamVjdHMuZmluZCggc2NoZWR1bGVkT2JqZWN0ID0+IHNjaGVkdWxlZE9iamVjdC5pZCA9PT0gdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QuaWQpO1xyXG4gICAgICBpZihzY2hlZHVsZWRPYmplY3QpIHtcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3Quc3RhcnQgPSBzdGFydDtcclxuXHJcbiAgICAgICAgbGV0IG9yaWdpbmFsT2JqZWN0OiBPYmplY3QgPSB0aGlzLnNjaGVkdWxlW3RoaXMub2JqZWN0c1Byb3BdLmZpbmQoKG9iamVjdDogT2JqZWN0KSA9PiBvYmplY3RbdGhpcy5pZFByb3BdID09PSB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdC5pZCk7XHJcbiAgICAgICAgb3JpZ2luYWxPYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSA9IHN0YXJ0O1xyXG4gICAgICAgIGxldCBlbmQ6IERhdGUgPSB0aGlzLmFkZE1pbnV0ZXMob3JpZ2luYWxPYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSwgdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QuaGVpZ2h0KTtcclxuICAgICAgICBvcmlnaW5hbE9iamVjdFt0aGlzLmVuZFRpbWVQcm9wXSA9IGVuZDtcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3QuZW5kID0gZW5kO1xyXG4gICAgICAgIHNjaGVkdWxlZE9iamVjdC50b3AgPSB0aGlzLnRpbWVEaWZmZXJlbmNlKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0sIHNjaGVkdWxlZE9iamVjdC5zdGFydCk7XHJcbiAgICAgICAgc2NoZWR1bGVkT2JqZWN0LmhlaWdodCA9IHRoaXMudGltZURpZmZlcmVuY2Uoc2NoZWR1bGVkT2JqZWN0LnN0YXJ0LCBzY2hlZHVsZWRPYmplY3QuZW5kKTtcclxuXHJcbiAgICAgICAgdGhpcy50aW1lQ2hhbmdlRXZlbnQuZW1pdChvcmlnaW5hbE9iamVjdCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QgPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgbGV0IHBhcnNlZDogU2NoZWR1bGluZ09iamVjdCA9IHRoaXMudHJ5UGFyc2VKU09OT2JqZWN0KGRyYWdFdmVudC5kYXRhVHJhbnNmZXIhLmdldERhdGEoXCJ0ZXh0XCIpKTtcclxuXHJcbiAgICAgIGlmICghcGFyc2VkKSB7XHJcbiAgICAgICAgdGhpcy5uZXdPYmplY3RQbGFuRXZlbnQuZW1pdCh7Y3VycmVudEhvdXI6IGhvdXIsIGRhdGE6IHBhcnNlZC50b1N0cmluZygpfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tb3ZlQmV0d2VlbkNhbGVuZGFyc0V2ZW50LmVtaXQoe2hvdXI6IGhvdXIsIGRhdGE6IHBhcnNlZH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGFsbG93RHJvcChldmVudDogRHJhZ0V2ZW50LCBob3VyOiBzdHJpbmcpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICghdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnZHJhZy1vdmVyJykpIHtcclxuICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2RyYWctb3ZlcicpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jdXJyZW50RHJhZ2dpbmdPYmplY3QpIHtcclxuICAgICAgbGV0IG5ld1N0YXJ0RGF0ZTogRGF0ZSA9IHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0LnN0YXJ0KTtcclxuICAgICAgbGV0IGhvdXJTcGxpdDogc3RyaW5nW10gPSBob3VyLnNwbGl0KFwiOlwiKTtcclxuICAgICAgbmV3U3RhcnREYXRlLnNldEhvdXJzKHBhcnNlSW50KGhvdXJTcGxpdFswXSkpO1xyXG4gICAgICBuZXdTdGFydERhdGUuc2V0SG91cnMocGFyc2VJbnQoaG91clNwbGl0WzFdKSk7XHJcblxyXG4gICAgICBpZih0aGlzLnNjaGVkdWxlZE9iamVjdHMuZmluZCggKHNjaGVkdWxlZE9iamVjdDogU2NoZWR1bGluZ09iamVjdCkgPT4gc2NoZWR1bGVkT2JqZWN0LnN0YXJ0ID09PSBuZXdTdGFydERhdGUgKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgcHVibGljIGhhbmRsZURyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnZHJhZy1vdmVyJykpIHtcclxuICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoJ2RyYWctb3ZlcicpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBUcmlnZ2VyZWQgd2hlbiByZXNpemluZyBzdGFydHNcclxuXHJcbiAgcHVibGljIG9uUmVzaXplU3RhcnQoZXZlbnQ6IE1vdXNlRXZlbnQsIG9iajogU2NoZWR1bGluZ09iamVjdCwgZGlyZWN0aW9uOiAndG9wJyB8ICdib3R0b20nKSB7XHJcbiAgICB0aGlzLnJlc2l6aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzaXplRGlyZWN0aW9uID0gZGlyZWN0aW9uO1xyXG4gICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QgPSBvYmo7XHJcbiAgICB0aGlzLmluaXRpYWxZID0gZXZlbnQuY2xpZW50WTtcclxuICAgIHRoaXMuaW5pdGlhbEhlaWdodCA9IG9iai5oZWlnaHQgfHwgMDtcclxuICAgIHRoaXMuaW5pdGlhbFRvcCA9IG9iai50b3AgfHwgMDtcclxuXHJcbiAgICAvLyBMaXN0ZW4gdG8gbW91c2Vtb3ZlIGFuZCBtb3VzZXVwIGV2ZW50cyBnbG9iYWxseVxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6aW5nLmJpbmQodGhpcykpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVFbmQuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG4gIC8vIEhhbmRsZSByZXNpemluZyB3aXRoIHNuYXBwaW5nIHRvIDMwcHggaW5jcmVtZW50cyBhbmQgbWluaW11bSBoZWlnaHQgcmVzdHJpY3Rpb25cclxuXHJcbiAgcHVibGljIG9uUmVzaXppbmcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5yZXNpemluZyB8fCAhdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBkZWx0YVkgPSBldmVudC5jbGllbnRZIC0gdGhpcy5pbml0aWFsWTtcclxuICAgIGNvbnN0IHNuYXBwZWREZWx0YVkgPSBNYXRoLnJvdW5kKGRlbHRhWSAvIDMwKSAqIDMwO1xyXG5cclxuICAgIGlmICh0aGlzLnJlc2l6ZURpcmVjdGlvbiA9PT0gJ2JvdHRvbScpIHtcclxuICAgICAgY29uc3QgbmV4dE9iamVjdCA9IHRoaXMuX2ZpbmROZXh0T2JqZWN0KHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0KTtcclxuICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gbmV4dE9iamVjdCA/IG5leHRPYmplY3QudG9wIC0gdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QudG9wIDogSW5maW5pdHk7XHJcblxyXG4gICAgICAvLyBCbG9jayBleHBhbmRpbmcgYmV5b25kIHRoZSBuZXh0IG9iamVjdCBhbmQgc2hyaW5raW5nIGJlbG93IDMwcHhcclxuICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5tYXgodGhpcy5pbml0aWFsSGVpZ2h0ICsgc25hcHBlZERlbHRhWSwgdGhpcy5NSU5fSEVJR0hUKTtcclxuICAgICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QuaGVpZ2h0ID0gTWF0aC5taW4obmV3SGVpZ2h0LCBtYXhIZWlnaHQpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAodGhpcy5yZXNpemVEaXJlY3Rpb24gPT09ICd0b3AnKSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzT2JqZWN0ID0gdGhpcy5fZmluZFByZXZpb3VzT2JqZWN0KHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0KTtcclxuICAgICAgY29uc3QgbWluVG9wID0gcHJldmlvdXNPYmplY3QgPyBwcmV2aW91c09iamVjdC50b3AgKyBwcmV2aW91c09iamVjdC5oZWlnaHQgOiAwO1xyXG5cclxuICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5tYXgodGhpcy5pbml0aWFsSGVpZ2h0IC0gc25hcHBlZERlbHRhWSwgdGhpcy5NSU5fSEVJR0hUKTtcclxuICAgICAgY29uc3QgbmV3VG9wID0gdGhpcy5pbml0aWFsVG9wICsgKHRoaXMuaW5pdGlhbEhlaWdodCAtIG5ld0hlaWdodCk7XHJcblxyXG4gICAgICAvLyBCbG9jayBtb3ZpbmcgYWJvdmUgdGhlIHByZXZpb3VzIG9iamVjdCdzIGJvdHRvbSBhbmQgc2hyaW5raW5nIGJlbG93IE1JTl9IRUlHSFRcclxuICAgICAgaWYgKG5ld0hlaWdodCA+PSB0aGlzLk1JTl9IRUlHSFQgJiYgbmV3VG9wID49IG1pblRvcCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0LnRvcCA9IG5ld1RvcDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdC5oZWlnaHQgPSBuZXdIZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBFbnN1cmUgY2hhbmdlIGRldGVjdGlvbiBoYXBwZW5zXHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgLy8gVHJpZ2dlcmVkIHdoZW4gcmVzaXppbmcgZW5kc1xyXG5cclxuICBwdWJsaWMgb25SZXNpemVFbmQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGxldCBvYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QgPSB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdDtcclxuXHJcbiAgICBpZihvYmplY3QgJiYgb2JqZWN0LnNlbGVjdGVkKSB7XHJcbiAgICAgIGxldCBvcmlnaW5hbE9iamVjdCA9IHRoaXMuc2NoZWR1bGVbdGhpcy5vYmplY3RzUHJvcF0uZmluZCgoc2NoZWR1bGVkT2JqZWN0OiBPYmplY3QpID0+IHNjaGVkdWxlZE9iamVjdFt0aGlzLmlkUHJvcF0gPT09IG9iamVjdC5pZCk7XHJcblxyXG4gICAgICBpZiAob3JpZ2luYWxPYmplY3QpIHtcclxuICAgICAgICAvLyBTdGFydCBkYXRlIGNhbGN1bGF0aW9uIGZpcnN0XHJcbiAgICAgICAgb3JpZ2luYWxPYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSA9IHRoaXMuYWRkTWludXRlcyh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLnN0YXJ0VGltZVByb3BdKSwgb2JqZWN0LnRvcCk7XHJcblxyXG4gICAgICAgIC8vIFRoZW4gIGVuZCBkYXRlIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHRoZSBoZWlnaHQgb2YgdGhlIG9iamVjdFxyXG4gICAgICAgIG9yaWdpbmFsT2JqZWN0W3RoaXMuZW5kVGltZVByb3BdID0gdGhpcy5hZGRNaW51dGVzKHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKG9yaWdpbmFsT2JqZWN0W3RoaXMuc3RhcnRUaW1lUHJvcF0pLCBvYmplY3QuaGVpZ2h0KTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aW1lQ2hhbmdlRXZlbnQuZW1pdChvcmlnaW5hbE9iamVjdCk7XHJcblxyXG4gICAgICB0aGlzLnJlc2l6aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0LnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0ID0gbnVsbDtcclxuXHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBSZW1vdmUgZ2xvYmFsIGV2ZW50IGxpc3RlbmVyc1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6aW5nLmJpbmQodGhpcykpO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVFbmQuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdGltZURpZmZlcmVuY2UoZGF0ZTE6IERhdGUsIGRhdGUyOiBEYXRlKSB7XHJcbiAgICBsZXQgZGlmZmVyZW5jZSA9IHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKGRhdGUxKS5nZXRUaW1lKCkgLyAxMDAwIC0gdGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4oZGF0ZTIpLmdldFRpbWUoKSAvIDEwMDA7XHJcbiAgICByZXR1cm4gTWF0aC5hYnMoZGlmZmVyZW5jZSAvIDYwKTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVUaW1lQmxvY2tzKCkge1xyXG4gICAgbGV0IHN0YXJ0VW5peDogbnVtYmVyID0gIXRoaXMuY2hpbGRQcm9wID8gdGhpcy5kYXRlVG9Vbml4RXBvY2godGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4odGhpcy5zY2hlZHVsZVt0aGlzLnN0YXJ0VGltZVByb3BdKSkgOiB0aGlzLmRhdGVUb1VuaXhFcG9jaCh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLnN0YXJ0VGltZVByb3BdKSk7XHJcbiAgICBsZXQgZW5kVW5peDogbnVtYmVyID0gIXRoaXMuY2hpbGRQcm9wID8gdGhpcy5kYXRlVG9Vbml4RXBvY2godGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4odGhpcy5zY2hlZHVsZVt0aGlzLmVuZFRpbWVQcm9wXSkpIDogdGhpcy5kYXRlVG9Vbml4RXBvY2godGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4odGhpcy5zY2hlZHVsZVt0aGlzLmNoaWxkUHJvcF1bdGhpcy5lbmRUaW1lUHJvcF0pKTtcclxuXHJcbiAgICBsZXQgaW50ZXJ2YWwgPSA2MCAqIDYwO1xyXG5cclxuICAgIGZvciAobGV0IGhvdXJDb3VudCA9IHN0YXJ0VW5peDsgaG91ckNvdW50IDw9IGVuZFVuaXg7IGhvdXJDb3VudCArPSBpbnRlcnZhbCkge1xyXG4gICAgICBsZXQgaG91ciA9IG5ldyBEYXRlKGhvdXJDb3VudCAqIDEwMDApXHJcbiAgICAgIGxldCBob3VyU3RyaW5nID0gYCR7aG91ci5nZXRIb3VycygpfToke2hvdXIuZ2V0TWludXRlcygpID09PSAwID8gJzAwJyA6IGhvdXIuZ2V0TWludXRlcygpfWA7XHJcbiAgICAgIHRoaXMuaG91ckxhYmVscy5wdXNoKGhvdXJTdHJpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRhdGVUb1VuaXhFcG9jaChkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmZsb29yKGRhdGUuZ2V0VGltZSgpKSAvIDEwMDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkTWludXRlcyhkYXRlOiBEYXRlLCBtaW51dGVzOiBudW1iZXIpOiBEYXRlIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIG1pbnV0ZXMgKiA2MDAwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJ5UGFyc2VKU09OT2JqZWN0KGpzb25TdHJpbmc6IHN0cmluZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IG8gPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xyXG4gICAgICBpZiAobyAmJiB0eXBlb2YgbyA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIHJldHVybiBvO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEhhbGZIb3VyKGhvdXI6IHN0cmluZykge1xyXG4gICAgbGV0IHNwbGl0ID0gaG91ci5zcGxpdChcIjpcIik7XHJcbiAgICBzcGxpdFsxXSA9IFwiMzBcIjtcclxuICAgIHJldHVybiBzcGxpdC5qb2luKCc6Jyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udmVydFRaKGRhdGUsIHR6U3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoKHR5cGVvZiBkYXRlID09PSBcInN0cmluZ1wiID8gbmV3IERhdGUoZGF0ZSkgOiBkYXRlKS50b0xvY2FsZVN0cmluZyhcImVuLVVTXCIsIHt0aW1lWm9uZTogdHpTdHJpbmd9KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udmVydERhdGVUb0V1cm9wZWFuKGRhdGU6IERhdGUpOiBEYXRlIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUWihkYXRlLCAnRXVyb3BlL0Ftc3RlcmRhbScpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGVzZWxlY3RBbGwoKSB7XHJcbiAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHMuZm9yRWFjaCggKHNjaGVkdWxlZE9iamVjdDogU2NoZWR1bGluZ09iamVjdCkgPT4ge1xyXG4gICAgICBpZihzY2hlZHVsZWRPYmplY3Quc2VsZWN0ZWQpIHtcclxuICAgICAgICBzY2hlZHVsZWRPYmplY3Quc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG59XHJcbiJdfQ==
@@ -2,7 +2,7 @@ import { NgModule } from "@angular/core";
2
2
  import { CommonModule, DatePipe } from "@angular/common";
3
3
  import { HourSchedulingExpandableComponent } from "./hour-scheduling-expandable.component";
4
4
  import { HourSchedulingComponentModule } from "../hour-scheduling/hour-scheduling.module";
5
- import { HourSchedulingExpandableTemplateComponent } from "./components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component";
5
+ import { HourSchedulingExpandableTemplateModule } from './components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.module';
6
6
  export class HourSchedulingExpandableComponentModule {
7
7
  }
8
8
  HourSchedulingExpandableComponentModule.decorators = [
@@ -10,16 +10,15 @@ HourSchedulingExpandableComponentModule.decorators = [
10
10
  imports: [
11
11
  CommonModule,
12
12
  HourSchedulingComponentModule,
13
+ HourSchedulingExpandableTemplateModule
13
14
  ],
14
15
  declarations: [
15
16
  HourSchedulingExpandableComponent,
16
- HourSchedulingExpandableTemplateComponent
17
17
  ],
18
18
  exports: [
19
19
  HourSchedulingExpandableComponent,
20
- HourSchedulingExpandableTemplateComponent
21
20
  ],
22
21
  providers: [DatePipe]
23
22
  },] }
24
23
  ];
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUUsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDekYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDeEYsT0FBTyxFQUNMLHlDQUF5QyxFQUMxQyxNQUFNLGdHQUFnRyxDQUFDO0FBb0J4RyxNQUFNLE9BQU8sdUNBQXVDOzs7WUFoQm5ELFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWiw2QkFBNkI7aUJBQzlCO2dCQUNDLFlBQVksRUFBRTtvQkFDVixpQ0FBaUM7b0JBQ25DLHlDQUF5QztpQkFDMUM7Z0JBQ0gsT0FBTyxFQUFFO29CQUNQLGlDQUFpQztvQkFDakMseUNBQXlDO2lCQUMxQztnQkFDRCxTQUFTLEVBQUUsQ0FBRSxRQUFRLENBQUM7YUFFdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZSwgRGF0ZVBpcGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVDb21wb25lbnR9IGZyb20gXCIuL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0hvdXJTY2hlZHVsaW5nQ29tcG9uZW50TW9kdWxlfSBmcm9tIFwiLi4vaG91ci1zY2hlZHVsaW5nL2hvdXItc2NoZWR1bGluZy5tb2R1bGVcIjtcclxuaW1wb3J0IHtcclxuICBIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVUZW1wbGF0ZUNvbXBvbmVudFxyXG59IGZyb20gXCIuL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50XCI7XHJcblxyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSG91clNjaGVkdWxpbmdDb21wb25lbnRNb2R1bGUsXHJcbiAgXSxcclxuICAgIGRlY2xhcmF0aW9uczogW1xyXG4gICAgICAgIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZUNvbXBvbmVudCxcclxuICAgICAgSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlVGVtcGxhdGVDb21wb25lbnRcclxuICAgIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlQ29tcG9uZW50LFxyXG4gICAgSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlVGVtcGxhdGVDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogWyBEYXRlUGlwZV1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVDb21wb25lbnRNb2R1bGV7XHJcbn1cclxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUUsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDekYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDeEYsT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0sNkZBQTZGLENBQUM7QUFtQm5KLE1BQU0sT0FBTyx1Q0FBdUM7OztZQWZuRCxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osNkJBQTZCO29CQUM3QixzQ0FBc0M7aUJBQ3ZDO2dCQUNDLFlBQVksRUFBRTtvQkFDVixpQ0FBaUM7aUJBQ3BDO2dCQUNILE9BQU8sRUFBRTtvQkFDUCxpQ0FBaUM7aUJBQ2xDO2dCQUNELFNBQVMsRUFBRSxDQUFFLFFBQVEsQ0FBQzthQUV2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlLCBEYXRlUGlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0hvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZUNvbXBvbmVudH0gZnJvbSBcIi4vaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7SG91clNjaGVkdWxpbmdDb21wb25lbnRNb2R1bGV9IGZyb20gXCIuLi9ob3VyLXNjaGVkdWxpbmcvaG91ci1zY2hlZHVsaW5nLm1vZHVsZVwiO1xyXG5pbXBvcnQge0hvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZVRlbXBsYXRlTW9kdWxlfSBmcm9tICcuL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUubW9kdWxlJztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBIb3VyU2NoZWR1bGluZ0NvbXBvbmVudE1vZHVsZSxcclxuICAgIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZVRlbXBsYXRlTW9kdWxlXHJcbiAgXSxcclxuICAgIGRlY2xhcmF0aW9uczogW1xyXG4gICAgICAgIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZUNvbXBvbmVudCxcclxuICAgIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbIERhdGVQaXBlXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZUNvbXBvbmVudE1vZHVsZXtcclxufVxyXG4iXX0=
@@ -1,10 +1,8 @@
1
1
  import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from "@angular/core";
2
2
  import { CoreComponentsIcon } from "../../core/enum/core-components-icon.enum";
3
3
  import { IconCacheService } from "../icon/icon-cache.service";
4
- import { BatchDeliveryCategory } from '../../core/enum/batch-delivery-category.enum';
5
4
  export class ListOfIconsComponent {
6
- constructor(iconCacheService, icons) {
7
- this.iconCacheService = iconCacheService;
5
+ constructor(icons) {
8
6
  this.icons = icons;
9
7
  this.iconSize = 25;
10
8
  this.itemSelected = new EventEmitter();
@@ -12,10 +10,6 @@ export class ListOfIconsComponent {
12
10
  this.showMenu = false;
13
11
  this.showSubCategories = false;
14
12
  this._collection = [];
15
- this.subCategories = [
16
- { icon: this.iconCacheService.getIcon(this.Icon.BoxesPackingRegular), label: BatchDeliveryCategory.ToPick },
17
- { icon: this.iconCacheService.getIcon(this.Icon.RegularBoxesPackingCircleCheck), label: BatchDeliveryCategory.Picked }
18
- ];
19
13
  }
20
14
  set collection(value) {
21
15
  this._collection = value || [];
@@ -36,7 +30,7 @@ export class ListOfIconsComponent {
36
30
  this.showMenu = !this.showMenu;
37
31
  }
38
32
  selectItem(item) {
39
- if (item.label.toUpperCase() === BatchDeliveryCategory.Logistics) {
33
+ if (item.children) {
40
34
  this.showSubCategories = !this.showSubCategories;
41
35
  return;
42
36
  }
@@ -45,8 +39,9 @@ export class ListOfIconsComponent {
45
39
  this.itemSelected.emit(this.activeItem);
46
40
  }
47
41
  handlePickingCategoryClicked(subCategory) {
48
- this.itemSelected.emit(subCategory);
42
+ this.activeItem = subCategory;
49
43
  this.showMenu = false;
44
+ this.itemSelected.emit(subCategory);
50
45
  this.showSubCategories = false;
51
46
  }
52
47
  onClickOutside() {
@@ -58,35 +53,37 @@ ListOfIconsComponent.decorators = [
58
53
  { type: Component, args: [{
59
54
  selector: 'co-list-of-icons',
60
55
  template: `
61
- <div class="icon-item active" [class.menu-opened]="showMenu" (click)="toggleMenu()">
62
- <co-icon [iconData]="activeItem.icon" [style.width.px]="iconSize" [style.height.px]="iconSize"></co-icon>
63
- <co-icon *ngIf="!showMenu" class="drop-arrow" [iconData]="icons.getIcon(Icon.CaretDownSolid)"></co-icon>
64
- <co-icon *ngIf="showMenu" class="drop-arrow" [iconData]="icons.getIcon(Icon.CaretUpSolid)"></co-icon>
65
- </div>
66
- <div class="dropdown-menu" *ngIf="showMenu" (clickOutside)="onClickOutside()">
67
- <div class="icon-item" *ngFor="let item of collection" (click)="selectItem(item)"
68
- [class.active]="item === activeItem">
69
- <co-icon [iconData]="item.icon" [style.width.px]="iconSize" [style.height.px]="iconSize"></co-icon>
70
- <div class="label" [textContent]="item.label | coreLocalize"></div>
56
+ <div class="icon-item active" [class.menu-opened]="showMenu" (click)="toggleMenu()">
57
+ <co-icon [iconData]="activeItem.icon" [style.width.px]="iconSize" [style.height.px]="iconSize"></co-icon>
58
+ <co-icon *ngIf="!showMenu" class="drop-arrow" [iconData]="icons.getIcon(Icon.CaretDownSolid)"></co-icon>
59
+ <co-icon *ngIf="showMenu" class="drop-arrow" [iconData]="icons.getIcon(Icon.CaretUpSolid)"></co-icon>
71
60
  </div>
72
- <div class="picking-type-wrapper" *ngIf="showSubCategories">
73
- <div class="button-wrapper" *ngFor="let subCategory of subCategories" (click)="handlePickingCategoryClicked(subCategory)">
74
- <co-icon
75
- class="co-transaction-button-bar-icon"
76
- [iconData]="subCategory.icon"
77
- [style.width.px]="iconSize"
78
- [style.height.px]="iconSize">
79
- </co-icon>
80
- <span class="button-title" [textContent]="subCategory.label | coreLocalize"></span>
81
- </div>
61
+ <div class="dropdown-menu" *ngIf="showMenu" (clickOutside)="onClickOutside()">
62
+ <div class="icon-item" *ngFor="let item of collection" (click)="selectItem(item)"
63
+ [class.active]="item === activeItem">
64
+ <co-icon [iconData]="item.icon" [style.width.px]="iconSize" [style.height.px]="iconSize"></co-icon>
65
+ <div class="label" [textContent]="item.label | coreLocalize"></div>
66
+ <div class="picking-type-wrapper" *ngIf="showSubCategories && item.children?.length > 0">
67
+ <div
68
+ class="button-wrapper"
69
+ *ngFor="let subCategory of item.children"
70
+ (click)="handlePickingCategoryClicked(subCategory)">
71
+ <co-icon
72
+ class="co-transaction-button-bar-icon"
73
+ [iconData]="subCategory.icon"
74
+ [style.width.px]="iconSize"
75
+ [style.height.px]="iconSize">
76
+ </co-icon>
77
+ <span class="button-title" [textContent]="subCategory.label | coreLocalize"></span>
78
+ </div>
79
+ </div>
80
+ </div>
82
81
  </div>
83
- </div>
84
82
  `,
85
83
  encapsulation: ViewEncapsulation.None
86
84
  },] }
87
85
  ];
88
86
  ListOfIconsComponent.ctorParameters = () => [
89
- { type: IconCacheService },
90
87
  { type: IconCacheService }
91
88
  ];
92
89
  ListOfIconsComponent.propDecorators = {
@@ -96,4 +93,4 @@ ListOfIconsComponent.propDecorators = {
96
93
  itemSelected: [{ type: Output }],
97
94
  showClass: [{ type: HostBinding, args: ['class.co-list-of-icons',] }]
98
95
  };
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1vZi1pY29ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC1vZi1pY29ucy9saXN0LW9mLWljb25zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUU1RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQStCbkYsTUFBTSxPQUFPLG9CQUFvQjtJQW1DL0IsWUFDUyxnQkFBa0MsRUFDbEMsS0FBdUI7UUFEdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQXpCekIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQU10QixpQkFBWSxHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQU9uRSxTQUFJLEdBQVEsa0JBQWtCLENBQUM7UUFDeEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbEMsZ0JBQVcsR0FBbUIsRUFBRSxDQUFDO1FBRWxDLGtCQUFhLEdBQW1CO1lBQ3JDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLEVBQUM7WUFDekcsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixDQUFDLE1BQU0sRUFBQztTQUNySCxDQUFDO0lBTUYsQ0FBQztJQXRDRCxJQUNXLFVBQVUsQ0FBQyxLQUFxQjtRQUN6QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFZTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBa0JNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUsscUJBQXFCLENBQUMsU0FBUyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNqRCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLDRCQUE0QixDQUFDLFdBQXlCO1FBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDOzs7WUFwR0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFoQ08sZ0JBQWdCO1lBQWhCLGdCQUFnQjs7O3lCQWtDckIsS0FBSzt1QkFVTCxLQUFLO3lCQUdMLEtBQUs7MkJBR0wsTUFBTTt3QkFHTixXQUFXLFNBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtL2NvcmUtY29tcG9uZW50cy1pY29uLmVudW1cIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vaWNvbi9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJY29uTGlzdEl0ZW19IGZyb20gXCIuLi8uLi9tb2RlbC9pY29uLWxpc3QtaXRlbVwiO1xyXG5pbXBvcnQge0JhdGNoRGVsaXZlcnlDYXRlZ29yeX0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL2JhdGNoLWRlbGl2ZXJ5LWNhdGVnb3J5LmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1saXN0LW9mLWljb25zJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImljb24taXRlbSBhY3RpdmVcIiBbY2xhc3MubWVudS1vcGVuZWRdPVwic2hvd01lbnVcIiAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCI+XHJcbiAgICAgIDxjby1pY29uIFtpY29uRGF0YV09XCJhY3RpdmVJdGVtLmljb25cIiBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemVcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImljb25TaXplXCI+PC9jby1pY29uPlxyXG4gICAgICA8Y28taWNvbiAqbmdJZj1cIiFzaG93TWVudVwiIGNsYXNzPVwiZHJvcC1hcnJvd1wiIFtpY29uRGF0YV09XCJpY29ucy5nZXRJY29uKEljb24uQ2FyZXREb3duU29saWQpXCI+PC9jby1pY29uPlxyXG4gICAgICA8Y28taWNvbiAqbmdJZj1cInNob3dNZW51XCIgY2xhc3M9XCJkcm9wLWFycm93XCIgW2ljb25EYXRhXT1cImljb25zLmdldEljb24oSWNvbi5DYXJldFVwU29saWQpXCI+PC9jby1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiICpuZ0lmPVwic2hvd01lbnVcIiAoY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImljb24taXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbGxlY3Rpb25cIiAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiXHJcbiAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpdGVtID09PSBhY3RpdmVJdGVtXCI+XHJcbiAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cIml0ZW0uaWNvblwiIFtzdHlsZS53aWR0aC5weF09XCJpY29uU2l6ZVwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaWNvblNpemVcIj48L2NvLWljb24+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiaXRlbS5sYWJlbCB8IGNvcmVMb2NhbGl6ZVwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBpY2tpbmctdHlwZS13cmFwcGVyXCIgKm5nSWY9XCJzaG93U3ViQ2F0ZWdvcmllc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24td3JhcHBlclwiICpuZ0Zvcj1cImxldCBzdWJDYXRlZ29yeSBvZiBzdWJDYXRlZ29yaWVzXCIgKGNsaWNrKT1cImhhbmRsZVBpY2tpbmdDYXRlZ29yeUNsaWNrZWQoc3ViQ2F0ZWdvcnkpXCI+XHJcbiAgICAgICAgICA8Y28taWNvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvLXRyYW5zYWN0aW9uLWJ1dHRvbi1iYXItaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJzdWJDYXRlZ29yeS5pY29uXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImljb25TaXplXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJpY29uU2l6ZVwiPlxyXG4gICAgICAgICAgPC9jby1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24tdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwic3ViQ2F0ZWdvcnkubGFiZWwgfCBjb3JlTG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlzdE9mSWNvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBjb2xsZWN0aW9uKHZhbHVlOiBJY29uTGlzdEl0ZW1bXSkge1xyXG4gICAgdGhpcy5fY29sbGVjdGlvbiA9IHZhbHVlIHx8IFtdO1xyXG4gICAgdGhpcy5hY3RpdmVJdGVtID0gdGhpcy5jb2xsZWN0aW9uWzBdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb2xsZWN0aW9uKCk6IEljb25MaXN0SXRlbVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWNvblNpemU6IG51bWJlciA9IDI1O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhY3RpdmVJdGVtPzogSWNvbkxpc3RJdGVtO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SWNvbkxpc3RJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8SWNvbkxpc3RJdGVtPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWxpc3Qtb2YtaWNvbnMnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBJY29uOiBhbnkgPSBDb3JlQ29tcG9uZW50c0ljb247XHJcbiAgcHVibGljIHNob3dNZW51OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTdWJDYXRlZ29yaWVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY29sbGVjdGlvbjogSWNvbkxpc3RJdGVtW10gPSBbXTtcclxuXHJcbiAgcHVibGljIHN1YkNhdGVnb3JpZXM6IEljb25MaXN0SXRlbVtdID0gW1xyXG4gICAge2ljb246IHRoaXMuaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKHRoaXMuSWNvbi5Cb3hlc1BhY2tpbmdSZWd1bGFyKSwgbGFiZWw6IEJhdGNoRGVsaXZlcnlDYXRlZ29yeS5Ub1BpY2t9LFxyXG4gICAge2ljb246IHRoaXMuaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKHRoaXMuSWNvbi5SZWd1bGFyQm94ZXNQYWNraW5nQ2lyY2xlQ2hlY2spLCBsYWJlbDogQmF0Y2hEZWxpdmVyeUNhdGVnb3J5LlBpY2tlZH1cclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGljb25zOiBJY29uQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVJdGVtID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmVJdGVtID0gdGhpcy5jb2xsZWN0aW9uWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZU1lbnUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dNZW51ID0gIXRoaXMuc2hvd01lbnU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0SXRlbShpdGVtOiBJY29uTGlzdEl0ZW0pOiB2b2lkIHtcclxuICAgIGlmIChpdGVtLmxhYmVsLnRvVXBwZXJDYXNlKCkgPT09IEJhdGNoRGVsaXZlcnlDYXRlZ29yeS5Mb2dpc3RpY3MpIHtcclxuICAgICAgdGhpcy5zaG93U3ViQ2F0ZWdvcmllcyA9ICF0aGlzLnNob3dTdWJDYXRlZ29yaWVzO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3RpdmVJdGVtID0gaXRlbTtcclxuICAgIHRoaXMuc2hvd01lbnUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQodGhpcy5hY3RpdmVJdGVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVQaWNraW5nQ2F0ZWdvcnlDbGlja2VkKHN1YkNhdGVnb3J5OiBJY29uTGlzdEl0ZW0pOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQoc3ViQ2F0ZWdvcnkpO1xyXG4gICAgdGhpcy5zaG93TWVudSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U3ViQ2F0ZWdvcmllcyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xpY2tPdXRzaWRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93TWVudSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U3ViQ2F0ZWdvcmllcyA9IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1vZi1pY29ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC1vZi1pY29ucy9saXN0LW9mLWljb25zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQW1DNUQsTUFBTSxPQUFPLG9CQUFvQjtJQThCL0IsWUFDUyxLQUF1QjtRQUF2QixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQW5CekIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQU10QixpQkFBWSxHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQU9uRSxTQUFJLEdBQVEsa0JBQWtCLENBQUM7UUFDeEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbEMsZ0JBQVcsR0FBbUIsRUFBRSxDQUFDO0lBS3pDLENBQUM7SUFoQ0QsSUFDVyxVQUFVLENBQUMsS0FBcUI7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBWU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVlNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2pELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sNEJBQTRCLENBQUMsV0FBeUI7UUFDM0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7OztZQWxHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQlQ7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQWxDTyxnQkFBZ0I7Ozt5QkFvQ3JCLEtBQUs7dUJBVUwsS0FBSzt5QkFHTCxLQUFLOzJCQUdMLE1BQU07d0JBR04sV0FBVyxTQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvcmVDb21wb25lbnRzSWNvbn0gZnJvbSBcIi4uLy4uL2NvcmUvZW51bS9jb3JlLWNvbXBvbmVudHMtaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uL2ljb24vaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SWNvbkxpc3RJdGVtfSBmcm9tIFwiLi4vLi4vbW9kZWwvaWNvbi1saXN0LWl0ZW1cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tbGlzdC1vZi1pY29ucycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImljb24taXRlbSBhY3RpdmVcIiBbY2xhc3MubWVudS1vcGVuZWRdPVwic2hvd01lbnVcIiAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCI+XHJcbiAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiYWN0aXZlSXRlbS5pY29uXCIgW3N0eWxlLndpZHRoLnB4XT1cImljb25TaXplXCIgW3N0eWxlLmhlaWdodC5weF09XCJpY29uU2l6ZVwiPjwvY28taWNvbj5cclxuICAgICAgICAgIDxjby1pY29uICpuZ0lmPVwiIXNob3dNZW51XCIgY2xhc3M9XCJkcm9wLWFycm93XCIgW2ljb25EYXRhXT1cImljb25zLmdldEljb24oSWNvbi5DYXJldERvd25Tb2xpZClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICA8Y28taWNvbiAqbmdJZj1cInNob3dNZW51XCIgY2xhc3M9XCJkcm9wLWFycm93XCIgW2ljb25EYXRhXT1cImljb25zLmdldEljb24oSWNvbi5DYXJldFVwU29saWQpXCI+PC9jby1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiAqbmdJZj1cInNob3dNZW51XCIgKGNsaWNrT3V0c2lkZSk9XCJvbkNsaWNrT3V0c2lkZSgpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29sbGVjdGlvblwiIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpdGVtID09PSBhY3RpdmVJdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cIml0ZW0uaWNvblwiIFtzdHlsZS53aWR0aC5weF09XCJpY29uU2l6ZVwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaWNvblNpemVcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIml0ZW0ubGFiZWwgfCBjb3JlTG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2luZy10eXBlLXdyYXBwZXJcIiAqbmdJZj1cInNob3dTdWJDYXRlZ29yaWVzICYmIGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJDYXRlZ29yeSBvZiBpdGVtLmNoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlUGlja2luZ0NhdGVnb3J5Q2xpY2tlZChzdWJDYXRlZ29yeSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1pY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY28tdHJhbnNhY3Rpb24tYnV0dG9uLWJhci1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cInN1YkNhdGVnb3J5Lmljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImljb25TaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbi10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJzdWJDYXRlZ29yeS5sYWJlbCB8IGNvcmVMb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlzdE9mSWNvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBjb2xsZWN0aW9uKHZhbHVlOiBJY29uTGlzdEl0ZW1bXSkge1xyXG4gICAgdGhpcy5fY29sbGVjdGlvbiA9IHZhbHVlIHx8IFtdO1xyXG4gICAgdGhpcy5hY3RpdmVJdGVtID0gdGhpcy5jb2xsZWN0aW9uWzBdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb2xsZWN0aW9uKCk6IEljb25MaXN0SXRlbVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWNvblNpemU6IG51bWJlciA9IDI1O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhY3RpdmVJdGVtPzogSWNvbkxpc3RJdGVtO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SWNvbkxpc3RJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8SWNvbkxpc3RJdGVtPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWxpc3Qtb2YtaWNvbnMnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBJY29uOiBhbnkgPSBDb3JlQ29tcG9uZW50c0ljb247XHJcbiAgcHVibGljIHNob3dNZW51OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTdWJDYXRlZ29yaWVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY29sbGVjdGlvbjogSWNvbkxpc3RJdGVtW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaWNvbnM6IEljb25DYWNoZVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUl0ZW0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSB0aGlzLmNvbGxlY3Rpb25bMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlTWVudSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd01lbnUgPSAhdGhpcy5zaG93TWVudTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RJdGVtKGl0ZW06IEljb25MaXN0SXRlbSk6IHZvaWQge1xyXG4gICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgdGhpcy5zaG93U3ViQ2F0ZWdvcmllcyA9ICF0aGlzLnNob3dTdWJDYXRlZ29yaWVzO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3RpdmVJdGVtID0gaXRlbTtcclxuICAgIHRoaXMuc2hvd01lbnUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQodGhpcy5hY3RpdmVJdGVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVQaWNraW5nQ2F0ZWdvcnlDbGlja2VkKHN1YkNhdGVnb3J5OiBJY29uTGlzdEl0ZW0pOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlSXRlbSA9IHN1YkNhdGVnb3J5O1xyXG4gICAgdGhpcy5zaG93TWVudSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChzdWJDYXRlZ29yeSk7XHJcbiAgICB0aGlzLnNob3dTdWJDYXRlZ29yaWVzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbGlja091dHNpZGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dNZW51ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTdWJDYXRlZ29yaWVzID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==