kwikid-agent-dashboard 0.0.3 → 0.0.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 (36) hide show
  1. package/bundles/kwikid-agent-dashboard.umd.js +805 -578
  2. package/bundles/kwikid-agent-dashboard.umd.js.map +1 -1
  3. package/esm2015/lib/components/customer-list/customer-list.component.js +56 -68
  4. package/esm2015/lib/components/customer-tile/customer-tile.component.js +30 -24
  5. package/esm2015/lib/components/customer-tile/status-pill/status-pill.component.js +29 -0
  6. package/esm2015/lib/components/customer-tile/status-pill/status-pill.definitions.js +18 -0
  7. package/esm2015/lib/kwikid-agent-dashboard.component.js +507 -124
  8. package/esm2015/lib/kwikid-agent-dashboard.module.js +54 -27
  9. package/esm2015/lib/pipes/search-filter.pipe.js +62 -0
  10. package/esm2015/lib/services/info-window.service.js +5 -3
  11. package/esm2015/lib/services/map.service.js +50 -124
  12. package/fesm2015/kwikid-agent-dashboard.js +764 -513
  13. package/fesm2015/kwikid-agent-dashboard.js.map +1 -1
  14. package/lib/components/customer-list/customer-list.component.d.ts +19 -58
  15. package/lib/components/customer-tile/customer-tile.component.d.ts +7 -10
  16. package/lib/components/customer-tile/status-pill/status-pill.component.d.ts +10 -0
  17. package/lib/components/customer-tile/status-pill/status-pill.definitions.d.ts +10 -0
  18. package/lib/kwikid-agent-dashboard.component.d.ts +132 -95
  19. package/lib/kwikid-agent-dashboard.module.d.ts +13 -12
  20. package/lib/pipes/search-filter.pipe.d.ts +25 -0
  21. package/lib/services/map.service.d.ts +15 -16
  22. package/package.json +4 -2
  23. package/esm2015/lib/components/add-customer/add-customer.component.js +0 -66
  24. package/esm2015/lib/components/menu/menu.component.js +0 -34
  25. package/esm2015/lib/services/agent.service.js +0 -47
  26. package/esm2015/lib/services/customer.service.js +0 -20
  27. package/esm2015/lib/shared/interfaces/customer.js +0 -2
  28. package/esm2015/lib/svgs/kyc-pending/kyc-pending.component.js +0 -18
  29. package/esm2015/lib/svgs/kyc-success/kyc-success.component.js +0 -18
  30. package/lib/components/add-customer/add-customer.component.d.ts +0 -16
  31. package/lib/components/menu/menu.component.d.ts +0 -18
  32. package/lib/services/agent.service.d.ts +0 -18
  33. package/lib/services/customer.service.d.ts +0 -9
  34. package/lib/shared/interfaces/customer.d.ts +0 -16
  35. package/lib/svgs/kyc-pending/kyc-pending.component.d.ts +0 -8
  36. package/lib/svgs/kyc-success/kyc-success.component.d.ts +0 -8
