@schneideress/dashboardframework 0.0.245 → 0.0.246

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 (83) hide show
  1. package/bundles/schneideress-dashboardframework.umd.js +880 -4689
  2. package/bundles/schneideress-dashboardframework.umd.js.map +1 -1
  3. package/bundles/schneideress-dashboardframework.umd.min.js +1 -1
  4. package/bundles/schneideress-dashboardframework.umd.min.js.map +1 -1
  5. package/esm2015/gridster/index.js +1 -5
  6. package/esm2015/gridster/lib/gridster.component.js +31 -260
  7. package/esm2015/gridster/lib/gridster.interface.js +1 -82
  8. package/esm2015/gridster/lib/gridster.module.js +20 -22
  9. package/esm2015/gridster/lib/gridsterCompact.service.js +12 -73
  10. package/esm2015/gridster/lib/gridsterConfig.constant.js +1 -76
  11. package/esm2015/gridster/lib/gridsterConfig.interface.js +27 -219
  12. package/esm2015/gridster/lib/gridsterConfigS.interface.js +1 -161
  13. package/esm2015/gridster/lib/gridsterDraggable.service.js +18 -177
  14. package/esm2015/gridster/lib/gridsterEmptyCell.service.js +17 -118
  15. package/esm2015/gridster/lib/gridsterItem.component.js +20 -92
  16. package/esm2015/gridster/lib/gridsterItem.interface.js +1 -46
  17. package/esm2015/gridster/lib/gridsterItemComponent.interface.js +1 -46
  18. package/esm2015/gridster/lib/gridsterPreview.component.js +16 -37
  19. package/esm2015/gridster/lib/gridsterPush.service.js +13 -184
  20. package/esm2015/gridster/lib/gridsterPushResize.service.js +10 -143
  21. package/esm2015/gridster/lib/gridsterRenderer.service.js +9 -78
  22. package/esm2015/gridster/lib/gridsterResizable.service.js +17 -201
  23. package/esm2015/gridster/lib/gridsterResizeEventType.interface.js +1 -19
  24. package/esm2015/gridster/lib/gridsterScroll.service.js +5 -81
  25. package/esm2015/gridster/lib/gridsterSwap.service.js +9 -58
  26. package/esm2015/gridster/lib/gridsterUtils.service.js +20 -68
  27. package/esm2015/lib/custom.notifier.options.js +1 -6
  28. package/esm2015/lib/ra-dashboard-area/ra.dashboard.area.js +137 -446
  29. package/esm2015/lib/ra-widget-container/lock-tooltip/lock.tooltip.component.js +15 -58
  30. package/esm2015/lib/ra-widget-container/ra.widget.container.component.js +148 -561
  31. package/esm2015/lib/ra.base.dashboard.filter.js +32 -91
  32. package/esm2015/lib/ra.base.dashboard.template.js +18 -57
  33. package/esm2015/lib/ra.dashbard.event.bus.js +21 -60
  34. package/esm2015/lib/ra.dashboard.module.js +31 -33
  35. package/esm2015/lib/ra.dashboard.responsive.service.js +40 -117
  36. package/esm2015/lib/ra.dashboard.service.js +25 -88
  37. package/esm2015/lib/ra.event.enum.js +34 -40
  38. package/esm2015/lib/ra.gridster.config.js +1 -6
  39. package/esm2015/public-api.js +10 -14
  40. package/esm2015/schneideress-dashboardframework.js +2 -6
  41. package/esm5/gridster/index.js +1 -5
  42. package/esm5/gridster/lib/gridster.component.js +57 -386
  43. package/esm5/gridster/lib/gridster.interface.js +2 -89
  44. package/esm5/gridster/lib/gridster.module.js +17 -20
  45. package/esm5/gridster/lib/gridsterCompact.service.js +18 -108
  46. package/esm5/gridster/lib/gridsterConfig.constant.js +1 -76
  47. package/esm5/gridster/lib/gridsterConfig.interface.js +27 -219
  48. package/esm5/gridster/lib/gridsterConfigS.interface.js +1 -161
  49. package/esm5/gridster/lib/gridsterDraggable.service.js +26 -219
  50. package/esm5/gridster/lib/gridsterEmptyCell.service.js +24 -162
  51. package/esm5/gridster/lib/gridsterItem.component.js +26 -122
  52. package/esm5/gridster/lib/gridsterItem.interface.js +1 -46
  53. package/esm5/gridster/lib/gridsterItemComponent.interface.js +2 -53
  54. package/esm5/gridster/lib/gridsterPreview.component.js +15 -39
  55. package/esm5/gridster/lib/gridsterPush.service.js +27 -277
  56. package/esm5/gridster/lib/gridsterPushResize.service.js +20 -217
  57. package/esm5/gridster/lib/gridsterRenderer.service.js +16 -130
  58. package/esm5/gridster/lib/gridsterResizable.service.js +34 -290
  59. package/esm5/gridster/lib/gridsterResizeEventType.interface.js +1 -19
  60. package/esm5/gridster/lib/gridsterScroll.service.js +5 -81
  61. package/esm5/gridster/lib/gridsterSwap.service.js +12 -78
  62. package/esm5/gridster/lib/gridsterUtils.service.js +25 -109
  63. package/esm5/lib/custom.notifier.options.js +1 -6
  64. package/esm5/lib/ra-dashboard-area/ra.dashboard.area.js +143 -560
  65. package/esm5/lib/ra-widget-container/lock-tooltip/lock.tooltip.component.js +15 -67
  66. package/esm5/lib/ra-widget-container/ra.widget.container.component.js +173 -735
  67. package/esm5/lib/ra.base.dashboard.filter.js +33 -95
  68. package/esm5/lib/ra.base.dashboard.template.js +19 -58
  69. package/esm5/lib/ra.dashbard.event.bus.js +16 -94
  70. package/esm5/lib/ra.dashboard.module.js +28 -31
  71. package/esm5/lib/ra.dashboard.responsive.service.js +45 -157
  72. package/esm5/lib/ra.dashboard.service.js +20 -157
  73. package/esm5/lib/ra.event.enum.js +34 -40
  74. package/esm5/lib/ra.gridster.config.js +1 -6
  75. package/esm5/public-api.js +10 -14
  76. package/esm5/schneideress-dashboardframework.js +2 -6
  77. package/fesm2015/schneideress-dashboardframework.js +683 -3549
  78. package/fesm2015/schneideress-dashboardframework.js.map +1 -1
  79. package/fesm5/schneideress-dashboardframework.js +858 -4667
  80. package/fesm5/schneideress-dashboardframework.js.map +1 -1
  81. package/lib/ra.dashboard.responsive.service.d.ts +2 -2
  82. package/package.json +1 -1
  83. package/schneideress-dashboardframework.metadata.json +1 -1
