devexpress-dashboard-angular 25.2.3 → 25.2.4

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 (82) hide show
  1. package/fesm2022/devexpress-dashboard-angular-ui-dashboard-control-nested.mjs +145 -145
  2. package/fesm2022/devexpress-dashboard-angular-ui-dashboard-control-nested.mjs.map +1 -1
  3. package/fesm2022/devexpress-dashboard-angular-ui-dashboard-control.mjs +40 -37
  4. package/fesm2022/devexpress-dashboard-angular-ui-dashboard-control.mjs.map +1 -1
  5. package/fesm2022/devexpress-dashboard-angular-ui-nested.mjs +148 -148
  6. package/fesm2022/devexpress-dashboard-angular-ui-nested.mjs.map +1 -1
  7. package/package.json +9 -9
  8. package/ui/dashboard-control/index.d.ts +559 -126
  9. package/ui/dashboard-control/nested/ajax-remote-service.d.ts +8 -8
  10. package/ui/dashboard-control/nested/chart-indicators.d.ts +4 -4
  11. package/ui/dashboard-control/nested/dashboard-export.d.ts +26 -8
  12. package/ui/dashboard-control/nested/dashboard-parameter-dialog.d.ts +38 -10
  13. package/ui/dashboard-control/nested/data-inspector.d.ts +42 -12
  14. package/ui/dashboard-control/nested/data-request-options.d.ts +2 -2
  15. package/ui/dashboard-control/nested/data-source-wizard.d.ts +10 -4
  16. package/ui/dashboard-control/nested/designer-toolbar.d.ts +12 -4
  17. package/ui/dashboard-control/nested/extensions.d.ts +356 -68
  18. package/ui/dashboard-control/nested/fetch-remote-service.d.ts +6 -6
  19. package/ui/dashboard-control/nested/item-binding-panel.d.ts +12 -4
  20. package/ui/dashboard-control/nested/item-options-panel.d.ts +10 -4
  21. package/ui/dashboard-control/nested/mobile-layout.d.ts +2 -2
  22. package/ui/dashboard-control/nested/text-box-item-editor.d.ts +18 -6
  23. package/ui/dashboard-control/nested/viewer-api.d.ts +202 -30
  24. package/ui/dashboard-control/nested/wizard-settings.d.ts +2 -2
  25. package/ui/nested/ajax-remote-service.d.ts +2 -2
  26. package/ui/nested/base/i-dashboard-data-source-wizard-settings.d.ts +1 -1
  27. package/ui/nested/chart-indicators.d.ts +2 -2
  28. package/ui/nested/dashboard-export.d.ts +2 -2
  29. package/ui/nested/dashboard-parameter-dialog.d.ts +2 -2
  30. package/ui/nested/data-inspector.d.ts +2 -2
  31. package/ui/nested/data-request-options.d.ts +2 -2
  32. package/ui/nested/data-source-wizard.d.ts +2 -2
  33. package/ui/nested/designer-toolbar.d.ts +2 -2
  34. package/ui/nested/extensions.d.ts +2 -2
  35. package/ui/nested/fetch-remote-service.d.ts +2 -2
  36. package/ui/nested/item-binding-panel.d.ts +2 -2
  37. package/ui/nested/item-options-panel.d.ts +2 -2
  38. package/ui/nested/mobile-layout.d.ts +2 -2
  39. package/ui/nested/text-box-item-editor.d.ts +2 -2
  40. package/ui/nested/viewer-api.d.ts +2 -2
  41. package/ui/nested/wizard-settings.d.ts +2 -2
  42. package/esm2022/devexpress-dashboard-angular.mjs +0 -5
  43. package/esm2022/index.mjs +0 -2
  44. package/esm2022/ui/dashboard-control/devexpress-dashboard-angular-ui-dashboard-control.mjs +0 -5
  45. package/esm2022/ui/dashboard-control/index.mjs +0 -751
  46. package/esm2022/ui/dashboard-control/nested/ajax-remote-service.mjs +0 -75
  47. package/esm2022/ui/dashboard-control/nested/chart-indicators.mjs +0 -59
  48. package/esm2022/ui/dashboard-control/nested/dashboard-export.mjs +0 -91
  49. package/esm2022/ui/dashboard-control/nested/dashboard-parameter-dialog.mjs +0 -83
  50. package/esm2022/ui/dashboard-control/nested/data-inspector.mjs +0 -107
  51. package/esm2022/ui/dashboard-control/nested/data-request-options.mjs +0 -67
  52. package/esm2022/ui/dashboard-control/nested/data-source-wizard.mjs +0 -83
  53. package/esm2022/ui/dashboard-control/nested/designer-toolbar.mjs +0 -59
  54. package/esm2022/ui/dashboard-control/nested/devexpress-dashboard-angular-ui-dashboard-control-nested.mjs +0 -5
  55. package/esm2022/ui/dashboard-control/nested/extensions.mjs +0 -139
  56. package/esm2022/ui/dashboard-control/nested/fetch-remote-service.mjs +0 -67
  57. package/esm2022/ui/dashboard-control/nested/index.mjs +0 -17
  58. package/esm2022/ui/dashboard-control/nested/item-binding-panel.mjs +0 -59
  59. package/esm2022/ui/dashboard-control/nested/item-options-panel.mjs +0 -59
  60. package/esm2022/ui/dashboard-control/nested/mobile-layout.mjs +0 -59
  61. package/esm2022/ui/dashboard-control/nested/text-box-item-editor.mjs +0 -67
  62. package/esm2022/ui/dashboard-control/nested/viewer-api.mjs +0 -163
  63. package/esm2022/ui/dashboard-control/nested/wizard-settings.mjs +0 -83
  64. package/esm2022/ui/nested/ajax-remote-service.mjs +0 -75
  65. package/esm2022/ui/nested/base/i-dashboard-data-source-wizard-settings.mjs +0 -39
  66. package/esm2022/ui/nested/chart-indicators.mjs +0 -59
  67. package/esm2022/ui/nested/dashboard-export.mjs +0 -91
  68. package/esm2022/ui/nested/dashboard-parameter-dialog.mjs +0 -83
  69. package/esm2022/ui/nested/data-inspector.mjs +0 -107
  70. package/esm2022/ui/nested/data-request-options.mjs +0 -67
  71. package/esm2022/ui/nested/data-source-wizard.mjs +0 -83
  72. package/esm2022/ui/nested/designer-toolbar.mjs +0 -59
  73. package/esm2022/ui/nested/devexpress-dashboard-angular-ui-nested.mjs +0 -5
  74. package/esm2022/ui/nested/extensions.mjs +0 -139
  75. package/esm2022/ui/nested/fetch-remote-service.mjs +0 -67
  76. package/esm2022/ui/nested/index.mjs +0 -17
  77. package/esm2022/ui/nested/item-binding-panel.mjs +0 -59
  78. package/esm2022/ui/nested/item-options-panel.mjs +0 -59
  79. package/esm2022/ui/nested/mobile-layout.mjs +0 -59
  80. package/esm2022/ui/nested/text-box-item-editor.mjs +0 -67
  81. package/esm2022/ui/nested/viewer-api.mjs +0 -163
  82. package/esm2022/ui/nested/wizard-settings.mjs +0 -57
@@ -1,751 +0,0 @@
1
- /* tslint:disable:max-line-length */
2
- import { Component, NgModule, PLATFORM_ID, Inject, Input, Output } from '@angular/core';
3
- import DxDashboardControl from 'devexpress-dashboard/integration/index';
4
- import { DxComponent, DxTemplateHost, DxIntegrationModule, DxTemplateModule, NestedOptionHost, WatcherHelper } from 'devextreme-angular/core';
5
- import { DxoAjaxRemoteServiceModule } from 'devexpress-dashboard-angular/ui/nested';
6
- import { DxoDataRequestOptionsModule } from 'devexpress-dashboard-angular/ui/nested';
7
- import { DxoExtensionsModule } from 'devexpress-dashboard-angular/ui/nested';
8
- import { DxoChartIndicatorsModule } from 'devexpress-dashboard-angular/ui/nested';
9
- import { DxoDashboardExportModule } from 'devexpress-dashboard-angular/ui/nested';
10
- import { DxoDashboardParameterDialogModule } from 'devexpress-dashboard-angular/ui/nested';
11
- import { DxoDataInspectorModule } from 'devexpress-dashboard-angular/ui/nested';
12
- import { DxoDataSourceWizardModule } from 'devexpress-dashboard-angular/ui/nested';
13
- import { DxoWizardSettingsModule } from 'devexpress-dashboard-angular/ui/nested';
14
- import { DxoDesignerToolbarModule } from 'devexpress-dashboard-angular/ui/nested';
15
- import { DxoItemBindingPanelModule } from 'devexpress-dashboard-angular/ui/nested';
16
- import { DxoItemOptionsPanelModule } from 'devexpress-dashboard-angular/ui/nested';
17
- import { DxoMobileLayoutModule } from 'devexpress-dashboard-angular/ui/nested';
18
- import { DxoTextBoxItemEditorModule } from 'devexpress-dashboard-angular/ui/nested';
19
- import { DxoViewerApiModule } from 'devexpress-dashboard-angular/ui/nested';
20
- import { DxoFetchRemoteServiceModule } from 'devexpress-dashboard-angular/ui/nested';
21
- import { DxoDashboardControlAjaxRemoteServiceModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
22
- import { DxoDashboardControlDataRequestOptionsModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
23
- import { DxoDashboardControlExtensionsModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
24
- import { DxoDashboardControlChartIndicatorsModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
25
- import { DxoDashboardControlDashboardExportModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
26
- import { DxoDashboardControlDashboardParameterDialogModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
27
- import { DxoDashboardControlDataInspectorModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
28
- import { DxoDashboardControlDataSourceWizardModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
29
- import { DxoDashboardControlWizardSettingsModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
30
- import { DxoDashboardControlDesignerToolbarModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
31
- import { DxoDashboardControlItemBindingPanelModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
32
- import { DxoDashboardControlItemOptionsPanelModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
33
- import { DxoDashboardControlMobileLayoutModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
34
- import { DxoDashboardControlTextBoxItemEditorModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
35
- import { DxoDashboardControlViewerApiModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
36
- import { DxoDashboardControlFetchRemoteServiceModule } from 'devexpress-dashboard-angular/ui/dashboard-control/nested';
37
- import * as i0 from "@angular/core";
38
- import * as i1 from "devextreme-angular/core";
39
- /**
40
- * [descr:dxDashboardControl]
41
-
42
- */
43
- export class DxDashboardControlComponent extends DxComponent {
44
- instance = null;
45
- /**
46
- * [descr:dxDashboardControlOptions.ajaxRemoteService]
47
-
48
- */
49
- get ajaxRemoteService() {
50
- return this._getOption('ajaxRemoteService');
51
- }
52
- set ajaxRemoteService(value) {
53
- this._setOption('ajaxRemoteService', value);
54
- }
55
- /**
56
- * [descr:dxDashboardControlOptions.allowMaximizeItems]
57
-
58
- */
59
- get allowMaximizeItems() {
60
- return this._getOption('allowMaximizeItems');
61
- }
62
- set allowMaximizeItems(value) {
63
- this._setOption('allowMaximizeItems', value);
64
- }
65
- /**
66
- * [descr:dxDashboardControlOptions.dashboardId]
67
-
68
- */
69
- get dashboardId() {
70
- return this._getOption('dashboardId');
71
- }
72
- set dashboardId(value) {
73
- this._setOption('dashboardId', value);
74
- }
75
- /**
76
- * [descr:dxDashboardControlOptions.dataRequestOptions]
77
-
78
- */
79
- get dataRequestOptions() {
80
- return this._getOption('dataRequestOptions');
81
- }
82
- set dataRequestOptions(value) {
83
- this._setOption('dataRequestOptions', value);
84
- }
85
- /**
86
- * [descr:dxDashboardControlOptions.encodeHtml]
87
-
88
- */
89
- get encodeHtml() {
90
- return this._getOption('encodeHtml');
91
- }
92
- set encodeHtml(value) {
93
- this._setOption('encodeHtml', value);
94
- }
95
- /**
96
- * [descr:dxDashboardControlOptions.endpoint]
97
-
98
- */
99
- get endpoint() {
100
- return this._getOption('endpoint');
101
- }
102
- set endpoint(value) {
103
- this._setOption('endpoint', value);
104
- }
105
- /**
106
- * [descr:dxDashboardControlOptions.extensions]
107
-
108
- */
109
- get extensions() {
110
- return this._getOption('extensions');
111
- }
112
- set extensions(value) {
113
- this._setOption('extensions', value);
114
- }
115
- /**
116
- * [descr:dxDashboardControlOptions.fetchRemoteService]
117
-
118
- */
119
- get fetchRemoteService() {
120
- return this._getOption('fetchRemoteService');
121
- }
122
- set fetchRemoteService(value) {
123
- this._setOption('fetchRemoteService', value);
124
- }
125
- /**
126
- * [descr:dxDashboardControlOptions.initialDashboardId]
127
-
128
- */
129
- get initialDashboardId() {
130
- return this._getOption('initialDashboardId');
131
- }
132
- set initialDashboardId(value) {
133
- this._setOption('initialDashboardId', value);
134
- }
135
- /**
136
- * [descr:dxDashboardControlOptions.initialDashboardState]
137
-
138
- */
139
- get initialDashboardState() {
140
- return this._getOption('initialDashboardState');
141
- }
142
- set initialDashboardState(value) {
143
- this._setOption('initialDashboardState', value);
144
- }
145
- /**
146
- * [descr:dxDashboardControlOptions.limitVisibleDataMode]
147
-
148
- */
149
- get limitVisibleDataMode() {
150
- return this._getOption('limitVisibleDataMode');
151
- }
152
- set limitVisibleDataMode(value) {
153
- this._setOption('limitVisibleDataMode', value);
154
- }
155
- /**
156
- * [descr:dxDashboardControlOptions.loadDefaultDashboard]
157
-
158
- */
159
- get loadDefaultDashboard() {
160
- return this._getOption('loadDefaultDashboard');
161
- }
162
- set loadDefaultDashboard(value) {
163
- this._setOption('loadDefaultDashboard', value);
164
- }
165
- /**
166
- * [descr:dxDashboardControlOptions.nonce]
167
-
168
- */
169
- get nonce() {
170
- return this._getOption('nonce');
171
- }
172
- set nonce(value) {
173
- this._setOption('nonce', value);
174
- }
175
- /**
176
- * [descr:dxDashboardControlOptions.resizeByTimer]
177
-
178
- */
179
- get resizeByTimer() {
180
- return this._getOption('resizeByTimer');
181
- }
182
- set resizeByTimer(value) {
183
- this._setOption('resizeByTimer', value);
184
- }
185
- /**
186
- * [descr:dxDashboardControlOptions.showConfirmationOnBrowserClosing]
187
-
188
- */
189
- get showConfirmationOnBrowserClosing() {
190
- return this._getOption('showConfirmationOnBrowserClosing');
191
- }
192
- set showConfirmationOnBrowserClosing(value) {
193
- this._setOption('showConfirmationOnBrowserClosing', value);
194
- }
195
- /**
196
- * [descr:dxDashboardControlOptions.useNeutralFilterMode]
197
-
198
- */
199
- get useNeutralFilterMode() {
200
- return this._getOption('useNeutralFilterMode');
201
- }
202
- set useNeutralFilterMode(value) {
203
- this._setOption('useNeutralFilterMode', value);
204
- }
205
- /**
206
- * [descr:dxDashboardControlOptions.workingMode]
207
-
208
- */
209
- get workingMode() {
210
- return this._getOption('workingMode');
211
- }
212
- set workingMode(value) {
213
- this._setOption('workingMode', value);
214
- }
215
- /**
216
-
217
- * [descr:dxDashboardControlOptions.onBeforeRender]
218
-
219
-
220
- */
221
- onBeforeRender;
222
- /**
223
-
224
- * [descr:dxDashboardControlOptions.onDashboardBeginUpdate]
225
-
226
-
227
- */
228
- onDashboardBeginUpdate;
229
- /**
230
-
231
- * [descr:dxDashboardControlOptions.onDashboardEndUpdate]
232
-
233
-
234
- */
235
- onDashboardEndUpdate;
236
- /**
237
-
238
- * [descr:dxDashboardControlOptions.onDashboardInitialized]
239
-
240
-
241
- */
242
- onDashboardInitialized;
243
- /**
244
-
245
- * [descr:dxDashboardControlOptions.onDashboardInitializing]
246
-
247
-
248
- */
249
- onDashboardInitializing;
250
- /**
251
-
252
- * [descr:dxDashboardControlOptions.onDashboardStateChanged]
253
-
254
-
255
- */
256
- onDashboardStateChanged;
257
- /**
258
-
259
- * [descr:dxDashboardControlOptions.onInitializing]
260
-
261
-
262
- */
263
- onInitializing;
264
- /**
265
-
266
- * [descr:dxDashboardControlOptions.onItemBeginUpdate]
267
-
268
-
269
- */
270
- onItemBeginUpdate;
271
- /**
272
-
273
- * [descr:dxDashboardControlOptions.onItemEndUpdate]
274
-
275
-
276
- */
277
- onItemEndUpdate;
278
- /**
279
-
280
- * [descr:dxDashboardControlOptions.onOptionChanged]
281
-
282
-
283
- */
284
- onOptionChanged;
285
- /**
286
-
287
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
288
-
289
- */
290
- ajaxRemoteServiceChange;
291
- /**
292
-
293
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
294
-
295
- */
296
- allowMaximizeItemsChange;
297
- /**
298
-
299
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
300
-
301
- */
302
- dashboardIdChange;
303
- /**
304
-
305
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
306
-
307
- */
308
- dataRequestOptionsChange;
309
- /**
310
-
311
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
312
-
313
- */
314
- encodeHtmlChange;
315
- /**
316
-
317
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
318
-
319
- */
320
- endpointChange;
321
- /**
322
-
323
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
324
-
325
- */
326
- extensionsChange;
327
- /**
328
-
329
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
330
-
331
- */
332
- fetchRemoteServiceChange;
333
- /**
334
-
335
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
336
-
337
- */
338
- initialDashboardIdChange;
339
- /**
340
-
341
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
342
-
343
- */
344
- initialDashboardStateChange;
345
- /**
346
-
347
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
348
-
349
- */
350
- limitVisibleDataModeChange;
351
- /**
352
-
353
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
354
-
355
- */
356
- loadDefaultDashboardChange;
357
- /**
358
-
359
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
360
-
361
- */
362
- nonceChange;
363
- /**
364
-
365
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
366
-
367
- */
368
- resizeByTimerChange;
369
- /**
370
-
371
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
372
-
373
- */
374
- showConfirmationOnBrowserClosingChange;
375
- /**
376
-
377
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
378
-
379
- */
380
- useNeutralFilterModeChange;
381
- /**
382
-
383
- * This member supports the internal infrastructure and is not intended to be used directly from your code.
384
-
385
- */
386
- workingModeChange;
387
- constructor(elementRef, ngZone, templateHost, _watcherHelper, optionHost, transferState, platformId) {
388
- super(elementRef, ngZone, templateHost, _watcherHelper, transferState, platformId);
389
- this._createEventEmitters([
390
- { subscribe: 'beforeRender', emit: 'onBeforeRender' },
391
- { subscribe: 'dashboardBeginUpdate', emit: 'onDashboardBeginUpdate' },
392
- { subscribe: 'dashboardEndUpdate', emit: 'onDashboardEndUpdate' },
393
- { subscribe: 'dashboardInitialized', emit: 'onDashboardInitialized' },
394
- { subscribe: 'dashboardInitializing', emit: 'onDashboardInitializing' },
395
- { subscribe: 'dashboardStateChanged', emit: 'onDashboardStateChanged' },
396
- { subscribe: 'initializing', emit: 'onInitializing' },
397
- { subscribe: 'itemBeginUpdate', emit: 'onItemBeginUpdate' },
398
- { subscribe: 'itemEndUpdate', emit: 'onItemEndUpdate' },
399
- { subscribe: 'optionChanged', emit: 'onOptionChanged' },
400
- { emit: 'ajaxRemoteServiceChange' },
401
- { emit: 'allowMaximizeItemsChange' },
402
- { emit: 'dashboardIdChange' },
403
- { emit: 'dataRequestOptionsChange' },
404
- { emit: 'encodeHtmlChange' },
405
- { emit: 'endpointChange' },
406
- { emit: 'extensionsChange' },
407
- { emit: 'fetchRemoteServiceChange' },
408
- { emit: 'initialDashboardIdChange' },
409
- { emit: 'initialDashboardStateChange' },
410
- { emit: 'limitVisibleDataModeChange' },
411
- { emit: 'loadDefaultDashboardChange' },
412
- { emit: 'nonceChange' },
413
- { emit: 'resizeByTimerChange' },
414
- { emit: 'showConfirmationOnBrowserClosingChange' },
415
- { emit: 'useNeutralFilterModeChange' },
416
- { emit: 'workingModeChange' }
417
- ]);
418
- optionHost.setHost(this);
419
- }
420
- _createInstance(element, options) {
421
- return new DxDashboardControl(element, options);
422
- }
423
- ngOnDestroy() {
424
- this._destroyWidget();
425
- }
426
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxDashboardControlComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.DxTemplateHost }, { token: i1.WatcherHelper }, { token: i1.NestedOptionHost }, { token: i0.TransferState }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
427
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DxDashboardControlComponent, selector: "dx-dashboard-control", inputs: { ajaxRemoteService: "ajaxRemoteService", allowMaximizeItems: "allowMaximizeItems", dashboardId: "dashboardId", dataRequestOptions: "dataRequestOptions", encodeHtml: "encodeHtml", endpoint: "endpoint", extensions: "extensions", fetchRemoteService: "fetchRemoteService", initialDashboardId: "initialDashboardId", initialDashboardState: "initialDashboardState", limitVisibleDataMode: "limitVisibleDataMode", loadDefaultDashboard: "loadDefaultDashboard", nonce: "nonce", resizeByTimer: "resizeByTimer", showConfirmationOnBrowserClosing: "showConfirmationOnBrowserClosing", useNeutralFilterMode: "useNeutralFilterMode", workingMode: "workingMode" }, outputs: { onBeforeRender: "onBeforeRender", onDashboardBeginUpdate: "onDashboardBeginUpdate", onDashboardEndUpdate: "onDashboardEndUpdate", onDashboardInitialized: "onDashboardInitialized", onDashboardInitializing: "onDashboardInitializing", onDashboardStateChanged: "onDashboardStateChanged", onInitializing: "onInitializing", onItemBeginUpdate: "onItemBeginUpdate", onItemEndUpdate: "onItemEndUpdate", onOptionChanged: "onOptionChanged", ajaxRemoteServiceChange: "ajaxRemoteServiceChange", allowMaximizeItemsChange: "allowMaximizeItemsChange", dashboardIdChange: "dashboardIdChange", dataRequestOptionsChange: "dataRequestOptionsChange", encodeHtmlChange: "encodeHtmlChange", endpointChange: "endpointChange", extensionsChange: "extensionsChange", fetchRemoteServiceChange: "fetchRemoteServiceChange", initialDashboardIdChange: "initialDashboardIdChange", initialDashboardStateChange: "initialDashboardStateChange", limitVisibleDataModeChange: "limitVisibleDataModeChange", loadDefaultDashboardChange: "loadDefaultDashboardChange", nonceChange: "nonceChange", resizeByTimerChange: "resizeByTimerChange", showConfirmationOnBrowserClosingChange: "showConfirmationOnBrowserClosingChange", useNeutralFilterModeChange: "useNeutralFilterModeChange", workingModeChange: "workingModeChange" }, providers: [
428
- DxTemplateHost,
429
- WatcherHelper,
430
- NestedOptionHost
431
- ], usesInheritance: true, ngImport: i0, template: '', isInline: true });
432
- }
433
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxDashboardControlComponent, decorators: [{
434
- type: Component,
435
- args: [{
436
- selector: 'dx-dashboard-control',
437
- template: '',
438
- providers: [
439
- DxTemplateHost,
440
- WatcherHelper,
441
- NestedOptionHost
442
- ]
443
- }]
444
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DxTemplateHost }, { type: i1.WatcherHelper }, { type: i1.NestedOptionHost }, { type: i0.TransferState }, { type: undefined, decorators: [{
445
- type: Inject,
446
- args: [PLATFORM_ID]
447
- }] }], propDecorators: { ajaxRemoteService: [{
448
- type: Input
449
- }], allowMaximizeItems: [{
450
- type: Input
451
- }], dashboardId: [{
452
- type: Input
453
- }], dataRequestOptions: [{
454
- type: Input
455
- }], encodeHtml: [{
456
- type: Input
457
- }], endpoint: [{
458
- type: Input
459
- }], extensions: [{
460
- type: Input
461
- }], fetchRemoteService: [{
462
- type: Input
463
- }], initialDashboardId: [{
464
- type: Input
465
- }], initialDashboardState: [{
466
- type: Input
467
- }], limitVisibleDataMode: [{
468
- type: Input
469
- }], loadDefaultDashboard: [{
470
- type: Input
471
- }], nonce: [{
472
- type: Input
473
- }], resizeByTimer: [{
474
- type: Input
475
- }], showConfirmationOnBrowserClosing: [{
476
- type: Input
477
- }], useNeutralFilterMode: [{
478
- type: Input
479
- }], workingMode: [{
480
- type: Input
481
- }], onBeforeRender: [{
482
- type: Output
483
- }], onDashboardBeginUpdate: [{
484
- type: Output
485
- }], onDashboardEndUpdate: [{
486
- type: Output
487
- }], onDashboardInitialized: [{
488
- type: Output
489
- }], onDashboardInitializing: [{
490
- type: Output
491
- }], onDashboardStateChanged: [{
492
- type: Output
493
- }], onInitializing: [{
494
- type: Output
495
- }], onItemBeginUpdate: [{
496
- type: Output
497
- }], onItemEndUpdate: [{
498
- type: Output
499
- }], onOptionChanged: [{
500
- type: Output
501
- }], ajaxRemoteServiceChange: [{
502
- type: Output
503
- }], allowMaximizeItemsChange: [{
504
- type: Output
505
- }], dashboardIdChange: [{
506
- type: Output
507
- }], dataRequestOptionsChange: [{
508
- type: Output
509
- }], encodeHtmlChange: [{
510
- type: Output
511
- }], endpointChange: [{
512
- type: Output
513
- }], extensionsChange: [{
514
- type: Output
515
- }], fetchRemoteServiceChange: [{
516
- type: Output
517
- }], initialDashboardIdChange: [{
518
- type: Output
519
- }], initialDashboardStateChange: [{
520
- type: Output
521
- }], limitVisibleDataModeChange: [{
522
- type: Output
523
- }], loadDefaultDashboardChange: [{
524
- type: Output
525
- }], nonceChange: [{
526
- type: Output
527
- }], resizeByTimerChange: [{
528
- type: Output
529
- }], showConfirmationOnBrowserClosingChange: [{
530
- type: Output
531
- }], useNeutralFilterModeChange: [{
532
- type: Output
533
- }], workingModeChange: [{
534
- type: Output
535
- }] } });
536
- export class DxDashboardControlModule {
537
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxDashboardControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
538
- /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DxDashboardControlModule, declarations: [DxDashboardControlComponent], imports: [DxoAjaxRemoteServiceModule,
539
- DxoDataRequestOptionsModule,
540
- DxoExtensionsModule,
541
- DxoChartIndicatorsModule,
542
- DxoDashboardExportModule,
543
- DxoDashboardParameterDialogModule,
544
- DxoDataInspectorModule,
545
- DxoDataSourceWizardModule,
546
- DxoWizardSettingsModule,
547
- DxoDesignerToolbarModule,
548
- DxoItemBindingPanelModule,
549
- DxoItemOptionsPanelModule,
550
- DxoMobileLayoutModule,
551
- DxoTextBoxItemEditorModule,
552
- DxoViewerApiModule,
553
- DxoFetchRemoteServiceModule,
554
- DxoDashboardControlAjaxRemoteServiceModule,
555
- DxoDashboardControlDataRequestOptionsModule,
556
- DxoDashboardControlExtensionsModule,
557
- DxoDashboardControlChartIndicatorsModule,
558
- DxoDashboardControlDashboardExportModule,
559
- DxoDashboardControlDashboardParameterDialogModule,
560
- DxoDashboardControlDataInspectorModule,
561
- DxoDashboardControlDataSourceWizardModule,
562
- DxoDashboardControlWizardSettingsModule,
563
- DxoDashboardControlDesignerToolbarModule,
564
- DxoDashboardControlItemBindingPanelModule,
565
- DxoDashboardControlItemOptionsPanelModule,
566
- DxoDashboardControlMobileLayoutModule,
567
- DxoDashboardControlTextBoxItemEditorModule,
568
- DxoDashboardControlViewerApiModule,
569
- DxoDashboardControlFetchRemoteServiceModule,
570
- DxIntegrationModule,
571
- DxTemplateModule], exports: [DxDashboardControlComponent, DxoAjaxRemoteServiceModule,
572
- DxoDataRequestOptionsModule,
573
- DxoExtensionsModule,
574
- DxoChartIndicatorsModule,
575
- DxoDashboardExportModule,
576
- DxoDashboardParameterDialogModule,
577
- DxoDataInspectorModule,
578
- DxoDataSourceWizardModule,
579
- DxoWizardSettingsModule,
580
- DxoDesignerToolbarModule,
581
- DxoItemBindingPanelModule,
582
- DxoItemOptionsPanelModule,
583
- DxoMobileLayoutModule,
584
- DxoTextBoxItemEditorModule,
585
- DxoViewerApiModule,
586
- DxoFetchRemoteServiceModule,
587
- DxoDashboardControlAjaxRemoteServiceModule,
588
- DxoDashboardControlDataRequestOptionsModule,
589
- DxoDashboardControlExtensionsModule,
590
- DxoDashboardControlChartIndicatorsModule,
591
- DxoDashboardControlDashboardExportModule,
592
- DxoDashboardControlDashboardParameterDialogModule,
593
- DxoDashboardControlDataInspectorModule,
594
- DxoDashboardControlDataSourceWizardModule,
595
- DxoDashboardControlWizardSettingsModule,
596
- DxoDashboardControlDesignerToolbarModule,
597
- DxoDashboardControlItemBindingPanelModule,
598
- DxoDashboardControlItemOptionsPanelModule,
599
- DxoDashboardControlMobileLayoutModule,
600
- DxoDashboardControlTextBoxItemEditorModule,
601
- DxoDashboardControlViewerApiModule,
602
- DxoDashboardControlFetchRemoteServiceModule,
603
- DxTemplateModule] });
604
- /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxDashboardControlModule, imports: [DxoAjaxRemoteServiceModule,
605
- DxoDataRequestOptionsModule,
606
- DxoExtensionsModule,
607
- DxoChartIndicatorsModule,
608
- DxoDashboardExportModule,
609
- DxoDashboardParameterDialogModule,
610
- DxoDataInspectorModule,
611
- DxoDataSourceWizardModule,
612
- DxoWizardSettingsModule,
613
- DxoDesignerToolbarModule,
614
- DxoItemBindingPanelModule,
615
- DxoItemOptionsPanelModule,
616
- DxoMobileLayoutModule,
617
- DxoTextBoxItemEditorModule,
618
- DxoViewerApiModule,
619
- DxoFetchRemoteServiceModule,
620
- DxoDashboardControlAjaxRemoteServiceModule,
621
- DxoDashboardControlDataRequestOptionsModule,
622
- DxoDashboardControlExtensionsModule,
623
- DxoDashboardControlChartIndicatorsModule,
624
- DxoDashboardControlDashboardExportModule,
625
- DxoDashboardControlDashboardParameterDialogModule,
626
- DxoDashboardControlDataInspectorModule,
627
- DxoDashboardControlDataSourceWizardModule,
628
- DxoDashboardControlWizardSettingsModule,
629
- DxoDashboardControlDesignerToolbarModule,
630
- DxoDashboardControlItemBindingPanelModule,
631
- DxoDashboardControlItemOptionsPanelModule,
632
- DxoDashboardControlMobileLayoutModule,
633
- DxoDashboardControlTextBoxItemEditorModule,
634
- DxoDashboardControlViewerApiModule,
635
- DxoDashboardControlFetchRemoteServiceModule,
636
- DxIntegrationModule,
637
- DxTemplateModule, DxoAjaxRemoteServiceModule,
638
- DxoDataRequestOptionsModule,
639
- DxoExtensionsModule,
640
- DxoChartIndicatorsModule,
641
- DxoDashboardExportModule,
642
- DxoDashboardParameterDialogModule,
643
- DxoDataInspectorModule,
644
- DxoDataSourceWizardModule,
645
- DxoWizardSettingsModule,
646
- DxoDesignerToolbarModule,
647
- DxoItemBindingPanelModule,
648
- DxoItemOptionsPanelModule,
649
- DxoMobileLayoutModule,
650
- DxoTextBoxItemEditorModule,
651
- DxoViewerApiModule,
652
- DxoFetchRemoteServiceModule,
653
- DxoDashboardControlAjaxRemoteServiceModule,
654
- DxoDashboardControlDataRequestOptionsModule,
655
- DxoDashboardControlExtensionsModule,
656
- DxoDashboardControlChartIndicatorsModule,
657
- DxoDashboardControlDashboardExportModule,
658
- DxoDashboardControlDashboardParameterDialogModule,
659
- DxoDashboardControlDataInspectorModule,
660
- DxoDashboardControlDataSourceWizardModule,
661
- DxoDashboardControlWizardSettingsModule,
662
- DxoDashboardControlDesignerToolbarModule,
663
- DxoDashboardControlItemBindingPanelModule,
664
- DxoDashboardControlItemOptionsPanelModule,
665
- DxoDashboardControlMobileLayoutModule,
666
- DxoDashboardControlTextBoxItemEditorModule,
667
- DxoDashboardControlViewerApiModule,
668
- DxoDashboardControlFetchRemoteServiceModule,
669
- DxTemplateModule] });
670
- }
671
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxDashboardControlModule, decorators: [{
672
- type: NgModule,
673
- args: [{
674
- imports: [
675
- DxoAjaxRemoteServiceModule,
676
- DxoDataRequestOptionsModule,
677
- DxoExtensionsModule,
678
- DxoChartIndicatorsModule,
679
- DxoDashboardExportModule,
680
- DxoDashboardParameterDialogModule,
681
- DxoDataInspectorModule,
682
- DxoDataSourceWizardModule,
683
- DxoWizardSettingsModule,
684
- DxoDesignerToolbarModule,
685
- DxoItemBindingPanelModule,
686
- DxoItemOptionsPanelModule,
687
- DxoMobileLayoutModule,
688
- DxoTextBoxItemEditorModule,
689
- DxoViewerApiModule,
690
- DxoFetchRemoteServiceModule,
691
- DxoDashboardControlAjaxRemoteServiceModule,
692
- DxoDashboardControlDataRequestOptionsModule,
693
- DxoDashboardControlExtensionsModule,
694
- DxoDashboardControlChartIndicatorsModule,
695
- DxoDashboardControlDashboardExportModule,
696
- DxoDashboardControlDashboardParameterDialogModule,
697
- DxoDashboardControlDataInspectorModule,
698
- DxoDashboardControlDataSourceWizardModule,
699
- DxoDashboardControlWizardSettingsModule,
700
- DxoDashboardControlDesignerToolbarModule,
701
- DxoDashboardControlItemBindingPanelModule,
702
- DxoDashboardControlItemOptionsPanelModule,
703
- DxoDashboardControlMobileLayoutModule,
704
- DxoDashboardControlTextBoxItemEditorModule,
705
- DxoDashboardControlViewerApiModule,
706
- DxoDashboardControlFetchRemoteServiceModule,
707
- DxIntegrationModule,
708
- DxTemplateModule
709
- ],
710
- declarations: [
711
- DxDashboardControlComponent
712
- ],
713
- exports: [
714
- DxDashboardControlComponent,
715
- DxoAjaxRemoteServiceModule,
716
- DxoDataRequestOptionsModule,
717
- DxoExtensionsModule,
718
- DxoChartIndicatorsModule,
719
- DxoDashboardExportModule,
720
- DxoDashboardParameterDialogModule,
721
- DxoDataInspectorModule,
722
- DxoDataSourceWizardModule,
723
- DxoWizardSettingsModule,
724
- DxoDesignerToolbarModule,
725
- DxoItemBindingPanelModule,
726
- DxoItemOptionsPanelModule,
727
- DxoMobileLayoutModule,
728
- DxoTextBoxItemEditorModule,
729
- DxoViewerApiModule,
730
- DxoFetchRemoteServiceModule,
731
- DxoDashboardControlAjaxRemoteServiceModule,
732
- DxoDashboardControlDataRequestOptionsModule,
733
- DxoDashboardControlExtensionsModule,
734
- DxoDashboardControlChartIndicatorsModule,
735
- DxoDashboardControlDashboardExportModule,
736
- DxoDashboardControlDashboardParameterDialogModule,
737
- DxoDashboardControlDataInspectorModule,
738
- DxoDashboardControlDataSourceWizardModule,
739
- DxoDashboardControlWizardSettingsModule,
740
- DxoDashboardControlDesignerToolbarModule,
741
- DxoDashboardControlItemBindingPanelModule,
742
- DxoDashboardControlItemOptionsPanelModule,
743
- DxoDashboardControlMobileLayoutModule,
744
- DxoDashboardControlTextBoxItemEditorModule,
745
- DxoDashboardControlViewerApiModule,
746
- DxoDashboardControlFetchRemoteServiceModule,
747
- DxTemplateModule
748
- ]
749
- }]
750
- }] });
751
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdWkvZGFzaGJvYXJkLWNvbnRyb2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DO0FBR3BDLE9BQU8sRUFFSCxTQUFTLEVBQ1QsUUFBUSxFQUdSLFdBQVcsRUFDWCxNQUFNLEVBRU4sS0FBSyxFQUNMLE1BQU0sRUFHVCxNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLGtCQUFrQixNQUFNLHdDQUF3QyxDQUFDO0FBR3hFLE9BQU8sRUFDSCxXQUFXLEVBQ1gsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3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d0JBQ3pDLHVDQUF1Qzt3QkFDdkMsd0NBQXdDO3dCQUN4Qyx5Q0FBeUM7d0JBQ3pDLHlDQUF5Qzt3QkFDekMscUNBQXFDO3dCQUNyQywwQ0FBMEM7d0JBQzFDLGtDQUFrQzt3QkFDbEMsMkNBQTJDO3dCQUMzQyxtQkFBbUI7d0JBQ25CLGdCQUFnQjtxQkFDakI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLDJCQUEyQjtxQkFDNUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDJCQUEyQjt3QkFDM0IsMEJBQTBCO3dCQUMxQiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLGlDQUFpQzt3QkFDakMsc0JBQXNCO3dCQUN0Qix5QkFBeUI7d0JBQ3pCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLHlCQUF5Qjt3QkFDekIscUJBQXFCO3dCQUNyQiwwQkFBMEI7d0JBQzFCLGtCQUFrQjt3QkFDbEIsMkJBQTJCO3dCQUMzQiwwQ0FBMEM7d0JBQzFDLDJDQUEyQzt3QkFDM0MsbUNBQW1DO3dCQUNuQyx3Q0FBd0M7d0JBQ3hDLHdDQUF3Qzt3QkFDeEMsaURBQWlEO3dCQUNqRCxzQ0FBc0M7d0JBQ3RDLHlDQUF5Qzt3QkFDekMsdUNBQXVDO3dCQUN2Qyx3Q0FBd0M7d0JBQ3hDLHlDQUF5Qzt3QkFDekMseUNBQXlDO3dCQUN6QyxxQ0FBcUM7d0JBQ3JDLDBDQUEwQzt3QkFDMUMsa0NBQWtDO3dCQUNsQywyQ0FBMkM7d0JBQzNDLGdCQUFnQjtxQkFDakI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggKi9cblxuXG5pbXBvcnQge1xuICAgIFRyYW5zZmVyU3RhdGUsXG4gICAgQ29tcG9uZW50LFxuICAgIE5nTW9kdWxlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIFBMQVRGT1JNX0lELFxuICAgIEluamVjdCxcblxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmltcG9ydCB7IElEYXNoYm9hcmREYXRhU291cmNlV2l6YXJkU2V0dGluZ3MgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC9kZXNpZ25lci9kYXRhLXNvdXJjZS13aXphcmQvZGF0YS1zb3VyY2Utd2l6YXJkLWV4dGVuc2lvbic7XG5cbmltcG9ydCBEeERhc2hib2FyZENvbnRyb2wgZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQvaW50ZWdyYXRpb24vaW5kZXgnO1xuXG5cbmltcG9ydCB7XG4gICAgRHhDb21wb25lbnQsXG4gICAgRHhUZW1wbGF0ZUhvc3QsXG4gICAgRHhJbnRlZ3JhdGlvbk1vZHVsZSxcbiAgICBEeFRlbXBsYXRlTW9kdWxlLFxuICAgIE5lc3RlZE9wdGlvbkhvc3QsXG4gICAgV2F0Y2hlckhlbHBlclxufSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IER4b0FqYXhSZW1vdGVTZXJ2aWNlTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGF0YVJlcXVlc3RPcHRpb25zTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRXh0ZW5zaW9uc01vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0NoYXJ0SW5kaWNhdG9yc01vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0Rhc2hib2FyZEV4cG9ydE1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0Rhc2hib2FyZFBhcmFtZXRlckRpYWxvZ01vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0RhdGFJbnNwZWN0b3JNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9EYXRhU291cmNlV2l6YXJkTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvV2l6YXJkU2V0dGluZ3NNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9EZXNpZ25lclRvb2xiYXJNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9JdGVtQmluZGluZ1BhbmVsTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvSXRlbU9wdGlvbnNQYW5lbE1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b01vYmlsZUxheW91dE1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b1RleHRCb3hJdGVtRWRpdG9yTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvVmlld2VyQXBpTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRmV0Y2hSZW1vdGVTZXJ2aWNlTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuXG5pbXBvcnQgeyBEeG9EYXNoYm9hcmRDb250cm9sQWpheFJlbW90ZVNlcnZpY2VNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL2Rhc2hib2FyZC1jb250cm9sL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9EYXNoYm9hcmRDb250cm9sRGF0YVJlcXVlc3RPcHRpb25zTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9kYXNoYm9hcmQtY29udHJvbC9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGFzaGJvYXJkQ29udHJvbEV4dGVuc2lvbnNNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL2Rhc2hib2FyZC1jb250cm9sL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9EYXNoYm9hcmRDb250cm9sQ2hhcnRJbmRpY2F0b3JzTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9kYXNoYm9hcmQtY29udHJvbC9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGFzaGJvYXJkQ29udHJvbERhc2hib2FyZEV4cG9ydE1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvZGFzaGJvYXJkLWNvbnRyb2wvbmVzdGVkJztcbmltcG9ydCB7IER4b0Rhc2hib2FyZENvbnRyb2xEYXNoYm9hcmRQYXJhbWV0ZXJEaWFsb2dNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL2Rhc2hib2FyZC1jb250cm9sL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9EYXNoYm9hcmRDb250cm9sRGF0YUluc3BlY3Rvck1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvZGFzaGJvYXJkLWNvbnRyb2wvbmVzdGVkJztcbmltcG9ydCB7IER4b0Rhc2hib2FyZENvbnRyb2xEYXRhU291cmNlV2l6YXJkTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9kYXNoYm9hcmQtY29udHJvbC9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGFzaGJvYXJkQ29udHJvbFdpemFyZFNldHRpbmdzTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9kYXNoYm9hcmQtY29udHJvbC9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGFzaGJvYXJkQ29udHJvbERlc2lnbmVyVG9vbGJhck1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvZGFzaGJvYXJkLWNvbnRyb2wvbmVzdGVkJztcbmltcG9ydCB7IER4b0Rhc2hib2FyZENvbnRyb2xJdGVtQmluZGluZ1BhbmVsTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9kYXNoYm9hcmQtY29udHJvbC9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGFzaGJvYXJkQ29udHJvbEl0ZW1PcHRpb25zUGFuZWxNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL2Rhc2hib2FyZC1jb250cm9sL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9EYXNoYm9hcmRDb250cm9sTW9iaWxlTGF5b3V0TW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9kYXNoYm9hcmQtY29udHJvbC9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGFzaGJvYXJkQ29udHJvbFRleHRCb3hJdGVtRWRpdG9yTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9kYXNoYm9hcmQtY29udHJvbC9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGFzaGJvYXJkQ29udHJvbFZpZXdlckFwaU1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvZGFzaGJvYXJkLWNvbnRyb2wvbmVzdGVkJztcbmltcG9ydCB7IER4b0Rhc2hib2FyZENvbnRyb2xGZXRjaFJlbW90ZVNlcnZpY2VNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL2Rhc2hib2FyZC1jb250cm9sL25lc3RlZCc7XG5cblxuXG5cbi8qKlxuICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbF1cblxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2R4LWRhc2hib2FyZC1jb250cm9sJyxcbiAgICB0ZW1wbGF0ZTogJycsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIER4VGVtcGxhdGVIb3N0LFxuICAgICAgICBXYXRjaGVySGVscGVyLFxuICAgICAgICBOZXN0ZWRPcHRpb25Ib3N0XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEeERhc2hib2FyZENvbnRyb2xDb21wb25lbnQgZXh0ZW5kcyBEeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgaW5zdGFuY2U6IER4RGFzaGJvYXJkQ29udHJvbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5hamF4UmVtb3RlU2VydmljZV1cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBhamF4UmVtb3RlU2VydmljZSgpOiB7IGJlZm9yZVNlbmQ/OiBGdW5jdGlvbiwgY29tcGxldGU/OiBGdW5jdGlvbiwgaGVhZGVycz86IGFueSB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignYWpheFJlbW90ZVNlcnZpY2UnKTtcbiAgICB9XG4gICAgc2V0IGFqYXhSZW1vdGVTZXJ2aWNlKHZhbHVlOiB7IGJlZm9yZVNlbmQ/OiBGdW5jdGlvbiwgY29tcGxldGU/OiBGdW5jdGlvbiwgaGVhZGVycz86IGFueSB9KSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignYWpheFJlbW90ZVNlcnZpY2UnLCB2YWx1ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5hbGxvd01heGltaXplSXRlbXNdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgYWxsb3dNYXhpbWl6ZUl0ZW1zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdhbGxvd01heGltaXplSXRlbXMnKTtcbiAgICB9XG4gICAgc2V0IGFsbG93TWF4aW1pemVJdGVtcyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2FsbG93TWF4aW1pemVJdGVtcycsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLmRhc2hib2FyZElkXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRhc2hib2FyZElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2Rhc2hib2FyZElkJyk7XG4gICAgfVxuICAgIHNldCBkYXNoYm9hcmRJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZGFzaGJvYXJkSWQnLCB2YWx1ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5kYXRhUmVxdWVzdE9wdGlvbnNdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgZGF0YVJlcXVlc3RPcHRpb25zKCk6IHsgaXRlbURhdGFMb2FkaW5nTW9kZT86IHN0cmluZywgaXRlbURhdGFSZXF1ZXN0TW9kZT86IHN0cmluZyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZGF0YVJlcXVlc3RPcHRpb25zJyk7XG4gICAgfVxuICAgIHNldCBkYXRhUmVxdWVzdE9wdGlvbnModmFsdWU6IHsgaXRlbURhdGFMb2FkaW5nTW9kZT86IHN0cmluZywgaXRlbURhdGFSZXF1ZXN0TW9kZT86IHN0cmluZyB9KSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZGF0YVJlcXVlc3RPcHRpb25zJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuZW5jb2RlSHRtbF1cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBlbmNvZGVIdG1sKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdlbmNvZGVIdG1sJyk7XG4gICAgfVxuICAgIHNldCBlbmNvZGVIdG1sKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZW5jb2RlSHRtbCcsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLmVuZHBvaW50XVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2VuZHBvaW50Jyk7XG4gICAgfVxuICAgIHNldCBlbmRwb2ludCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZW5kcG9pbnQnLCB2YWx1ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5leHRlbnNpb25zXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGV4dGVuc2lvbnMoKTogeyBjaGFydEluZGljYXRvcnM/OiB7IGN1c3RvbUluZGljYXRvclR5cGVzPzogYW55IH0sIGRhc2hib2FyZEV4cG9ydD86IHsgYWxsb3dFeHBvcnREYXNoYm9hcmQ/OiBib29sZWFuLCBhbGxvd0V4cG9ydERhc2hib2FyZEl0ZW1zPzogYm9vbGVhbiwgb25FeHBvcnREaWFsb2dIaWRkZW4/OiBGdW5jdGlvbiwgb25FeHBvcnREaWFsb2dTaG93aW5nPzogRnVuY3Rpb24sIG9uRXhwb3J0RGlhbG9nU2hvd24/OiBGdW5jdGlvbiB9LCBkYXNoYm9hcmRQYXJhbWV0ZXJEaWFsb2c/OiB7IG9uRHluYW1pY0xvb2tVcFZhbHVlc0xvYWRlZD86IEZ1bmN0aW9uLCBvbkhpZGRlbj86IEZ1bmN0aW9uLCBvblNob3dpbmc/OiBGdW5jdGlvbiwgb25TaG93bj86IEZ1bmN0aW9uIH0sIGRhdGFJbnNwZWN0b3I/OiB7IGFsbG93SW5zcGVjdEFnZ3JlZ2F0ZWREYXRhPzogYm9vbGVhbiwgYWxsb3dJbnNwZWN0UmF3RGF0YT86IGJvb2xlYW4sIG9uRGlhbG9nSGlkZGVuPzogRnVuY3Rpb24sIG9uRGlhbG9nU2hvd2luZz86IEZ1bmN0aW9uLCBvbkRpYWxvZ1Nob3duPzogRnVuY3Rpb24sIG9uR3JpZENvbnRlbnRSZWFkeT86IEZ1bmN0aW9uLCBvbkdyaWRJbml0aWFsaXplZD86IEZ1bmN0aW9uIH0sIGRhdGFTb3VyY2VXaXphcmQ/OiB7IGFsbG93Q3JlYXRlTmV3SnNvbkNvbm5lY3Rpb24/OiBib29sZWFuLCBlbmFibGVDdXN0b21TcWw/OiBib29sZWFuLCBvbkN1c3RvbWl6ZURhdGFTb3VyY2VXaXphcmQ/OiBGdW5jdGlvbiwgd2l6YXJkU2V0dGluZ3M/OiBJRGFzaGJvYXJkRGF0YVNvdXJjZVdpemFyZFNldHRpbmdzIH0sIGRlc2lnbmVyVG9vbGJhcj86IHsgb25QcmVwYXJpbmc/OiBGdW5jdGlvbiB9LCBpdGVtQmluZGluZ1BhbmVsPzogeyBvbkN1c3RvbWl6ZURhdGFJdGVtQ29udGFpbmVyU2VjdGlvbnM/OiBGdW5jdGlvbiB9LCBpdGVtT3B0aW9uc1BhbmVsPzogeyBvbkN1c3RvbWl6ZVNlY3Rpb25zPzogRnVuY3Rpb24gfSwgbW9iaWxlTGF5b3V0PzogeyBtb2JpbGVMYXlvdXRFbmFibGVkPzogc3RyaW5nIH0sIHRleHRCb3hJdGVtRWRpdG9yPzogeyBvblJpY2hFZGl0Q3JlYXRlZD86IEZ1bmN0aW9uLCBvblJpY2hFZGl0T3B0aW9uc1ByZXBhcmVkPzogRnVuY3Rpb24gfSwgdmlld2VyQXBpPzogeyBvbkRhc2hib2FyZFRpdGxlVG9vbGJhclVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtQWN0aW9uQXZhaWxhYmlsaXR5Q2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1DYXB0aW9uVG9vbGJhclVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtQ2xpY2s/OiBGdW5jdGlvbiwgb25JdGVtRHJpbGxEb3duU3RhdGVDaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbUVsZW1lbnRDdXN0b21Db2xvcj86IEZ1bmN0aW9uLCBvbkl0ZW1NYXN0ZXJGaWx0ZXJTdGF0ZUNoYW5nZWQ/OiBGdW5jdGlvbiwgb25JdGVtU2VsZWN0aW9uQ2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1WaXN1YWxJbnRlcmFjdGl2aXR5PzogRnVuY3Rpb24sIG9uSXRlbVdpZGdldENyZWF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0T3B0aW9uc1ByZXBhcmVkPzogRnVuY3Rpb24sIG9uSXRlbVdpZGdldFVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0VXBkYXRpbmc/OiBGdW5jdGlvbiwgb25TZWxlY3RlZFRhYlBhZ2VDaGFuZ2VkPzogRnVuY3Rpb24gfSB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZXh0ZW5zaW9ucycpO1xuICAgIH1cbiAgICBzZXQgZXh0ZW5zaW9ucyh2YWx1ZTogeyBjaGFydEluZGljYXRvcnM/OiB7IGN1c3RvbUluZGljYXRvclR5cGVzPzogYW55IH0sIGRhc2hib2FyZEV4cG9ydD86IHsgYWxsb3dFeHBvcnREYXNoYm9hcmQ/OiBib29sZWFuLCBhbGxvd0V4cG9ydERhc2hib2FyZEl0ZW1zPzogYm9vbGVhbiwgb25FeHBvcnREaWFsb2dIaWRkZW4/OiBGdW5jdGlvbiwgb25FeHBvcnREaWFsb2dTaG93aW5nPzogRnVuY3Rpb24sIG9uRXhwb3J0RGlhbG9nU2hvd24/OiBGdW5jdGlvbiB9LCBkYXNoYm9hcmRQYXJhbWV0ZXJEaWFsb2c/OiB7IG9uRHluYW1pY0xvb2tVcFZhbHVlc0xvYWRlZD86IEZ1bmN0aW9uLCBvbkhpZGRlbj86IEZ1bmN0aW9uLCBvblNob3dpbmc/OiBGdW5jdGlvbiwgb25TaG93bj86IEZ1bmN0aW9uIH0sIGRhdGFJbnNwZWN0b3I/OiB7IGFsbG93SW5zcGVjdEFnZ3JlZ2F0ZWREYXRhPzogYm9vbGVhbiwgYWxsb3dJbnNwZWN0UmF3RGF0YT86IGJvb2xlYW4sIG9uRGlhbG9nSGlkZGVuPzogRnVuY3Rpb24sIG9uRGlhbG9nU2hvd2luZz86IEZ1bmN0aW9uLCBvbkRpYWxvZ1Nob3duPzogRnVuY3Rpb24sIG9uR3JpZENvbnRlbnRSZWFkeT86IEZ1bmN0aW9uLCBvbkdyaWRJbml0aWFsaXplZD86IEZ1bmN0aW9uIH0sIGRhdGFTb3VyY2VXaXphcmQ/OiB7IGFsbG93Q3JlYXRlTmV3SnNvbkNvbm5lY3Rpb24/OiBib29sZWFuLCBlbmFibGVDdXN0b21TcWw/OiBib29sZWFuLCBvbkN1c3RvbWl6ZURhdGFTb3VyY2VXaXphcmQ/OiBGdW5jdGlvbiwgd2l6YXJkU2V0dGluZ3M/OiBJRGFzaGJvYXJkRGF0YVNvdXJjZVdpemFyZFNldHRpbmdzIH0sIGRlc2lnbmVyVG9vbGJhcj86IHsgb25QcmVwYXJpbmc/OiBGdW5jdGlvbiB9LCBpdGVtQmluZGluZ1BhbmVsPzogeyBvbkN1c3RvbWl6ZURhdGFJdGVtQ29udGFpbmVyU2VjdGlvbnM/OiBGdW5jdGlvbiB9LCBpdGVtT3B0aW9uc1BhbmVsPzogeyBvbkN1c3RvbWl6ZVNlY3Rpb25zPzogRnVuY3Rpb24gfSwgbW9iaWxlTGF5b3V0PzogeyBtb2JpbGVMYXlvdXRFbmFibGVkPzogc3RyaW5nIH0sIHRleHRCb3hJdGVtRWRpdG9yPzogeyBvblJpY2hFZGl0Q3JlYXRlZD86IEZ1bmN0aW9uLCBvblJpY2hFZGl0T3B0aW9uc1ByZXBhcmVkPzogRnVuY3Rpb24gfSwgdmlld2VyQXBpPzogeyBvbkRhc2hib2FyZFRpdGxlVG9vbGJhclVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtQWN0aW9uQXZhaWxhYmlsaXR5Q2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1DYXB0aW9uVG9vbGJhclVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtQ2xpY2s/OiBGdW5jdGlvbiwgb25JdGVtRHJpbGxEb3duU3RhdGVDaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbUVsZW1lbnRDdXN0b21Db2xvcj86IEZ1bmN0aW9uLCBvbkl0ZW1NYXN0ZXJGaWx0ZXJTdGF0ZUNoYW5nZWQ/OiBGdW5jdGlvbiwgb25JdGVtU2VsZWN0aW9uQ2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1WaXN1YWxJbnRlcmFjdGl2aXR5PzogRnVuY3Rpb24sIG9uSXRlbVdpZGdldENyZWF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0T3B0aW9uc1ByZXBhcmVkPzogRnVuY3Rpb24sIG9uSXRlbVdpZGdldFVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0VXBkYXRpbmc/OiBGdW5jdGlvbiwgb25TZWxlY3RlZFRhYlBhZ2VDaGFuZ2VkPzogRnVuY3Rpb24gfSB9KSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZXh0ZW5zaW9ucycsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLmZldGNoUmVtb3RlU2VydmljZV1cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBmZXRjaFJlbW90ZVNlcnZpY2UoKTogeyBiZWZvcmVTZW5kPzogRnVuY3Rpb24sIGhlYWRlcnM/OiBhbnkgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2ZldGNoUmVtb3RlU2VydmljZScpO1xuICAgIH1cbiAgICBzZXQgZmV0Y2hSZW1vdGVTZXJ2aWNlKHZhbHVlOiB7IGJlZm9yZVNlbmQ/OiBGdW5jdGlvbiwgaGVhZGVycz86IGFueSB9KSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZmV0Y2hSZW1vdGVTZXJ2aWNlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuaW5pdGlhbERhc2hib2FyZElkXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGluaXRpYWxEYXNoYm9hcmRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdpbml0aWFsRGFzaGJvYXJkSWQnKTtcbiAgICB9XG4gICAgc2V0IGluaXRpYWxEYXNoYm9hcmRJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignaW5pdGlhbERhc2hib2FyZElkJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuaW5pdGlhbERhc2hib2FyZFN0YXRlXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGluaXRpYWxEYXNoYm9hcmRTdGF0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdpbml0aWFsRGFzaGJvYXJkU3RhdGUnKTtcbiAgICB9XG4gICAgc2V0IGluaXRpYWxEYXNoYm9hcmRTdGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignaW5pdGlhbERhc2hib2FyZFN0YXRlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMubGltaXRWaXNpYmxlRGF0YU1vZGVdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgbGltaXRWaXNpYmxlRGF0YU1vZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignbGltaXRWaXNpYmxlRGF0YU1vZGUnKTtcbiAgICB9XG4gICAgc2V0IGxpbWl0VmlzaWJsZURhdGFNb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdsaW1pdFZpc2libGVEYXRhTW9kZScsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLmxvYWREZWZhdWx0RGFzaGJvYXJkXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGxvYWREZWZhdWx0RGFzaGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdsb2FkRGVmYXVsdERhc2hib2FyZCcpO1xuICAgIH1cbiAgICBzZXQgbG9hZERlZmF1bHREYXNoYm9hcmQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdsb2FkRGVmYXVsdERhc2hib2FyZCcsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLm5vbmNlXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG5vbmNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ25vbmNlJyk7XG4gICAgfVxuICAgIHNldCBub25jZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignbm9uY2UnLCB2YWx1ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5yZXNpemVCeVRpbWVyXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlc2l6ZUJ5VGltZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3Jlc2l6ZUJ5VGltZXInKTtcbiAgICB9XG4gICAgc2V0IHJlc2l6ZUJ5VGltZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdyZXNpemVCeVRpbWVyJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuc2hvd0NvbmZpcm1hdGlvbk9uQnJvd3NlckNsb3NpbmddXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgc2hvd0NvbmZpcm1hdGlvbk9uQnJvd3NlckNsb3NpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3Nob3dDb25maXJtYXRpb25PbkJyb3dzZXJDbG9zaW5nJyk7XG4gICAgfVxuICAgIHNldCBzaG93Q29uZmlybWF0aW9uT25Ccm93c2VyQ2xvc2luZyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3Nob3dDb25maXJtYXRpb25PbkJyb3dzZXJDbG9zaW5nJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMudXNlTmV1dHJhbEZpbHRlck1vZGVdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgdXNlTmV1dHJhbEZpbHRlck1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3VzZU5ldXRyYWxGaWx0ZXJNb2RlJyk7XG4gICAgfVxuICAgIHNldCB1c2VOZXV0cmFsRmlsdGVyTW9kZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3VzZU5ldXRyYWxGaWx0ZXJNb2RlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMud29ya2luZ01vZGVdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgd29ya2luZ01vZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignd29ya2luZ01vZGUnKTtcbiAgICB9XG4gICAgc2V0IHdvcmtpbmdNb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCd3b3JraW5nTW9kZScsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkJlZm9yZVJlbmRlcl1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CZWZvcmVSZW5kZXI6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25EYXNoYm9hcmRCZWdpblVwZGF0ZV1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRCZWdpblVwZGF0ZTogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkRhc2hib2FyZEVuZFVwZGF0ZV1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRFbmRVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25EYXNoYm9hcmRJbml0aWFsaXplZF1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRJbml0aWFsaXplZDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkRhc2hib2FyZEluaXRpYWxpemluZ11cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRJbml0aWFsaXppbmc6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25EYXNoYm9hcmRTdGF0ZUNoYW5nZWRdXG4gICAgXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRGFzaGJvYXJkU3RhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLm9uSW5pdGlhbGl6aW5nXVxuICAgIFxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkluaXRpYWxpemluZzogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkl0ZW1CZWdpblVwZGF0ZV1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25JdGVtQmVnaW5VcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25JdGVtRW5kVXBkYXRlXVxuICAgIFxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkl0ZW1FbmRVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25PcHRpb25DaGFuZ2VkXVxuICAgIFxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbk9wdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgYWpheFJlbW90ZVNlcnZpY2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjx7IGJlZm9yZVNlbmQ/OiBGdW5jdGlvbiwgY29tcGxldGU/OiBGdW5jdGlvbiwgaGVhZGVycz86IGFueSB9PjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIGFsbG93TWF4aW1pemVJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZGFzaGJvYXJkSWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZGF0YVJlcXVlc3RPcHRpb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBpdGVtRGF0YUxvYWRpbmdNb2RlPzogc3RyaW5nLCBpdGVtRGF0YVJlcXVlc3RNb2RlPzogc3RyaW5nIH0+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZW5jb2RlSHRtbENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZW5kcG9pbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZXh0ZW5zaW9uc0NoYW5nZTogRXZlbnRFbWl0dGVyPHsgY2hhcnRJbmRpY2F0b3JzPzogeyBjdXN0b21JbmRpY2F0b3JUeXBlcz86IGFueSB9LCBkYXNoYm9hcmRFeHBvcnQ/OiB7IGFsbG93RXhwb3J0RGFzaGJvYXJkPzogYm9vbGVhbiwgYWxsb3dFeHBvcnREYXNoYm9hcmRJdGVtcz86IGJvb2xlYW4sIG9uRXhwb3J0RGlhbG9nSGlkZGVuPzogRnVuY3Rpb24sIG9uRXhwb3J0RGlhbG9nU2hvd2luZz86IEZ1bmN0aW9uLCBvbkV4cG9ydERpYWxvZ1Nob3duPzogRnVuY3Rpb24gfSwgZGFzaGJvYXJkUGFyYW1ldGVyRGlhbG9nPzogeyBvbkR5bmFtaWNMb29rVXBWYWx1ZXNMb2FkZWQ/OiBGdW5jdGlvbiwgb25IaWRkZW4/OiBGdW5jdGlvbiwgb25TaG93aW5nPzogRnVuY3Rpb24sIG9uU2hvd24/OiBGdW5jdGlvbiB9LCBkYXRhSW5zcGVjdG9yPzogeyBhbGxvd0luc3BlY3RBZ2dyZWdhdGVkRGF0YT86IGJvb2xlYW4sIGFsbG93SW5zcGVjdFJhd0RhdGE/OiBib29sZWFuLCBvbkRpYWxvZ0hpZGRlbj86IEZ1bmN0aW9uLCBvbkRpYWxvZ1Nob3dpbmc/OiBGdW5jdGlvbiwgb25EaWFsb2dTaG93bj86IEZ1bmN0aW9uLCBvbkdyaWRDb250ZW50UmVhZHk/OiBGdW5jdGlvbiwgb25HcmlkSW5pdGlhbGl6ZWQ/OiBGdW5jdGlvbiB9LCBkYXRhU291cmNlV2l6YXJkPzogeyBhbGxvd0NyZWF0ZU5ld0pzb25Db25uZWN0aW9uPzogYm9vbGVhbiwgZW5hYmxlQ3VzdG9tU3FsPzogYm9vbGVhbiwgb25DdXN0b21pemVEYXRhU291cmNlV2l6YXJkPzogRnVuY3Rpb24sIHdpemFyZFNldHRpbmdzPzogSURhc2hib2FyZERhdGFTb3VyY2VXaXphcmRTZXR0aW5ncyB9LCBkZXNpZ25lclRvb2xiYXI/OiB7IG9uUHJlcGFyaW5nPzogRnVuY3Rpb24gfSwgaXRlbUJpbmRpbmdQYW5lbD86IHsgb25DdXN0b21pemVEYXRhSXRlbUNvbnRhaW5lclNlY3Rpb25zPzogRnVuY3Rpb24gfSwgaXRlbU9wdGlvbnNQYW5lbD86IHsgb25DdXN0b21pemVTZWN0aW9ucz86IEZ1bmN0aW9uIH0sIG1vYmlsZUxheW91dD86IHsgbW9iaWxlTGF5b3V0RW5hYmxlZD86IHN0cmluZyB9LCB0ZXh0Qm94SXRlbUVkaXRvcj86IHsgb25SaWNoRWRpdENyZWF0ZWQ/OiBGdW5jdGlvbiwgb25SaWNoRWRpdE9wdGlvbnNQcmVwYXJlZD86IEZ1bmN0aW9uIH0sIHZpZXdlckFwaT86IHsgb25EYXNoYm9hcmRUaXRsZVRvb2xiYXJVcGRhdGVkPzogRnVuY3Rpb24sIG9uSXRlbUFjdGlvbkF2YWlsYWJpbGl0eUNoYW5nZWQ/OiBGdW5jdGlvbiwgb25JdGVtQ2FwdGlvblRvb2xiYXJVcGRhdGVkPzogRnVuY3Rpb24sIG9uSXRlbUNsaWNrPzogRnVuY3Rpb24sIG9uSXRlbURyaWxsRG93blN0YXRlQ2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1FbGVtZW50Q3VzdG9tQ29sb3I/OiBGdW5jdGlvbiwgb25JdGVtTWFzdGVyRmlsdGVyU3RhdGVDaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbVNlbGVjdGlvbkNoYW5nZWQ/OiBGdW5jdGlvbiwgb25JdGVtVmlzdWFsSW50ZXJhY3Rpdml0eT86IEZ1bmN0aW9uLCBvbkl0ZW1XaWRnZXRDcmVhdGVkPzogRnVuY3Rpb24sIG9uSXRlbVdpZGdldE9wdGlvbnNQcmVwYXJlZD86IEZ1bmN0aW9uLCBvbkl0ZW1XaWRnZXRVcGRhdGVkPzogRnVuY3Rpb24sIG9uSXRlbVdpZGdldFVwZGF0aW5nPzogRnVuY3Rpb24sIG9uU2VsZWN0ZWRUYWJQYWdlQ2hhbmdlZD86IEZ1bmN0aW9uIH0gfT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBmZXRjaFJlbW90ZVNlcnZpY2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjx7IGJlZm9yZVNlbmQ/OiBGdW5jdGlvbiwgaGVhZGVycz86IGFueSB9PjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIGluaXRpYWxEYXNoYm9hcmRJZENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBpbml0aWFsRGFzaGJvYXJkU3RhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgbGltaXRWaXNpYmxlRGF0YU1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgbG9hZERlZmF1bHREYXNoYm9hcmRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIG5vbmNlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlc2l6ZUJ5VGltZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25PbkJyb3dzZXJDbG9zaW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB1c2VOZXV0cmFsRmlsdGVyTW9kZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgd29ya2luZ01vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG5cblxuXG5cblxuXG5cbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBuZ1pvbmU6IE5nWm9uZSwgdGVtcGxhdGVIb3N0OiBEeFRlbXBsYXRlSG9zdCxcbiAgICAgICAgICAgIF93YXRjaGVySGVscGVyOiBXYXRjaGVySGVscGVyLFxuICAgICAgICAgICAgb3B0aW9uSG9zdDogTmVzdGVkT3B0aW9uSG9zdCxcbiAgICAgICAgICAgIHRyYW5zZmVyU3RhdGU6IFRyYW5zZmVyU3RhdGUsXG4gICAgICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBhbnkpIHtcblxuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBuZ1pvbmUsIHRlbXBsYXRlSG9zdCwgX3dhdGNoZXJIZWxwZXIsIHRyYW5zZmVyU3RhdGUsIHBsYXRmb3JtSWQpO1xuXG4gICAgICAgIHRoaXMuX2NyZWF0ZUV2ZW50RW1pdHRlcnMoW1xuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdiZWZvcmVSZW5kZXInLCBlbWl0OiAnb25CZWZvcmVSZW5kZXInIH0sXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2Rhc2hib2FyZEJlZ2luVXBkYXRlJywgZW1pdDogJ29uRGFzaGJvYXJkQmVnaW5VcGRhdGUnIH0sXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2Rhc2hib2FyZEVuZFVwZGF0ZScsIGVtaXQ6ICdvbkRhc2hib2FyZEVuZFVwZGF0ZScgfSxcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnZGFzaGJvYXJkSW5pdGlhbGl6ZWQnLCBlbWl0OiAnb25EYXNoYm9hcmRJbml0aWFsaXplZCcgfSxcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnZGFzaGJvYXJkSW5pdGlhbGl6aW5nJywgZW1pdDogJ29uRGFzaGJvYXJkSW5pdGlhbGl6aW5nJyB9LFxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdkYXNoYm9hcmRTdGF0ZUNoYW5nZWQnLCBlbWl0OiAnb25EYXNoYm9hcmRTdGF0ZUNoYW5nZWQnIH0sXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2luaXRpYWxpemluZycsIGVtaXQ6ICdvbkluaXRpYWxpemluZycgfSxcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnaXRlbUJlZ2luVXBkYXRlJywgZW1pdDogJ29uSXRlbUJlZ2luVXBkYXRlJyB9LFxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdpdGVtRW5kVXBkYXRlJywgZW1pdDogJ29uSXRlbUVuZFVwZGF0ZScgfSxcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnb3B0aW9uQ2hhbmdlZCcsIGVtaXQ6ICdvbk9wdGlvbkNoYW5nZWQnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdhamF4UmVtb3RlU2VydmljZUNoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ2FsbG93TWF4aW1pemVJdGVtc0NoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ2Rhc2hib2FyZElkQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnZGF0YVJlcXVlc3RPcHRpb25zQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnZW5jb2RlSHRtbENoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ2VuZHBvaW50Q2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnZXh0ZW5zaW9uc0NoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ2ZldGNoUmVtb3RlU2VydmljZUNoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ2luaXRpYWxEYXNoYm9hcmRJZENoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ2luaXRpYWxEYXNoYm9hcmRTdGF0ZUNoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ2xpbWl0VmlzaWJsZURhdGFNb2RlQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnbG9hZERlZmF1bHREYXNoYm9hcmRDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdub25jZUNoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ3Jlc2l6ZUJ5VGltZXJDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdzaG93Q29uZmlybWF0aW9uT25Ccm93c2VyQ2xvc2luZ0NoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ3VzZU5ldXRyYWxGaWx0ZXJNb2RlQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnd29ya2luZ01vZGVDaGFuZ2UnIH1cbiAgICAgICAgXSk7XG4gICAgICAgIG9wdGlvbkhvc3Quc2V0SG9zdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUluc3RhbmNlKGVsZW1lbnQsIG9wdGlvbnMpIHtcblxuICAgICAgICByZXR1cm4gbmV3IER4RGFzaGJvYXJkQ29udHJvbChlbGVtZW50LCBvcHRpb25zKTtcbiAgICB9XG5cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9kZXN0cm95V2lkZ2V0KCk7XG4gICAgfVxuXG59XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBEeG9BamF4UmVtb3RlU2VydmljZU1vZHVsZSxcbiAgICBEeG9EYXRhUmVxdWVzdE9wdGlvbnNNb2R1bGUsXG4gICAgRHhvRXh0ZW5zaW9uc01vZHVsZSxcbiAgICBEeG9DaGFydEluZGljYXRvcnNNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkRXhwb3J0TW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZFBhcmFtZXRlckRpYWxvZ01vZHVsZSxcbiAgICBEeG9EYXRhSW5zcGVjdG9yTW9kdWxlLFxuICAgIER4b0RhdGFTb3VyY2VXaXphcmRNb2R1bGUsXG4gICAgRHhvV2l6YXJkU2V0dGluZ3NNb2R1bGUsXG4gICAgRHhvRGVzaWduZXJUb29sYmFyTW9kdWxlLFxuICAgIER4b0l0ZW1CaW5kaW5nUGFuZWxNb2R1bGUsXG4gICAgRHhvSXRlbU9wdGlvbnNQYW5lbE1vZHVsZSxcbiAgICBEeG9Nb2JpbGVMYXlvdXRNb2R1bGUsXG4gICAgRHhvVGV4dEJveEl0ZW1FZGl0b3JNb2R1bGUsXG4gICAgRHhvVmlld2VyQXBpTW9kdWxlLFxuICAgIER4b0ZldGNoUmVtb3RlU2VydmljZU1vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sQWpheFJlbW90ZVNlcnZpY2VNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkQ29udHJvbERhdGFSZXF1ZXN0T3B0aW9uc01vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sRXh0ZW5zaW9uc01vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sQ2hhcnRJbmRpY2F0b3JzTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xEYXNoYm9hcmRFeHBvcnRNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkQ29udHJvbERhc2hib2FyZFBhcmFtZXRlckRpYWxvZ01vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sRGF0YUluc3BlY3Rvck1vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sRGF0YVNvdXJjZVdpemFyZE1vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sV2l6YXJkU2V0dGluZ3NNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkQ29udHJvbERlc2lnbmVyVG9vbGJhck1vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sSXRlbUJpbmRpbmdQYW5lbE1vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sSXRlbU9wdGlvbnNQYW5lbE1vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sTW9iaWxlTGF5b3V0TW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xUZXh0Qm94SXRlbUVkaXRvck1vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sVmlld2VyQXBpTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xGZXRjaFJlbW90ZVNlcnZpY2VNb2R1bGUsXG4gICAgRHhJbnRlZ3JhdGlvbk1vZHVsZSxcbiAgICBEeFRlbXBsYXRlTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIER4RGFzaGJvYXJkQ29udHJvbENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRHhEYXNoYm9hcmRDb250cm9sQ29tcG9uZW50LFxuICAgIER4b0FqYXhSZW1vdGVTZXJ2aWNlTW9kdWxlLFxuICAgIER4b0RhdGFSZXF1ZXN0T3B0aW9uc01vZHVsZSxcbiAgICBEeG9FeHRlbnNpb25zTW9kdWxlLFxuICAgIER4b0NoYXJ0SW5kaWNhdG9yc01vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRFeHBvcnRNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkUGFyYW1ldGVyRGlhbG9nTW9kdWxlLFxuICAgIER4b0RhdGFJbnNwZWN0b3JNb2R1bGUsXG4gICAgRHhvRGF0YVNvdXJjZVdpemFyZE1vZHVsZSxcbiAgICBEeG9XaXphcmRTZXR0aW5nc01vZHVsZSxcbiAgICBEeG9EZXNpZ25lclRvb2xiYXJNb2R1bGUsXG4gICAgRHhvSXRlbUJpbmRpbmdQYW5lbE1vZHVsZSxcbiAgICBEeG9JdGVtT3B0aW9uc1BhbmVsTW9kdWxlLFxuICAgIER4b01vYmlsZUxheW91dE1vZHVsZSxcbiAgICBEeG9UZXh0Qm94SXRlbUVkaXRvck1vZHVsZSxcbiAgICBEeG9WaWV3ZXJBcGlNb2R1bGUsXG4gICAgRHhvRmV0Y2hSZW1vdGVTZXJ2aWNlTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xBamF4UmVtb3RlU2VydmljZU1vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sRGF0YVJlcXVlc3RPcHRpb25zTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xFeHRlbnNpb25zTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xDaGFydEluZGljYXRvcnNNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkQ29udHJvbERhc2hib2FyZEV4cG9ydE1vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sRGFzaGJvYXJkUGFyYW1ldGVyRGlhbG9nTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xEYXRhSW5zcGVjdG9yTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xEYXRhU291cmNlV2l6YXJkTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xXaXphcmRTZXR0aW5nc01vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRDb250cm9sRGVzaWduZXJUb29sYmFyTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xJdGVtQmluZGluZ1BhbmVsTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xJdGVtT3B0aW9uc1BhbmVsTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xNb2JpbGVMYXlvdXRNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkQ29udHJvbFRleHRCb3hJdGVtRWRpdG9yTW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZENvbnRyb2xWaWV3ZXJBcGlNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkQ29udHJvbEZldGNoUmVtb3RlU2VydmljZU1vZHVsZSxcbiAgICBEeFRlbXBsYXRlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRHhEYXNoYm9hcmRDb250cm9sTW9kdWxlIHsgfVxuXG5cbiJdfQ==