@@ -1,145 +1,525 @@
1
- import { __awaiter } from "tslib";
2
- import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';
1
+ import { Component, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
2
+ import { MapInfoWindow } from '@angular/google-maps';
3
+ import { TuiDialogService } from '@taiga-ui/core';
4
+ import { of } from 'rxjs';
5
+ import { catchError, map } from 'rxjs/operators';
3
6
  import * as i0 from "@angular/core";
4
- import * as i1 from "./services/agent.service";
5
- import * as i2 from "./services/map.service";
6
- import * as i3 from "./services/customer.service";
7
- import * as i4 from "kwikui";
8
- import * as i5 from "./components/menu/menu.component";
9
- import * as i6 from "./components/customer-list/customer-list.component";
10
- import * as i7 from "./components/add-customer/add-customer.component";
11
- import * as i8 from "@angular/common";
7
+ import * as i1 from "./services/map.service";
8
+ import * as i2 from "@angular/common/http";
9
+ import * as i3 from "kwikui";
10
+ import * as i4 from "@angular/google-maps";
11
+ import * as i5 from "./components/customer-list/customer-list.component";
12
+ import * as i6 from "kwikid-forms";
13
+ import * as i7 from "@angular/common";
14
+ import * as i8 from "@taiga-ui/cdk";
15
+ import * as i9 from "@taiga-ui/core";
12
16
  export class KwikIDAgentDashboardComponent {
13
- /**
14
- * @description
15
- *
16
- * @constructor
17
- */
18
- constructor(agentService, mapService, customerService) {
19
- this.agentService = agentService;
17
+ constructor(mapService, httpClient, hostElement, dialogService) {
20
18
  this.mapService = mapService;
21
- this.customerService = customerService;
22
- /**
23
- * @description
24
- * Stores agent Config
25
- *
26
- * @default
27
- * `{}`
28
- */
19
+ this.httpClient = httpClient;
20
+ this.hostElement = hostElement;
21
+ this.dialogService = dialogService;
29
22
  this.agentConfig = {};
30
- /**
31
- * @description
32
- * Stores list of customers
33
- *
34
- * @default
35
- * `[]`
36
- */
37
- this.customers = [];
38
- /**
39
- * @description
40
- * Stores list of customers
41
- *
42
- * @default
43
- * `[]`
44
- */
45
- this.todaysCustomers = [];
46
- /**
47
- * @description
48
- * Emitter to emit next Step
49
- *
50
- * @emits KwikIDAgentDashboardComponent#nextStep
51
- * @fires KwikIDAgentDashboardComponent#nextStep
52
- */
23
+ this.taskList = [];
53
24
  this.nextStep = new EventEmitter();
54
25
  this.addTask = new EventEmitter();
55
26
  this.removeTask = new EventEmitter();
56
- /**
57
- * @description
58
- * Describes whether API Call is in progress or not
59
- *
60
- * @default
61
- * `true`
62
- */
27
+ this.filterTaskList = new EventEmitter();
63
28
  this.loading = true;
64
- /**
65
- * @description
66
- * Describes styling of Map Container
67
- *
68
- * @default
69
- * `object`
70
- */
71
- this.mapStyle = { height: '100%', width: '100%', zIindex: -1 };
72
- }
73
- /**
74
- * @description
75
- * To set Google Maps API on script
76
- *
77
- * @ngOnInit
78
- */
79
- ngOnInit() {
29
+ this.showMapview = true;
30
+ this.isMobileView = false;
31
+ this.listOpen = true;
32
+ this.options = {
33
+ stops: ['calc(5rem + 74vw)', 'calc(9rem + 74vw)']
34
+ };
35
+ this.open = false;
36
+ this.formConfig = {
37
+ key: 'ADD_TASK',
38
+ title: 'Add Task',
39
+ fields: [
40
+ {
41
+ key: 'name',
42
+ label: 'Customer Name',
43
+ disabled: false,
44
+ messages: [],
45
+ default: {
46
+ value: {
47
+ is_found: false,
48
+ value: '',
49
+ sources: [
50
+ {
51
+ key: 'OBJECT',
52
+ props: {
53
+ object: {
54
+ key: 'ALL_FORMS_DATA',
55
+ path: '$.ADD_TASK.name'
56
+ }
57
+ },
58
+ value: '',
59
+ validation: {
60
+ is_valid: false,
61
+ triggers: ['ON_INIT'],
62
+ rules: [
63
+ {
64
+ id: '1',
65
+ key: 'VALUE_CHECK',
66
+ props: {
67
+ value: {
68
+ source: {
69
+ key: 'OBJECT',
70
+ props: {
71
+ object: {
72
+ key: 'ALL_FORMS_DATA',
73
+ path: '$.ADD_TASK.name'
74
+ }
75
+ }
76
+ }
77
+ },
78
+ pattern: {
79
+ key: 'IS_NOT_EMPTY'
80
+ }
81
+ }
82
+ }
83
+ ],
84
+ actions: [
85
+ {
86
+ id: '1',
87
+ key: 'SET_FIELD_DEFAULT_VALUE',
88
+ condition: '1',
89
+ props: {
90
+ fieldKey: 'name',
91
+ value: {
92
+ source: {
93
+ key: 'OBJECT',
94
+ props: {
95
+ object: {
96
+ key: 'ALL_FORMS_DATA',
97
+ path: '$.ADD_TASK.name'
98
+ }
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+ ]
105
+ }
106
+ }
107
+ ]
108
+ }
109
+ },
110
+ validators: {
111
+ required: true
112
+ },
113
+ properties: {
114
+ placeholder: 'Please enter the Customer Name',
115
+ readOnly: false,
116
+ case: 'default'
117
+ },
118
+ type: 'text'
119
+ },
120
+ {
121
+ key: 'phone',
122
+ label: 'Phone Number',
123
+ disabled: false,
124
+ messages: [],
125
+ default: {
126
+ value: {
127
+ is_found: false,
128
+ value: '',
129
+ sources: [
130
+ {
131
+ key: 'OBJECT',
132
+ props: {
133
+ object: {
134
+ key: 'ALL_FORMS_DATA',
135
+ path: '$.ADD_TASK.phone'
136
+ }
137
+ },
138
+ value: '',
139
+ validation: {
140
+ is_valid: false,
141
+ triggers: ['ON_INIT'],
142
+ rules: [
143
+ {
144
+ id: '1',
145
+ key: 'VALUE_CHECK',
146
+ props: {
147
+ value: {
148
+ source: {
149
+ key: 'OBJECT',
150
+ props: {
151
+ object: {
152
+ key: 'ALL_FORMS_DATA',
153
+ path: '$.ADD_TASK.phone'
154
+ }
155
+ }
156
+ }
157
+ },
158
+ pattern: {
159
+ key: 'IS_NOT_EMPTY'
160
+ }
161
+ }
162
+ }
163
+ ],
164
+ actions: [
165
+ {
166
+ id: '1',
167
+ key: 'SET_FIELD_DEFAULT_VALUE',
168
+ condition: '1',
169
+ props: {
170
+ fieldKey: 'phone',
171
+ value: {
172
+ source: {
173
+ key: 'OBJECT',
174
+ props: {
175
+ object: {
176
+ key: 'ALL_FORMS_DATA',
177
+ path: '$.ADD_TASK.phone'
178
+ }
179
+ }
180
+ }
181
+ }
182
+ }
183
+ }
184
+ ]
185
+ }
186
+ }
187
+ ]
188
+ }
189
+ },
190
+ validators: {
191
+ required: true
192
+ },
193
+ properties: {
194
+ placeholder: 'Please enter the Phone Number',
195
+ readOnly: false,
196
+ case: 'default'
197
+ },
198
+ type: 'number'
199
+ },
200
+ {
201
+ key: 'address',
202
+ label: 'Address',
203
+ disabled: false,
204
+ messages: [],
205
+ default: {
206
+ value: {
207
+ is_found: false,
208
+ value: '',
209
+ sources: [
210
+ {
211
+ key: 'OBJECT',
212
+ props: {
213
+ object: {
214
+ key: 'ALL_FORMS_DATA',
215
+ path: '$.ADD_TASK.address'
216
+ }
217
+ },
218
+ value: '',
219
+ validation: {
220
+ is_valid: false,
221
+ triggers: ['ON_INIT'],
222
+ rules: [
223
+ {
224
+ id: '1',
225
+ key: 'VALUE_CHECK',
226
+ props: {
227
+ value: {
228
+ source: {
229
+ key: 'OBJECT',
230
+ props: {
231
+ object: {
232
+ key: 'ALL_FORMS_DATA',
233
+ path: '$.ADD_TASK.address'
234
+ }
235
+ }
236
+ }
237
+ },
238
+ pattern: {
239
+ key: 'IS_NOT_EMPTY'
240
+ }
241
+ }
242
+ }
243
+ ],
244
+ actions: [
245
+ {
246
+ id: '1',
247
+ key: 'SET_FIELD_DEFAULT_VALUE',
248
+ condition: '1',
249
+ props: {
250
+ fieldKey: 'address',
251
+ value: {
252
+ source: {
253
+ key: 'OBJECT',
254
+ props: {
255
+ object: {
256
+ key: 'ALL_FORMS_DATA',
257
+ path: '$.ADD_TASK.address'
258
+ }
259
+ }
260
+ }
261
+ }
262
+ }
263
+ }
264
+ ]
265
+ }
266
+ }
267
+ ]
268
+ }
269
+ },
270
+ validators: {
271
+ required: true
272
+ },
273
+ properties: {
274
+ placeholder: 'Please enter the Address',
275
+ readOnly: false,
276
+ case: 'default'
277
+ },
278
+ type: 'text'
279
+ },
280
+ {
281
+ key: 'city',
282
+ label: 'City',
283
+ disabled: false,
284
+ messages: [],
285
+ default: {
286
+ value: {
287
+ is_found: false,
288
+ value: '',
289
+ sources: [
290
+ {
291
+ key: 'OBJECT',
292
+ props: {
293
+ object: {
294
+ key: 'ALL_FORMS_DATA',
295
+ path: '$.ADD_TASK.city'
296
+ }
297
+ },
298
+ value: '',
299
+ validation: {
300
+ is_valid: false,
301
+ triggers: ['ON_INIT'],
302
+ rules: [
303
+ {
304
+ id: '1',
305
+ key: 'VALUE_CHECK',
306
+ props: {
307
+ value: {
308
+ source: {
309
+ key: 'OBJECT',
310
+ props: {
311
+ object: {
312
+ key: 'ALL_FORMS_DATA',
313
+ path: '$.ADD_TASK.city'
314
+ }
315
+ }
316
+ }
317
+ },
318
+ pattern: {
319
+ key: 'IS_NOT_EMPTY'
320
+ }
321
+ }
322
+ }
323
+ ],
324
+ actions: [
325
+ {
326
+ id: '1',
327
+ key: 'SET_FIELD_DEFAULT_VALUE',
328
+ condition: '1',
329
+ props: {
330
+ fieldKey: 'city',
331
+ value: {
332
+ source: {
333
+ key: 'OBJECT',
334
+ props: {
335
+ object: {
336
+ key: 'ALL_FORMS_DATA',
337
+ path: '$.ADD_TASK.city'
338
+ }
339
+ }
340
+ }
341
+ }
342
+ }
343
+ }
344
+ ]
345
+ }
346
+ }
347
+ ]
348
+ }
349
+ },
350
+ validators: {
351
+ required: true
352
+ },
353
+ properties: {
354
+ placeholder: 'Please enter the City',
355
+ readOnly: false,
356
+ case: 'default'
357
+ },
358
+ type: 'text'
359
+ },
360
+ {
361
+ key: 'location',
362
+ label: 'Location URL',
363
+ disabled: false,
364
+ messages: [],
365
+ default: {
366
+ value: {
367
+ is_found: false,
368
+ value: '',
369
+ sources: [
370
+ {
371
+ key: 'OBJECT',
372
+ props: {
373
+ object: {
374
+ key: 'ALL_FORMS_DATA',
375
+ path: '$.ADD_TASK.location'
376
+ }
377
+ },
378
+ value: '',
379
+ validation: {
380
+ is_valid: false,
381
+ triggers: ['ON_INIT'],
382
+ rules: [
383
+ {
384
+ id: '1',
385
+ key: 'VALUE_CHECK',
386
+ props: {
387
+ value: {
388
+ source: {
389
+ key: 'OBJECT',
390
+ props: {
391
+ object: {
392
+ key: 'ALL_FORMS_DATA',
393
+ path: '$.ADD_TASK.location'
394
+ }
395
+ }
396
+ }
397
+ },
398
+ pattern: {
399
+ key: 'IS_NOT_EMPTY'
400
+ }
401
+ }
402
+ }
403
+ ],
404
+ actions: [
405
+ {
406
+ id: '1',
407
+ key: 'SET_FIELD_DEFAULT_VALUE',
408
+ condition: '1',
409
+ props: {
410
+ fieldKey: 'location',
411
+ value: {
412
+ source: {
413
+ key: 'OBJECT',
414
+ props: {
415
+ object: {
416
+ key: 'ALL_FORMS_DATA',
417
+ path: '$.ADD_TASK.location'
418
+ }
419
+ }
420
+ }
421
+ }
422
+ }
423
+ }
424
+ ]
425
+ }
426
+ }
427
+ ]
428
+ }
429
+ },
430
+ validators: {
431
+ required: true
432
+ },
433
+ properties: {
434
+ placeholder: 'Please enter the Location URL',
435
+ readOnly: false,
436
+ case: 'default'
437
+ },
438
+ type: 'text'
439
+ }
440
+ ],
441
+ properties: {
442
+ header: {
443
+ title: {
444
+ hidden: true,
445
+ label: 'Add Task'
446
+ },
447
+ steps: {
448
+ hidden: true
449
+ }
450
+ },
451
+ footer: {
452
+ viewFormsButton: {
453
+ hidden: true,
454
+ label: 'View Forms'
455
+ },
456
+ saveButton: {
457
+ hidden: false,
458
+ label: 'Submit'
459
+ }
460
+ }
461
+ }
462
+ };
463
+ this.allFormsData = {};
464
+ this.String = String;
80
465
  const DSLScript = document.createElement('script');
81
466
  DSLScript.src = this.agentConfig.googleMapsAPI;
82
467
  DSLScript.type = 'text/javascript';
83
468
  document.body.appendChild(DSLScript);
84
- this.loading = false;
85
- this.agentService.setAgentConfig(this.agentConfig);
86
- this.customerService.setCustomers(this.customers);
87
- this.todaysCustomers = this.customers.filter((customer) => customer.date == this.getDate());
469
+ this.apiLoaded = httpClient
470
+ .jsonp('https://maps.googleapis.com/maps/api/js?key=AIzaSyA63JY0ja6ZGIR796vJqZARc0c2j8Vgpik&v=3.exp&libraries=geometry,drawing,places', 'callback')
471
+ .pipe(map(() => true), catchError(() => of(false)));
472
+ }
473
+ ngOnInit() {
88
474
  this.agentConfig.showMaps == true || this.agentConfig.showMaps == false
89
- ? this.agentService.setMapview(this.agentConfig.showMaps)
475
+ ? (this.showMapview = this.agentConfig.showMaps)
90
476
  : null;
477
+ this.loading = false;
91
478
  }
92
- /**
93
- * @description
94
- *
95
- * @ngAfterViewInit
96
- */
97
- ngAfterViewInit() {
98
- setTimeout(() => __awaiter(this, void 0, void 0, function* () {
99
- yield this.mapService.initMap(this.mapElement);
100
- this.todaysCustomers = yield this.mapService.plotMarkers(this.todaysCustomers);
101
- }), 1000);
102
- }
103
- /**
104
- * @description
105
- * Wrapper method to fire click event for next step.
106
- *
107
- * @function goToNextStep
108
- * @func goToNextStep
109
- * @method goToNextStep
110
- */
111
479
  goToNextStep(e) {
112
480
  this.nextStep.emit(e);
113
481
  }
114
- /**
115
- * @description
116
- * Wrapper method to fire click event for next step.
117
- *
118
- * @function getDate
119
- * @func getDate
120
- * @method getDate
121
- */
122
- getDate() {
123
- const date = new Date();
124
- const year = date.getFullYear();
125
- let month = date.getMonth() + 1;
126
- let day = date.getDate();
127
- if (month < 10)
128
- month = '0' + month;
129
- if (day < 10)
130
- day = '0' + day;
131
- const today = `${year}-${month}-${day}`;
132
- return today;
133
- }
134
482
  handleOnClickAddTask(task) {
135
483
  this.addTask.emit(task);
136
484
  }
137
485
  handleOnClickRemoveTask(task) {
138
486
  this.removeTask.emit(task);
139
487
  }
488
+ handleOnFilterTaskList(filter) {
489
+ this.filterTaskList.emit(filter);
490
+ }
491
+ refresh() {
492
+ window.location.reload();
493
+ }
494
+ toggleMapview() {
495
+ this.showMapview = !this.showMapview;
496
+ }
497
+ onClick() {
498
+ this.open = !this.open;
499
+ }
500
+ onObscured(obscured) {
501
+ if (obscured) {
502
+ this.open = false;
503
+ }
504
+ }
505
+ onActiveZone(active) {
506
+ this.open = active && this.open;
507
+ }
508
+ showDialog(content) {
509
+ this.dialogService
510
+ .open(content, { closeable: false, dismissible: false })
511
+ .subscribe();
512
+ }
513
+ openInfoWindow(marker) {
514
+ this.infoWindow.open(marker);
515
+ }
516
+ handleOnClickSaveForm(e) {
517
+ this.handleOnClickAddTask(e.data);
518
+ }
519
+ handleOnClickViewForms(e) { }
140
520
  }
141
- /** @nocollapse */ KwikIDAgentDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardComponent, deps: [{ token: i1.AgentService }, { token: i2.MapService }, { token: i3.CustomerService }], target: i0.ɵɵFactoryTarget.Component });
142
- /** @nocollapse */ KwikIDAgentDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDAgentDashboardComponent, selector: "kwikid-agent-dashboard", inputs: { agentConfig: "agentConfig", customers: "customers", todaysCustomers: "todaysCustomers" }, outputs: { nextStep: "nextStep", addTask: "addTask", removeTask: "removeTask" }, viewQueries: [{ propertyName: "mapElement", first: true, predicate: ["mapElement"], descendants: true }], ngImport: i0, template: "<div class=\"kwikid-agent-dashboard\">\n <div ngClass=\"page-loader\" *ngIf=\"loading\">\n <span class=\"loader\"></span>\n </div>\n <div class=\"wrapper\">\n <div class=\"dashboard-header\">\n <div class=\"dashboard-header-client-name\">\n <kwikui-button-icon\n [icon]=\"'tuiIconLink'\"\n appearance=\"mono\"\n size=\"m\"\n ></kwikui-button-icon>\n\n {{ agentConfig.clientName }}\n </div>\n <div *ngIf=\"agentService.getMenu()\">\n <menu\n (close)=\"agentService.setMenu(false)\"\n (nextStep)=\"goToNextStep($event)\"\n ></menu>\n </div>\n <kwikui-button-icon\n [icon]=\"'tuiIconMoreVertical'\"\n (onClick)=\"agentService.toggleMenu()\"\n appearance=\"mono\"\n size=\"m\"\n ></kwikui-button-icon>\n </div>\n\n <div class=\"dashboard-body\">\n <div\n [class]=\"agentService.showMapview ? 'map' : 'map-hidden'\"\n #mapElement\n ></div>\n <div class=\"customer-list\">\n <customer-list\n [customers]=\"customers\"\n (nextStep)=\"goToNextStep($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n ></customer-list>\n </div>\n </div>\n </div>\n <div *ngIf=\"agentService.getAddTask()\">\n <add-customer (addTask)=\"handleOnClickAddTask($event)\"></add-customer>\n </div>\n</div>\n", styles: [".kwikid-agent-dashboard{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;width:100%;height:100%;position:relative}.kwikid-agent-dashboard .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.kwikid-agent-dashboard .wrapper .dashboard-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:.2rem;max-height:max-content;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.kwikid-agent-dashboard .wrapper .dashboard-header .dashboard-header-client-name{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;font-size:1rem;font-weight:600}.kwikid-agent-dashboard .wrapper .dashboard-body{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto}.kwikid-agent-dashboard .wrapper .dashboard-body .map{width:100%;height:100%;position:relative;overflow:hidden}.kwikid-agent-dashboard .wrapper .dashboard-body .map-hidden{visibility:collapse}.kwikid-agent-dashboard .wrapper .dashboard-body .customer-list{width:100%;height:100%;background-color:#fafafa;overflow:hidden}@media screen and (min-width: 600px){.kwikid-agent-dashboard{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;width:100%;height:100%}.kwikid-agent-dashboard .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.kwikid-agent-dashboard .wrapper .dashboard-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:.2rem;max-height:max-content;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.kwikid-agent-dashboard .wrapper .dashboard-header .dashboard-header-client-name{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;font-size:1rem;font-weight:600}.kwikid-agent-dashboard .wrapper .dashboard-body{display:flex;flex-direction:row-reverse;align-content:center;justify-content:center;align-items:stretch;padding:1.5rem;grid-gap:1.5rem;gap:1.5rem;overflow:auto;background-color:#fafafa}.kwikid-agent-dashboard .wrapper .dashboard-body .map{width:100%;height:100%;position:relative;overflow:hidden;box-shadow:#0000001a 0 4px 6px -1px,#0000000f 0 2px 4px -1px;border-radius:.5rem}.kwikid-agent-dashboard .wrapper .dashboard-body .map-hidden{visibility:collapse}.kwikid-agent-dashboard .wrapper .dashboard-body .customer-list{min-width:300px;max-width:300px;width:100%;height:100%;overflow:hidden;box-shadow:#0000001a 0 4px 6px -1px,#0000000f 0 2px 4px -1px;border-radius:.5rem}}.menu{position:absolute;transition:\"0.15s linear 0s\"}.page-loader{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.75);display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;z-index:100}.page-loader .loader{width:48px;height:48px;border-radius:50%;display:inline-block;position:relative;border:3px solid;border-color:#fff #fff transparent;box-sizing:border-box;animation:rotation 1s linear infinite}.page-loader .loader:after{content:\"\";box-sizing:border-box;position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;border:3px solid;border-color:transparent var(--tui-primary) var(--tui-primary);width:24px;height:24px;border-radius:50%;animation:rotationBack .5s linear infinite;transform-origin:center center}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotationBack{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.page-loader .t-loader{display:none!important}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i4.KwikUIButtonIconComponent, selector: "kwikui-button-icon", inputs: ["disabled", "id", "showLoader", "styles", "class", "type", "appearance", "icon", "shape", "size"], outputs: ["onClick"] }, { type: i5.MenuComponent, selector: "menu", outputs: ["nextStep"] }, { type: i6.CustomerListComponent, selector: "customer-list", inputs: ["customers"], outputs: ["nextStep", "removeTask"] }, { type: i7.AddCustomerComponent, selector: "add-customer", outputs: ["addTask"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
521
+ /** @nocollapse */ KwikIDAgentDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardComponent, deps: [{ token: i1.MapService }, { token: i2.HttpClient }, { token: i0.ElementRef }, { token: TuiDialogService }], target: i0.ɵɵFactoryTarget.Component });
522
+ /** @nocollapse */ KwikIDAgentDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDAgentDashboardComponent, selector: "kwikid-agent-dashboard", inputs: { agentConfig: "agentConfig", taskList: "taskList" }, outputs: { nextStep: "nextStep", addTask: "addTask", removeTask: "removeTask", filterTaskList: "filterTaskList" }, viewQueries: [{ propertyName: "infoWindow", first: true, predicate: MapInfoWindow, descendants: true }], ngImport: i0, template: "<div class=\"kwikid-agent-dashboard\" *ngIf=\"!loading\">\n <div class=\"wrapper\">\n <div class=\"dashboard-header\">\n <div class=\"dashboard-header-client-name\">\n <kwikui-button-icon\n [icon]=\"'tuiIconLink'\"\n appearance=\"mono\"\n size=\"m\"\n ></kwikui-button-icon>\n\n {{ agentConfig.clientName }}\n </div>\n <span (tuiActiveZoneChange)=\"onActiveZone($event)\">\n <kwikui-button-icon\n [icon]=\"'tuiIconSettingsLarge'\"\n (onClick)=\"onClick()\"\n appearance=\"mono\"\n size=\"m\"\n [tuiDropdown]=\"dropdownContent\"\n [tuiDropdownManual]=\"open\"\n (tuiObscured)=\"onObscured($event)\"\n ></kwikui-button-icon>\n <ng-template #dropdownContent>\n <div class=\"menu-dropdown\">\n <div class=\"menu-dropdown-header\">\n <h2>{{ agentConfig.agentName }}</h2>\n <h4>Agent ID:{{ agentConfig.agentId }}</h4>\n </div>\n <hr />\n <div\n class=\"menu-dropdown-body\"\n tuiGroup\n [collapsed]=\"true\"\n [rounded]=\"false\"\n [orientation]=\"'vertical'\"\n [size]=\"'m'\"\n >\n <kwikui-button\n *ngIf=\"this.agentConfig.showMaps\"\n id=\"\"\n label=\"{{ showMapview ? 'Hide Maps' : 'Show Maps' }}\"\n styles=\"\"\n class=\"menu-dropdown-buttons\"\n type=\"button\"\n appearance=\"mono\"\n icon=\"{{ showMapview ? 'tuiIconEyeOff' : 'tuiIconEye' }}\"\n iconRight=\"\"\n [shape]=\"null\"\n size=\"m\"\n styles=\"padding: 0rem !important\"\n (onClick)=\"toggleMapview()\"\n ></kwikui-button>\n <kwikui-button\n id=\"\"\n label=\"Add Task\"\n styles=\"\"\n class=\"menu-dropdown-buttons\"\n type=\"button\"\n appearance=\"mono\"\n [icon]=\"'tuiIconAddRowLarge'\"\n iconRight=\"\"\n [shape]=\"null\"\n size=\"m\"\n (onClick)=\"showDialog(template)\"\n ></kwikui-button>\n <kwikui-button\n id=\"\"\n label=\"Refresh\"\n styles=\"\"\n class=\"menu-dropdown-buttons\"\n type=\"button\"\n appearance=\"mono\"\n [icon]=\"'tuiIconRefreshCw'\"\n iconRight=\"\"\n [shape]=\"null\"\n size=\"m\"\n (onClick)=\"refresh()\"\n ></kwikui-button>\n </div>\n <hr />\n <div class=\"menu-dropdown-footer\">\n <kwikui-button\n id=\"\"\n label=\"Logout\"\n styles=\"\"\n class=\"menu-dropdown-buttons\"\n type=\"button\"\n appearance=\"mono\"\n [icon]=\"'tuiIconLogOut'\"\n iconRight=\"\"\n [shape]=\"null\"\n size=\"m\"\n (onClick)=\"goToNextStep('logout')\"\n ></kwikui-button>\n </div>\n </div>\n </ng-template>\n </span>\n </div>\n\n <div class=\"dashboard-body\">\n <div\n *ngIf=\"apiLoaded | async\"\n [class]=\"showMapview ? 'map' : 'map-hidden'\"\n >\n <google-map height=\"100%\" width=\"100%\" [options]=\"this.mapService.map\">\n <map-marker\n #marker=\"mapMarker\"\n *ngFor=\"\n let markerPosition of this.mapService.markers;\n let index = index\n \"\n [position]=\"markerPosition\"\n [label]=\"{ text: String(index), color: '#FFF' }\"\n (mapClick)=\"openInfoWindow(marker)\"\n ></map-marker>\n <map-directions-renderer\n *ngIf=\"\n this.mapService.directionsResults$ | async as directionsResults\n \"\n [directions]=\"directionsResults\"\n [options]=\"this.mapService.directionsRenderOption\"\n ></map-directions-renderer>\n <map-info-window>Info Window content</map-info-window>\n </google-map>\n </div>\n <div class=\"customer-list\">\n <customer-list\n [customers]=\"taskList\"\n [agentConfig]=\"agentConfig\"\n (nextStep)=\"goToNextStep($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n (filterTaskList)=\"handleOnFilterTaskList($event)\"\n ></customer-list>\n </div>\n </div>\n </div>\n</div>\n<div class=\"kwikid-agent-dashboard-loader\" *ngIf=\"loading\">\n <span class=\"loader\"></span>\n</div>\n\n<ng-template #template let-observer>\n <div class=\"add-task-header\">\n <h2>Add Task</h2>\n <kwikui-button-icon\n icon=\"tuiIconX\"\n id=\"\"\n label=\"Close\"\n styles=\"\"\n type=\"button\"\n appearance=\"mono\"\n [shape]=\"null\"\n size=\"m\"\n (onClick)=\"observer.complete()\"\n ></kwikui-button-icon>\n </div>\n <kwikid-form-view\n [formConfig]=\"formConfig\"\n [allFormsData]=\"allFormsData\"\n [isMobileView]=\"true\"\n (onClickViewForms)=\"this.handleOnClickViewForms($event)\"\n (onClickSaveForm)=\"this.handleOnClickSaveForm($event)\"\n ></kwikid-form-view>\n</ng-template>\n", styles: [".kwikid-agent-dashboard{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;width:100%;height:100%;position:relative}.kwikid-agent-dashboard .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.kwikid-agent-dashboard .wrapper .dashboard-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:.2rem;max-height:max-content;border:1px solid #fafafa;box-shadow:0 2px 10px -6px #000}.kwikid-agent-dashboard .wrapper .dashboard-header .dashboard-header-client-name{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;font-size:1rem;font-weight:600}.kwikid-agent-dashboard .wrapper .dashboard-body{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto}.kwikid-agent-dashboard .wrapper .dashboard-body .map{width:100%;height:100%;position:relative;overflow:hidden}.kwikid-agent-dashboard .wrapper .dashboard-body .map-hidden{visibility:collapse}.kwikid-agent-dashboard .wrapper .dashboard-body .customer-list{width:100%;height:100%;background-color:#fafafa;overflow:hidden}@media screen and (min-width: 600px){.kwikid-agent-dashboard{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;width:100%;height:100%}.kwikid-agent-dashboard .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.kwikid-agent-dashboard .wrapper .dashboard-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:.2rem;max-height:max-content;border:1px solid #fafafa;box-shadow:0 2px 10px -6px #000}.kwikid-agent-dashboard .wrapper .dashboard-header .dashboard-header-client-name{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;font-size:1rem;font-weight:600}.kwikid-agent-dashboard .wrapper .dashboard-body{display:flex;flex-direction:row-reverse;align-content:center;justify-content:center;align-items:stretch;padding:1.5rem;grid-gap:1.5rem;gap:1.5rem;overflow:auto;background-color:#fafafa}.kwikid-agent-dashboard .wrapper .dashboard-body .map{width:100%;height:100%;position:relative;overflow:hidden;box-shadow:#0000001a 0 4px 6px -1px,#0000000f 0 2px 4px -1px;border-radius:.5rem}.kwikid-agent-dashboard .wrapper .dashboard-body .map-hidden{visibility:collapse}.kwikid-agent-dashboard .wrapper .dashboard-body .customer-list{min-width:300px;max-width:400px;width:100%;height:100%;overflow:hidden;box-shadow:#0000001a 0 4px 6px -1px,#0000000f 0 2px 4px -1px;border-radius:.5rem}}.menu{position:absolute;transition:\"0.15s linear 0s\"}.kwikid-agent-dashboard-loader{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.75);display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;z-index:100}.kwikid-agent-dashboard-loader .loader{width:48px;height:48px;border-radius:50%;display:inline-block;position:relative;border:3px solid;border-color:#fff #fff transparent;box-sizing:border-box;animation:rotation 1s linear infinite}.kwikid-agent-dashboard-loader .loader:after{content:\"\";box-sizing:border-box;position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;border:3px solid;border-color:transparent var(--tui-primary) var(--tui-primary);width:24px;height:24px;border-radius:50%;animation:rotationBack .5s linear infinite;transform-origin:center center}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotationBack{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.kwikid-agent-dashboard-loader .t-loader{display:none!important}.add-task-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.5rem 0 1rem 1rem}:host{width:100%;height:100%}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}.menu-dropdown{display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;grid-gap:.5rem;gap:.5rem;padding:1rem 1.5rem}.menu-dropdown .menu-dropdown-header{display:flex;flex-direction:column;align-content:flex-start;justify-content:space-between;align-items:flex-start;grid-gap:1rem;gap:1rem}.menu-dropdown .menu-dropdown-buttons ::ng-deep .t-wrapper{padding:0!important}\n"], components: [{ type: i3.KwikUIButtonIconComponent, selector: "kwikui-button-icon", inputs: ["disabled", "id", "showLoader", "styles", "class", "type", "appearance", "icon", "shape", "size"], outputs: ["onClick"] }, { type: i3.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "type", "appearance", "icon", "iconRight", "shape", "size"], outputs: ["onClick"] }, { type: i4.GoogleMap, selector: "google-map", inputs: ["height", "width", "center", "zoom", "options", "mapTypeId"], outputs: ["authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { type: i5.CustomerListComponent, selector: "customer-list", inputs: ["customers", "agentConfig"], outputs: ["nextStep", "removeTask", "filterTaskList"] }, { type: i6.KwikIDFormViewComponent, selector: "kwikid-form-view", inputs: ["formConfig", "formData", "isMobileView", "allFormsData"], outputs: ["onClickViewForms", "onClickSaveForm", "onClickApiCall"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i9.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { type: i9.TuiDropdownDriverDirective, selector: "[tuiDropdown]" }, { type: i9.TuiDropdownPositionDirective, selector: "[tuiDropdown]:not([tuiDropdownCustomPosition]):not([tuiDropdownSided])" }, { type: i9.TuiDropdownManualDirective, selector: "[tuiDropdown][tuiDropdownManual]", inputs: ["tuiDropdownManual"] }, { type: i9.TuiGroupDirective, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "adaptive", "collapsed", "rounded", "size"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MapMarker, selector: "map-marker", inputs: ["title", "position", "label", "clickable", "options", "icon", "visible"], outputs: ["animationChanged", "mapClick", "clickableChanged", "cursorChanged", "mapDblclick", "mapDrag", "mapDragend", "draggableChanged", "mapDragstart", "flatChanged", "iconChanged", "mapMousedown", "mapMouseout", "mapMouseover", "mapMouseup", "positionChanged", "mapRightclick", "shapeChanged", "titleChanged", "visibleChanged", "zindexChanged"], exportAs: ["mapMarker"] }, { type: i4.MapDirectionsRenderer, selector: "map-directions-renderer", inputs: ["directions", "options"], outputs: ["directionsChanged"], exportAs: ["mapDirectionsRenderer"] }, { type: i4.MapInfoWindow, selector: "map-info-window", inputs: ["options", "position"], outputs: ["closeclick", "contentChanged", "domready", "positionChanged", "zindexChanged"], exportAs: ["mapInfoWindow"] }], pipes: { "async": i7.AsyncPipe } });
143
523
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardComponent, decorators: [{
144
524
  type: Component,
145
525
  args: [{
@@ -147,11 +527,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
147
527
  templateUrl: './kwikid-agent-dashboard.component.html',
148
528
  styleUrls: ['./kwikid-agent-dashboard.component.scss']
149
529
  }]
150
- }], ctorParameters: function () { return [{ type: i1.AgentService }, { type: i2.MapService }, { type: i3.CustomerService }]; }, propDecorators: { agentConfig: [{
530
+ }], ctorParameters: function () { return [{ type: i1.MapService }, { type: i2.HttpClient }, { type: i0.ElementRef }, { type: i9.TuiDialogService, decorators: [{
531
+ type: Inject,
532
+ args: [TuiDialogService]
533
+ }] }]; }, propDecorators: { agentConfig: [{
151
534
  type: Input
152
- }], customers: [{
153
- type: Input
154
- }], todaysCustomers: [{
535
+ }], taskList: [{
155
536
  type: Input
156
537
  }], nextStep: [{
157
538
  type: Output
@@ -159,8 +540,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
159
540
  type: Output
160
541
  }], removeTask: [{
161
542
  type: Output
162
- }], mapElement: [{
543
+ }], filterTaskList: [{
544
+ type: Output
545
+ }], infoWindow: [{
163
546
  type: ViewChild,
164
- args: ['mapElement']
547
+ args: [MapInfoWindow, { static: false }]
165
548
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIva3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIva3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFZdkIsTUFBTSxPQUFPLDZCQUE2QjtJQW9FeEM7Ozs7T0FJRztJQUNILFlBQ1MsWUFBMEIsRUFDMUIsVUFBc0IsRUFDdEIsZUFBZ0M7UUFGaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUEzRXpDOzs7Ozs7V0FNRztRQUNNLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBRS9COzs7Ozs7V0FNRztRQUNNLGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRXpDOzs7Ozs7V0FNRztRQUNNLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQUUvQzs7Ozs7O1dBTUc7UUFDTyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU3QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxQzs7Ozs7O1dBTUc7UUFDSCxZQUFPLEdBQVksSUFBSSxDQUFDO1FBRXhCOzs7Ozs7V0FNRztRQUNILGFBQVEsR0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1B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QkFDbEMsV0FBVyxFQUFFLHlDQUF5QztvQkFDdEQsU0FBUyxFQUFFLENBQUMseUNBQXlDLENBQUM7aUJBQ3ZEOzBKQVNVLFdBQVc7c0JBQW5CLEtBQUs7Z0JBU0csU0FBUztzQkFBakIsS0FBSztnQkFTRyxlQUFlO3NCQUF2QixLQUFLO2dCQVNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUcsT0FBTztzQkFBaEIsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQTJCa0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWdlbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hZ2VudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1hcFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21hcC5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbWVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY3VzdG9tZXIuc2VydmljZSc7XG5pbXBvcnQgQ3VzdG9tZXIgZnJvbSAnLi9zaGFyZWQvaW50ZXJmYWNlcy9jdXN0b21lcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4va3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURBZ2VudERhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU3RvcmVzIGFnZW50IENvbmZpZ1xuICAgKlxuICAgKiBAZGVmYXVsdFxuICAgKiBge31gXG4gICAqL1xuICBASW5wdXQoKSBhZ2VudENvbmZpZzogYW55ID0ge307XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTdG9yZXMgbGlzdCBvZiBjdXN0b21lcnNcbiAgICpcbiAgICogQGRlZmF1bHRcbiAgICogYFtdYFxuICAgKi9cbiAgQElucHV0KCkgY3VzdG9tZXJzOiBBcnJheTxDdXN0b21lcj4gPSBbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFN0b3JlcyBsaXN0IG9mIGN1c3RvbWVyc1xuICAgKlxuICAgKiBAZGVmYXVsdFxuICAgKiBgW11gXG4gICAqL1xuICBASW5wdXQoKSB0b2RheXNDdXN0b21lcnM6IEFycmF5PEN1c3RvbWVyPiA9IFtdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRW1pdHRlciB0byBlbWl0IG5leHQgU3RlcFxuICAgKlxuICAgKiBAZW1pdHMgS3dpa0lEQWdlbnREYXNoYm9hcmRDb21wb25lbnQjbmV4dFN0ZXBcbiAgICogQGZpcmVzIEt3aWtJREFnZW50RGFzaGJvYXJkQ29tcG9uZW50I25leHRTdGVwXG4gICAqL1xuICBAT3V0cHV0KCkgbmV4dFN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGFkZFRhc2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIHJlbW92ZVRhc2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXNjcmliZXMgd2hldGhlciBBUEkgQ2FsbCBpcyBpbiBwcm9ncmVzcyBvciBub3RcbiAgICpcbiAgICogQGRlZmF1bHRcbiAgICogYHRydWVgXG4gICAqL1xuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERlc2NyaWJlcyBzdHlsaW5nIG9mIE1hcCBDb250YWluZXJcbiAgICpcbiAgICogQGRlZmF1bHRcbiAgICogYG9iamVjdGBcbiAgICovXG4gIG1hcFN0eWxlOiBvYmplY3QgPSB7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnLCB6SWluZGV4OiAtMSB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRmV0Y2hlcyBNYXAgRWxlbWVudCBmcm9tIEhUTUxcbiAgICpcbiAgICogQGRlZmF1bHRcbiAgICpcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ21hcEVsZW1lbnQnKSBtYXBFbGVtZW50OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwdWJsaWMgbWFwU2VydmljZTogTWFwU2VydmljZSxcbiAgICBwdWJsaWMgY3VzdG9tZXJTZXJ2aWNlOiBDdXN0b21lclNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVG8gc2V0IEdvb2dsZSBNYXBzIEFQSSBvbiBzY3JpcHRcbiAgICpcbiAgICogQG5nT25Jbml0XG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBEU0xTY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBEU0xTY3JpcHQuc3JjID0gdGhpcy5hZ2VudENvbmZpZy5nb29nbGVNYXBzQVBJO1xuICAgIERTTFNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChEU0xTY3JpcHQpO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNldEFnZW50Q29uZmlnKHRoaXMuYWdlbnRDb25maWcpO1xuICAgIHRoaXMuY3VzdG9tZXJTZXJ2aWNlLnNldEN1c3RvbWVycyh0aGlzLmN1c3RvbWVycyk7XG4gICAgdGhpcy50b2RheXNDdXN0b21lcnMgPSB0aGlzLmN1c3RvbWVycy5maWx0ZXIoXG4gICAgICAoY3VzdG9tZXIpID0+IGN1c3RvbWVyLmRhdGUgPT0gdGhpcy5nZXREYXRlKClcbiAgICApO1xuICAgIHRoaXMuYWdlbnRDb25maWcuc2hvd01hcHMgPT0gdHJ1ZSB8fCB0aGlzLmFnZW50Q29uZmlnLnNob3dNYXBzID09IGZhbHNlXG4gICAgICA/IHRoaXMuYWdlbnRTZXJ2aWNlLnNldE1hcHZpZXcodGhpcy5hZ2VudENvbmZpZy5zaG93TWFwcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQG5nQWZ0ZXJWaWV3SW5pdFxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLmluaXRNYXAodGhpcy5tYXBFbGVtZW50KTtcbiAgICAgIHRoaXMudG9kYXlzQ3VzdG9tZXJzID0gYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLnBsb3RNYXJrZXJzKFxuICAgICAgICB0aGlzLnRvZGF5c0N1c3RvbWVyc1xuICAgICAgKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV3JhcHBlciBtZXRob2QgdG8gZmlyZSBjbGljayBldmVudCBmb3IgbmV4dCBzdGVwLlxuICAgKlxuICAgKiBAZnVuY3Rpb24gZ29Ub05leHRTdGVwXG4gICAqIEBmdW5jIGdvVG9OZXh0U3RlcFxuICAgKiBAbWV0aG9kIGdvVG9OZXh0U3RlcFxuICAgKi9cbiAgZ29Ub05leHRTdGVwKGUpIHtcbiAgICB0aGlzLm5leHRTdGVwLmVtaXQoZSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdyYXBwZXIgbWV0aG9kIHRvIGZpcmUgY2xpY2sgZXZlbnQgZm9yIG5leHQgc3RlcC5cbiAgICpcbiAgICogQGZ1bmN0aW9uIGdldERhdGVcbiAgICogQGZ1bmMgZ2V0RGF0ZVxuICAgKiBAbWV0aG9kIGdldERhdGVcbiAgICovXG4gIGdldERhdGUoKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblxuICAgIGxldCBtb250aDogbnVtYmVyIHwgc3RyaW5nID0gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgICBsZXQgZGF5OiBudW1iZXIgfCBzdHJpbmcgPSBkYXRlLmdldERhdGUoKTtcbiAgICBpZiAobW9udGggPCAxMCkgbW9udGggPSAnMCcgKyBtb250aDtcbiAgICBpZiAoZGF5IDwgMTApIGRheSA9ICcwJyArIGRheTtcblxuICAgIGNvbnN0IHRvZGF5ID0gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YDtcbiAgICByZXR1cm4gdG9kYXk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrQWRkVGFzayh0YXNrKSB7XG4gICAgdGhpcy5hZGRUYXNrLmVtaXQodGFzayk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzayh0YXNrKSB7XG4gICAgdGhpcy5yZW1vdmVUYXNrLmVtaXQodGFzayk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJrd2lraWQtYWdlbnQtZGFzaGJvYXJkXCI+XG4gIDxkaXYgbmdDbGFzcz1cInBhZ2UtbG9hZGVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWhlYWRlci1jbGllbnQtbmFtZVwiPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvbi1pY29uXG4gICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25MaW5rJ1wiXG4gICAgICAgICAgYXBwZWFyYW5jZT1cIm1vbm9cIlxuICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbi1pY29uPlxuXG4gICAgICAgIHt7IGFnZW50Q29uZmlnLmNsaWVudE5hbWUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImFnZW50U2VydmljZS5nZXRNZW51KClcIj5cbiAgICAgICAgPG1lbnVcbiAgICAgICAgICAoY2xvc2UpPVwiYWdlbnRTZXJ2aWNlLnNldE1lbnUoZmFsc2UpXCJcbiAgICAgICAgICAobmV4dFN0ZXApPVwiZ29Ub05leHRTdGVwKCRldmVudClcIlxuICAgICAgICA+PC9tZW51PlxuICAgICAgPC9kaXY+XG4gICAgICA8a3dpa3VpLWJ1dHRvbi1pY29uXG4gICAgICAgIFtpY29uXT1cIid0dWlJY29uTW9yZVZlcnRpY2FsJ1wiXG4gICAgICAgIChvbkNsaWNrKT1cImFnZW50U2VydmljZS50b2dnbGVNZW51KClcIlxuICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgID48L2t3aWt1aS1idXR0b24taWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keVwiPlxuICAgICAgPGRpdlxuICAgICAgICBbY2xhc3NdPVwiYWdlbnRTZXJ2aWNlLnNob3dNYXB2aWV3ID8gJ21hcCcgOiAnbWFwLWhpZGRlbidcIlxuICAgICAgICAjbWFwRWxlbWVudFxuICAgICAgPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLWxpc3RcIj5cbiAgICAgICAgPGN1c3RvbWVyLWxpc3RcbiAgICAgICAgICBbY3VzdG9tZXJzXT1cImN1c3RvbWVyc1wiXG4gICAgICAgICAgKG5leHRTdGVwKT1cImdvVG9OZXh0U3RlcCgkZXZlbnQpXCJcbiAgICAgICAgICAocmVtb3ZlVGFzayk9XCJoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzaygkZXZlbnQpXCJcbiAgICAgICAgPjwvY3VzdG9tZXItbGlzdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImFnZW50U2VydmljZS5nZXRBZGRUYXNrKClcIj5cbiAgICA8YWRkLWN1c3RvbWVyIChhZGRUYXNrKT1cImhhbmRsZU9uQ2xpY2tBZGRUYXNrKCRldmVudClcIj48L2FkZC1jdXN0b21lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
549
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIva3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIva3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFFWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBRWhFLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBUWpELE1BQU0sT0FBTyw2QkFBNkI7SUFtQ3hDLFlBQ1MsVUFBc0IsRUFDdEIsVUFBc0IsRUFDckIsV0FBdUIsRUFDWSxhQUErQjtRQUhuRSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDWSxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFyQzVFLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBR3RCLGFBQVEsR0FBZSxFQUFFLENBQUM7UUFHMUIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHOUIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHN0IsZUFBVSxHQUFHLElB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QUFjLENBQUMsTUFBaUI7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELHFCQUFxQixDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsQ0FBQyxJQUFHLENBQUM7OzhJQXZpQmpCLDZCQUE2QixnR0F1QzlCLGdCQUFnQjtrSUF2Q2YsNkJBQTZCLDJSQWlDN0IsYUFBYSxnREMzRDFCLGdpTEFxS0E7NEZEM0lhLDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxXQUFXLEVBQUUseUNBQXlDO29CQUN0RCxTQUFTLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQztpQkFDdkQ7OzBCQXdDSSxNQUFNOzJCQUFDLGdCQUFnQjs0Q0FyQzFCLFdBQVc7c0JBRFYsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLE9BQU87c0JBRE4sTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU07Z0JBSVAsY0FBYztzQkFEYixNQUFNO2dCQWlCc0MsVUFBVTtzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXBJbmZvV2luZG93LCBNYXBNYXJrZXIgfSBmcm9tICdAYW5ndWxhci9nb29nbGUtbWFwcyc7XG5pbXBvcnQgeyBUdWlTaGVldE9wdGlvbnMgfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tbW9iaWxlJztcbmltcG9ydCB7IFR1aURpYWxvZ0NvbnRleHQsIFR1aURpYWxvZ1NlcnZpY2UgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBQb2x5bW9ycGhldXNDb250ZW50IH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IGxvZ01ldGhvZCB9IGZyb20gJ2t3aWtpZC10b29sa2l0JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9tYXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4va3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURBZ2VudERhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGFnZW50Q29uZmlnOiBhbnkgPSB7fTtcblxuICBASW5wdXQoKVxuICB0YXNrTGlzdDogQXJyYXk8YW55PiA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBuZXh0U3RlcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgYWRkVGFzayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVtb3ZlVGFzayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyVGFza0xpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgYXBpTG9hZGVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHNob3dNYXB2aWV3ID0gdHJ1ZTtcblxuICBpc01vYmlsZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBsaXN0T3BlbiA9IHRydWU7XG5cbiAgcmVhZG9ubHkgb3B0aW9uczogUGFydGlhbDxUdWlTaGVldE9wdGlvbnM+ID0ge1xuICAgIHN0b3BzOiBbJ2NhbGMoNXJlbSArIDc0dncpJywgJ2NhbGMoOXJlbSArIDc0dncpJ11cbiAgfTtcblxuICBAVmlld0NoaWxkKE1hcEluZm9XaW5kb3csIHsgc3RhdGljOiBmYWxzZSB9KSBpbmZvV2luZG93OiBNYXBJbmZvV2luZG93O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtYXBTZXJ2aWNlOiBNYXBTZXJ2aWNlLFxuICAgIHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChUdWlEaWFsb2dTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2U6IFR1aURpYWxvZ1NlcnZpY2VcbiAgKSB7XG4gICAgY29uc3QgRFNMU2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgRFNMU2NyaXB0LnNyYyA9IHRoaXMuYWdlbnRDb25maWcuZ29vZ2xlTWFwc0FQSTtcbiAgICBEU0xTY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoRFNMU2NyaXB0KTtcblxuICAgIHRoaXMuYXBpTG9hZGVkID0gaHR0cENsaWVudFxuICAgICAgLmpzb25wKFxuICAgICAgICAnaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2pzP2tleT1BSXphU3lBNjNKWTBqYTZaR0lSNzk2dkpxWkFSYzBjMmo4VmdwaWsmdj0zLmV4cCZsaWJyYXJpZXM9Z2VvbWV0cnksZHJhd2luZyxwbGFjZXMnLFxuICAgICAgICAnY2FsbGJhY2snXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKGZhbHNlKSlcbiAgICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFnZW50Q29uZmlnLnNob3dNYXBzID09IHRydWUgfHwgdGhpcy5hZ2VudENvbmZpZy5zaG93TWFwcyA9PSBmYWxzZVxuICAgICAgPyAodGhpcy5zaG93TWFwdmlldyA9IHRoaXMuYWdlbnRDb25maWcuc2hvd01hcHMpXG4gICAgICA6IG51bGw7XG5cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGdvVG9OZXh0U3RlcChlKSB7XG4gICAgdGhpcy5uZXh0U3RlcC5lbWl0KGUpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja0FkZFRhc2sodGFzaykge1xuICAgIHRoaXMuYWRkVGFzay5lbWl0KHRhc2spO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja1JlbW92ZVRhc2sodGFzaykge1xuICAgIHRoaXMucmVtb3ZlVGFzay5lbWl0KHRhc2spO1xuICB9XG5cbiAgaGFuZGxlT25GaWx0ZXJUYXNrTGlzdChmaWx0ZXIpIHtcbiAgICB0aGlzLmZpbHRlclRhc2tMaXN0LmVtaXQoZmlsdGVyKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICB9XG5cbiAgdG9nZ2xlTWFwdmlldygpIHtcbiAgICB0aGlzLnNob3dNYXB2aWV3ID0gIXRoaXMuc2hvd01hcHZpZXc7XG4gIH1cblxuICBvcGVuID0gZmFsc2U7XG5cbiAgb25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICB9XG5cbiAgZm9ybUNvbmZpZyA9IHtcbiAgICBrZXk6ICdBRERfVEFTSycsXG4gICAgdGl0bGU6ICdBZGQgVGFzaycsXG4gICAgZmllbGRzOiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ25hbWUnLFxuICAgICAgICBsYWJlbDogJ0N1c3RvbWVyIE5hbWUnLFxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2VzOiBbXSxcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBpc19mb3VuZDogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdPQkpFQ1QnLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnQUxMX0ZPUk1TX0RBVEEnLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJC5BRERfVEFTSy5uYW1lJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHtcbiAgICAgICAgICAgICAgICAgIGlzX3ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBbJ09OX0lOSVQnXSxcbiAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJ1ZBTFVFX0NIRUNLJyxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnT0JKRUNUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ0FMTF9GT1JNU19EQVRBJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJyQuQUREX1RBU0submFtZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ0lTX05PVF9FTVBUWSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJ1NFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFJyxcbiAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246ICcxJyxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRLZXk6ICduYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ09CSkVDVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdBTExfRk9STVNfREFUQScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICckLkFERF9UQVNLLm5hbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnUGxlYXNlIGVudGVyIHRoZSBDdXN0b21lciBOYW1lJyxcbiAgICAgICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICAgICAgY2FzZTogJ2RlZmF1bHQnXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6ICd0ZXh0J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAncGhvbmUnLFxuICAgICAgICBsYWJlbDogJ1Bob25lIE51bWJlcicsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZXM6IFtdLFxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ09CSkVDVCcsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICBrZXk6ICdBTExfRk9STVNfREFUQScsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICckLkFERF9UQVNLLnBob25lJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHtcbiAgICAgICAgICAgICAgICAgIGlzX3ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBbJ09OX0lOSVQnXSxcbiAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJ1ZBTFVFX0NIRUNLJyxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnT0JKRUNUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ0FMTF9GT1JNU19EQVRBJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJyQuQUREX1RBU0sucGhvbmUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdJU19OT1RfRU1QVFknXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdTRVRfRklFTERfREVGQVVMVF9WQUxVRScsXG4gICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiAnMScsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkS2V5OiAncGhvbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnT0JKRUNUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ0FMTF9GT1JNU19EQVRBJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJyQuQUREX1RBU0sucGhvbmUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnUGxlYXNlIGVudGVyIHRoZSBQaG9uZSBOdW1iZXInLFxuICAgICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgICBjYXNlOiAnZGVmYXVsdCdcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogJ251bWJlcidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2FkZHJlc3MnLFxuICAgICAgICBsYWJlbDogJ0FkZHJlc3MnLFxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2VzOiBbXSxcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBpc19mb3VuZDogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdPQkpFQ1QnLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnQUxMX0ZPUk1TX0RBVEEnLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJC5BRERfVEFTSy5hZGRyZXNzJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHtcbiAgICAgICAgICAgICAgICAgIGlzX3ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBbJ09OX0lOSVQnXSxcbiAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJ1ZBTFVFX0NIRUNLJyxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnT0JKRUNUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ0FMTF9GT1JNU19EQVRBJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJyQuQUREX1RBU0suYWRkcmVzcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ0lTX05PVF9FTVBUWSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJ1NFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFJyxcbiAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246ICcxJyxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRLZXk6ICdhZGRyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ09CSkVDVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdBTExfRk9STVNfREFUQScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICckLkFERF9UQVNLLmFkZHJlc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnUGxlYXNlIGVudGVyIHRoZSBBZGRyZXNzJyxcbiAgICAgICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICAgICAgY2FzZTogJ2RlZmF1bHQnXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6ICd0ZXh0J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnY2l0eScsXG4gICAgICAgIGxhYmVsOiAnQ2l0eScsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZXM6IFtdLFxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ09CSkVDVCcsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICBrZXk6ICdBTExfRk9STVNfREFUQScsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICckLkFERF9UQVNLLmNpdHknXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjoge1xuICAgICAgICAgICAgICAgICAgaXNfdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM6IFsnT05fSU5JVCddLFxuICAgICAgICAgICAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnVkFMVUVfQ0hFQ0snLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdPQkpFQ1QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnQUxMX0ZPUk1TX0RBVEEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJC5BRERfVEFTSy5jaXR5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnSVNfTk9UX0VNUFRZJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnU0VUX0ZJRUxEX0RFRkFVTFRfVkFMVUUnLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogJzEnLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEtleTogJ2NpdHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnT0JKRUNUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ0FMTF9GT1JNU19EQVRBJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJyQuQUREX1RBU0suY2l0eSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICdQbGVhc2UgZW50ZXIgdGhlIENpdHknLFxuICAgICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgICBjYXNlOiAnZGVmYXVsdCdcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogJ3RleHQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdsb2NhdGlvbicsXG4gICAgICAgIGxhYmVsOiAnTG9jYXRpb24gVVJMJyxcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlczogW10sXG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgc291cmNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnT0JKRUNUJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogJ0FMTF9GT1JNU19EQVRBJyxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJyQuQUREX1RBU0subG9jYXRpb24nXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjoge1xuICAgICAgICAgICAgICAgICAgaXNfdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM6IFsnT05fSU5JVCddLFxuICAgICAgICAgICAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnVkFMVUVfQ0hFQ0snLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdPQkpFQ1QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnQUxMX0ZPUk1TX0RBVEEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJC5BRERfVEFTSy5sb2NhdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ0lTX05PVF9FTVBUWSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJ1NFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFJyxcbiAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246ICcxJyxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRLZXk6ICdsb2NhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdPQkpFQ1QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnQUxMX0ZPUk1TX0RBVEEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJC5BRERfVEFTSy5sb2NhdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICdQbGVhc2UgZW50ZXIgdGhlIExvY2F0aW9uIFVSTCcsXG4gICAgICAgICAgcmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICAgIGNhc2U6ICdkZWZhdWx0J1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiAndGV4dCdcbiAgICAgIH1cbiAgICBdLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIGhlYWRlcjoge1xuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICBsYWJlbDogJ0FkZCBUYXNrJ1xuICAgICAgICB9LFxuICAgICAgICBzdGVwczoge1xuICAgICAgICAgIGhpZGRlbjogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZm9vdGVyOiB7XG4gICAgICAgIHZpZXdGb3Jtc0J1dHRvbjoge1xuICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICBsYWJlbDogJ1ZpZXcgRm9ybXMnXG4gICAgICAgIH0sXG4gICAgICAgIHNhdmVCdXR0b246IHtcbiAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgIGxhYmVsOiAnU3VibWl0J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGFsbEZvcm1zRGF0YSA9IHt9O1xuXG4gIFN0cmluZyA9IFN0cmluZztcblxuICBvbk9ic2N1cmVkKG9ic2N1cmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKG9ic2N1cmVkKSB7XG4gICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvbkFjdGl2ZVpvbmUoYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuID0gYWN0aXZlICYmIHRoaXMub3BlbjtcbiAgfVxuXG4gIHNob3dEaWFsb2coY29udGVudDogUG9seW1vcnBoZXVzQ29udGVudDxUdWlEaWFsb2dDb250ZXh0Pik6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oY29udGVudCwgeyBjbG9zZWFibGU6IGZhbHNlLCBkaXNtaXNzaWJsZTogZmFsc2UgfSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG9wZW5JbmZvV2luZG93KG1hcmtlcjogTWFwTWFya2VyKSB7XG4gICAgdGhpcy5pbmZvV2luZG93Lm9wZW4obWFya2VyKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tTYXZlRm9ybShlKSB7XG4gICAgdGhpcy5oYW5kbGVPbkNsaWNrQWRkVGFzayhlLmRhdGEpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja1ZpZXdGb3JtcyhlKSB7fVxufVxuIiwiPGRpdiBjbGFzcz1cImt3aWtpZC1hZ2VudC1kYXNoYm9hcmRcIiAqbmdJZj1cIiFsb2FkaW5nXCI+XG4gIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImRhc2hib2FyZC1oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtaGVhZGVyLWNsaWVudC1uYW1lXCI+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uLWljb25cbiAgICAgICAgICBbaWNvbl09XCIndHVpSWNvbkxpbmsnXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICA+PC9rd2lrdWktYnV0dG9uLWljb24+XG5cbiAgICAgICAge3sgYWdlbnRDb25maWcuY2xpZW50TmFtZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiAodHVpQWN0aXZlWm9uZUNoYW5nZSk9XCJvbkFjdGl2ZVpvbmUoJGV2ZW50KVwiPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvbi1pY29uXG4gICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25TZXR0aW5nc0xhcmdlJ1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwib25DbGljaygpXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgIFt0dWlEcm9wZG93bl09XCJkcm9wZG93bkNvbnRlbnRcIlxuICAgICAgICAgIFt0dWlEcm9wZG93bk1hbnVhbF09XCJvcGVuXCJcbiAgICAgICAgICAodHVpT2JzY3VyZWQpPVwib25PYnNjdXJlZCgkZXZlbnQpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbi1pY29uPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duQ29udGVudD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1kcm9wZG93blwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZHJvcGRvd24taGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxoMj57eyBhZ2VudENvbmZpZy5hZ2VudE5hbWUgfX08L2gyPlxuICAgICAgICAgICAgICA8aDQ+QWdlbnQgSUQ6e3sgYWdlbnRDb25maWcuYWdlbnRJZCB9fTwvaDQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtZHJvcGRvd24tYm9keVwiXG4gICAgICAgICAgICAgIHR1aUdyb3VwXG4gICAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtyb3VuZGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW29yaWVudGF0aW9uXT1cIid2ZXJ0aWNhbCdcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCInbSdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGhpcy5hZ2VudENvbmZpZy5zaG93TWFwc1wiXG4gICAgICAgICAgICAgICAgaWQ9XCJcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3sgc2hvd01hcHZpZXcgPyAnSGlkZSBNYXBzJyA6ICdTaG93IE1hcHMnIH19XCJcbiAgICAgICAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1kcm9wZG93bi1idXR0b25zXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgICAgICAgICAgaWNvbj1cInt7IHNob3dNYXB2aWV3ID8gJ3R1aUljb25FeWVPZmYnIDogJ3R1aUljb25FeWUnIH19XCJcbiAgICAgICAgICAgICAgICBpY29uUmlnaHQ9XCJcIlxuICAgICAgICAgICAgICAgIFtzaGFwZV09XCJudWxsXCJcbiAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgc3R5bGVzPVwicGFkZGluZzogMHJlbSAhaW1wb3J0YW50XCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJ0b2dnbGVNYXB2aWV3KClcIlxuICAgICAgICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkFkZCBUYXNrXCJcbiAgICAgICAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1kcm9wZG93bi1idXR0b25zXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25BZGRSb3dMYXJnZSdcIlxuICAgICAgICAgICAgICAgIGljb25SaWdodD1cIlwiXG4gICAgICAgICAgICAgICAgW3NoYXBlXT1cIm51bGxcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJzaG93RGlhbG9nKHRlbXBsYXRlKVwiXG4gICAgICAgICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiUmVmcmVzaFwiXG4gICAgICAgICAgICAgICAgc3R5bGVzPVwiXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtZHJvcGRvd24tYnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cIm1vbm9cIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cIid0dWlJY29uUmVmcmVzaEN3J1wiXG4gICAgICAgICAgICAgICAgaWNvblJpZ2h0PVwiXCJcbiAgICAgICAgICAgICAgICBbc2hhcGVdPVwibnVsbFwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInJlZnJlc2goKVwiXG4gICAgICAgICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZHJvcGRvd24tZm9vdGVyXCI+XG4gICAgICAgICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiTG9nb3V0XCJcbiAgICAgICAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1kcm9wZG93bi1idXR0b25zXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25Mb2dPdXQnXCJcbiAgICAgICAgICAgICAgICBpY29uUmlnaHQ9XCJcIlxuICAgICAgICAgICAgICAgIFtzaGFwZV09XCJudWxsXCJcbiAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZ29Ub05leHRTdGVwKCdsb2dvdXQnKVwiXG4gICAgICAgICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImFwaUxvYWRlZCB8IGFzeW5jXCJcbiAgICAgICAgW2NsYXNzXT1cInNob3dNYXB2aWV3ID8gJ21hcCcgOiAnbWFwLWhpZGRlbidcIlxuICAgICAgPlxuICAgICAgICA8Z29vZ2xlLW1hcCBoZWlnaHQ9XCIxMDAlXCIgd2lkdGg9XCIxMDAlXCIgW29wdGlvbnNdPVwidGhpcy5tYXBTZXJ2aWNlLm1hcFwiPlxuICAgICAgICAgIDxtYXAtbWFya2VyXG4gICAgICAgICAgICAjbWFya2VyPVwibWFwTWFya2VyXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgbWFya2VyUG9zaXRpb24gb2YgdGhpcy5tYXBTZXJ2aWNlLm1hcmtlcnM7XG4gICAgICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cIm1hcmtlclBvc2l0aW9uXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJ7IHRleHQ6IFN0cmluZyhpbmRleCksIGNvbG9yOiAnI0ZGRicgfVwiXG4gICAgICAgICAgICAobWFwQ2xpY2spPVwib3BlbkluZm9XaW5kb3cobWFya2VyKVwiXG4gICAgICAgICAgPjwvbWFwLW1hcmtlcj5cbiAgICAgICAgICA8bWFwLWRpcmVjdGlvbnMtcmVuZGVyZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHRoaXMubWFwU2VydmljZS5kaXJlY3Rpb25zUmVzdWx0cyQgfCBhc3luYyBhcyBkaXJlY3Rpb25zUmVzdWx0c1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtkaXJlY3Rpb25zXT1cImRpcmVjdGlvbnNSZXN1bHRzXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInRoaXMubWFwU2VydmljZS5kaXJlY3Rpb25zUmVuZGVyT3B0aW9uXCJcbiAgICAgICAgICA+PC9tYXAtZGlyZWN0aW9ucy1yZW5kZXJlcj5cbiAgICAgICAgICA8bWFwLWluZm8td2luZG93PkluZm8gV2luZG93IGNvbnRlbnQ8L21hcC1pbmZvLXdpbmRvdz5cbiAgICAgICAgPC9nb29nbGUtbWFwPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItbGlzdFwiPlxuICAgICAgICA8Y3VzdG9tZXItbGlzdFxuICAgICAgICAgIFtjdXN0b21lcnNdPVwidGFza0xpc3RcIlxuICAgICAgICAgIFthZ2VudENvbmZpZ109XCJhZ2VudENvbmZpZ1wiXG4gICAgICAgICAgKG5leHRTdGVwKT1cImdvVG9OZXh0U3RlcCgkZXZlbnQpXCJcbiAgICAgICAgICAocmVtb3ZlVGFzayk9XCJoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzaygkZXZlbnQpXCJcbiAgICAgICAgICAoZmlsdGVyVGFza0xpc3QpPVwiaGFuZGxlT25GaWx0ZXJUYXNrTGlzdCgkZXZlbnQpXCJcbiAgICAgICAgPjwvY3VzdG9tZXItbGlzdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImt3aWtpZC1hZ2VudC1kYXNoYm9hcmQtbG9hZGVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gIDxzcGFuIGNsYXNzPVwibG9hZGVyXCI+PC9zcGFuPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LW9ic2VydmVyPlxuICA8ZGl2IGNsYXNzPVwiYWRkLXRhc2staGVhZGVyXCI+XG4gICAgPGgyPkFkZCBUYXNrPC9oMj5cbiAgICA8a3dpa3VpLWJ1dHRvbi1pY29uXG4gICAgICBpY29uPVwidHVpSWNvblhcIlxuICAgICAgaWQ9XCJcIlxuICAgICAgbGFiZWw9XCJDbG9zZVwiXG4gICAgICBzdHlsZXM9XCJcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICBbc2hhcGVdPVwibnVsbFwiXG4gICAgICBzaXplPVwibVwiXG4gICAgICAob25DbGljayk9XCJvYnNlcnZlci5jb21wbGV0ZSgpXCJcbiAgICA+PC9rd2lrdWktYnV0dG9uLWljb24+XG4gIDwvZGl2PlxuICA8a3dpa2lkLWZvcm0tdmlld1xuICAgIFtmb3JtQ29uZmlnXT1cImZvcm1Db25maWdcIlxuICAgIFthbGxGb3Jtc0RhdGFdPVwiYWxsRm9ybXNEYXRhXCJcbiAgICBbaXNNb2JpbGVWaWV3XT1cInRydWVcIlxuICAgIChvbkNsaWNrVmlld0Zvcm1zKT1cInRoaXMuaGFuZGxlT25DbGlja1ZpZXdGb3JtcygkZXZlbnQpXCJcbiAgICAob25DbGlja1NhdmVGb3JtKT1cInRoaXMuaGFuZGxlT25DbGlja1NhdmVGb3JtKCRldmVudClcIlxuICA+PC9rd2lraWQtZm9ybS12aWV3PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==