@@ -1,30 +1,16 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
1
+ import * as tslib_1 from "tslib";
5
2
  import { Component } from '@angular/core';
6
3
  import { DomService } from '@schneideress/ra-common';
7
- export class LockTooltip {
8
- /**
9
- * @param {?} domService
10
- */
4
+ let LockTooltip = class LockTooltip {
11
5
  constructor(domService) {
12
6
  this.domService = domService;
13
7
  }
14
- /**
15
- * @return {?}
16
- */
17
8
  ngOnInit() {
18
9
  if (this.element) {
19
10
  this.setPopupPosition();
20
11
  }
21
12
  }
22
- /**
23
- * @private
24
- * @return {?}
25
- */
26
13
  setPopupPosition() {
27
- /** @type {?} */
28
14
  let rect = this.element.getBoundingClientRect();
29
15
  if ((rect.left + 250) > window.innerWidth) {
30
16
  this.containerLeft = (rect.left - ((rect.left + 270) - window.innerWidth)) + 'px';
@@ -41,51 +27,22 @@ export class LockTooltip {
41
27
  this.containerBottom = (window.innerHeight - rect.top) + 'px';
42
28
  }
43
29
  }
44
- /**
45
- * @param {?} comp
46
- * @return {?}
47
- */
48
30
  removeMe(comp) {
49
- setTimeout((/**
50
- * @return {?}
51
- */
52
- () => {
31
+ setTimeout(() => {
53
32
  this.domService.removeComponent(comp);
54
- }));
33
+ });
55
34
  }
56
- }
57
- LockTooltip.decorators = [
58
- { type: Component, args: [{
59
- selector: 'ra-lock-tooltip',
60
- template: "<div class=\"lock-popup-content light widget-config-item\"\r\n [ngStyle]=\"{'top': containerTop,'bottom':containerBottom,'position':'fixed','left':containerLeft,'z-index': '9999','width':'250px','min-height':'fit-content'}\">\r\n <div *ngIf=\"data && !template\">\r\n <label style=\"color: #D9F0FA;\">\r\n {{title}}:\r\n </label>\r\n <div style=\"color: white;\">\r\n <label class=\"bold\" style=\"margin-bottom: 0px;width: 100%;\" *ngFor=\"let item of data\">\r\n {{item}}\r\n </label>\r\n </div>\r\n <hr style=\"background-color: white;\">\r\n <div style=\"color: #D9F0FA;\">\r\n <label>{{footer}}</label>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!data && template\">\r\n <ng-container *ngTemplateOutlet=\"template\">\r\n </ng-container>\r\n </div>\r\n</div>",
61
- styles: [".lock-popup-content{margin-top:8px;position:absolute;right:0;top:79%;box-shadow:0 8px 16px 8px rgba(0,0,0,.2);z-index:899;font-size:12px;min-width:220px!important;min-height:112px;background-color:#219bfd;opacity:.9;padding:15px;color:#fff}.widget-config-item i{font-size:17px;color:#42b4e6}.widget-config-item span{font-size:12px;font:inherit;padding-left:12px;color:#42b4e6}"]
62
- }] }
63
- ];
64
- /** @nocollapse */
35
+ };
65
36
  LockTooltip.ctorParameters = () => [
66
37
  { type: DomService }
67
38
  ];
68
- if (false) {
69
- /** @type {?} */
70
- LockTooltip.prototype.element;
71
- /** @type {?} */
72
- LockTooltip.prototype.title;
73
- /** @type {?} */
74
- LockTooltip.prototype.data;
75
- /** @type {?} */
76
- LockTooltip.prototype.footer;
77
- /** @type {?} */
78
- LockTooltip.prototype.template;
79
- /** @type {?} */
80
- LockTooltip.prototype.containerLeft;
81
- /** @type {?} */
82
- LockTooltip.prototype.containerTop;
83
- /** @type {?} */
84
- LockTooltip.prototype.containerBottom;
85
- /**
86
- * @type {?}
87
- * @private
88
- */
89
- LockTooltip.prototype.domService;
90
- }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jay50b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzY2huZWlkZXJlc3MvZGFzaGJvYXJkZnJhbWV3b3JrLyIsInNvdXJjZXMiOlsibGliL3JhLXdpZGdldC1jb250YWluZXIvbG9jay10b29sdGlwL2xvY2sudG9vbHRpcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBT3JELE1BQU0sT0FBTyxXQUFXOzs7O0lBV3BCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDMUMsQ0FBQzs7OztJQUNELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7Ozs7O0lBQ08sZ0JBQWdCOztZQUNoQixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRTtRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFJLElBQUksQ0FBQztTQUNwRjthQUNJO1lBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUN6QztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztTQUMvQjthQUNJO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNqRTtJQUNMLENBQUM7Ozs7O0lBRU0sUUFBUSxDQUFDLElBQVM7UUFDckIsVUFBVTs7O1FBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7WUE3Q0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLDI0QkFBNEM7O2FBRS9DOzs7O1lBTlEsVUFBVTs7OztJQVNmLDhCQUFvQjs7SUFDcEIsNEJBQWtCOztJQUNsQiwyQkFBaUI7O0lBQ2pCLDZCQUFtQjs7SUFDbkIsK0JBQXFCOztJQUVyQixvQ0FBMEI7O0lBQzFCLG1DQUF5Qjs7SUFDekIsc0NBQTRCOzs7OztJQUNoQixpQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TZXJ2aWNlIH0gZnJvbSAnQHNjaG5laWRlcmVzcy9yYS1jb21tb24nO1xyXG5kZWNsYXJlIHZhciBjb21wb25lbnRSZWY6IGFueTtcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3JhLWxvY2stdG9vbHRpcCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9jay50b29sdGlwLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2xvY2sudG9vbHRpcC5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NrVG9vbHRpcCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgcHVibGljIGVsZW1lbnQ6IGFueTtcclxuICAgIHB1YmxpYyB0aXRsZTogYW55O1xyXG4gICAgcHVibGljIGRhdGE6IGFueTtcclxuICAgIHB1YmxpYyBmb290ZXI6IGFueTtcclxuICAgIHB1YmxpYyB0ZW1wbGF0ZTogYW55O1xyXG5cclxuICAgIHB1YmxpYyBjb250YWluZXJMZWZ0OiBhbnk7XHJcbiAgICBwdWJsaWMgY29udGFpbmVyVG9wOiBhbnk7XHJcbiAgICBwdWJsaWMgY29udGFpbmVyQm90dG9tOiBhbnk7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRvbVNlcnZpY2U6IERvbVNlcnZpY2UpIHtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRQb3B1cFBvc2l0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBzZXRQb3B1cFBvc2l0aW9uKCkge1xyXG4gICAgICAgIGxldCByZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGlmICgocmVjdC5sZWZ0ICsgMjUwKSA+IHdpbmRvdy5pbm5lcldpZHRoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyTGVmdCA9IChyZWN0LmxlZnQgLSAoKHJlY3QubGVmdCArIDI3MCktd2luZG93LmlubmVyV2lkdGgpKSAgKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJMZWZ0ID0gcmVjdC5sZWZ0ICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlY3QuYm90dG9tICsgMTAwIDwgd2luZG93LmlubmVySGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyVG9wID0gKHJlY3QuYm90dG9tKSArICdweCc7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyQm90dG9tID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyVG9wID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJCb3R0b20gPSAod2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC50b3ApICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlbW92ZU1lKGNvbXA6IGFueSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvbVNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KGNvbXApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il19
39
+ LockTooltip = tslib_1.__decorate([
40
+ Component({
41
+ selector: 'ra-lock-tooltip',
42
+ template: "<div class=\"lock-popup-content light widget-config-item\"\r\n [ngStyle]=\"{'top': containerTop,'bottom':containerBottom,'position':'fixed','left':containerLeft,'z-index': '9999','width':'250px','min-height':'fit-content'}\">\r\n <div *ngIf=\"data && !template\">\r\n <label style=\"color: #D9F0FA;\">\r\n {{title}}:\r\n </label>\r\n <div style=\"color: white;\">\r\n <label class=\"bold\" style=\"margin-bottom: 0px;width: 100%;\" *ngFor=\"let item of data\">\r\n {{item}}\r\n </label>\r\n </div>\r\n <hr style=\"background-color: white;\">\r\n <div style=\"color: #D9F0FA;\">\r\n <label>{{footer}}</label>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!data && template\">\r\n <ng-container *ngTemplateOutlet=\"template\">\r\n </ng-container>\r\n </div>\r\n</div>",
43
+ styles: [".lock-popup-content{margin-top:8px;position:absolute;right:0;top:79%;box-shadow:0 8px 16px 8px rgba(0,0,0,.2);z-index:899;font-size:12px;min-width:220px!important;min-height:112px;background-color:#219bfd;opacity:.9;padding:15px;color:#fff}.widget-config-item i{font-size:17px;color:#42b4e6}.widget-config-item span{font-size:12px;font:inherit;padding-left:12px;color:#42b4e6}"]
44
+ }),
45
+ tslib_1.__metadata("design:paramtypes", [DomService])
46
+ ], LockTooltip);
47
+ export { LockTooltip };
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jay50b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzY2huZWlkZXJlc3MvZGFzaGJvYXJkZnJhbWV3b3JrLyIsInNvdXJjZXMiOlsibGliL3JhLXdpZGdldC1jb250YWluZXIvbG9jay10b29sdGlwL2xvY2sudG9vbHRpcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBT3JELElBQWEsV0FBVyxHQUF4QixNQUFhLFdBQVc7SUFXcEIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUMxQyxDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUNPLGdCQUFnQjtRQUNwQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUM7U0FDcEY7YUFDSTtZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDekM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FDL0I7YUFDSTtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDakU7SUFDTCxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVM7UUFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKLENBQUE7O1lBOUJtQyxVQUFVOztBQVhqQyxXQUFXO0lBTHZCLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxpQkFBaUI7UUFDM0IsMjRCQUE0Qzs7S0FFL0MsQ0FBQzs2Q0FZa0MsVUFBVTtHQVhqQyxXQUFXLENBeUN2QjtTQXpDWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJ0BzY2huZWlkZXJlc3MvcmEtY29tbW9uJztcclxuZGVjbGFyZSB2YXIgY29tcG9uZW50UmVmOiBhbnk7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdyYS1sb2NrLXRvb2x0aXAnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xvY2sudG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9sb2NrLnRvb2x0aXAuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9ja1Rvb2x0aXAgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIHB1YmxpYyBlbGVtZW50OiBhbnk7XHJcbiAgICBwdWJsaWMgdGl0bGU6IGFueTtcclxuICAgIHB1YmxpYyBkYXRhOiBhbnk7XHJcbiAgICBwdWJsaWMgZm9vdGVyOiBhbnk7XHJcbiAgICBwdWJsaWMgdGVtcGxhdGU6IGFueTtcclxuXHJcbiAgICBwdWJsaWMgY29udGFpbmVyTGVmdDogYW55O1xyXG4gICAgcHVibGljIGNvbnRhaW5lclRvcDogYW55O1xyXG4gICAgcHVibGljIGNvbnRhaW5lckJvdHRvbTogYW55O1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkb21TZXJ2aWNlOiBEb21TZXJ2aWNlKSB7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5lbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UG9wdXBQb3NpdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgc2V0UG9wdXBQb3NpdGlvbigpIHtcclxuICAgICAgICBsZXQgcmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBpZiAoKHJlY3QubGVmdCArIDI1MCkgPiB3aW5kb3cuaW5uZXJXaWR0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lckxlZnQgPSAocmVjdC5sZWZ0IC0gKChyZWN0LmxlZnQgKyAyNzApLXdpbmRvdy5pbm5lcldpZHRoKSkgICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyTGVmdCA9IHJlY3QubGVmdCArICdweCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWN0LmJvdHRvbSArIDEwMCA8IHdpbmRvdy5pbm5lckhlaWdodCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lclRvcCA9IChyZWN0LmJvdHRvbSkgKyAncHgnO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lckJvdHRvbSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lclRvcCA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyQm90dG9tID0gKHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QudG9wKSArICdweCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVNZShjb21wOiBhbnkpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb21TZXJ2aWNlLnJlbW92ZUNvbXBvbmVudChjb21wKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdfQ==