@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,34 +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
4
  var LockTooltip = /** @class */ (function () {
8
5
  function LockTooltip(domService) {
9
6
  this.domService = domService;
10
7
  }
11
- /**
12
- * @return {?}
13
- */
14
- LockTooltip.prototype.ngOnInit = /**
15
- * @return {?}
16
- */
17
- function () {
8
+ LockTooltip.prototype.ngOnInit = function () {
18
9
  if (this.element) {
19
10
  this.setPopupPosition();
20
11
  }
21
12
  };
22
- /**
23
- * @private
24
- * @return {?}
25
- */
26
- LockTooltip.prototype.setPopupPosition = /**
27
- * @private
28
- * @return {?}
29
- */
30
- function () {
31
- /** @type {?} */
13
+ LockTooltip.prototype.setPopupPosition = function () {
32
14
  var rect = this.element.getBoundingClientRect();
33
15
  if ((rect.left + 250) > window.innerWidth) {
34
16
  this.containerLeft = (rect.left - ((rect.left + 270) - window.innerWidth)) + 'px';
@@ -45,58 +27,24 @@ var LockTooltip = /** @class */ (function () {
45
27
  this.containerBottom = (window.innerHeight - rect.top) + 'px';
46
28
  }
47
29
  };
48
- /**
49
- * @param {?} comp
50
- * @return {?}
51
- */
52
- LockTooltip.prototype.removeMe = /**
53
- * @param {?} comp
54
- * @return {?}
55
- */
56
- function (comp) {
30
+ LockTooltip.prototype.removeMe = function (comp) {
57
31
  var _this = this;
58
- setTimeout((/**
59
- * @return {?}
60
- */
61
- function () {
32
+ setTimeout(function () {
62
33
  _this.domService.removeComponent(comp);
63
- }));
34
+ });
64
35
  };
65
- LockTooltip.decorators = [
66
- { type: Component, args: [{
67
- selector: 'ra-lock-tooltip',
68
- 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>",
69
- 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}"]
70
- }] }
71
- ];
72
- /** @nocollapse */
73
36
  LockTooltip.ctorParameters = function () { return [
74
37
  { type: DomService }
75
38
  ]; };
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);
76
47
  return LockTooltip;
77
48
  }());
78
49
  export { LockTooltip };
79
- if (false) {
80
- /** @type {?} */
81
- LockTooltip.prototype.element;
82
- /** @type {?} */
83
- LockTooltip.prototype.title;
84
- /** @type {?} */
85
- LockTooltip.prototype.data;
86
- /** @type {?} */
87
- LockTooltip.prototype.footer;
88
- /** @type {?} */
89
- LockTooltip.prototype.template;
90
- /** @type {?} */
91
- LockTooltip.prototype.containerLeft;
92
- /** @type {?} */
93
- LockTooltip.prototype.containerTop;
94
- /** @type {?} */
95
- LockTooltip.prototype.containerBottom;
96
- /**
97
- * @type {?}
98
- * @private
99
- */
100
- LockTooltip.prototype.domService;
101
- }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jay50b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzY2huZWlkZXJlc3MvZGFzaGJvYXJkZnJhbWV3b3JrLyIsInNvdXJjZXMiOlsibGliL3JhLXdpZGdldC1jb250YWluZXIvbG9jay10b29sdGlwL2xvY2sudG9vbHRpcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJEO0lBZ0JJLHFCQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQzFDLENBQUM7Ozs7SUFDRCw4QkFBUTs7O0lBQVI7UUFDSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7Ozs7O0lBQ08sc0NBQWdCOzs7O0lBQXhCOztZQUNRLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUksSUFBSSxDQUFDO1NBQ3BGO2FBQ0k7WUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQy9CO2FBQ0k7WUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ2pFO0lBQ0wsQ0FBQzs7Ozs7SUFFTSw4QkFBUTs7OztJQUFmLFVBQWdCLElBQVM7UUFBekIsaUJBSUM7UUFIRyxVQUFVOzs7UUFBQztZQUNQLEtBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7Z0JBN0NKLFNBQVMsU0FBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQiwyNEJBQTRDOztpQkFFL0M7Ozs7Z0JBTlEsVUFBVTs7SUFnRG5CLGtCQUFDO0NBQUEsQUE5Q0QsSUE4Q0M7U0F6Q1ksV0FBVzs7O0lBRXBCLDhCQUFvQjs7SUFDcEIsNEJBQWtCOztJQUNsQiwyQkFBaUI7O0lBQ2pCLDZCQUFtQjs7SUFDbkIsK0JBQXFCOztJQUVyQixvQ0FBMEI7O0lBQzFCLG1DQUF5Qjs7SUFDekIsc0NBQTRCOzs7OztJQUNoQixpQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TZXJ2aWNlIH0gZnJvbSAnQHNjaG5laWRlcmVzcy9yYS1jb21tb24nO1xyXG5kZWNsYXJlIHZhciBjb21wb25lbnRSZWY6IGFueTtcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3JhLWxvY2stdG9vbHRpcCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9jay50b29sdGlwLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2xvY2sudG9vbHRpcC5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NrVG9vbHRpcCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgcHVibGljIGVsZW1lbnQ6IGFueTtcclxuICAgIHB1YmxpYyB0aXRsZTogYW55O1xyXG4gICAgcHVibGljIGRhdGE6IGFueTtcclxuICAgIHB1YmxpYyBmb290ZXI6IGFueTtcclxuICAgIHB1YmxpYyB0ZW1wbGF0ZTogYW55O1xyXG5cclxuICAgIHB1YmxpYyBjb250YWluZXJMZWZ0OiBhbnk7XHJcbiAgICBwdWJsaWMgY29udGFpbmVyVG9wOiBhbnk7XHJcbiAgICBwdWJsaWMgY29udGFpbmVyQm90dG9tOiBhbnk7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRvbVNlcnZpY2U6IERvbVNlcnZpY2UpIHtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRQb3B1cFBvc2l0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBzZXRQb3B1cFBvc2l0aW9uKCkge1xyXG4gICAgICAgIGxldCByZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGlmICgocmVjdC5sZWZ0ICsgMjUwKSA+IHdpbmRvdy5pbm5lcldpZHRoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyTGVmdCA9IChyZWN0LmxlZnQgLSAoKHJlY3QubGVmdCArIDI3MCktd2luZG93LmlubmVyV2lkdGgpKSAgKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJMZWZ0ID0gcmVjdC5sZWZ0ICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlY3QuYm90dG9tICsgMTAwIDwgd2luZG93LmlubmVySGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyVG9wID0gKHJlY3QuYm90dG9tKSArICdweCc7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyQm90dG9tID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyVG9wID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJCb3R0b20gPSAod2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC50b3ApICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlbW92ZU1lKGNvbXA6IGFueSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvbVNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KGNvbXApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jay50b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzY2huZWlkZXJlc3MvZGFzaGJvYXJkZnJhbWV3b3JrLyIsInNvdXJjZXMiOlsibGliL3JhLXdpZGdldC1jb250YWluZXIvbG9jay10b29sdGlwL2xvY2sudG9vbHRpcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBT3JEO0lBV0kscUJBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDMUMsQ0FBQztJQUNELDhCQUFRLEdBQVI7UUFDSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFDTyxzQ0FBZ0IsR0FBeEI7UUFDSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUM7U0FDcEY7YUFDSTtZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDekM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FDL0I7YUFDSTtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDakU7SUFDTCxDQUFDO0lBRU0sOEJBQVEsR0FBZixVQUFnQixJQUFTO1FBQXpCLGlCQUlDO1FBSEcsVUFBVSxDQUFDO1lBQ1AsS0FBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnQkE3QitCLFVBQVU7O0lBWGpDLFdBQVc7UUFMdkIsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQiwyNEJBQTRDOztTQUUvQyxDQUFDO2lEQVlrQyxVQUFVO09BWGpDLFdBQVcsQ0F5Q3ZCO0lBQUQsa0JBQUM7Q0FBQSxBQXpDRCxJQXlDQztTQXpDWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJ0BzY2huZWlkZXJlc3MvcmEtY29tbW9uJztcclxuZGVjbGFyZSB2YXIgY29tcG9uZW50UmVmOiBhbnk7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdyYS1sb2NrLXRvb2x0aXAnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xvY2sudG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9sb2NrLnRvb2x0aXAuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9ja1Rvb2x0aXAgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIHB1YmxpYyBlbGVtZW50OiBhbnk7XHJcbiAgICBwdWJsaWMgdGl0bGU6IGFueTtcclxuICAgIHB1YmxpYyBkYXRhOiBhbnk7XHJcbiAgICBwdWJsaWMgZm9vdGVyOiBhbnk7XHJcbiAgICBwdWJsaWMgdGVtcGxhdGU6IGFueTtcclxuXHJcbiAgICBwdWJsaWMgY29udGFpbmVyTGVmdDogYW55O1xyXG4gICAgcHVibGljIGNvbnRhaW5lclRvcDogYW55O1xyXG4gICAgcHVibGljIGNvbnRhaW5lckJvdHRvbTogYW55O1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkb21TZXJ2aWNlOiBEb21TZXJ2aWNlKSB7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5lbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UG9wdXBQb3NpdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgc2V0UG9wdXBQb3NpdGlvbigpIHtcclxuICAgICAgICBsZXQgcmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBpZiAoKHJlY3QubGVmdCArIDI1MCkgPiB3aW5kb3cuaW5uZXJXaWR0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lckxlZnQgPSAocmVjdC5sZWZ0IC0gKChyZWN0LmxlZnQgKyAyNzApLXdpbmRvdy5pbm5lcldpZHRoKSkgICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyTGVmdCA9IHJlY3QubGVmdCArICdweCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWN0LmJvdHRvbSArIDEwMCA8IHdpbmRvdy5pbm5lckhlaWdodCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lclRvcCA9IChyZWN0LmJvdHRvbSkgKyAncHgnO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lckJvdHRvbSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lclRvcCA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyQm90dG9tID0gKHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QudG9wKSArICdweCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVNZShjb21wOiBhbnkpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb21TZXJ2aWNlLnJlbW92ZUNvbXBvbmVudChjb21wKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdfQ==