@ts-core/angular 15.0.1 → 15.0.3

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 (173) hide show
  1. package/VICommonModule.d.ts +10 -13
  2. package/application/ApplicationComponent.d.ts +1 -3
  3. package/directive/ResizeDirective.d.ts +2 -2
  4. package/directive/SelectOnFocusDirective.d.ts +1 -1
  5. package/esm2020/VICommonModule.mjs +4 -14
  6. package/esm2020/application/ApplicationComponent.mjs +2 -3
  7. package/esm2020/application/MessageBaseComponent.mjs +1 -1
  8. package/esm2020/directive/AutoScrollBottomDirective.mjs +2 -2
  9. package/esm2020/directive/ResizeDirective.mjs +5 -5
  10. package/esm2020/directive/SelectOnFocusDirective.mjs +2 -2
  11. package/esm2020/language/LanguageModule.mjs +1 -8
  12. package/esm2020/manager/ResizeManager.mjs +3 -11
  13. package/esm2020/pipe/CamelCasePipe.mjs +4 -12
  14. package/esm2020/pipe/StartCasePipe.mjs +4 -5
  15. package/esm2020/pipe/TimePipe.mjs +3 -2
  16. package/esm2020/pipe/TruncatePipe.mjs +3 -5
  17. package/esm2020/public-api.mjs +1 -68
  18. package/esm2020/service/PipeBaseService.mjs +1 -1
  19. package/esm2020/theme/ThemeAssetDirective.mjs +1 -1
  20. package/esm2020/theme/ThemeStyleDirective.mjs +2 -2
  21. package/esm2020/util/ViewUtil.mjs +1 -1
  22. package/fesm2015/ts-core-angular.mjs +3091 -7551
  23. package/fesm2015/ts-core-angular.mjs.map +1 -1
  24. package/fesm2020/ts-core-angular.mjs +3057 -7515
  25. package/fesm2020/ts-core-angular.mjs.map +1 -1
  26. package/htdocs/common.js +3 -3
  27. package/manager/ResizeManager.d.ts +1 -1
  28. package/package.json +3 -10
  29. package/pipe/CamelCasePipe.d.ts +0 -1
  30. package/public-api.d.ts +0 -60
  31. package/style/_core.scss +120 -0
  32. package/style/_filter.scss +14 -0
  33. package/style/_mouse.scss +27 -0
  34. package/style/_scroll.scss +20 -0
  35. package/style/_text.scss +20 -0
  36. package/application/ShellBaseComponent.d.ts +0 -20
  37. package/bottomSheet/BottomSheetImpl.d.ts +0 -77
  38. package/bottomSheet/BottomSheetModule.d.ts +0 -13
  39. package/bottomSheet/BottomSheetService.d.ts +0 -31
  40. package/bottomSheet/component/BottomSheetBaseComponent.d.ts +0 -13
  41. package/component/VIComponentModule.d.ts +0 -33
  42. package/component/cdk-table/CdkTableBaseComponent.d.ts +0 -60
  43. package/component/cdk-table/CdkTableDataSource.d.ts +0 -13
  44. package/component/cdk-table/CdkTableFilterableMapCollection.d.ts +0 -14
  45. package/component/cdk-table/CdkTablePaginableBookmarkMapCollection.d.ts +0 -11
  46. package/component/cdk-table/CdkTablePaginableMapCollection.d.ts +0 -13
  47. package/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.d.ts +0 -9
  48. package/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.d.ts +0 -18
  49. package/component/cdk-table/cdk-table-paginable-bookmark/cdk-table-paginable-bookmark.component.d.ts +0 -9
  50. package/component/cdk-table/cell/CdkTableCellClassNamePipe.d.ts +0 -8
  51. package/component/cdk-table/cell/CdkTableCellStyleNamePipe.d.ts +0 -10
  52. package/component/cdk-table/cell/CdkTableCellValuePipe.d.ts +0 -17
  53. package/component/cdk-table/cell/CdkTableCellValuePipePure.d.ts +0 -8
  54. package/component/cdk-table/column/CdkTableColumnClassNamePipe.d.ts +0 -8
  55. package/component/cdk-table/column/CdkTableColumnStyleNamePipe.d.ts +0 -10
  56. package/component/cdk-table/column/ICdkTableColumn.d.ts +0 -25
  57. package/component/cdk-table/row/CdkTableRowClassNamePipe.d.ts +0 -8
  58. package/component/cdk-table/row/CdkTableRowStyleNamePipe.d.ts +0 -10
  59. package/component/cdk-table/row/ICdkTableRow.d.ts +0 -8
  60. package/component/language/language-selector/language-selector.component.d.ts +0 -19
  61. package/component/menu-list/menu-list.component.d.ts +0 -9
  62. package/component/select-list/select-list.component.d.ts +0 -9
  63. package/component/tab-group/tab-group.component.d.ts +0 -16
  64. package/directive/MenuTriggerForDirective.d.ts +0 -11
  65. package/error/WindowClosedError.d.ts +0 -6
  66. package/esm2020/application/ShellBaseComponent.mjs +0 -78
  67. package/esm2020/bottomSheet/BottomSheetImpl.mjs +0 -273
  68. package/esm2020/bottomSheet/BottomSheetModule.mjs +0 -37
  69. package/esm2020/bottomSheet/BottomSheetService.mjs +0 -107
  70. package/esm2020/bottomSheet/component/BottomSheetBaseComponent.mjs +0 -59
  71. package/esm2020/component/VIComponentModule.mjs +0 -117
  72. package/esm2020/component/cdk-table/CdkTableBaseComponent.mjs +0 -192
  73. package/esm2020/component/cdk-table/CdkTableDataSource.mjs +0 -58
  74. package/esm2020/component/cdk-table/CdkTableFilterableMapCollection.mjs +0 -94
  75. package/esm2020/component/cdk-table/CdkTablePaginableBookmarkMapCollection.mjs +0 -49
  76. package/esm2020/component/cdk-table/CdkTablePaginableMapCollection.mjs +0 -57
  77. package/esm2020/component/cdk-table/cdk-table-filterable/cdk-table-filterable.component.mjs +0 -37
  78. package/esm2020/component/cdk-table/cdk-table-paginable/cdk-table-paginable.component.mjs +0 -65
  79. package/esm2020/component/cdk-table/cdk-table-paginable-bookmark/cdk-table-paginable-bookmark.component.mjs +0 -37
  80. package/esm2020/component/cdk-table/cell/CdkTableCellClassNamePipe.mjs +0 -25
  81. package/esm2020/component/cdk-table/cell/CdkTableCellStyleNamePipe.mjs +0 -22
  82. package/esm2020/component/cdk-table/cell/CdkTableCellValuePipe.mjs +0 -77
  83. package/esm2020/component/cdk-table/cell/CdkTableCellValuePipePure.mjs +0 -22
  84. package/esm2020/component/cdk-table/column/CdkTableColumnClassNamePipe.mjs +0 -22
  85. package/esm2020/component/cdk-table/column/CdkTableColumnStyleNamePipe.mjs +0 -22
  86. package/esm2020/component/cdk-table/column/ICdkTableColumn.mjs +0 -2
  87. package/esm2020/component/cdk-table/row/CdkTableRowClassNamePipe.mjs +0 -22
  88. package/esm2020/component/cdk-table/row/CdkTableRowStyleNamePipe.mjs +0 -22
  89. package/esm2020/component/cdk-table/row/ICdkTableRow.mjs +0 -2
  90. package/esm2020/component/language/language-selector/language-selector.component.mjs +0 -79
  91. package/esm2020/component/menu-list/menu-list.component.mjs +0 -16
  92. package/esm2020/component/select-list/select-list.component.mjs +0 -16
  93. package/esm2020/component/tab-group/tab-group.component.mjs +0 -71
  94. package/esm2020/directive/MenuTriggerForDirective.mjs +0 -53
  95. package/esm2020/error/WindowClosedError.mjs +0 -19
  96. package/esm2020/language/LanguageMatPaginatorIntl.mjs +0 -62
  97. package/esm2020/language/LanguageMomentDateAdapter.mjs +0 -13
  98. package/esm2020/notification/INotification.mjs +0 -7
  99. package/esm2020/notification/INotificationContent.mjs +0 -132
  100. package/esm2020/notification/NotificationConfig.mjs +0 -16
  101. package/esm2020/notification/NotificationFactory.mjs +0 -19
  102. package/esm2020/notification/NotificationImpl.mjs +0 -139
  103. package/esm2020/notification/NotificationModule.mjs +0 -53
  104. package/esm2020/notification/NotificationProperties.mjs +0 -2
  105. package/esm2020/notification/NotificationService.mjs +0 -239
  106. package/esm2020/notification/component/NotificationBaseComponent.mjs +0 -4
  107. package/esm2020/notification/component/NotificationQuestionBaseComponent.mjs +0 -50
  108. package/esm2020/notification/component/notification/notification.component.mjs +0 -61
  109. package/esm2020/service/BootstrapBreakpointService.mjs +0 -116
  110. package/esm2020/window/IWindow.mjs +0 -32
  111. package/esm2020/window/IWindowContent.mjs +0 -132
  112. package/esm2020/window/WindowBase.mjs +0 -168
  113. package/esm2020/window/WindowConfig.mjs +0 -232
  114. package/esm2020/window/WindowFactory.mjs +0 -27
  115. package/esm2020/window/WindowImpl.mjs +0 -361
  116. package/esm2020/window/WindowModule.mjs +0 -58
  117. package/esm2020/window/WindowProperties.mjs +0 -2
  118. package/esm2020/window/WindowService.mjs +0 -366
  119. package/esm2020/window/WindowServiceEvent.mjs +0 -9
  120. package/esm2020/window/component/WindowBaseComponent.mjs +0 -75
  121. package/esm2020/window/component/WindowDragAreaDirective.mjs +0 -97
  122. package/esm2020/window/component/WindowDragable.mjs +0 -69
  123. package/esm2020/window/component/WindowElement.mjs +0 -95
  124. package/esm2020/window/component/WindowQuestionBaseComponent.mjs +0 -17
  125. package/esm2020/window/component/WindowResizeable.mjs +0 -88
  126. package/esm2020/window/component/window-close-element/window-close-element.component.mjs +0 -55
  127. package/esm2020/window/component/window-expand-element/window-expand-element.component.mjs +0 -56
  128. package/esm2020/window/component/window-minimize-element/window-minimize-element.component.mjs +0 -75
  129. package/esm2020/window/component/window-question/window-question.component.mjs +0 -50
  130. package/esm2020/window/component/window-resize-element/window-resize-element.component.mjs +0 -56
  131. package/language/LanguageMatPaginatorIntl.d.ts +0 -20
  132. package/language/LanguageMomentDateAdapter.d.ts +0 -5
  133. package/notification/INotification.d.ts +0 -26
  134. package/notification/INotificationContent.d.ts +0 -31
  135. package/notification/NotificationConfig.d.ts +0 -13
  136. package/notification/NotificationFactory.d.ts +0 -11
  137. package/notification/NotificationImpl.d.ts +0 -38
  138. package/notification/NotificationModule.d.ts +0 -18
  139. package/notification/NotificationProperties.d.ts +0 -9
  140. package/notification/NotificationService.d.ts +0 -56
  141. package/notification/component/NotificationBaseComponent.d.ts +0 -3
  142. package/notification/component/NotificationQuestionBaseComponent.d.ts +0 -10
  143. package/notification/component/notification/notification.component.d.ts +0 -14
  144. package/service/BootstrapBreakpointService.d.ts +0 -45
  145. package/style/mat/bootstrap/_background.scss +0 -10
  146. package/style/mat/bootstrap/_border.scss +0 -207
  147. package/style/mat/bootstrap/_text.scss +0 -43
  148. package/style/mat/bootstrap/_variables.scss +0 -8
  149. package/style/mat/vi-mat-bootstrap.scss +0 -50
  150. package/style/mat/vi-mat.scss +0 -570
  151. package/style/mixin.scss +0 -69
  152. package/style/mouse.scss +0 -47
  153. package/window/IWindow.d.ts +0 -41
  154. package/window/IWindowContent.d.ts +0 -34
  155. package/window/WindowBase.d.ts +0 -33
  156. package/window/WindowConfig.d.ts +0 -64
  157. package/window/WindowFactory.d.ts +0 -12
  158. package/window/WindowImpl.d.ts +0 -89
  159. package/window/WindowModule.d.ts +0 -20
  160. package/window/WindowProperties.d.ts +0 -9
  161. package/window/WindowService.d.ts +0 -71
  162. package/window/WindowServiceEvent.d.ts +0 -7
  163. package/window/component/WindowBaseComponent.d.ts +0 -20
  164. package/window/component/WindowDragAreaDirective.d.ts +0 -19
  165. package/window/component/WindowDragable.d.ts +0 -13
  166. package/window/component/WindowElement.d.ts +0 -22
  167. package/window/component/WindowQuestionBaseComponent.d.ts +0 -5
  168. package/window/component/WindowResizeable.d.ts +0 -10
  169. package/window/component/window-close-element/window-close-element.component.d.ts +0 -12
  170. package/window/component/window-expand-element/window-expand-element.component.d.ts +0 -12
  171. package/window/component/window-minimize-element/window-minimize-element.component.d.ts +0 -15
  172. package/window/component/window-question/window-question.component.d.ts +0 -12
  173. package/window/component/window-resize-element/window-resize-element.component.d.ts +0 -12
@@ -1,366 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Destroyable } from '@ts-core/common';
3
- import { ObservableData } from '@ts-core/common';
4
- import * as _ from 'lodash';
5
- import { Subject } from 'rxjs';
6
- import { QuestionMode } from '../question/IQuestion';
7
- import { QuestionManager } from '../question/QuestionManager';
8
- import { ViewUtil } from '../util/ViewUtil';
9
- import { WindowQuestionComponent } from './component/window-question/window-question.component';
10
- import { WindowBaseComponent } from './component/WindowBaseComponent';
11
- import { WindowEvent } from './IWindow';
12
- import { WindowAlign, WindowConfig } from './WindowConfig';
13
- import { WindowFactory } from './WindowFactory';
14
- import { WindowServiceEvent } from './WindowServiceEvent';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@angular/material/dialog";
17
- import * as i2 from "@ts-core/frontend";
18
- import * as i3 from "../cookie/CookieService";
19
- import * as i4 from "../bottomSheet/BottomSheetService";
20
- export class WindowService extends Destroyable {
21
- // public topZIndex: number = 1001;
22
- // --------------------------------------------------------------------------
23
- //
24
- // Constructor
25
- //
26
- // --------------------------------------------------------------------------
27
- constructor(dialog, language, cookies, sheet) {
28
- super();
29
- this.sheet = sheet;
30
- this.isNeedCheckPositionAfterOpen = true;
31
- this.gapX = 25;
32
- this.gapY = 25;
33
- this.minWidth = 100;
34
- this.minHeight = 100;
35
- this.paddingTop = 25;
36
- this.paddingLeft = 25;
37
- this.paddingRight = 25;
38
- this.paddingBottom = 25;
39
- this.defaultVerticalAlign = WindowAlign.CENTER;
40
- this.defaultHorizontalAlign = WindowAlign.CENTER;
41
- this.topZIndex = WindowService.Z_INDEX_MAX;
42
- this._windows = new Map();
43
- this.dialog = dialog;
44
- this.language = language;
45
- this.observer = new Subject();
46
- this.properties = new PropertiesManager(cookies);
47
- this.factory = new WindowFactory(WindowBaseComponent);
48
- this.questionComponent = WindowQuestionComponent;
49
- }
50
- // --------------------------------------------------------------------------
51
- //
52
- // Static Methods
53
- //
54
- // --------------------------------------------------------------------------
55
- static getZIndex(window) {
56
- return !_.isNil(window) && !_.isNil(window.container) ? parseInt(ViewUtil.getStyle(window.container.parentElement, 'zIndex'), 10) : -1;
57
- }
58
- static setZIndex(window, index) {
59
- if (_.isNil(window)) {
60
- return;
61
- }
62
- if (!_.isNil(window.backdrop)) {
63
- ViewUtil.setStyle(window.backdrop, 'zIndex', index);
64
- }
65
- if (!_.isNil(window.wrapper)) {
66
- ViewUtil.setStyle(window.wrapper, 'zIndex', index);
67
- }
68
- }
69
- // --------------------------------------------------------------------------
70
- //
71
- // Private Methods
72
- //
73
- // --------------------------------------------------------------------------
74
- sortFunction(first, second) {
75
- return WindowService.getZIndex(first) > WindowService.getZIndex(second) ? -1 : 1;
76
- }
77
- updateTop() {
78
- let zIndex = 0;
79
- let topWindow = null;
80
- let windows = [...this.windowsArray, this.sheet.window];
81
- for (let window of windows) {
82
- if (_.isNil(window) || _.isNil(window.container)) {
83
- continue;
84
- }
85
- let index = WindowService.getZIndex(window);
86
- if (zIndex >= index) {
87
- continue;
88
- }
89
- zIndex = index;
90
- topWindow = window;
91
- }
92
- if (_.isNil(topWindow) || topWindow.isOnTop) {
93
- return;
94
- }
95
- topWindow.isOnTop = true;
96
- this.observer.next(new ObservableData(WindowServiceEvent.SETTED_ON_TOP, topWindow));
97
- }
98
- setWindowOnTop(topWindow) {
99
- let currentIndex = this.topZIndex - 2;
100
- let windows = [...this.windowsArray, this.sheet.window];
101
- for (let window of windows) {
102
- if (_.isNil(window) || _.isNil(window.container)) {
103
- continue;
104
- }
105
- window.isOnTop = window === topWindow;
106
- let zIndex = window.isOnTop ? this.topZIndex : currentIndex--;
107
- WindowService.setZIndex(window, zIndex);
108
- }
109
- this.windowsArray.sort(this.sortFunction);
110
- this.observer.next(new ObservableData(WindowServiceEvent.SETTED_ON_TOP, topWindow));
111
- }
112
- checkPosition(item) {
113
- while (this.hasSamePosition(item)) {
114
- item.move(item.getX() + this.gapX, item.getY() + this.gapY);
115
- }
116
- }
117
- hasSamePosition(itemWindow) {
118
- let x = itemWindow.getX();
119
- let y = itemWindow.getY();
120
- let result = false;
121
- this.windowsArray.forEach(window => {
122
- if (window !== itemWindow && x === window.getX() && y === window.getY()) {
123
- result = true;
124
- }
125
- });
126
- return result;
127
- }
128
- // --------------------------------------------------------------------------
129
- //
130
- // Setters Methods
131
- //
132
- // --------------------------------------------------------------------------
133
- add(config, content) {
134
- this._windows.set(config, content);
135
- this.observer.next(new ObservableData(WindowServiceEvent.OPENED, content.window));
136
- }
137
- remove(config) {
138
- let window = this._windows.get(config);
139
- if (!window) {
140
- return null;
141
- }
142
- window.close();
143
- this._windows.delete(config);
144
- this.observer.next(new ObservableData(WindowServiceEvent.CLOSED, window.window));
145
- }
146
- getById(id) {
147
- let item = _.find(Array.from(this._windows.values()), item => item.config.id === id);
148
- return !_.isNil(item) ? item.window : null;
149
- }
150
- setDefaultProperties(config) {
151
- if (!config.verticalAlign) {
152
- config.verticalAlign = this.defaultVerticalAlign;
153
- }
154
- if (!config.horizontalAlign) {
155
- config.horizontalAlign = this.defaultHorizontalAlign;
156
- }
157
- if (_.isNaN(config.defaultMinWidth)) {
158
- config.defaultMinWidth = this.minWidth;
159
- }
160
- if (_.isNaN(config.defaultMinHeight)) {
161
- config.defaultMinHeight = this.minHeight;
162
- }
163
- if (_.isNaN(config.paddingTop)) {
164
- config.paddingTop = this.paddingTop;
165
- }
166
- if (_.isNaN(config.paddingLeft)) {
167
- config.paddingLeft = this.paddingLeft;
168
- }
169
- if (_.isNaN(config.paddingRight)) {
170
- config.paddingRight = this.paddingRight;
171
- }
172
- if (_.isNaN(config.paddingBottom)) {
173
- config.paddingBottom = this.paddingBottom;
174
- }
175
- if (config.propertiesId) {
176
- this.properties.load(config.propertiesId, config);
177
- }
178
- config.setDefaultProperties();
179
- }
180
- // --------------------------------------------------------------------------
181
- //
182
- // Public Methods
183
- //
184
- // --------------------------------------------------------------------------
185
- open(component, config) {
186
- let window = null;
187
- if (config.id) {
188
- window = this.getById(config.id);
189
- if (!_.isNil(window)) {
190
- return window.content;
191
- }
192
- }
193
- this.setDefaultProperties(config);
194
- // let dialog = this.dialog as any;
195
- // dialog._getOverlayState = config.isModal ? dialog.getOverlayStateModal : dialog.getOverlayStateNonModal;
196
- let reference = this.dialog.open(component, config);
197
- window = this.factory.create({ config, reference, overlay: reference._overlayRef });
198
- this.observer.next(new ObservableData(WindowServiceEvent.OPEN_STARTED, window));
199
- let subscription = window.events.subscribe(event => {
200
- switch (event) {
201
- case WindowEvent.OPENED:
202
- this.add(config, reference.componentInstance);
203
- this.setWindowOnTop(window);
204
- if (this.isNeedCheckPositionAfterOpen) {
205
- this.checkPosition(window);
206
- }
207
- this.observer.next(new ObservableData(WindowServiceEvent.OPEN_FINISHED, window));
208
- break;
209
- case WindowEvent.CLOSED:
210
- subscription.unsubscribe();
211
- this.remove(config);
212
- if (window.isOnTop && this.windows.size > 0) {
213
- this.updateTop();
214
- }
215
- break;
216
- case WindowEvent.RESIZED:
217
- if (!_.isNil(config.propertiesId)) {
218
- this.properties.save(config.propertiesId, window);
219
- }
220
- break;
221
- case WindowEvent.SET_ON_TOP:
222
- this.setWindowOnTop(window);
223
- break;
224
- }
225
- });
226
- return window.content;
227
- }
228
- get(value) {
229
- let id = value.toString();
230
- if (value instanceof WindowConfig) {
231
- id = value.id;
232
- }
233
- if (!id) {
234
- return null;
235
- }
236
- let window = this.getById(id);
237
- if (_.isNil(window)) {
238
- return null;
239
- }
240
- return window.content;
241
- }
242
- has(value) {
243
- return !_.isNil(this.get(value));
244
- }
245
- setOnTop(value) {
246
- let content = this.get(value);
247
- if (!content) {
248
- return false;
249
- }
250
- content.window.setOnTop();
251
- return true;
252
- }
253
- removeAll() {
254
- this.windowsArray.forEach(window => window.close());
255
- }
256
- destroy() {
257
- if (this.isDestroyed) {
258
- return;
259
- }
260
- super.destroy();
261
- this.removeAll();
262
- if (!_.isNil(this.observer)) {
263
- this.observer.complete();
264
- this.observer = null;
265
- }
266
- if (!_.isNil(this.properties)) {
267
- this.properties.destroy();
268
- this.properties = null;
269
- }
270
- this.factory = null;
271
- this.questionComponent = null;
272
- this.dialog = null;
273
- this.language = null;
274
- this._windows = null;
275
- }
276
- // --------------------------------------------------------------------------
277
- //
278
- // Additional Methods
279
- //
280
- // --------------------------------------------------------------------------
281
- info(translationId, translation, questionOptions, configOptions) {
282
- let text = this.language.translate(translationId, translation);
283
- let config = _.assign(new WindowConfig(true, false, 450), configOptions);
284
- config.data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.INFO, text }));
285
- return this.open(this.questionComponent, config).config.data;
286
- }
287
- question(translationId, translation, questionOptions, configOptions) {
288
- let text = this.language.translate(translationId, translation);
289
- let config = _.assign(new WindowConfig(true, false, 450), configOptions);
290
- config.data = new QuestionManager(_.assign(questionOptions, { mode: QuestionMode.QUESTION, text }));
291
- return this.open(this.questionComponent, config).config.data;
292
- }
293
- // --------------------------------------------------------------------------
294
- //
295
- // Private Properties
296
- //
297
- // --------------------------------------------------------------------------
298
- get windowsArray() {
299
- return Array.from(this.windows.values()).map(item => item.window);
300
- }
301
- // --------------------------------------------------------------------------
302
- //
303
- // Public Properties
304
- //
305
- // --------------------------------------------------------------------------
306
- get events() {
307
- return this.observer.asObservable();
308
- }
309
- get windows() {
310
- return this._windows;
311
- }
312
- }
313
- // --------------------------------------------------------------------------
314
- //
315
- // Constants
316
- //
317
- // --------------------------------------------------------------------------
318
- WindowService.Z_INDEX_MAX = 1000;
319
- WindowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WindowService, deps: [{ token: i1.MatDialog }, { token: i2.LanguageService }, { token: i3.CookieService }, { token: i4.BottomSheetService }], target: i0.ɵɵFactoryTarget.Injectable });
320
- WindowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WindowService, providedIn: 'root' });
321
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WindowService, decorators: [{
322
- type: Injectable,
323
- args: [{ providedIn: 'root' }]
324
- }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.LanguageService }, { type: i3.CookieService }, { type: i4.BottomSheetService }]; } });
325
- export class PropertiesManager extends Destroyable {
326
- // --------------------------------------------------------------------------
327
- //
328
- // Constructor
329
- //
330
- // --------------------------------------------------------------------------
331
- constructor(cookies) {
332
- super();
333
- this.cookies = cookies;
334
- }
335
- // --------------------------------------------------------------------------
336
- //
337
- // Public Methods
338
- //
339
- // --------------------------------------------------------------------------
340
- load(name, config) {
341
- let item = this.cookies.getObject(name + 'Window');
342
- if (!item) {
343
- return;
344
- }
345
- if (item.hasOwnProperty('width')) {
346
- config.defaultWidth = item.width;
347
- }
348
- if (item.hasOwnProperty('height')) {
349
- config.defaultHeight = item.height;
350
- }
351
- }
352
- save(name, window) {
353
- this.cookies.putObject(name + 'Window', {
354
- width: window.getWidth(),
355
- height: window.getHeight()
356
- });
357
- }
358
- destroy() {
359
- if (this.isDestroyed) {
360
- return;
361
- }
362
- super.destroy();
363
- this.cookies = null;
364
- }
365
- }
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93aW5kb3cvV2luZG93U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUczQyxPQUFPLEVBQStCLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDaEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFXLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUcxRCxNQUFNLE9BQU8sYUFBYyxTQUFRLFdBQVc7SUFnRTFDLG1DQUFtQztJQUVuQyw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFLFlBQVksTUFBaUIsRUFBRSxRQUF5QixFQUFFLE9BQXNCLEVBQVUsS0FBeUI7UUFDL0csS0FBSyxFQUFFLENBQUM7UUFEOEUsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFqQzVHLGlDQUE0QixHQUFZLElBQUksQ0FBQztRQVU3QyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFFbEIsYUFBUSxHQUFXLEdBQUcsQ0FBQztRQUN2QixjQUFTLEdBQVcsR0FBRyxDQUFDO1FBRXhCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFFM0IseUJBQW9CLEdBQWdCLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDdkQsMkJBQXNCLEdBQWdCLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFFekQsY0FBUyxHQUFXLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFXakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQztJQUNyRCxDQUFDO0lBMUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRiw2RUFBNkU7SUFFdEUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFlO1FBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzSSxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFlLEVBQUUsS0FBYTtRQUNsRCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzNCLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkQ7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUM7SUF3REQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixtQkFBbUI7SUFDbkIsRUFBRTtJQUNGLDZFQUE2RTtJQUVyRSxZQUFZLENBQUMsS0FBYyxFQUFFLE1BQWU7UUFDaEQsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVPLFNBQVM7UUFDYixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFNBQVMsR0FBWSxJQUFJLENBQUM7UUFFOUIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUN4QixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzlDLFNBQVM7YUFDWjtZQUNELElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFO2dCQUNqQixTQUFTO2FBQ1o7WUFDRCxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ2YsU0FBUyxHQUFHLE1BQU0sQ0FBQztTQUN0QjtRQUVELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQ3pDLE9BQU87U0FDVjtRQUNELFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFTyxjQUFjLENBQUMsU0FBa0I7UUFDckMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUN4QixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzlDLFNBQVM7YUFDWjtZQUNELE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxLQUFLLFNBQVMsQ0FBQztZQUV0QyxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM5RCxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztTQUMzQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRU8sYUFBYSxDQUFDLElBQWE7UUFDL0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvRDtJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsVUFBbUI7UUFDdkMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUxQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxNQUFNLEtBQUssVUFBVSxJQUFJLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDckUsTUFBTSxHQUFHLElBQUksQ0FBQzthQUNqQjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsbUJBQW1CO0lBQ25CLEVBQUU7SUFDRiw2RUFBNkU7SUFFckUsR0FBRyxDQUFDLE1BQW9CLEVBQUUsT0FBdUI7UUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRU8sTUFBTSxDQUFDLE1BQW9CO1FBQy9CLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFjLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTyxPQUFPLENBQUksRUFBVTtRQUN6QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckYsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBb0I7UUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDdkIsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7U0FDcEQ7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtZQUN6QixNQUFNLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztTQUN4RDtRQUVELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDakMsTUFBTSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1QixNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN6QztRQUNELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUMvQixNQUFNLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDN0M7UUFFRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNyRDtRQUVELE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNkVBQTZFO0lBRXRFLElBQUksQ0FBMkIsU0FBMkIsRUFBRSxNQUFvQjtRQUNuRixJQUFJLE1BQU0sR0FBZSxJQUFJLENBQUM7UUFDOUIsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQ1gsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNsQixPQUFPLE1BQU0sQ0FBQyxPQUFZLENBQUM7YUFDOUI7U0FDSjtRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsQyxtQ0FBbUM7UUFDbkMsMkdBQTJHO1FBRTNHLElBQUksU0FBUyxHQUFpQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEYsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUcsU0FBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTdGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRWhGLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9DLFFBQVEsS0FBSyxFQUFFO2dCQUNYLEtBQUssV0FBVyxDQUFDLE1BQU07b0JBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM1QixJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRTt3QkFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDOUI7b0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFjLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ2pGLE1BQU07Z0JBRVYsS0FBSyxXQUFXLENBQUMsTUFBTTtvQkFDbkIsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNwQixJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO3dCQUN6QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7cUJBQ3BCO29CQUNELE1BQU07Z0JBRVYsS0FBSyxXQUFXLENBQUMsT0FBTztvQkFDcEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFO3dCQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO3FCQUNyRDtvQkFDRCxNQUFNO2dCQUVWLEtBQUssV0FBVyxDQUFDLFVBQVU7b0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzVCLE1BQU07YUFDYjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUMsT0FBWSxDQUFDO0lBQy9CLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBZTtRQUN0QixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxLQUFLLFlBQVksWUFBWSxFQUFFO1lBQy9CLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBZTtRQUN0QixPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFlO1FBQzNCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sU0FBUztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQzFCO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUU5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUVyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixzQkFBc0I7SUFDdEIsRUFBRTtJQUNGLDZFQUE2RTtJQUV0RSxJQUFJLENBQUMsYUFBc0IsRUFBRSxXQUFpQixFQUFFLGVBQWtDLEVBQUUsYUFBbUM7UUFDMUgsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQy9ELElBQUksTUFBTSxHQUFrQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDeEcsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDakUsQ0FBQztJQUVNLFFBQVEsQ0FBQyxhQUFzQixFQUFFLFdBQWlCLEVBQUUsZUFBa0MsRUFBRSxhQUFtQztRQUM5SCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxNQUFNLEdBQWtDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN4RyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNqRSxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixzQkFBc0I7SUFDdEIsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RSxJQUFZLFlBQVk7UUFDcEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YscUJBQXFCO0lBQ3JCLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQzs7QUF0WEQsNkVBQTZFO0FBQzdFLEVBQUU7QUFDRixhQUFhO0FBQ2IsRUFBRTtBQUNGLDZFQUE2RTtBQUUvRCx5QkFBVyxHQUFHLElBQUksQ0FBQzswR0FQeEIsYUFBYTs4R0FBYixhQUFhLGNBREEsTUFBTTsyRkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBMlhsQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBVztJQUM5Qyw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFLFlBQW9CLE9BQXNCO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRFEsWUFBTyxHQUFQLE9BQU8sQ0FBZTtJQUUxQyxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixrQkFBa0I7SUFDbEIsRUFBRTtJQUNGLDZFQUE2RTtJQUV0RSxJQUFJLENBQUMsSUFBWSxFQUFFLE1BQW9CO1FBQzFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxRQUFRLENBQVEsQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNwQztRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMvQixNQUFNLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRU0sSUFBSSxDQUFDLElBQVksRUFBRSxNQUFlO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxRQUFRLEVBQUU7WUFDcEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDeEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUU7U0FDN0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IERlc3Ryb3lhYmxlIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCB7IE9ic2VydmFibGVEYXRhIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B0cy1jb3JlL2Zyb250ZW5kJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICcuLi9jb29raWUvQ29va2llU2VydmljZSc7XG5pbXBvcnQgeyBCb3R0b21TaGVldFNlcnZpY2UgfSBmcm9tICcuLi9ib3R0b21TaGVldC9Cb3R0b21TaGVldFNlcnZpY2UnO1xuaW1wb3J0IHsgSVF1ZXN0aW9uLCBJUXVlc3Rpb25PcHRpb25zLCBRdWVzdGlvbk1vZGUgfSBmcm9tICcuLi9xdWVzdGlvbi9JUXVlc3Rpb24nO1xuaW1wb3J0IHsgUXVlc3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vcXVlc3Rpb24vUXVlc3Rpb25NYW5hZ2VyJztcbmltcG9ydCB7IFZpZXdVdGlsIH0gZnJvbSAnLi4vdXRpbC9WaWV3VXRpbCc7XG5pbXBvcnQgeyBXaW5kb3dRdWVzdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50L3dpbmRvdy1xdWVzdGlvbi93aW5kb3ctcXVlc3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFdpbmRvd0Jhc2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudC9XaW5kb3dCYXNlQ29tcG9uZW50JztcbmltcG9ydCB7IElXaW5kb3csIFdpbmRvd0V2ZW50IH0gZnJvbSAnLi9JV2luZG93JztcbmltcG9ydCB7IElXaW5kb3dDb250ZW50IH0gZnJvbSAnLi9JV2luZG93Q29udGVudCc7XG5pbXBvcnQgeyBXaW5kb3dBbGlnbiwgV2luZG93Q29uZmlnLCBXaW5kb3dDb25maWdPcHRpb25zIH0gZnJvbSAnLi9XaW5kb3dDb25maWcnO1xuaW1wb3J0IHsgV2luZG93RmFjdG9yeSB9IGZyb20gJy4vV2luZG93RmFjdG9yeSc7XG5pbXBvcnQgeyBXaW5kb3dTZXJ2aWNlRXZlbnQgfSBmcm9tICcuL1dpbmRvd1NlcnZpY2VFdmVudCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgV2luZG93U2VydmljZSBleHRlbmRzIERlc3Ryb3lhYmxlIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdGFudHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIFpfSU5ERVhfTUFYID0gMTAwMDtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFN0YXRpYyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRaSW5kZXgod2luZG93OiBJV2luZG93KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKHdpbmRvdykgJiYgIV8uaXNOaWwod2luZG93LmNvbnRhaW5lcikgPyBwYXJzZUludChWaWV3VXRpbC5nZXRTdHlsZSh3aW5kb3cuY29udGFpbmVyLnBhcmVudEVsZW1lbnQsICd6SW5kZXgnKSwgMTApIDogLTE7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRaSW5kZXgod2luZG93OiBJV2luZG93LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChfLmlzTmlsKHdpbmRvdykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIV8uaXNOaWwod2luZG93LmJhY2tkcm9wKSkge1xuICAgICAgICAgICAgVmlld1V0aWwuc2V0U3R5bGUod2luZG93LmJhY2tkcm9wLCAnekluZGV4JywgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05pbCh3aW5kb3cud3JhcHBlcikpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFN0eWxlKHdpbmRvdy53cmFwcGVyLCAnekluZGV4JywgaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBmYWN0b3J5OiBXaW5kb3dGYWN0b3J5PElXaW5kb3c+O1xuICAgIHB1YmxpYyBxdWVzdGlvbkNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxJV2luZG93Q29udGVudD47XG4gICAgcHVibGljIGlzTmVlZENoZWNrUG9zaXRpb25BZnRlck9wZW46IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nO1xuICAgIHByb3RlY3RlZCBsYW5ndWFnZTogTGFuZ3VhZ2VTZXJ2aWNlO1xuXG4gICAgcHJpdmF0ZSBfd2luZG93czogTWFwPFdpbmRvd0NvbmZpZywgSVdpbmRvd0NvbnRlbnQ+O1xuXG4gICAgcHJpdmF0ZSBvYnNlcnZlcjogU3ViamVjdDxPYnNlcnZhYmxlRGF0YTxXaW5kb3dTZXJ2aWNlRXZlbnQsIElXaW5kb3c+PjtcbiAgICBwcml2YXRlIHByb3BlcnRpZXM6IFByb3BlcnRpZXNNYW5hZ2VyO1xuXG4gICAgcHVibGljIGdhcFg6IG51bWJlciA9IDI1O1xuICAgIHB1YmxpYyBnYXBZOiBudW1iZXIgPSAyNTtcblxuICAgIHB1YmxpYyBtaW5XaWR0aDogbnVtYmVyID0gMTAwO1xuICAgIHB1YmxpYyBtaW5IZWlnaHQ6IG51bWJlciA9IDEwMDtcblxuICAgIHB1YmxpYyBwYWRkaW5nVG9wOiBudW1iZXIgPSAyNTtcbiAgICBwdWJsaWMgcGFkZGluZ0xlZnQ6IG51bWJlciA9IDI1O1xuICAgIHB1YmxpYyBwYWRkaW5nUmlnaHQ6IG51bWJlciA9IDI1O1xuICAgIHB1YmxpYyBwYWRkaW5nQm90dG9tOiBudW1iZXIgPSAyNTtcblxuICAgIHB1YmxpYyBkZWZhdWx0VmVydGljYWxBbGlnbjogV2luZG93QWxpZ24gPSBXaW5kb3dBbGlnbi5DRU5URVI7XG4gICAgcHVibGljIGRlZmF1bHRIb3Jpem9udGFsQWxpZ246IFdpbmRvd0FsaWduID0gV2luZG93QWxpZ24uQ0VOVEVSO1xuXG4gICAgcHVibGljIHRvcFpJbmRleDogbnVtYmVyID0gV2luZG93U2VydmljZS5aX0lOREVYX01BWDtcbiAgICAvLyBwdWJsaWMgdG9wWkluZGV4OiBudW1iZXIgPSAxMDAxO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0Q29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3RvcihkaWFsb2c6IE1hdERpYWxvZywgbGFuZ3VhZ2U6IExhbmd1YWdlU2VydmljZSwgY29va2llczogQ29va2llU2VydmljZSwgcHJpdmF0ZSBzaGVldDogQm90dG9tU2hlZXRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX3dpbmRvd3MgPSBuZXcgTWFwKCk7XG5cbiAgICAgICAgdGhpcy5kaWFsb2cgPSBkaWFsb2c7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IG5ldyBQcm9wZXJ0aWVzTWFuYWdlcihjb29raWVzKTtcblxuICAgICAgICB0aGlzLmZhY3RvcnkgPSBuZXcgV2luZG93RmFjdG9yeShXaW5kb3dCYXNlQ29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5xdWVzdGlvbkNvbXBvbmVudCA9IFdpbmRvd1F1ZXN0aW9uQ29tcG9uZW50O1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByaXZhdGUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByaXZhdGUgc29ydEZ1bmN0aW9uKGZpcnN0OiBJV2luZG93LCBzZWNvbmQ6IElXaW5kb3cpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gV2luZG93U2VydmljZS5nZXRaSW5kZXgoZmlyc3QpID4gV2luZG93U2VydmljZS5nZXRaSW5kZXgoc2Vjb25kKSA/IC0xIDogMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVRvcCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IHpJbmRleCA9IDA7XG4gICAgICAgIGxldCB0b3BXaW5kb3c6IElXaW5kb3cgPSBudWxsO1xuXG4gICAgICAgIGxldCB3aW5kb3dzID0gWy4uLnRoaXMud2luZG93c0FycmF5LCB0aGlzLnNoZWV0LndpbmRvd107XG4gICAgICAgIGZvciAobGV0IHdpbmRvdyBvZiB3aW5kb3dzKSB7XG4gICAgICAgICAgICBpZiAoXy5pc05pbCh3aW5kb3cpIHx8IF8uaXNOaWwod2luZG93LmNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBpbmRleCA9IFdpbmRvd1NlcnZpY2UuZ2V0WkluZGV4KHdpbmRvdyk7XG4gICAgICAgICAgICBpZiAoekluZGV4ID49IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB6SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHRvcFdpbmRvdyA9IHdpbmRvdztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLmlzTmlsKHRvcFdpbmRvdykgfHwgdG9wV2luZG93LmlzT25Ub3ApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0b3BXaW5kb3cuaXNPblRvcCA9IHRydWU7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoV2luZG93U2VydmljZUV2ZW50LlNFVFRFRF9PTl9UT1AsIHRvcFdpbmRvdykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0V2luZG93T25Ub3AodG9wV2luZG93OiBJV2luZG93KTogdm9pZCB7XG4gICAgICAgIGxldCBjdXJyZW50SW5kZXggPSB0aGlzLnRvcFpJbmRleCAtIDI7XG4gICAgICAgIGxldCB3aW5kb3dzID0gWy4uLnRoaXMud2luZG93c0FycmF5LCB0aGlzLnNoZWV0LndpbmRvd107XG4gICAgICAgIGZvciAobGV0IHdpbmRvdyBvZiB3aW5kb3dzKSB7XG4gICAgICAgICAgICBpZiAoXy5pc05pbCh3aW5kb3cpIHx8IF8uaXNOaWwod2luZG93LmNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvdy5pc09uVG9wID0gd2luZG93ID09PSB0b3BXaW5kb3c7XG5cbiAgICAgICAgICAgIGxldCB6SW5kZXggPSB3aW5kb3cuaXNPblRvcCA/IHRoaXMudG9wWkluZGV4IDogY3VycmVudEluZGV4LS07XG4gICAgICAgICAgICBXaW5kb3dTZXJ2aWNlLnNldFpJbmRleCh3aW5kb3csIHpJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLndpbmRvd3NBcnJheS5zb3J0KHRoaXMuc29ydEZ1bmN0aW9uKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShXaW5kb3dTZXJ2aWNlRXZlbnQuU0VUVEVEX09OX1RPUCwgdG9wV2luZG93KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1Bvc2l0aW9uKGl0ZW06IElXaW5kb3cpOiB2b2lkIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuaGFzU2FtZVBvc2l0aW9uKGl0ZW0pKSB7XG4gICAgICAgICAgICBpdGVtLm1vdmUoaXRlbS5nZXRYKCkgKyB0aGlzLmdhcFgsIGl0ZW0uZ2V0WSgpICsgdGhpcy5nYXBZKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFzU2FtZVBvc2l0aW9uKGl0ZW1XaW5kb3c6IElXaW5kb3cpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHggPSBpdGVtV2luZG93LmdldFgoKTtcbiAgICAgICAgbGV0IHkgPSBpdGVtV2luZG93LmdldFkoKTtcblxuICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMud2luZG93c0FycmF5LmZvckVhY2god2luZG93ID0+IHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cgIT09IGl0ZW1XaW5kb3cgJiYgeCA9PT0gd2luZG93LmdldFgoKSAmJiB5ID09PSB3aW5kb3cuZ2V0WSgpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0U2V0dGVycyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJpdmF0ZSBhZGQoY29uZmlnOiBXaW5kb3dDb25maWcsIGNvbnRlbnQ6IElXaW5kb3dDb250ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3dpbmRvd3Muc2V0KGNvbmZpZywgY29udGVudCk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoV2luZG93U2VydmljZUV2ZW50Lk9QRU5FRCwgY29udGVudC53aW5kb3cpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZShjb25maWc6IFdpbmRvd0NvbmZpZyk6IHZvaWQge1xuICAgICAgICBsZXQgd2luZG93ID0gdGhpcy5fd2luZG93cy5nZXQoY29uZmlnKTtcbiAgICAgICAgaWYgKCF3aW5kb3cpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgd2luZG93LmNsb3NlKCk7XG4gICAgICAgIHRoaXMuX3dpbmRvd3MuZGVsZXRlKGNvbmZpZyk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoV2luZG93U2VydmljZUV2ZW50LkNMT1NFRCwgd2luZG93LndpbmRvdykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QnlJZDxUPihpZDogc3RyaW5nKTogSVdpbmRvdzxUPiB7XG4gICAgICAgIGxldCBpdGVtID0gXy5maW5kKEFycmF5LmZyb20odGhpcy5fd2luZG93cy52YWx1ZXMoKSksIGl0ZW0gPT4gaXRlbS5jb25maWcuaWQgPT09IGlkKTtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKGl0ZW0pID8gaXRlbS53aW5kb3cgOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFByb3BlcnRpZXMoY29uZmlnOiBXaW5kb3dDb25maWcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjb25maWcudmVydGljYWxBbGlnbikge1xuICAgICAgICAgICAgY29uZmlnLnZlcnRpY2FsQWxpZ24gPSB0aGlzLmRlZmF1bHRWZXJ0aWNhbEFsaWduO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY29uZmlnLmhvcml6b250YWxBbGlnbikge1xuICAgICAgICAgICAgY29uZmlnLmhvcml6b250YWxBbGlnbiA9IHRoaXMuZGVmYXVsdEhvcml6b250YWxBbGlnbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLmlzTmFOKGNvbmZpZy5kZWZhdWx0TWluV2lkdGgpKSB7XG4gICAgICAgICAgICBjb25maWcuZGVmYXVsdE1pbldpZHRoID0gdGhpcy5taW5XaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc05hTihjb25maWcuZGVmYXVsdE1pbkhlaWdodCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5kZWZhdWx0TWluSGVpZ2h0ID0gdGhpcy5taW5IZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5pc05hTihjb25maWcucGFkZGluZ1RvcCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5wYWRkaW5nVG9wID0gdGhpcy5wYWRkaW5nVG9wO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLmlzTmFOKGNvbmZpZy5wYWRkaW5nTGVmdCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5wYWRkaW5nTGVmdCA9IHRoaXMucGFkZGluZ0xlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF8uaXNOYU4oY29uZmlnLnBhZGRpbmdSaWdodCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5wYWRkaW5nUmlnaHQgPSB0aGlzLnBhZGRpbmdSaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc05hTihjb25maWcucGFkZGluZ0JvdHRvbSkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5wYWRkaW5nQm90dG9tID0gdGhpcy5wYWRkaW5nQm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5wcm9wZXJ0aWVzSWQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydGllcy5sb2FkKGNvbmZpZy5wcm9wZXJ0aWVzSWQsIGNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWcuc2V0RGVmYXVsdFByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBvcGVuPFQgZXh0ZW5kcyBJV2luZG93Q29udGVudD4oY29tcG9uZW50OiBDb21wb25lbnRUeXBlPFQ+LCBjb25maWc6IFdpbmRvd0NvbmZpZyk6IFQge1xuICAgICAgICBsZXQgd2luZG93OiBJV2luZG93PFQ+ID0gbnVsbDtcbiAgICAgICAgaWYgKGNvbmZpZy5pZCkge1xuICAgICAgICAgICAgd2luZG93ID0gdGhpcy5nZXRCeUlkKGNvbmZpZy5pZCk7XG4gICAgICAgICAgICBpZiAoIV8uaXNOaWwod2luZG93KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuY29udGVudCBhcyBUO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UHJvcGVydGllcyhjb25maWcpO1xuXG4gICAgICAgIC8vIGxldCBkaWFsb2cgPSB0aGlzLmRpYWxvZyBhcyBhbnk7XG4gICAgICAgIC8vIGRpYWxvZy5fZ2V0T3ZlcmxheVN0YXRlID0gY29uZmlnLmlzTW9kYWwgPyBkaWFsb2cuZ2V0T3ZlcmxheVN0YXRlTW9kYWwgOiBkaWFsb2cuZ2V0T3ZlcmxheVN0YXRlTm9uTW9kYWw7XG5cbiAgICAgICAgbGV0IHJlZmVyZW5jZTogTWF0RGlhbG9nUmVmPElXaW5kb3dDb250ZW50PiA9IHRoaXMuZGlhbG9nLm9wZW4oY29tcG9uZW50LCBjb25maWcpO1xuICAgICAgICB3aW5kb3cgPSB0aGlzLmZhY3RvcnkuY3JlYXRlKHsgY29uZmlnLCByZWZlcmVuY2UsIG92ZXJsYXk6IChyZWZlcmVuY2UgYXMgYW55KS5fb3ZlcmxheVJlZiB9KTtcblxuICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKFdpbmRvd1NlcnZpY2VFdmVudC5PUEVOX1NUQVJURUQsIHdpbmRvdykpO1xuXG4gICAgICAgIGxldCBzdWJzY3JpcHRpb24gPSB3aW5kb3cuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSBXaW5kb3dFdmVudC5PUEVORUQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkKGNvbmZpZywgcmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRXaW5kb3dPblRvcCh3aW5kb3cpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc05lZWRDaGVja1Bvc2l0aW9uQWZ0ZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrUG9zaXRpb24od2luZG93KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKFdpbmRvd1NlcnZpY2VFdmVudC5PUEVOX0ZJTklTSEVELCB3aW5kb3cpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIFdpbmRvd0V2ZW50LkNMT1NFRDpcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlKGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaXNPblRvcCAmJiB0aGlzLndpbmRvd3Muc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIFdpbmRvd0V2ZW50LlJFU0laRUQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc05pbChjb25maWcucHJvcGVydGllc0lkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzLnNhdmUoY29uZmlnLnByb3BlcnRpZXNJZCwgd2luZG93KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgV2luZG93RXZlbnQuU0VUX09OX1RPUDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRXaW5kb3dPblRvcCh3aW5kb3cpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB3aW5kb3cuY29udGVudCBhcyBUO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQodmFsdWU6IFdpbmRvd0lkKTogSVdpbmRvd0NvbnRlbnQge1xuICAgICAgICBsZXQgaWQgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBXaW5kb3dDb25maWcpIHtcbiAgICAgICAgICAgIGlkID0gdmFsdWUuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHdpbmRvdyA9IHRoaXMuZ2V0QnlJZChpZCk7XG4gICAgICAgIGlmIChfLmlzTmlsKHdpbmRvdykpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3aW5kb3cuY29udGVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzKHZhbHVlOiBXaW5kb3dJZCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwodGhpcy5nZXQodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0T25Ub3AodmFsdWU6IFdpbmRvd0lkKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBjb250ZW50ID0gdGhpcy5nZXQodmFsdWUpO1xuICAgICAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZW50LndpbmRvdy5zZXRPblRvcCgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndpbmRvd3NBcnJheS5mb3JFYWNoKHdpbmRvdyA9PiB3aW5kb3cuY2xvc2UoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnJlbW92ZUFsbCgpO1xuXG4gICAgICAgIGlmICghXy5pc05pbCh0aGlzLm9ic2VydmVyKSkge1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIV8uaXNOaWwodGhpcy5wcm9wZXJ0aWVzKSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydGllcyA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZhY3RvcnkgPSBudWxsO1xuICAgICAgICB0aGlzLnF1ZXN0aW9uQ29tcG9uZW50ID0gbnVsbDtcblxuICAgICAgICB0aGlzLmRpYWxvZyA9IG51bGw7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2UgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuX3dpbmRvd3MgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdEFkZGl0aW9uYWwgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBpbmZvKHRyYW5zbGF0aW9uSWQ/OiBzdHJpbmcsIHRyYW5zbGF0aW9uPzogYW55LCBxdWVzdGlvbk9wdGlvbnM/OiBJUXVlc3Rpb25PcHRpb25zLCBjb25maWdPcHRpb25zPzogV2luZG93Q29uZmlnT3B0aW9ucyk6IElRdWVzdGlvbiB7XG4gICAgICAgIGxldCB0ZXh0ID0gdGhpcy5sYW5ndWFnZS50cmFuc2xhdGUodHJhbnNsYXRpb25JZCwgdHJhbnNsYXRpb24pO1xuICAgICAgICBsZXQgY29uZmlnOiBXaW5kb3dDb25maWc8UXVlc3Rpb25NYW5hZ2VyPiA9IF8uYXNzaWduKG5ldyBXaW5kb3dDb25maWcodHJ1ZSwgZmFsc2UsIDQ1MCksIGNvbmZpZ09wdGlvbnMpO1xuICAgICAgICBjb25maWcuZGF0YSA9IG5ldyBRdWVzdGlvbk1hbmFnZXIoXy5hc3NpZ24ocXVlc3Rpb25PcHRpb25zLCB7IG1vZGU6IFF1ZXN0aW9uTW9kZS5JTkZPLCB0ZXh0IH0pKTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3Blbih0aGlzLnF1ZXN0aW9uQ29tcG9uZW50LCBjb25maWcpLmNvbmZpZy5kYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBxdWVzdGlvbih0cmFuc2xhdGlvbklkPzogc3RyaW5nLCB0cmFuc2xhdGlvbj86IGFueSwgcXVlc3Rpb25PcHRpb25zPzogSVF1ZXN0aW9uT3B0aW9ucywgY29uZmlnT3B0aW9ucz86IFdpbmRvd0NvbmZpZ09wdGlvbnMpOiBJUXVlc3Rpb24ge1xuICAgICAgICBsZXQgdGV4dCA9IHRoaXMubGFuZ3VhZ2UudHJhbnNsYXRlKHRyYW5zbGF0aW9uSWQsIHRyYW5zbGF0aW9uKTtcbiAgICAgICAgbGV0IGNvbmZpZzogV2luZG93Q29uZmlnPFF1ZXN0aW9uTWFuYWdlcj4gPSBfLmFzc2lnbihuZXcgV2luZG93Q29uZmlnKHRydWUsIGZhbHNlLCA0NTApLCBjb25maWdPcHRpb25zKTtcbiAgICAgICAgY29uZmlnLmRhdGEgPSBuZXcgUXVlc3Rpb25NYW5hZ2VyKF8uYXNzaWduKHF1ZXN0aW9uT3B0aW9ucywgeyBtb2RlOiBRdWVzdGlvbk1vZGUuUVVFU1RJT04sIHRleHQgfSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuKHRoaXMucXVlc3Rpb25Db21wb25lbnQsIGNvbmZpZykuY29uZmlnLmRhdGE7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJpdmF0ZSBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJpdmF0ZSBnZXQgd2luZG93c0FycmF5KCk6IEFycmF5PElXaW5kb3c+IHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy53aW5kb3dzLnZhbHVlcygpKS5tYXAoaXRlbSA9PiBpdGVtLndpbmRvdyk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0IGV2ZW50cygpOiBPYnNlcnZhYmxlPE9ic2VydmFibGVEYXRhPFdpbmRvd1NlcnZpY2VFdmVudCwgSVdpbmRvdz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2ZXIuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB3aW5kb3dzKCk6IE1hcDxXaW5kb3dDb25maWcsIElXaW5kb3dDb250ZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aW5kb3dzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb3BlcnRpZXNNYW5hZ2VyIGV4dGVuZHMgRGVzdHJveWFibGUge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdENvbnN0cnVjdG9yXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb29raWVzOiBDb29raWVTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgbG9hZChuYW1lOiBzdHJpbmcsIGNvbmZpZzogV2luZG93Q29uZmlnKTogdm9pZCB7XG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5jb29raWVzLmdldE9iamVjdChuYW1lICsgJ1dpbmRvdycpIGFzIGFueTtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0uaGFzT3duUHJvcGVydHkoJ3dpZHRoJykpIHtcbiAgICAgICAgICAgIGNvbmZpZy5kZWZhdWx0V2lkdGggPSBpdGVtLndpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmhhc093blByb3BlcnR5KCdoZWlnaHQnKSkge1xuICAgICAgICAgICAgY29uZmlnLmRlZmF1bHRIZWlnaHQgPSBpdGVtLmhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlKG5hbWU6IHN0cmluZywgd2luZG93OiBJV2luZG93KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29va2llcy5wdXRPYmplY3QobmFtZSArICdXaW5kb3cnLCB7XG4gICAgICAgICAgICB3aWR0aDogd2luZG93LmdldFdpZHRoKCksXG4gICAgICAgICAgICBoZWlnaHQ6IHdpbmRvdy5nZXRIZWlnaHQoKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuY29va2llcyA9IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBXaW5kb3dJZCA9IHN0cmluZyB8IFdpbmRvd0NvbmZpZztcbiJdfQ==
@@ -1,9 +0,0 @@
1
- export var WindowServiceEvent;
2
- (function (WindowServiceEvent) {
3
- WindowServiceEvent["OPEN_STARTED"] = "OPEN_STARTED";
4
- WindowServiceEvent["OPENED"] = "OPENED";
5
- WindowServiceEvent["OPEN_FINISHED"] = "OPEN_FINISHED";
6
- WindowServiceEvent["CLOSED"] = "CLOSED";
7
- WindowServiceEvent["SETTED_ON_TOP"] = "SETTED_ON_TOP";
8
- })(WindowServiceEvent || (WindowServiceEvent = {}));
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93U2VydmljZUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dpbmRvdy9XaW5kb3dTZXJ2aWNlRXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksa0JBT1g7QUFQRCxXQUFZLGtCQUFrQjtJQUMxQixtREFBNkIsQ0FBQTtJQUM3Qix1Q0FBaUIsQ0FBQTtJQUNqQixxREFBK0IsQ0FBQTtJQUUvQix1Q0FBaUIsQ0FBQTtJQUNqQixxREFBK0IsQ0FBQTtBQUNuQyxDQUFDLEVBUFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQU83QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFdpbmRvd1NlcnZpY2VFdmVudCB7XG4gICAgT1BFTl9TVEFSVEVEID0gJ09QRU5fU1RBUlRFRCcsXG4gICAgT1BFTkVEID0gJ09QRU5FRCcsXG4gICAgT1BFTl9GSU5JU0hFRCA9ICdPUEVOX0ZJTklTSEVEJyxcblxuICAgIENMT1NFRCA9ICdDTE9TRUQnLFxuICAgIFNFVFRFRF9PTl9UT1AgPSAnU0VUVEVEX09OX1RPUCdcbn1cbiJdfQ==
@@ -1,75 +0,0 @@
1
- import { ViewContainerRef } from '@angular/core';
2
- import { ViewUtil } from '../../util/ViewUtil';
3
- import { WindowCloseElementComponent } from './window-close-element/window-close-element.component';
4
- import { WindowExpandElementComponent } from './window-expand-element/window-expand-element.component';
5
- import { WindowResizeElementComponent } from './window-resize-element/window-resize-element.component';
6
- import { WindowMinimizeElementComponent } from './window-minimize-element/window-minimize-element.component';
7
- import { WindowDragable } from './WindowDragable';
8
- export class WindowBaseComponent extends WindowDragable {
9
- // --------------------------------------------------------------------------
10
- //
11
- // Protected Methods
12
- //
13
- // --------------------------------------------------------------------------
14
- elementsCreate() {
15
- super.elementsCreate();
16
- if (!(this.content.container instanceof ViewContainerRef)) {
17
- return;
18
- }
19
- if (!this.config.disableClose) {
20
- this.elementAdd(this.content.container.createComponent(WindowBaseComponent.CLOSE_COMPONENT));
21
- }
22
- if (this.config.isResizeable) {
23
- this.elementAdd(this.content.container.createComponent(WindowBaseComponent.RESIZE_COMPONENT));
24
- }
25
- if (this.config.isMinimizable) {
26
- this.elementAdd(this.content.container.createComponent(WindowBaseComponent.MINIMIZE_COMPONENT));
27
- }
28
- if (this.config.isExpandable) {
29
- this.elementAdd(this.content.container.createComponent(WindowBaseComponent.EXPAND_COMPONENT));
30
- }
31
- }
32
- commitIsBlinkProperties() {
33
- ViewUtil.toggleClass(this.container, this.blinkClass, this.isBlink);
34
- }
35
- commitIsDisabledProperties() {
36
- ViewUtil.toggleClass(this.container, this.disabledClass, this.isDisabled);
37
- ViewUtil.toggleClass(this.content.element, this.disabledClass, this.isDisabled);
38
- ViewUtil.toggleClass(this.content.element.nativeElement.parentElement, this.disabledClass, this.isDisabled);
39
- }
40
- commitIsShakingProperties() {
41
- ViewUtil.toggleClasses(this.container, this.shakingClass, this.isShaking);
42
- }
43
- commitIsMinimizedProperties() {
44
- ViewUtil.toggleClass(this.container, this.minimizedClass, this.isMinimized);
45
- ViewUtil.toggleClass(this.content.element, this.minimizedClass, this.isMinimized);
46
- ViewUtil.toggleClass(this.content.element.nativeElement.parentElement, this.minimizedClass, this.isMinimized);
47
- }
48
- // --------------------------------------------------------------------------
49
- //
50
- // Protected Properties
51
- //
52
- // --------------------------------------------------------------------------
53
- get blinkClass() {
54
- return 'vi-blink';
55
- }
56
- get disabledClass() {
57
- return 'vi-disabled';
58
- }
59
- get minimizedClass() {
60
- return 'vi-minimized';
61
- }
62
- get shakingClass() {
63
- return 'shake-constant shake-horizontal';
64
- }
65
- }
66
- // --------------------------------------------------------------------------
67
- //
68
- // Static Properties
69
- //
70
- // --------------------------------------------------------------------------
71
- WindowBaseComponent.CLOSE_COMPONENT = WindowCloseElementComponent;
72
- WindowBaseComponent.EXPAND_COMPONENT = WindowExpandElementComponent;
73
- WindowBaseComponent.RESIZE_COMPONENT = WindowResizeElementComponent;
74
- WindowBaseComponent.MINIMIZE_COMPONENT = WindowMinimizeElementComponent;
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93QmFzZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93aW5kb3cvY29tcG9uZW50L1dpbmRvd0Jhc2VDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7SUFZbkQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixxQkFBcUI7SUFDckIsRUFBRTtJQUNGLDZFQUE2RTtJQUVuRSxjQUFjO1FBQ3BCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsWUFBWSxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ3ZELE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1NBQ2hHO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7U0FDakc7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztTQUNuRztRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1NBQ2pHO0lBQ0wsQ0FBQztJQUVTLHVCQUF1QjtRQUM3QixRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVTLDBCQUEwQjtRQUNoQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRixRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVTLHlCQUF5QjtRQUMvQixRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVTLDJCQUEyQjtRQUNqQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRixRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysd0JBQXdCO0lBQ3hCLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsSUFBYyxVQUFVO1FBQ3BCLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFjLGFBQWE7UUFDdkIsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWMsY0FBYztRQUN4QixPQUFPLGNBQWMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBYyxZQUFZO1FBQ3RCLE9BQU8saUNBQWlDLENBQUM7SUFDN0MsQ0FBQzs7QUFqRkQsNkVBQTZFO0FBQzdFLEVBQUU7QUFDRixxQkFBcUI7QUFDckIsRUFBRTtBQUNGLDZFQUE2RTtBQUUvRCxtQ0FBZSxHQUFHLDJCQUEyQixDQUFDO0FBQzlDLG9DQUFnQixHQUFHLDRCQUE0QixDQUFDO0FBQ2hELG9DQUFnQixHQUFHLDRCQUE0QixDQUFDO0FBQ2hELHNDQUFrQixHQUFHLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlld1V0aWwgfSBmcm9tICcuLi8uLi91dGlsL1ZpZXdVdGlsJztcbmltcG9ydCB7IFdpbmRvd0Nsb3NlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4vd2luZG93LWNsb3NlLWVsZW1lbnQvd2luZG93LWNsb3NlLWVsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpbmRvd0V4cGFuZEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL3dpbmRvdy1leHBhbmQtZWxlbWVudC93aW5kb3ctZXhwYW5kLWVsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpbmRvd1Jlc2l6ZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL3dpbmRvdy1yZXNpemUtZWxlbWVudC93aW5kb3ctcmVzaXplLWVsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpbmRvd01pbmltaXplRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4vd2luZG93LW1pbmltaXplLWVsZW1lbnQvd2luZG93LW1pbmltaXplLWVsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpbmRvd0RyYWdhYmxlIH0gZnJvbSAnLi9XaW5kb3dEcmFnYWJsZSc7XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dCYXNlQ29tcG9uZW50IGV4dGVuZHMgV2luZG93RHJhZ2FibGUge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyAgU3RhdGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIENMT1NFX0NPTVBPTkVOVCA9IFdpbmRvd0Nsb3NlRWxlbWVudENvbXBvbmVudDtcbiAgICBwdWJsaWMgc3RhdGljIEVYUEFORF9DT01QT05FTlQgPSBXaW5kb3dFeHBhbmRFbGVtZW50Q29tcG9uZW50O1xuICAgIHB1YmxpYyBzdGF0aWMgUkVTSVpFX0NPTVBPTkVOVCA9IFdpbmRvd1Jlc2l6ZUVsZW1lbnRDb21wb25lbnQ7XG4gICAgcHVibGljIHN0YXRpYyBNSU5JTUlaRV9DT01QT05FTlQgPSBXaW5kb3dNaW5pbWl6ZUVsZW1lbnRDb21wb25lbnQ7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gIFByb3RlY3RlZCBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIGVsZW1lbnRzQ3JlYXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5lbGVtZW50c0NyZWF0ZSgpO1xuXG4gICAgICAgIGlmICghKHRoaXMuY29udGVudC5jb250YWluZXIgaW5zdGFuY2VvZiBWaWV3Q29udGFpbmVyUmVmKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5kaXNhYmxlQ2xvc2UpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudEFkZCh0aGlzLmNvbnRlbnQuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChXaW5kb3dCYXNlQ29tcG9uZW50LkNMT1NFX0NPTVBPTkVOVCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmlzUmVzaXplYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50QWRkKHRoaXMuY29udGVudC5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KFdpbmRvd0Jhc2VDb21wb25lbnQuUkVTSVpFX0NPTVBPTkVOVCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmlzTWluaW1pemFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudEFkZCh0aGlzLmNvbnRlbnQuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChXaW5kb3dCYXNlQ29tcG9uZW50Lk1JTklNSVpFX0NPTVBPTkVOVCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmlzRXhwYW5kYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50QWRkKHRoaXMuY29udGVudC5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KFdpbmRvd0Jhc2VDb21wb25lbnQuRVhQQU5EX0NPTVBPTkVOVCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbW1pdElzQmxpbmtQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICBWaWV3VXRpbC50b2dnbGVDbGFzcyh0aGlzLmNvbnRhaW5lciwgdGhpcy5ibGlua0NsYXNzLCB0aGlzLmlzQmxpbmspO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb21taXRJc0Rpc2FibGVkUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgVmlld1V0aWwudG9nZ2xlQ2xhc3ModGhpcy5jb250YWluZXIsIHRoaXMuZGlzYWJsZWRDbGFzcywgdGhpcy5pc0Rpc2FibGVkKTtcbiAgICAgICAgVmlld1V0aWwudG9nZ2xlQ2xhc3ModGhpcy5jb250ZW50LmVsZW1lbnQsIHRoaXMuZGlzYWJsZWRDbGFzcywgdGhpcy5pc0Rpc2FibGVkKTtcbiAgICAgICAgVmlld1V0aWwudG9nZ2xlQ2xhc3ModGhpcy5jb250ZW50LmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LCB0aGlzLmRpc2FibGVkQ2xhc3MsIHRoaXMuaXNEaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbW1pdElzU2hha2luZ1Byb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnRvZ2dsZUNsYXNzZXModGhpcy5jb250YWluZXIsIHRoaXMuc2hha2luZ0NsYXNzLCB0aGlzLmlzU2hha2luZyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbW1pdElzTWluaW1pemVkUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgVmlld1V0aWwudG9nZ2xlQ2xhc3ModGhpcy5jb250YWluZXIsIHRoaXMubWluaW1pemVkQ2xhc3MsIHRoaXMuaXNNaW5pbWl6ZWQpO1xuICAgICAgICBWaWV3VXRpbC50b2dnbGVDbGFzcyh0aGlzLmNvbnRlbnQuZWxlbWVudCwgdGhpcy5taW5pbWl6ZWRDbGFzcywgdGhpcy5pc01pbmltaXplZCk7XG4gICAgICAgIFZpZXdVdGlsLnRvZ2dsZUNsYXNzKHRoaXMuY29udGVudC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCwgdGhpcy5taW5pbWl6ZWRDbGFzcywgdGhpcy5pc01pbmltaXplZCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vICBQcm90ZWN0ZWQgUHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBnZXQgYmxpbmtDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ3ZpLWJsaW5rJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGRpc2FibGVkQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICd2aS1kaXNhYmxlZCc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBtaW5pbWl6ZWRDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ3ZpLW1pbmltaXplZCc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBzaGFraW5nQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdzaGFrZS1jb25zdGFudCBzaGFrZS1ob3Jpem9udGFsJztcbiAgICB9XG59XG4iXX0=
@@ -1,97 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import * as interact from 'interactjs';
3
- import { Destroyable } from '@ts-core/common';
4
- import * as _ from 'lodash';
5
- import * as i0 from "@angular/core";
6
- export class WindowDragAreaDirective extends Destroyable {
7
- // --------------------------------------------------------------------------
8
- //
9
- // Constructor
10
- //
11
- // --------------------------------------------------------------------------
12
- constructor(element) {
13
- super();
14
- this.element = element;
15
- // --------------------------------------------------------------------------
16
- //
17
- // Event Handlers
18
- //
19
- // --------------------------------------------------------------------------
20
- this.dragStartHandler = (event) => {
21
- this._window.dragStartHandler(event);
22
- };
23
- this.dragMoveHandler = (event) => {
24
- this._window.dragMoveHandler(event);
25
- };
26
- }
27
- // --------------------------------------------------------------------------
28
- //
29
- // Public Methods
30
- //
31
- // --------------------------------------------------------------------------
32
- destroy() {
33
- if (this.isDestroyed) {
34
- return;
35
- }
36
- super.destroy();
37
- if (!_.isNil(this._interactable)) {
38
- this._interactable.unset();
39
- this._interactable = null;
40
- }
41
- this.element = null;
42
- }
43
- // --------------------------------------------------------------------------
44
- //
45
- // Private Methods
46
- //
47
- // --------------------------------------------------------------------------
48
- commitWindowProperties() {
49
- if (!this.window.config || this.window.config.isModal) {
50
- return;
51
- }
52
- this.interactable.draggable(true);
53
- this.interactable.on('dragmove', this.dragMoveHandler);
54
- this.interactable.on('dragstart', this.dragStartHandler);
55
- }
56
- // --------------------------------------------------------------------------
57
- //
58
- // Private Properties
59
- //
60
- // --------------------------------------------------------------------------
61
- get interactable() {
62
- if (!this._interactable) {
63
- this._interactable = interact.default(this.element.nativeElement);
64
- //this._interactable.styleCursor(false);
65
- }
66
- return this._interactable;
67
- }
68
- // --------------------------------------------------------------------------
69
- //
70
- // Public Properties
71
- //
72
- // --------------------------------------------------------------------------
73
- set window(value) {
74
- if (value === this._window) {
75
- return;
76
- }
77
- this._window = value;
78
- if (this._window) {
79
- this.commitWindowProperties();
80
- }
81
- }
82
- get window() {
83
- return this._window;
84
- }
85
- }
86
- WindowDragAreaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WindowDragAreaDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
87
- WindowDragAreaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: WindowDragAreaDirective, selector: "[vi-window-drag-area]", inputs: { window: ["vi-window-drag-area", "window"] }, usesInheritance: true, ngImport: i0 });
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: WindowDragAreaDirective, decorators: [{
89
- type: Directive,
90
- args: [{
91
- selector: '[vi-window-drag-area]'
92
- }]
93
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { window: [{
94
- type: Input,
95
- args: ['vi-window-drag-area']
96
- }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93RHJhZ0FyZWFEaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd2luZG93L2NvbXBvbmVudC9XaW5kb3dEcmFnQXJlYURpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEtBQUssUUFBUSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHOUMsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7O0FBSzVCLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxXQUFXO0lBVXBELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsZUFBZTtJQUNmLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsWUFBb0IsT0FBbUI7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFEUSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBc0N2Qyw2RUFBNkU7UUFDN0UsRUFBRTtRQUNGLGtCQUFrQjtRQUNsQixFQUFFO1FBQ0YsNkVBQTZFO1FBRXJFLHFCQUFnQixHQUFHLENBQUMsS0FBVSxFQUFRLEVBQUU7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUM7UUFFTSxvQkFBZSxHQUFHLENBQUMsS0FBVSxFQUFRLEVBQUU7WUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDO0lBaERGLENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNkVBQTZFO0lBRXRFLE9BQU87UUFDVixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWhCLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsbUJBQW1CO0lBQ25CLEVBQUU7SUFDRiw2RUFBNkU7SUFFckUsc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDbkQsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQWdCRCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLHNCQUFzQjtJQUN0QixFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFLElBQWMsWUFBWTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNsRSx3Q0FBd0M7U0FDM0M7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YscUJBQXFCO0lBQ3JCLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsSUFDVyxNQUFNLENBQUMsS0FBYztRQUM1QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3hCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBdUIsQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQzs7b0hBckdRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtpQkFDcEM7aUdBMEZjLE1BQU07c0JBRGhCLEtBQUs7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW50ZXJhY3RhYmxlIH0gZnJvbSAnQGludGVyYWN0anMvdHlwZXMnO1xuaW1wb3J0ICogYXMgaW50ZXJhY3QgZnJvbSAnaW50ZXJhY3Rqcyc7XG5pbXBvcnQgeyBEZXN0cm95YWJsZSB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBJV2luZG93IH0gZnJvbSAnLi4vSVdpbmRvdyc7XG5pbXBvcnQgeyBXaW5kb3dEcmFnYWJsZSB9IGZyb20gJy4vV2luZG93RHJhZ2FibGUnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t2aS13aW5kb3ctZHJhZy1hcmVhXSdcbn0pXG5leHBvcnQgY2xhc3MgV2luZG93RHJhZ0FyZWFEaXJlY3RpdmUgZXh0ZW5kcyBEZXN0cm95YWJsZSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByaXZhdGUgX3dpbmRvdzogV2luZG93RHJhZ2FibGU7XG4gICAgcHJpdmF0ZSBfaW50ZXJhY3RhYmxlOiBJbnRlcmFjdGFibGU7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuXG4gICAgICAgIGlmICghXy5pc05pbCh0aGlzLl9pbnRlcmFjdGFibGUpKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnRlcmFjdGFibGUudW5zZXQoKTtcbiAgICAgICAgICAgIHRoaXMuX2ludGVyYWN0YWJsZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbGVtZW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcml2YXRlIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIGNvbW1pdFdpbmRvd1Byb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy53aW5kb3cuY29uZmlnIHx8IHRoaXMud2luZG93LmNvbmZpZy5pc01vZGFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnRlcmFjdGFibGUuZHJhZ2dhYmxlKHRydWUpO1xuICAgICAgICB0aGlzLmludGVyYWN0YWJsZS5vbignZHJhZ21vdmUnLCB0aGlzLmRyYWdNb3ZlSGFuZGxlcik7XG4gICAgICAgIHRoaXMuaW50ZXJhY3RhYmxlLm9uKCdkcmFnc3RhcnQnLCB0aGlzLmRyYWdTdGFydEhhbmRsZXIpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdEV2ZW50IEhhbmRsZXJzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJpdmF0ZSBkcmFnU3RhcnRIYW5kbGVyID0gKGV2ZW50OiBhbnkpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5fd2luZG93LmRyYWdTdGFydEhhbmRsZXIoZXZlbnQpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGRyYWdNb3ZlSGFuZGxlciA9IChldmVudDogYW55KTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuX3dpbmRvdy5kcmFnTW92ZUhhbmRsZXIoZXZlbnQpO1xuICAgIH07XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gIFByaXZhdGUgUHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBnZXQgaW50ZXJhY3RhYmxlKCk6IGFueSB7XG4gICAgICAgIGlmICghdGhpcy5faW50ZXJhY3RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnRlcmFjdGFibGUgPSBpbnRlcmFjdC5kZWZhdWx0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIC8vdGhpcy5faW50ZXJhY3RhYmxlLnN0eWxlQ3Vyc29yKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faW50ZXJhY3RhYmxlO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgQElucHV0KCd2aS13aW5kb3ctZHJhZy1hcmVhJylcbiAgICBwdWJsaWMgc2V0IHdpbmRvdyh2YWx1ZTogSVdpbmRvdykge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3dpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3dpbmRvdyA9IHZhbHVlIGFzIFdpbmRvd0RyYWdhYmxlO1xuICAgICAgICBpZiAodGhpcy5fd2luZG93KSB7XG4gICAgICAgICAgICB0aGlzLmNvbW1pdFdpbmRvd1Byb3BlcnRpZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd2luZG93KCk6IElXaW5kb3cge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2luZG93O1xuICAgIH1cbn1cbiJdfQ==