@colijnit/sharedcomponents 257.1.10 → 257.1.11

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 (31) hide show
  1. package/bundles/colijnit-sharedcomponents.umd.js +1287 -1261
  2. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
  3. package/colijnit-sharedcomponents.d.ts +18 -18
  4. package/colijnit-sharedcomponents.metadata.json +1 -1
  5. package/esm2015/colijnit-sharedcomponents.js +19 -19
  6. package/esm2015/lib/components/send-method-dialog/components/pdf-preview/pdf-preview.component.js +13 -7
  7. package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.js +9 -3
  8. package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.js +15 -9
  9. package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.js +6 -3
  10. package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +26 -14
  11. package/esm2015/lib/res/dictionary/dictionaries.js +3 -3
  12. package/fesm2015/colijnit-sharedcomponents.js +312 -278
  13. package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
  14. package/lib/components/send-method-dialog/components/pdf-preview/pdf-preview.component.d.ts +5 -3
  15. package/lib/components/send-method-dialog/components/pdf-preview/style/_layout.scss +4 -0
  16. package/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.d.ts +3 -1
  17. package/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.d.ts +3 -1
  18. package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.d.ts +2 -2
  19. package/lib/components/send-method-dialog/send-method-dialog.component.d.ts +4 -7
  20. package/lib/res/dictionary/dictionaries.d.ts +15 -0
  21. package/package.json +1 -1
  22. package/358.645812766f7a400d0d38.js +0 -1
  23. package/3rdpartylicenses.txt +0 -2222
  24. package/427.c5ac6ff55eed40286273.js +0 -1
  25. package/977.bd6291f9ee6f6ddf91f1.js +0 -1
  26. package/favicon.ico +0 -0
  27. package/index.html +0 -12
  28. package/main.cb0160b06b63bc907f13.js +0 -1
  29. package/polyfills.907fe9d1887c5de17993.js +0 -1
  30. package/runtime.2f227fcce1a3e45cf104.js +0 -1
  31. package/styles.ac76ee4d03248189b18e.css +0 -1
@@ -1,8 +1,7 @@
1
- import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { Icon } from '../../enum/icon.enum';
3
3
  import { IconCacheService } from '../../service/icon-cache.service';
4
4
  import { animate, state, style, transition, trigger } from '@angular/animations';
5
- import { SharedService } from '../../service/shared.service';
6
5
  import { SendMethodService } from './service/send-method.service';
7
6
  import { SendMethod } from '../../model/send-method';
8
7
  import { SendMethodType } from '@colijnit/mainapi/build/enum/send-method-type.enum';
@@ -17,10 +16,8 @@ export const sendMethodsWithIcon = [
17
16
  new SendMethod(SendMethodType.Pdf, "Pdf", Icon.Pdf)
18
17
  ];
19
18
  export class SendMethodDialogComponent {
20
- constructor(iconCacheService, _changeDetector, _sharedService, _sendMethodService) {
19
+ constructor(iconCacheService, _sendMethodService) {
21
20
  this.iconCacheService = iconCacheService;
22
- this._changeDetector = _changeDetector;
23
- this._sharedService = _sharedService;
24
21
  this._sendMethodService = _sendMethodService;
25
22
  this.icons = Icon;
26
23
  this.printerList = [];
@@ -35,6 +32,7 @@ export class SendMethodDialogComponent {
35
32
  this.additionalFileName = '';
36
33
  this.additionalFileContents = '';
37
34
  this.pdfDoc = '';
35
+ this.disablePdfPreview = false;
38
36
  this.emailUnsignedPossible = false;
39
37
  this.reportingDocumentPrintRequestChange = new EventEmitter();
40
38
  this.reportingDocumentEmailRequestChange = new EventEmitter();
@@ -46,7 +44,6 @@ export class SendMethodDialogComponent {
46
44
  this.showFilePreview = new EventEmitter();
47
45
  this.loadDefaultPrinterName = new EventEmitter();
48
46
  this.sendMethods = sendMethodsWithIcon;
49
- this.upAndLoaded = false;
50
47
  this.startUp = true;
51
48
  this.showFax = true;
52
49
  this.showPrint = true;
@@ -108,6 +105,15 @@ export class SendMethodDialogComponent {
108
105
  else if (sendMethod.code === SendMethodType.Pdf && this.showPdf) {
109
106
  this.navigationItems.nativeElement.scrollLeft = this.pdfItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
110
107
  }
108
+ if (this.activeSendMethod.code === SendMethodType.Print) {
109
+ this.showFilePreview.emit(this.reportingDocumentPrintRequest.reportId);
110
+ }
111
+ else if (this.activeSendMethod.code === SendMethodType.Email) {
112
+ this.showFilePreview.emit(this.reportingDocumentEmailRequest.reportId);
113
+ }
114
+ else if (this.activeSendMethod.code === SendMethodType.Pdf) {
115
+ this.showFilePreview.emit(this.reportingDocumentPdfRequest.reportId);
116
+ }
111
117
  }
112
118
  _initDefaultSendMethod() {
113
119
  if (this.defaultSendMethod) {
@@ -156,9 +162,11 @@ SendMethodDialogComponent.decorators = [
156
162
  <div class="co-dialog-header-title" [textContent]="headerTitle"></div>
157
163
  </div>
158
164
  <div class="dialog-navigation-wrapper">
159
- <div class="send-button-wrapper" *ngFor="let sendMethod of sendMethods; let index = index"
160
- [class.selected]="activeSendMethod ? sendMethod.code === activeSendMethod.code : index === 0"
161
- (click)="handleSendMethodClick(sendMethod)">
165
+ <div
166
+ *ngFor="let sendMethod of sendMethods; let index = index"
167
+ class="send-button-wrapper"
168
+ [class.selected]="activeSendMethod ? sendMethod.code === activeSendMethod.code : index === 0"
169
+ (click)="handleSendMethodClick(sendMethod)">
162
170
  <div class="custom-button-title" [textContent]="sendMethod.description"></div>
163
171
  </div>
164
172
  </div>
@@ -181,6 +189,7 @@ SendMethodDialogComponent.decorators = [
181
189
  [additionalFileContents]="additionalFileContents"
182
190
  [additionalFileName]="additionalFileName"
183
191
  [pdfDoc]="pdfDoc"
192
+ [disablePdfPreview]="disablePdfPreview"
184
193
  [defaultPrinterName]="defaultPrinterName"
185
194
  (additionalFileChangeEvent)="additionalFileChangeEvent.emit($event)"
186
195
  (showFilePreview)="showFilePreview.emit($event)"
@@ -192,8 +201,10 @@ SendMethodDialogComponent.decorators = [
192
201
  [emailAddresses]="emailAddresses"
193
202
  [layouts]="emailLayouts"
194
203
  [pdfDoc]="pdfDoc"
204
+ [disablePdfPreview]="disablePdfPreview"
195
205
  [emailUnsignedPossible]="emailUnsignedPossible"
196
- (showFilePreview)="showFilePreview.emit($event)">
206
+ (showFilePreview)="showFilePreview.emit($event)"
207
+ (loadDefaultPrinterName)="loadDefaultPrinterName.emit($event)">
197
208
  </co-send-method-email>
198
209
  </div>
199
210
  <div #ediItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showEdi">
@@ -212,7 +223,9 @@ SendMethodDialogComponent.decorators = [
212
223
  <co-send-method-pdf
213
224
  [layouts]="printLayouts"
214
225
  [pdfDoc]="pdfDoc"
215
- (showFilePreview)="showFilePreview.emit($event)">
226
+ [disablePdfPreview]="disablePdfPreview"
227
+ (showFilePreview)="showFilePreview.emit($event)"
228
+ (loadDefaultPrinterName)="loadDefaultPrinterName.emit($event)">
216
229
  </co-send-method-pdf>
217
230
  </div>
218
231
  </div>
@@ -241,8 +254,6 @@ SendMethodDialogComponent.decorators = [
241
254
  ];
242
255
  SendMethodDialogComponent.ctorParameters = () => [
243
256
  { type: IconCacheService },
244
- { type: ChangeDetectorRef },
245
- { type: SharedService },
246
257
  { type: SendMethodService }
247
258
  ];
248
259
  SendMethodDialogComponent.propDecorators = {
@@ -273,6 +284,7 @@ SendMethodDialogComponent.propDecorators = {
273
284
  additionalFileName: [{ type: Input }],
274
285
  additionalFileContents: [{ type: Input }],
275
286
  pdfDoc: [{ type: Input }],
287
+ disablePdfPreview: [{ type: Input }],
276
288
  emailUnsignedPossible: [{ type: Input }],
277
289
  reportingDocumentPrintRequestChange: [{ type: Output }],
278
290
  reportingDocumentEmailRequestChange: [{ type: Output }],
@@ -285,4 +297,4 @@ SendMethodDialogComponent.propDecorators = {
285
297
  loadDefaultPrinterName: [{ type: Output }],
286
298
  showClass: [{ type: HostBinding, args: ['class.co-send-method-dialog',] }]
287
299
  };
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1tZXRob2QtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbmQtbWV0aG9kLWRpYWxvZy9zZW5kLW1ldGhvZC1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xLLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRS9FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUkzRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBTWxGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFpQjtJQUMvQyxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzVELElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDOUQsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLEtB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QUFJLEVBQUUsVUFBVSxFQUFDO3VCQUdsRCxTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQzs4QkFHeEMsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQzt1QkFHL0MsU0FBUyxTQUFDLFVBQVUsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7MEJBR3hDLEtBQUs7NENBR0wsS0FBSzs0Q0FHTCxLQUFLOzBDQUdMLEtBQUs7MkJBR0wsS0FBSzsyQkFHTCxLQUFLO2lDQUdMLEtBQUs7MEJBTUwsS0FBSzs2QkFHTCxLQUFLO2dDQUdMLEtBQUs7NkJBR0wsS0FBSzsrQkFHTCxLQUFLO3NCQUdMLEtBQUs7c0NBR0wsS0FBSztxQ0FHTCxLQUFLO2lDQUdMLEtBQUs7cUNBR0wsS0FBSztxQkFHTCxLQUFLO29DQUdMLEtBQUs7a0RBR0wsTUFBTTtrREFHTixNQUFNO2dEQUdOLE1BQU07b0NBR04sTUFBTTt5QkFHTixNQUFNO3NCQUdOLE1BQU07d0NBR04sTUFBTTs4QkFHTixNQUFNO3FDQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1NoYXJlZFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2Uvc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1lbWFpbC5ibyc7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLXByaW50LmJvJztcclxuaW1wb3J0IHtSZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnRpbmctZG9jdW1lbnQtcGRmLWJhc2UtcmVxdWVzdCc7XHJcbmltcG9ydCB7U2VuZE1ldGhvZFNlcnZpY2V9IGZyb20gJy4vc2VydmljZS9zZW5kLW1ldGhvZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtTZW5kTWV0aG9kfSBmcm9tICcuLi8uLi9tb2RlbC9zZW5kLW1ldGhvZCc7XHJcbmltcG9ydCB7U2VuZE1ldGhvZFR5cGV9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vc2VuZC1tZXRob2QtdHlwZS5lbnVtJztcclxuaW1wb3J0IHtQcmludGVyfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wcmludGVyLmJvJztcclxuaW1wb3J0IHtSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnRpbmctZG9jdW1lbnQtZW1haWwtc2lnbi1kb2MtYmFzZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtSZXBvcnRpbmdEb2N1bWVudFByaW50U2lnbkRvY0Jhc2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnRpbmctZG9jdW1lbnQtcHJpbnQtc2lnbi1kb2MtYmFzZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudCc7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VuZE1ldGhvZHNXaXRoSWNvbjogU2VuZE1ldGhvZFtdID0gW1xyXG4gIG5ldyBTZW5kTWV0aG9kKFNlbmRNZXRob2RUeXBlLkZheCwgXCJGYXhcIiwgSWNvbi5QcmludFJlZ3VsYXIpLFxyXG4gIG5ldyBTZW5kTWV0aG9kKFNlbmRNZXRob2RUeXBlLlByaW50LCBcIlByaW50XCIsIEljb24uUHJpbnRTb2xpZCksXHJcbiAgbmV3IFNlbmRNZXRob2QoU2VuZE1ldGhvZFR5cGUuRW1haWwsIFwiRW1haWxcIiwgSWNvbi5BdFNvbGlkKSxcclxuICBuZXcgU2VuZE1ldGhvZChTZW5kTWV0aG9kVHlwZS5FZGksIFwiRWRpXCIsIEljb24uRmlsZUV4cG9ydFNvbGlkKSxcclxuICBuZXcgU2VuZE1ldGhvZChTZW5kTWV0aG9kVHlwZS5FbWFpbFRlbXBsYXRlLCBcIkVtYWlsIHRlbXBsYXRlXCIsIEljb24uRW52ZWxvcGVSZWd1bGFyKSxcclxuICBuZXcgU2VuZE1ldGhvZChTZW5kTWV0aG9kVHlwZS5TbXMsIFwiU21zXCIsIEljb24uTWVzc2FnZVNtc1NvbGlkKSxcclxuICBuZXcgU2VuZE1ldGhvZChTZW5kTWV0aG9kVHlwZS5XZWJTZXJ2aWNlLCBcIldlYnNlcnZpY2VcIiwgSWNvbi5QcmludFJlZ3VsYXIpLFxyXG4gIG5ldyBTZW5kTWV0aG9kKFNlbmRNZXRob2RUeXBlLlBkZiwgXCJQZGZcIiwgSWNvbi5QZGYpXHJcbl1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tc2VuZC1tZXRob2QtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8Y28tZGlhbG9nIGlkPVwic2VuZE9wdGlvbnNEaWFsb2dcIiBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIiBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cImNsb3NlQ2xpY2suZW1pdCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctaGVhZGVyLXRpdGxlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5FbnZlbG9wZVJlZ3VsYXIpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJoZWFkZXJUaXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctbmF2aWdhdGlvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZW5kLWJ1dHRvbi13cmFwcGVyXCIgKm5nRm9yPVwibGV0IHNlbmRNZXRob2Qgb2Ygc2VuZE1ldGhvZHM7IGxldCBpbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiYWN0aXZlU2VuZE1ldGhvZCA/IHNlbmRNZXRob2QuY29kZSA9PT0gYWN0aXZlU2VuZE1ldGhvZC5jb2RlIDogaW5kZXggPT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVTZW5kTWV0aG9kQ2xpY2soc2VuZE1ldGhvZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tYnV0dG9uLXRpdGxlXCIgW3RleHRDb250ZW50XT1cInNlbmRNZXRob2QuZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGVudC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbmQtbWV0aG9kcy13cmFwcGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgI25hdmlnYXRpb25JdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24td3JhcHBlclwiIFtjbGFzcy5zbW9vdGgtc2Nyb2xsaW5nXT1cIiFzdGFydFVwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI2ZheEl0ZW1zIGNsYXNzPVwic2VuZC1tZXRob2QtbmF2aWdhdGlvbi1jb250ZW50IGNvLXNtYWxsLXNjcm9sbGJhclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI3ByaW50SXRlbXMgY2xhc3M9XCJzZW5kLW1ldGhvZC1uYXZpZ2F0aW9uLWNvbnRlbnQgY28tc21hbGwtc2Nyb2xsYmFyXCIgKm5nSWY9XCJzaG93UHJpbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1zZW5kLW1ldGhvZC1wcmludGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1ByaW50ZXJMYXlvdXRzRW5hYmxlZF09XCJpc1ByaW50ZXJMYXlvdXRzRW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmludGVyTGlzdF09XCJwcmludGVyTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRzXT1cInByaW50TGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0FkZGl0aW9uYWxEb2NFbmFibGVkXT1cImlzQWRkaXRpb25hbERvY0VuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWRkaXRpb25hbEZpbGVDb250ZW50c109XCJhZGRpdGlvbmFsRmlsZUNvbnRlbnRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FkZGl0aW9uYWxGaWxlTmFtZV09XCJhZGRpdGlvbmFsRmlsZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGRmRG9jXT1cInBkZkRvY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0UHJpbnRlck5hbWVdPVwiZGVmYXVsdFByaW50ZXJOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZGl0aW9uYWxGaWxlQ2hhbmdlRXZlbnQpPVwiYWRkaXRpb25hbEZpbGVDaGFuZ2VFdmVudC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2hvd0ZpbGVQcmV2aWV3KT1cInNob3dGaWxlUHJldmlldy5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9hZERlZmF1bHRQcmludGVyTmFtZSk9XCJsb2FkRGVmYXVsdFByaW50ZXJOYW1lLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9jby1zZW5kLW1ldGhvZC1wcmludGVyPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjZW1haWxJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dFbWFpbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXNlbmQtbWV0aG9kLWVtYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbWFpbEFkZHJlc3Nlc109XCJlbWFpbEFkZHJlc3Nlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRzXT1cImVtYWlsTGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwZGZEb2NdPVwicGRmRG9jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VtYWlsVW5zaWduZWRQb3NzaWJsZV09XCJlbWFpbFVuc2lnbmVkUG9zc2libGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2hvd0ZpbGVQcmV2aWV3KT1cInNob3dGaWxlUHJldmlldy5lbWl0KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tc2VuZC1tZXRob2QtZW1haWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNlZGlJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dFZGlcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNlbWFpbFRlbXBsYXRlSXRlbXMgY2xhc3M9XCJzZW5kLW1ldGhvZC1uYXZpZ2F0aW9uLWNvbnRlbnQgY28tc21hbGwtc2Nyb2xsYmFyXCIgKm5nSWY9XCJzaG93RW1haWxUZW1wbGF0ZVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI3Ntc0l0ZW1zIGNsYXNzPVwic2VuZC1tZXRob2QtbmF2aWdhdGlvbi1jb250ZW50IGNvLXNtYWxsLXNjcm9sbGJhclwiICpuZ0lmPVwic2hvd1Ntc1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI3dlYlNlcnZpY2VJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dXZWJzZXJ2aWNlXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjcGRmSXRlbXMgY2xhc3M9XCJzZW5kLW1ldGhvZC1uYXZpZ2F0aW9uLWNvbnRlbnQgY28tc21hbGwtc2Nyb2xsYmFyXCIgKm5nSWY9XCJzaG93UGRmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tc2VuZC1tZXRob2QtcGRmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRzXT1cInByaW50TGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwZGZEb2NdPVwicGRmRG9jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNob3dGaWxlUHJldmlldyk9XCJzaG93RmlsZVByZXZpZXcuZW1pdCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLXNlbmQtbWV0aG9kLXBkZj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWRpYWxvZy1mb290ZXItYnV0dG9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInNhdmUtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNoZWNrRHVvdG9uZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJva0NsaWNrLmVtaXQoYWN0aXZlU2VuZE1ldGhvZCA/IGFjdGl2ZVNlbmRNZXRob2QuY29kZSA6ICcwJylcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5Dcm9zc1NraW5ueSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZUNsaWNrLmVtaXQoJGV2ZW50KVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9jby1kaWFsb2c+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCUpJywgd2lkdGg6ICcxMDAlJywgb3BhY2l0eTogJzEnfSkpLFxyXG4gICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDE1MCUpJywgb3BhY2l0eTogJzAnfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKDI1MCkpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTZW5kTWV0aG9kRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICBAVmlld0NoaWxkKCduYXZpZ2F0aW9uSXRlbXMnLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgcHVibGljIG5hdmlnYXRpb25JdGVtczogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmF4SXRlbXMnLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgcHVibGljIGZheEl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdwcmludEl0ZW1zJywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxyXG4gIHB1YmxpYyBwcmludEl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdlbWFpbEl0ZW1zJywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxyXG4gIHB1YmxpYyBlbWFpbEl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdlZGlJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgZWRpSXRlbXM6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2VtYWlsVGVtcGxhdGVJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgZW1haWxUZW1wbGF0ZUl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdzbXNJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgc21zSXRlbXM6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3dlYlNlcnZpY2VJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgd2ViU2VydmljZUl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdwZGZJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgcGRmSXRlbXM6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHByaW50ZXJMaXN0OiBQcmludGVyW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVwb3J0aW5nRG9jdW1lbnRQcmludFJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3Q7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlcG9ydGluZ0RvY3VtZW50RW1haWxSZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXBvcnRpbmdEb2N1bWVudFBkZlJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3Q7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVtYWlsTGF5b3V0czogUmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwcmludExheW91dHM6IFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVmYXVsdFByaW50ZXJOYW1lOiBzdHJpbmc7XHJcblxyXG4gIC8vIEBJbnB1dCgpXHJcbiAgLy8gcHVibGljIHByaWNlTGlzdENvZGVEYXRhOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGhlYWRlclRpdGxlOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVtYWlsQWRkcmVzc2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWZhdWx0U2VuZE1ldGhvZDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB2aXNpYmxlTWV0aG9kczogU2VuZE1ldGhvZFR5cGVbXSB8IHN0cmluZ1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGlzRG9jU2lnbkVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZG9jU2lnbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc1ByaW50ZXJMYXlvdXRzRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGlzQWRkaXRpb25hbERvY0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWRkaXRpb25hbEZpbGVOYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWRkaXRpb25hbEZpbGVDb250ZW50czogYW55ID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBkZkRvYzogYW55ID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVtYWlsVW5zaWduZWRQb3NzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVwb3J0aW5nRG9jdW1lbnRQcmludFJlcXVlc3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZXBvcnRpbmdEb2N1bWVudFByaW50U2lnbkRvY0Jhc2VSZXF1ZXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0aW5nRG9jdW1lbnRQcmludFNpZ25Eb2NCYXNlUmVxdWVzdD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlcG9ydGluZ0RvY3VtZW50RW1haWxSZXF1ZXN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVwb3J0aW5nRG9jdW1lbnRFbWFpbFNpZ25Eb2NCYXNlUmVxdWVzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3Q+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZXBvcnRpbmdEb2N1bWVudFBkZlJlcXVlc3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHN0YXJ0U2lnbmF0dXJlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsb3NlQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9rQ2xpY2s6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhZGRpdGlvbmFsRmlsZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzaG93RmlsZVByZXZpZXc6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGxvYWREZWZhdWx0UHJpbnRlck5hbWU6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28tc2VuZC1tZXRob2QtZGlhbG9nJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VuZE1ldGhvZHMgPSBzZW5kTWV0aG9kc1dpdGhJY29uO1xyXG4gIHB1YmxpYyBhY3RpdmVTZW5kTWV0aG9kOiBTZW5kTWV0aG9kO1xyXG4gIHB1YmxpYyB1cEFuZExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzdGFydFVwOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIHNob3dGYXg6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93UHJpbnQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93RW1haWw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93RWRpOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd1NtczogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHNob3dFbWFpbFRlbXBsYXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd1dlYnNlcnZpY2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93UGRmOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX3NoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZW5kTWV0aG9kU2VydmljZTogU2VuZE1ldGhvZFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5fc2VuZE1ldGhvZFNlcnZpY2UucmVwb3J0aW5nRG9jdW1lbnRQcmludFNpZ25Eb2NCYXNlUmVxdWVzdENoYW5nZWQuc3Vic2NyaWJlKCh2YWx1ZTogUmVwb3J0aW5nRG9jdW1lbnRQcmludFNpZ25Eb2NCYXNlUmVxdWVzdCkgPT4gdGhpcy5yZXBvcnRpbmdEb2N1bWVudFByaW50UmVxdWVzdENoYW5nZS5uZXh0KHZhbHVlKSksXHJcbiAgICAgIHRoaXMuX3NlbmRNZXRob2RTZXJ2aWNlLnJlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3RDaGFuZ2VkLnN1YnNjcmliZSgodmFsdWU6IFJlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3QpID0+IHRoaXMucmVwb3J0aW5nRG9jdW1lbnRFbWFpbFJlcXVlc3RDaGFuZ2UubmV4dCh2YWx1ZSkpLFxyXG4gICAgICB0aGlzLl9zZW5kTWV0aG9kU2VydmljZS5yZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0Q2hhbmdlZC5zdWJzY3JpYmUoKHZhbHVlOiBSZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0KSA9PiB0aGlzLnJlcG9ydGluZ0RvY3VtZW50UGRmUmVxdWVzdENoYW5nZS5uZXh0KHZhbHVlKSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMucmVwb3J0aW5nRG9jdW1lbnRFbWFpbFJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5fc2VuZE1ldGhvZFNlcnZpY2UucmVwb3J0aW5nRG9jdW1lbnRFbWFpbFNpZ25Eb2NCYXNlUmVxdWVzdCA9IHRoaXMucmVwb3J0aW5nRG9jdW1lbnRFbWFpbFJlcXVlc3Q7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yZXBvcnRpbmdEb2N1bWVudFByaW50UmVxdWVzdCkge1xyXG4gICAgICB0aGlzLl9zZW5kTWV0aG9kU2VydmljZS5yZXBvcnRpbmdEb2N1bWVudFByaW50U2lnbkRvY0Jhc2VSZXF1ZXN0ID0gdGhpcy5yZXBvcnRpbmdEb2N1bWVudFByaW50UmVxdWVzdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlcG9ydGluZ0RvY3VtZW50UGRmUmVxdWVzdCkge1xyXG4gICAgICB0aGlzLl9zZW5kTWV0aG9kU2VydmljZS5yZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0ID0gdGhpcy5yZXBvcnRpbmdEb2N1bWVudFBkZlJlcXVlc3Q7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pbml0RGVmYXVsdFNlbmRNZXRob2QoKTtcclxuICAgIHRoaXMuX3ByZXBhcmVWaXNpYmxlTWV0aG9kcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTaWduYXR1cmVTdGFydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZG9jU2lnbiA9ICF0aGlzLmRvY1NpZ247XHJcbiAgICB0aGlzLnN0YXJ0U2lnbmF0dXJlQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2VuZE1ldGhvZENsaWNrKHNlbmRNZXRob2Q6IFNlbmRNZXRob2QpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlU2VuZE1ldGhvZCA9IHNlbmRNZXRob2Q7XHJcbiAgICBpZiAoc2VuZE1ldGhvZC5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5GYXggJiYgdGhpcy5zaG93RmF4KSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMuZmF4SXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgfSBlbHNlIGlmIChzZW5kTWV0aG9kLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLlByaW50ICYmIHRoaXMuc2hvd1ByaW50KSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMucHJpbnRJdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgLSB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICB9IGVsc2UgaWYgKHNlbmRNZXRob2QuY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuRW1haWwgJiYgdGhpcy5zaG93RW1haWwpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy5lbWFpbEl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH0gZWxzZSBpZiAoc2VuZE1ldGhvZC5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5FZGkgJiYgdGhpcy5zaG93RWRpKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMuZWRpSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgfSBlbHNlIGlmIChzZW5kTWV0aG9kLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLkVtYWlsVGVtcGxhdGUgJiYgdGhpcy5zaG93RW1haWxUZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLmVtYWlsVGVtcGxhdGVJdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgLSB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICB9IGVsc2UgaWYgKHNlbmRNZXRob2QuY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuU21zICYmIHRoaXMuc2hvd1Ntcykge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLnNtc0l0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH0gZWxzZSBpZiAoc2VuZE1ldGhvZC5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5XZWJTZXJ2aWNlICYmIHRoaXMuc2hvd1dlYnNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy53ZWJTZXJ2aWNlSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgfSBlbHNlIGlmIChzZW5kTWV0aG9kLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLlBkZiAmJiB0aGlzLnNob3dQZGYpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy5wZGZJdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgLSB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0RGVmYXVsdFNlbmRNZXRob2QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0U2VuZE1ldGhvZCkge1xyXG4gICAgICB0aGlzLl9zZWxlY3REZWZhdWx0U2VuZE1ldGhvZCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMudmlzaWJsZU1ldGhvZHMgJiYgdGhpcy52aXNpYmxlTWV0aG9kcy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFNlbmRNZXRob2QgPSB0aGlzLnZpc2libGVNZXRob2RzWzBdO1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdERlZmF1bHRTZW5kTWV0aG9kKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdGFydFVwID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZWxlY3REZWZhdWx0U2VuZE1ldGhvZCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlbmRNZXRob2Q6IFNlbmRNZXRob2QgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gdGhpcy5kZWZhdWx0U2VuZE1ldGhvZCk7XHJcbiAgICBpZiAoc2VuZE1ldGhvZCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZVNlbmRNZXRob2RDbGljayhzZW5kTWV0aG9kKTtcclxuICAgICAgICB0aGlzLnN0YXJ0VXAgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlVmlzaWJsZU1ldGhvZHMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aXNpYmxlTWV0aG9kcyAmJiB0aGlzLnZpc2libGVNZXRob2RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZW5kTWV0aG9kcyA9IHRoaXMuc2VuZE1ldGhvZHMuZmlsdGVyKHNtID0+IHRoaXMudmlzaWJsZU1ldGhvZHMuZmluZCh2bSA9PiB2bSA9PT0gc20uY29kZSkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93RmF4ID0gdGhpcy5zZW5kTWV0aG9kcy5maW5kKHNtID0+IHNtLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLkZheCkgIT09IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd1ByaW50ID0gdGhpcy5zZW5kTWV0aG9kcy5maW5kKHNtID0+IHNtLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLlByaW50KSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93RW1haWwgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuRW1haWwpICE9PSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnNob3dFZGkgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuRWRpKSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93RW1haWxUZW1wbGF0ZSA9IHRoaXMuc2VuZE1ldGhvZHMuZmluZChzbSA9PiBzbS5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5FbWFpbFRlbXBsYXRlKSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93U21zID0gdGhpcy5zZW5kTWV0aG9kcy5maW5kKHNtID0+IHNtLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLlNtcykgIT09IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd1dlYnNlcnZpY2UgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuV2ViU2VydmljZSkgIT09IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd1BkZiA9IHRoaXMuc2VuZE1ldGhvZHMuZmluZChzbSA9PiBzbS5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5QZGYpICE9PSB1bmRlZmluZWQ7XHJcblxyXG4gIH1cclxuXHJcbn1cclxuIl19
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1tZXRob2QtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbmQtbWV0aG9kLWRpYWxvZy9zZW5kLW1ldGhvZC1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9JLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBSy9FLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFNbEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWlCO0lBQy9DLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDNUQsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUM5RCxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzNELElBQUksVUFBVSxD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QUFFO1lBQ3pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNsRztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLENBQUM7UUFDekYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsQ0FBQztRQUM3RixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDO1FBQzdGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLENBQUM7UUFDekYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssU0FBUyxDQUFDO1FBQzdHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLENBQUM7UUFDekYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFNBQVMsQ0FBQztRQUN2RyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxDQUFDO0lBQzNGLENBQUM7OztZQS9VRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0ZUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxVQUFVLEVBQUU7b0JBQ1YsT0FBTyxDQUFDLFlBQVksRUFBRTt3QkFDcEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQzt3QkFDN0UsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7d0JBQ25FLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUN0QyxDQUFDO2lCQUNIO2FBQ0Y7OztZQTVITyxnQkFBZ0I7WUFNaEIsaUJBQWlCOzs7OEJBMkh0QixTQUFTLFNBQUMsaUJBQWlCLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO3VCQUcvQyxTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQzt5QkFHeEMsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7eUJBRzFDLFNBQVMsU0FBQyxZQUFZLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO3VCQUcxQyxTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQztpQ0FHeEMsU0FBUyxTQUFDLG9CQUFvQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQzt1QkFHbEQsU0FBUyxTQUFDLFVBQVUsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7OEJBR3hDLFNBQVMsU0FBQyxpQkFBaUIsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7dUJBRy9DLFNBQVMsU0FBQyxVQUFVLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDOzBCQUd4QyxLQUFLOzRDQUdMLEtBQUs7NENBR0wsS0FBSzswQ0FHTCxLQUFLOzJCQUdMLEtBQUs7MkJBR0wsS0FBSztpQ0FHTCxLQUFLOzBCQUdMLEtBQUs7NkJBR0wsS0FBSztnQ0FHTCxLQUFLOzZCQUdMLEtBQUs7K0JBR0wsS0FBSztzQkFHTCxLQUFLO3NDQUdMLEtBQUs7cUNBR0wsS0FBSztpQ0FHTCxLQUFLO3FDQUdMLEtBQUs7cUJBR0wsS0FBSztnQ0FHTCxLQUFLO29DQUdMLEtBQUs7a0RBR0wsTUFBTTtrREFHTixNQUFNO2dEQUdOLE1BQU07b0NBR04sTUFBTTt5QkFHTixNQUFNO3NCQUdOLE1BQU07d0NBR04sTUFBTTs4QkFHTixNQUFNO3FDQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWx9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLWVtYWlsLmJvJztcclxuaW1wb3J0IHtSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxheW91dC1zZWxlY3Rpb24tcHJpbnQuYm8nO1xyXG5pbXBvcnQge1JlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydGluZy1kb2N1bWVudC1wZGYtYmFzZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtTZW5kTWV0aG9kU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlL3NlbmQtbWV0aG9kLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NlbmRNZXRob2R9IGZyb20gJy4uLy4uL21vZGVsL3NlbmQtbWV0aG9kJztcclxuaW1wb3J0IHtTZW5kTWV0aG9kVHlwZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9zZW5kLW1ldGhvZC10eXBlLmVudW0nO1xyXG5pbXBvcnQge1ByaW50ZXJ9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3ByaW50ZXIuYm8nO1xyXG5pbXBvcnQge1JlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydGluZy1kb2N1bWVudC1lbWFpbC1zaWduLWRvYy1iYXNlLXJlcXVlc3QnO1xyXG5pbXBvcnQge1JlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydGluZy1kb2N1bWVudC1wcmludC1zaWduLWRvYy1iYXNlLXJlcXVlc3QnO1xyXG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvY3VtZW50JztcclxuXHJcbmV4cG9ydCBjb25zdCBzZW5kTWV0aG9kc1dpdGhJY29uOiBTZW5kTWV0aG9kW10gPSBbXHJcbiAgbmV3IFNlbmRNZXRob2QoU2VuZE1ldGhvZFR5cGUuRmF4LCBcIkZheFwiLCBJY29uLlByaW50UmVndWxhciksXHJcbiAgbmV3IFNlbmRNZXRob2QoU2VuZE1ldGhvZFR5cGUuUHJpbnQsIFwiUHJpbnRcIiwgSWNvbi5QcmludFNvbGlkKSxcclxuICBuZXcgU2VuZE1ldGhvZChTZW5kTWV0aG9kVHlwZS5FbWFpbCwgXCJFbWFpbFwiLCBJY29uLkF0U29saWQpLFxyXG4gIG5ldyBTZW5kTWV0aG9kKFNlbmRNZXRob2RUeXBlLkVkaSwgXCJFZGlcIiwgSWNvbi5GaWxlRXhwb3J0U29saWQpLFxyXG4gIG5ldyBTZW5kTWV0aG9kKFNlbmRNZXRob2RUeXBlLkVtYWlsVGVtcGxhdGUsIFwiRW1haWwgdGVtcGxhdGVcIiwgSWNvbi5FbnZlbG9wZVJlZ3VsYXIpLFxyXG4gIG5ldyBTZW5kTWV0aG9kKFNlbmRNZXRob2RUeXBlLlNtcywgXCJTbXNcIiwgSWNvbi5NZXNzYWdlU21zU29saWQpLFxyXG4gIG5ldyBTZW5kTWV0aG9kKFNlbmRNZXRob2RUeXBlLldlYlNlcnZpY2UsIFwiV2Vic2VydmljZVwiLCBJY29uLlByaW50UmVndWxhciksXHJcbiAgbmV3IFNlbmRNZXRob2QoU2VuZE1ldGhvZFR5cGUuUGRmLCBcIlBkZlwiLCBJY29uLlBkZilcclxuXVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1zZW5kLW1ldGhvZC1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxjby1kaWFsb2cgaWQ9XCJzZW5kT3B0aW9uc0RpYWxvZ1wiIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiY2xvc2VDbGljay5lbWl0KCRldmVudClcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWRpYWxvZy1oZWFkZXItdGl0bGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkVudmVsb3BlUmVndWxhcilcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctaGVhZGVyLXRpdGxlXCIgW3RleHRDb250ZW50XT1cImhlYWRlclRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1uYXZpZ2F0aW9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZW5kTWV0aG9kIG9mIHNlbmRNZXRob2RzOyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZW5kLWJ1dHRvbi13cmFwcGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiYWN0aXZlU2VuZE1ldGhvZCA/IHNlbmRNZXRob2QuY29kZSA9PT0gYWN0aXZlU2VuZE1ldGhvZC5jb2RlIDogaW5kZXggPT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVTZW5kTWV0aG9kQ2xpY2soc2VuZE1ldGhvZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tYnV0dG9uLXRpdGxlXCIgW3RleHRDb250ZW50XT1cInNlbmRNZXRob2QuZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGVudC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbmQtbWV0aG9kcy13cmFwcGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgI25hdmlnYXRpb25JdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24td3JhcHBlclwiIFtjbGFzcy5zbW9vdGgtc2Nyb2xsaW5nXT1cIiFzdGFydFVwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI2ZheEl0ZW1zIGNsYXNzPVwic2VuZC1tZXRob2QtbmF2aWdhdGlvbi1jb250ZW50IGNvLXNtYWxsLXNjcm9sbGJhclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI3ByaW50SXRlbXMgY2xhc3M9XCJzZW5kLW1ldGhvZC1uYXZpZ2F0aW9uLWNvbnRlbnQgY28tc21hbGwtc2Nyb2xsYmFyXCIgKm5nSWY9XCJzaG93UHJpbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1zZW5kLW1ldGhvZC1wcmludGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1ByaW50ZXJMYXlvdXRzRW5hYmxlZF09XCJpc1ByaW50ZXJMYXlvdXRzRW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmludGVyTGlzdF09XCJwcmludGVyTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRzXT1cInByaW50TGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0FkZGl0aW9uYWxEb2NFbmFibGVkXT1cImlzQWRkaXRpb25hbERvY0VuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWRkaXRpb25hbEZpbGVDb250ZW50c109XCJhZGRpdGlvbmFsRmlsZUNvbnRlbnRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FkZGl0aW9uYWxGaWxlTmFtZV09XCJhZGRpdGlvbmFsRmlsZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGRmRG9jXT1cInBkZkRvY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlUGRmUHJldmlld109XCJkaXNhYmxlUGRmUHJldmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0UHJpbnRlck5hbWVdPVwiZGVmYXVsdFByaW50ZXJOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZGl0aW9uYWxGaWxlQ2hhbmdlRXZlbnQpPVwiYWRkaXRpb25hbEZpbGVDaGFuZ2VFdmVudC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2hvd0ZpbGVQcmV2aWV3KT1cInNob3dGaWxlUHJldmlldy5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9hZERlZmF1bHRQcmludGVyTmFtZSk9XCJsb2FkRGVmYXVsdFByaW50ZXJOYW1lLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9jby1zZW5kLW1ldGhvZC1wcmludGVyPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjZW1haWxJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dFbWFpbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXNlbmQtbWV0aG9kLWVtYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbWFpbEFkZHJlc3Nlc109XCJlbWFpbEFkZHJlc3Nlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRzXT1cImVtYWlsTGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwZGZEb2NdPVwicGRmRG9jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVQZGZQcmV2aWV3XT1cImRpc2FibGVQZGZQcmV2aWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VtYWlsVW5zaWduZWRQb3NzaWJsZV09XCJlbWFpbFVuc2lnbmVkUG9zc2libGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2hvd0ZpbGVQcmV2aWV3KT1cInNob3dGaWxlUHJldmlldy5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9hZERlZmF1bHRQcmludGVyTmFtZSk9XCJsb2FkRGVmYXVsdFByaW50ZXJOYW1lLmVtaXQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1zZW5kLW1ldGhvZC1lbWFpbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI2VkaUl0ZW1zIGNsYXNzPVwic2VuZC1tZXRob2QtbmF2aWdhdGlvbi1jb250ZW50IGNvLXNtYWxsLXNjcm9sbGJhclwiICpuZ0lmPVwic2hvd0VkaVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI2VtYWlsVGVtcGxhdGVJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dFbWFpbFRlbXBsYXRlXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjc21zSXRlbXMgY2xhc3M9XCJzZW5kLW1ldGhvZC1uYXZpZ2F0aW9uLWNvbnRlbnQgY28tc21hbGwtc2Nyb2xsYmFyXCIgKm5nSWY9XCJzaG93U21zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjd2ViU2VydmljZUl0ZW1zIGNsYXNzPVwic2VuZC1tZXRob2QtbmF2aWdhdGlvbi1jb250ZW50IGNvLXNtYWxsLXNjcm9sbGJhclwiICpuZ0lmPVwic2hvd1dlYnNlcnZpY2VcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNwZGZJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dQZGZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1zZW5kLW1ldGhvZC1wZGZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dHNdPVwicHJpbnRMYXlvdXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BkZkRvY109XCJwZGZEb2NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVBkZlByZXZpZXddPVwiZGlzYWJsZVBkZlByZXZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2hvd0ZpbGVQcmV2aWV3KT1cInNob3dGaWxlUHJldmlldy5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9hZERlZmF1bHRQcmludGVyTmFtZSk9XCJsb2FkRGVmYXVsdFByaW50ZXJOYW1lLmVtaXQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1zZW5kLW1ldGhvZC1wZGY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctZm9vdGVyLWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJzYXZlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DaGVja0R1b3RvbmUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib2tDbGljay5lbWl0KGFjdGl2ZVNlbmRNZXRob2QgPyBhY3RpdmVTZW5kTWV0aG9kLmNvZGUgOiAnMCcpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ3Jvc3NTa2lubnkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VDbGljay5lbWl0KCRldmVudClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvY28tZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdzbGlkZUluT3V0JywgW1xyXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDAlKScsIHdpZHRoOiAnMTAwJScsIG9wYWNpdHk6ICcxJ30pKSxcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxNTAlKScsIG9wYWNpdHk6ICcwJ30pKSxcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgyNTApKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgU2VuZE1ldGhvZERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbmF2aWdhdGlvbkl0ZW1zJywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxyXG4gIHB1YmxpYyBuYXZpZ2F0aW9uSXRlbXM6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZheEl0ZW1zJywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxyXG4gIHB1YmxpYyBmYXhJdGVtczogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgncHJpbnRJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgcHJpbnRJdGVtczogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZW1haWxJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgZW1haWxJdGVtczogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZWRpSXRlbXMnLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgcHVibGljIGVkaUl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdlbWFpbFRlbXBsYXRlSXRlbXMnLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgcHVibGljIGVtYWlsVGVtcGxhdGVJdGVtczogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc21zSXRlbXMnLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgcHVibGljIHNtc0l0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCd3ZWJTZXJ2aWNlSXRlbXMnLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgcHVibGljIHdlYlNlcnZpY2VJdGVtczogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgncGRmSXRlbXMnLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgcHVibGljIHBkZkl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwcmludGVyTGlzdDogUHJpbnRlcltdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlcG9ydGluZ0RvY3VtZW50UHJpbnRSZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudFByaW50U2lnbkRvY0Jhc2VSZXF1ZXN0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXBvcnRpbmdEb2N1bWVudEVtYWlsUmVxdWVzdDogUmVwb3J0aW5nRG9jdW1lbnRFbWFpbFNpZ25Eb2NCYXNlUmVxdWVzdDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVwb3J0aW5nRG9jdW1lbnRQZGZSZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBlbWFpbExheW91dHM6IFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcHJpbnRMYXlvdXRzOiBSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlZmF1bHRQcmludGVyTmFtZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoZWFkZXJUaXRsZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBlbWFpbEFkZHJlc3Nlczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVmYXVsdFNlbmRNZXRob2Q6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdmlzaWJsZU1ldGhvZHM6IFNlbmRNZXRob2RUeXBlW10gfCBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc0RvY1NpZ25FbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRvY1NpZ246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNQcmludGVyTGF5b3V0c0VuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc0FkZGl0aW9uYWxEb2NFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFkZGl0aW9uYWxGaWxlTmFtZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFkZGl0aW9uYWxGaWxlQ29udGVudHM6IGFueSA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwZGZEb2M6IGFueSA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkaXNhYmxlUGRmUHJldmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBlbWFpbFVuc2lnbmVkUG9zc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlcG9ydGluZ0RvY3VtZW50UHJpbnRSZXF1ZXN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVwb3J0aW5nRG9jdW1lbnRQcmludFNpZ25Eb2NCYXNlUmVxdWVzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3Q+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZXBvcnRpbmdEb2N1bWVudEVtYWlsUmVxdWVzdENoYW5nZTogRXZlbnRFbWl0dGVyPFJlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVwb3J0aW5nRG9jdW1lbnRQZGZSZXF1ZXN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3Q+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzdGFydFNpZ25hdHVyZUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbG9zZUNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBva0NsaWNrOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkaXRpb25hbEZpbGVDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2hvd0ZpbGVQcmV2aWV3OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgbG9hZERlZmF1bHRQcmludGVyTmFtZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1zZW5kLW1ldGhvZC1kaWFsb2cnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZW5kTWV0aG9kcyA9IHNlbmRNZXRob2RzV2l0aEljb247XHJcbiAgcHVibGljIGFjdGl2ZVNlbmRNZXRob2Q6IFNlbmRNZXRob2Q7XHJcbiAgcHVibGljIHN0YXJ0VXA6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgc2hvd0ZheDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHNob3dQcmludDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHNob3dFbWFpbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHNob3dFZGk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93U21zOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd0VtYWlsVGVtcGxhdGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93V2Vic2VydmljZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHNob3dQZGY6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2VuZE1ldGhvZFNlcnZpY2U6IFNlbmRNZXRob2RTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuX3NlbmRNZXRob2RTZXJ2aWNlLnJlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3RDaGFuZ2VkLnN1YnNjcmliZSgodmFsdWU6IFJlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3QpID0+IHRoaXMucmVwb3J0aW5nRG9jdW1lbnRQcmludFJlcXVlc3RDaGFuZ2UubmV4dCh2YWx1ZSkpLFxyXG4gICAgICB0aGlzLl9zZW5kTWV0aG9kU2VydmljZS5yZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0Q2hhbmdlZC5zdWJzY3JpYmUoKHZhbHVlOiBSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0KSA9PiB0aGlzLnJlcG9ydGluZ0RvY3VtZW50RW1haWxSZXF1ZXN0Q2hhbmdlLm5leHQodmFsdWUpKSxcclxuICAgICAgdGhpcy5fc2VuZE1ldGhvZFNlcnZpY2UucmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdENoYW5nZWQuc3Vic2NyaWJlKCh2YWx1ZTogUmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdCkgPT4gdGhpcy5yZXBvcnRpbmdEb2N1bWVudFBkZlJlcXVlc3RDaGFuZ2UubmV4dCh2YWx1ZSkpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnJlcG9ydGluZ0RvY3VtZW50RW1haWxSZXF1ZXN0KSB7XHJcbiAgICAgIHRoaXMuX3NlbmRNZXRob2RTZXJ2aWNlLnJlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3QgPSB0aGlzLnJlcG9ydGluZ0RvY3VtZW50RW1haWxSZXF1ZXN0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucmVwb3J0aW5nRG9jdW1lbnRQcmludFJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5fc2VuZE1ldGhvZFNlcnZpY2UucmVwb3J0aW5nRG9jdW1lbnRQcmludFNpZ25Eb2NCYXNlUmVxdWVzdCA9IHRoaXMucmVwb3J0aW5nRG9jdW1lbnRQcmludFJlcXVlc3Q7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yZXBvcnRpbmdEb2N1bWVudFBkZlJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5fc2VuZE1ldGhvZFNlcnZpY2UucmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdCA9IHRoaXMucmVwb3J0aW5nRG9jdW1lbnRQZGZSZXF1ZXN0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5faW5pdERlZmF1bHRTZW5kTWV0aG9kKCk7XHJcbiAgICB0aGlzLl9wcmVwYXJlVmlzaWJsZU1ldGhvZHMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2lnbmF0dXJlU3RhcnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRvY1NpZ24gPSAhdGhpcy5kb2NTaWduO1xyXG4gICAgdGhpcy5zdGFydFNpZ25hdHVyZUNsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNlbmRNZXRob2RDbGljayhzZW5kTWV0aG9kOiBTZW5kTWV0aG9kKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZVNlbmRNZXRob2QgPSBzZW5kTWV0aG9kO1xyXG4gICAgaWYgKHNlbmRNZXRob2QuY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuRmF4ICYmIHRoaXMuc2hvd0ZheCkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLmZheEl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH0gZWxzZSBpZiAoc2VuZE1ldGhvZC5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5QcmludCAmJiB0aGlzLnNob3dQcmludCkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLnByaW50SXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgfSBlbHNlIGlmIChzZW5kTWV0aG9kLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLkVtYWlsICYmIHRoaXMuc2hvd0VtYWlsKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMuZW1haWxJdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgLSB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICB9IGVsc2UgaWYgKHNlbmRNZXRob2QuY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuRWRpICYmIHRoaXMuc2hvd0VkaSkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLmVkaUl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH0gZWxzZSBpZiAoc2VuZE1ldGhvZC5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5FbWFpbFRlbXBsYXRlICYmIHRoaXMuc2hvd0VtYWlsVGVtcGxhdGUpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy5lbWFpbFRlbXBsYXRlSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgfSBlbHNlIGlmIChzZW5kTWV0aG9kLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLlNtcyAmJiB0aGlzLnNob3dTbXMpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy5zbXNJdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgLSB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICB9IGVsc2UgaWYgKHNlbmRNZXRob2QuY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuV2ViU2VydmljZSAmJiB0aGlzLnNob3dXZWJzZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMud2ViU2VydmljZUl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH0gZWxzZSBpZiAoc2VuZE1ldGhvZC5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5QZGYgJiYgdGhpcy5zaG93UGRmKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMucGRmSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2ZVNlbmRNZXRob2QuY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuUHJpbnQpIHtcclxuICAgICAgdGhpcy5zaG93RmlsZVByZXZpZXcuZW1pdCh0aGlzLnJlcG9ydGluZ0RvY3VtZW50UHJpbnRSZXF1ZXN0LnJlcG9ydElkKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVTZW5kTWV0aG9kLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLkVtYWlsKSB7XHJcbiAgICAgIHRoaXMuc2hvd0ZpbGVQcmV2aWV3LmVtaXQodGhpcy5yZXBvcnRpbmdEb2N1bWVudEVtYWlsUmVxdWVzdC5yZXBvcnRJZCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlU2VuZE1ldGhvZC5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5QZGYpIHtcclxuICAgICAgdGhpcy5zaG93RmlsZVByZXZpZXcuZW1pdCh0aGlzLnJlcG9ydGluZ0RvY3VtZW50UGRmUmVxdWVzdC5yZXBvcnRJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0RGVmYXVsdFNlbmRNZXRob2QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0U2VuZE1ldGhvZCkge1xyXG4gICAgICB0aGlzLl9zZWxlY3REZWZhdWx0U2VuZE1ldGhvZCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMudmlzaWJsZU1ldGhvZHMgJiYgdGhpcy52aXNpYmxlTWV0aG9kcy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFNlbmRNZXRob2QgPSB0aGlzLnZpc2libGVNZXRob2RzWzBdO1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdERlZmF1bHRTZW5kTWV0aG9kKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdGFydFVwID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZWxlY3REZWZhdWx0U2VuZE1ldGhvZCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlbmRNZXRob2Q6IFNlbmRNZXRob2QgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gdGhpcy5kZWZhdWx0U2VuZE1ldGhvZCk7XHJcbiAgICBpZiAoc2VuZE1ldGhvZCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZVNlbmRNZXRob2RDbGljayhzZW5kTWV0aG9kKTtcclxuICAgICAgICB0aGlzLnN0YXJ0VXAgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlVmlzaWJsZU1ldGhvZHMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aXNpYmxlTWV0aG9kcyAmJiB0aGlzLnZpc2libGVNZXRob2RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZW5kTWV0aG9kcyA9IHRoaXMuc2VuZE1ldGhvZHMuZmlsdGVyKHNtID0+IHRoaXMudmlzaWJsZU1ldGhvZHMuZmluZCh2bSA9PiB2bSA9PT0gc20uY29kZSkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93RmF4ID0gdGhpcy5zZW5kTWV0aG9kcy5maW5kKHNtID0+IHNtLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLkZheCkgIT09IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd1ByaW50ID0gdGhpcy5zZW5kTWV0aG9kcy5maW5kKHNtID0+IHNtLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLlByaW50KSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93RW1haWwgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuRW1haWwpICE9PSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnNob3dFZGkgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuRWRpKSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93RW1haWxUZW1wbGF0ZSA9IHRoaXMuc2VuZE1ldGhvZHMuZmluZChzbSA9PiBzbS5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5FbWFpbFRlbXBsYXRlKSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93U21zID0gdGhpcy5zZW5kTWV0aG9kcy5maW5kKHNtID0+IHNtLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLlNtcykgIT09IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd1dlYnNlcnZpY2UgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuV2ViU2VydmljZSkgIT09IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd1BkZiA9IHRoaXMuc2VuZE1ldGhvZHMuZmluZChzbSA9PiBzbS5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5QZGYpICE9PSB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==