@huntsman-cancer-institute/cod 17.9.6 → 17.10.1

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.
@@ -87,7 +87,7 @@ export class AttributeFlexComponent extends AttributeBase {
87
87
  type="text"
88
88
  [(ngModel)]="attributeValues[0].valueString"
89
89
  (ngModelChange)="valueStringChange($event)"
90
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
90
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
91
91
  class="form-control" attr.aria-label="hci-ng-attribute-flex-input-string-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
92
92
  </div>
93
93
  </div>
@@ -109,7 +109,7 @@ export class AttributeFlexComponent extends AttributeBase {
109
109
  lang="en"
110
110
  [ngModel]="attributeValues[0].valueLongText.textData"
111
111
  (change)="valueTextChange($event)"
112
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
112
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
113
113
  class="form-control">
114
114
  </textarea>
115
115
  </div>
@@ -128,7 +128,7 @@ export class AttributeFlexComponent extends AttributeBase {
128
128
  type="checkbox"
129
129
  [checked]="attributeValues[0].valueString === 'Y'"
130
130
  (change)="valueCheckboxChange($event)"
131
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
131
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
132
132
  class="form-control" attr.aria-label="hci-ng-attribute-flex-input-checkbox-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
133
133
  </div>
134
134
  </div>
@@ -146,7 +146,7 @@ export class AttributeFlexComponent extends AttributeBase {
146
146
  type="number"
147
147
  [(ngModel)]="attributeValues[0].valueNumeric"
148
148
  (ngModelChange)="valueNumericChange($event)"
149
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
149
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
150
150
  class="form-control" attr.aria-label="hci-ng-attribute-flex-input-numeric-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
151
151
  </div>
152
152
  </div>
@@ -164,7 +164,7 @@ export class AttributeFlexComponent extends AttributeBase {
164
164
  type="number"
165
165
  [(ngModel)]="attributeValues[0].valueInteger"
166
166
  (ngModelChange)="valueIntegerChange($event)"
167
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
167
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
168
168
  class="form-control" attr.aria-label="hci-ng-attribute-flex-input-integer-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
169
169
  </div>
170
170
  </div>
@@ -184,7 +184,7 @@ export class AttributeFlexComponent extends AttributeBase {
184
184
  [(ngModel)]="attributeValues[0].valueDate"
185
185
  (ngModelChange)="valueDateChange($event)"
186
186
  [matDatepicker]="valueDate"
187
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
187
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
188
188
  class="form-control" attr.aria-label="hci-ng-attribute-flex-input-date-{{hciNgAttributeAbsoluteInputDisplayName}}">
189
189
  <mat-datepicker-toggle matSuffix [for]="valueDate" class="cod-dp-toggle"></mat-datepicker-toggle>
190
190
  <mat-datepicker #valueDate></mat-datepicker>
@@ -206,7 +206,7 @@ export class AttributeFlexComponent extends AttributeBase {
206
206
  class="form-control"
207
207
  [(ngModel)]="attributeValues[0].date"
208
208
  (ngModelChange)="valueDateChange($event)"
209
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
209
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
210
210
  [ngxMatDatetimePicker]="dtpicker" attr.aria-label="hci-ng-attribute-flex-input-date-time-{{hciNgAttributeAbsoluteInputDisplayName}}">
211
211
  <mat-datepicker-toggle matSuffix [for]="dtpicker" class="cod-dp-toggle"></mat-datepicker-toggle>
212
212
  <ngx-mat-datetime-picker #dtpicker [showSeconds]="true"></ngx-mat-datetime-picker>
@@ -225,7 +225,7 @@ export class AttributeFlexComponent extends AttributeBase {
225
225
  <select #inputRef
226
226
  [ngModel]="attributeValues[0].valueString"
227
227
  (ngModelChange)="valueStringChange($event)"
228
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
228
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
229
229
  class="form-control edit-renderer">
230
230
  <option [ngValue]="undefined"></option>
231
231
  <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
@@ -246,7 +246,7 @@ export class AttributeFlexComponent extends AttributeBase {
246
246
  <select #inputRef
247
247
  [ngModel]="attributeValues[0].valueString"
248
248
  (ngModelChange)="valueStringChange($event)"
249
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
249
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
250
250
  class="form-control edit-renderer">
251
251
  <option [ngValue]="undefined"></option>
252
252
  <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
@@ -268,7 +268,7 @@ export class AttributeFlexComponent extends AttributeBase {
268
268
  <select
269
269
  [ngModel]="(attributeValues[0].valueAttributeChoice)?attributeValues[0].valueAttributeChoice.idAttributeChoice:undefined"
270
270
  (ngModelChange)="valueChoiceChange($event)"
271
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
271
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
272
272
  class="form-control edit-renderer">
273
273
  <option [ngValue]="undefined"></option>
274
274
  <option *ngFor="let attributeChoice of attributeChoices"
@@ -292,9 +292,8 @@ export class AttributeFlexComponent extends AttributeBase {
292
292
  <div class="d-flex flex-shrink-0">
293
293
  <input type="checkbox"
294
294
  [checked]="attributeChoice.value"
295
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
295
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
296
296
  (change)="valueMultiChoiceChange(attributeChoice)"
297
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
298
297
  class="form-control checkbox" attr.aria-label="hci-ng-attribute-flex-input-choice-multiple-{{attributeChoice.choice}}"/>
299
298
  <div class="cod-label ps-1">
300
299
  {{attributeChoice.choice}}
@@ -317,9 +316,8 @@ export class AttributeFlexComponent extends AttributeBase {
317
316
  <div class="d-flex flex-shrink-0">
318
317
  <input type="checkbox"
319
318
  [checked]="entry.checked"
320
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
319
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
321
320
  (change)="valueMultiDictChange(entry)"
322
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
323
321
  class="form-control checkbox" attr.aria-label="hci-ng-attribute-flex-input-dictionary-choice-{{entry.display}}"/>
324
322
  <div class="cod-label ps-1">
325
323
  {{entry.display}}
@@ -341,7 +339,7 @@ export class AttributeFlexComponent extends AttributeBase {
341
339
  <select #inputRef
342
340
  [ngModel]="attributeValues[0].valueIdDictionary"
343
341
  (ngModelChange)="valueDictChange($event)"
344
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
342
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
345
343
  class="form-control edit-renderer">
346
344
  <option [ngValue]="undefined"></option>
347
345
  <option *ngFor="let entry of dictionaryEntries"
@@ -467,7 +465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
467
465
  type="text"
468
466
  [(ngModel)]="attributeValues[0].valueString"
469
467
  (ngModelChange)="valueStringChange($event)"
470
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
468
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
471
469
  class="form-control" attr.aria-label="hci-ng-attribute-flex-input-string-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
472
470
  </div>
473
471
  </div>
@@ -489,7 +487,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
489
487
  lang="en"
490
488
  [ngModel]="attributeValues[0].valueLongText.textData"
491
489
  (change)="valueTextChange($event)"
492
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
490
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
493
491
  class="form-control">
494
492
  </textarea>
495
493
  </div>
@@ -508,7 +506,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
508
506
  type="checkbox"
509
507
  [checked]="attributeValues[0].valueString === 'Y'"
510
508
  (change)="valueCheckboxChange($event)"
511
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
509
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
512
510
  class="form-control" attr.aria-label="hci-ng-attribute-flex-input-checkbox-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
513
511
  </div>
514
512
  </div>
@@ -526,7 +524,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
526
524
  type="number"
527
525
  [(ngModel)]="attributeValues[0].valueNumeric"
528
526
  (ngModelChange)="valueNumericChange($event)"
529
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
527
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
530
528
  class="form-control" attr.aria-label="hci-ng-attribute-flex-input-numeric-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
531
529
  </div>
532
530
  </div>
@@ -544,7 +542,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
544
542
  type="number"
545
543
  [(ngModel)]="attributeValues[0].valueInteger"
546
544
  (ngModelChange)="valueIntegerChange($event)"
547
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
545
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
548
546
  class="form-control" attr.aria-label="hci-ng-attribute-flex-input-integer-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
549
547
  </div>
550
548
  </div>
@@ -564,7 +562,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
564
562
  [(ngModel)]="attributeValues[0].valueDate"
565
563
  (ngModelChange)="valueDateChange($event)"
566
564
  [matDatepicker]="valueDate"
567
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
565
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
568
566
  class="form-control" attr.aria-label="hci-ng-attribute-flex-input-date-{{hciNgAttributeAbsoluteInputDisplayName}}">
569
567
  <mat-datepicker-toggle matSuffix [for]="valueDate" class="cod-dp-toggle"></mat-datepicker-toggle>
570
568
  <mat-datepicker #valueDate></mat-datepicker>
@@ -586,7 +584,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
586
584
  class="form-control"
587
585
  [(ngModel)]="attributeValues[0].date"
588
586
  (ngModelChange)="valueDateChange($event)"
589
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
587
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
590
588
  [ngxMatDatetimePicker]="dtpicker" attr.aria-label="hci-ng-attribute-flex-input-date-time-{{hciNgAttributeAbsoluteInputDisplayName}}">
591
589
  <mat-datepicker-toggle matSuffix [for]="dtpicker" class="cod-dp-toggle"></mat-datepicker-toggle>
592
590
  <ngx-mat-datetime-picker #dtpicker [showSeconds]="true"></ngx-mat-datetime-picker>
@@ -605,7 +603,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
605
603
  <select #inputRef
606
604
  [ngModel]="attributeValues[0].valueString"
607
605
  (ngModelChange)="valueStringChange($event)"
608
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
606
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
609
607
  class="form-control edit-renderer">
610
608
  <option [ngValue]="undefined"></option>
611
609
  <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
@@ -626,7 +624,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
626
624
  <select #inputRef
627
625
  [ngModel]="attributeValues[0].valueString"
628
626
  (ngModelChange)="valueStringChange($event)"
629
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
627
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
630
628
  class="form-control edit-renderer">
631
629
  <option [ngValue]="undefined"></option>
632
630
  <option [ngValue]="'Y'" [selected]="attributeValues[0].valueString === 'Y'">Yes</option>
@@ -648,7 +646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
648
646
  <select
649
647
  [ngModel]="(attributeValues[0].valueAttributeChoice)?attributeValues[0].valueAttributeChoice.idAttributeChoice:undefined"
650
648
  (ngModelChange)="valueChoiceChange($event)"
651
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
649
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
652
650
  class="form-control edit-renderer">
653
651
  <option [ngValue]="undefined"></option>
654
652
  <option *ngFor="let attributeChoice of attributeChoices"
@@ -672,9 +670,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
672
670
  <div class="d-flex flex-shrink-0">
673
671
  <input type="checkbox"
674
672
  [checked]="attributeChoice.value"
675
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
673
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
676
674
  (change)="valueMultiChoiceChange(attributeChoice)"
677
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
678
675
  class="form-control checkbox" attr.aria-label="hci-ng-attribute-flex-input-choice-multiple-{{attributeChoice.choice}}"/>
679
676
  <div class="cod-label ps-1">
680
677
  {{attributeChoice.choice}}
@@ -697,9 +694,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
697
694
  <div class="d-flex flex-shrink-0">
698
695
  <input type="checkbox"
699
696
  [checked]="entry.checked"
700
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
697
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
701
698
  (change)="valueMultiDictChange(entry)"
702
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
703
699
  class="form-control checkbox" attr.aria-label="hci-ng-attribute-flex-input-dictionary-choice-{{entry.display}}"/>
704
700
  <div class="cod-label ps-1">
705
701
  {{entry.display}}
@@ -721,7 +717,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
721
717
  <select #inputRef
722
718
  [ngModel]="attributeValues[0].valueIdDictionary"
723
719
  (ngModelChange)="valueDictChange($event)"
724
- [disabled]="!editInline || attribute.isCalculated === 'Y'"
720
+ [disabled]="!editInline || attribute.isCalculated === 'Y' || attribute.isActive === 'N'"
725
721
  class="form-control edit-renderer">
726
722
  <option [ngValue]="undefined"></option>
727
723
  <option *ngFor="let entry of dictionaryEntries"
@@ -810,4 +806,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
810
806
  </ng-template>
811
807
  `, styles: [".hci-cod button.mat-icon-button.mat-button-base{height:20px;width:20px;line-height:unset}.btn-ga{padding:0;height:18px;width:18px}.ga-icon{font-size:.9em;vertical-align:top}.hci-cod .mat-datepicker-toggle-default-icon{height:20px;width:20px}\n"] }]
812
808
  }], ctorParameters: () => [{ type: i1.AttributeService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.NgbModal }] });
813
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWZsZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kL3NyYy9jb21wb25lbnRzL2F0dHJpYnV0ZS1mbGV4LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBR3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7OztBQUkvRDs7OztHQUlHO0FBc1pILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBRXZELFlBQ0UsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLFlBQXNCO1FBRXRCLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBUDlELDJDQUFzQyxHQUFHLEVBQUUsQ0FBQztJQVE1QyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxzQ0FBc0MsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHFCQUFxQixDQUFDLFVBQWdDLEVBQUUsT0FBYztRQUNwRSxLQUFLLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWpELElBQUksS0FBSyxHQUFXLENBQUMsQ0FBQztRQUN0QixLQUFLLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxLQUFLLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLElBQUksWUFBWSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRW5FLEtBQUssSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzNCLElBQUksTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3pGLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDOUIsTUFBTSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7b0JBQ25DLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0E1Q1Usc0JBQXNCO21HQUF0QixzQkFBc0IsaUZBbFp2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdYVDs7NEZBMEJVLHNCQUFzQjtrQkFyWmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGlCQUNmLGlCQUFpQixDQUFDLElBQUksWUFDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3WFQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBSZW5kZXJlcjIsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05nYk1vZGFsfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuXHJcblxyXG5pbXBvcnQge0F0dHJpYnV0ZUJhc2V9IGZyb20gXCIuL2F0dHJpYnV0ZS1iYXNlXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0dHJpYnV0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlfSBmcm9tIFwiLi4vbW9kZWwvYXR0cmlidXRlLmVudGl0eVwiO1xyXG5pbXBvcnQge0dyYXBoaWNhbEF0dHJpYnV0ZX0gZnJvbSBcIi4uL21vZGVsL2dyYXBoaWNhbC1hdHRyaWJ1dGUuZW50aXR5XCI7XHJcblxyXG4vKipcclxuICogVGhlIHZpZXcgZm9yIGF0dHJpYnV0ZXMgb3JnYW5pemVkIGluIGEgZmxleCBsYXlvdXQuICBUaGlzIHdpbGwgYXJyYW5nZSBhbGwgYXR0cmlidXRlcyBpbiBhIGZvdXIgY29sdW1uIGxheW91dFxyXG4gKiB3aXRoIGdyaWRzIHRha2luZyB1cCBhbGwgMTIgY29sdW1ucy4gIFRoZSBhdHRyaWJ1dGVzIGhlcmUgd2lsbCBmaWxsIHRoZSB0aGlzIHBhcmVudCBjb21wb25lbnQgd2hpY2ggZGVmaW5lcyB0aGVcclxuICogY29sdW1uIHNpemUuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJoY2ktYXR0cmlidXRlLWZsZXhcIixcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8IS0tIExpbmUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0xJTkUnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGNvZC10eXBlLWxpbmVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvZC1saW5lIG1lLTEgbXQtYXV0byBtYi1hdXRvIGZsZXgtc2hyaW5rLTBcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xIGZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvZC1saW5lIGdyb3cgbXQtYXV0byBtYi1hdXRvXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBMYWJlbCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnTEFCRUwnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtbGFiZWxcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gU3RyaW5nIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnUydcIj5cclxuICAgICAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgICAgICB7eyBhdHRyaWJ1dGUuZGlzcGxheU5hbWUgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZVN0cmluZ0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1mbGV4LWlucHV0LXN0cmluZy17e2hjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lfX1cIi8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDwhLS0gVGV4dCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnVFhUJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS10eHRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICNpbnB1dFJlZlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJzcGVsbGNoZWNrXCJcclxuICAgICAgICAgICAgbGFuZz1cImVuXCJcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTG9uZ1RleHQudGV4dERhdGFcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlVGV4dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICA8L3RleHRhcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0NCJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1jYlwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8aW5wdXQgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ2YWx1ZUNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1mbGV4LWlucHV0LWNoZWNrYm94LXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIE51bWVyaWMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ04nXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLW5cIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTnVtZXJpY1wiXHJcbiAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVOdW1lcmljQ2hhbmdlKCRldmVudClcIlxyXG5cdFx0XHRcdCBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZmxleC1pbnB1dC1udW1lcmljLXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEludGVnZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0knXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWlcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlSW50ZWdlclwiXHJcbiAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVJbnRlZ2VyQ2hhbmdlKCRldmVudClcIlxyXG5cdFx0XHRcdCBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZmxleC1pbnB1dC1pbnRlZ2VyLXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIERhdGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0QnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIG5hbWU9XCJ2YWx1ZURhdGVcIiAgICAgICAgICBcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZURhdGVcIiBcclxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwidmFsdWVEYXRlXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZmxleC1pbnB1dC1kYXRlLXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiPlxyXG4gICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlICBtYXRTdWZmaXggW2Zvcl09XCJ2YWx1ZURhdGVcIiBjbGFzcz1cImNvZC1kcC10b2dnbGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICN2YWx1ZURhdGU+PC9tYXQtZGF0ZXBpY2tlcj4gIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRGF0ZSBUaW1lIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdEVCdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtZHRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgbmFtZT1cInZhbHVlRGF0ZVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS5kYXRlXCJcclxuICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgW25neE1hdERhdGV0aW1lUGlja2VyXT1cImR0cGlja2VyXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1mbGV4LWlucHV0LWRhdGUtdGltZS17e2hjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lfX1cIj5cclxuICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkdHBpY2tlclwiIGNsYXNzPVwiY29kLWRwLXRvZ2dsZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICA8bmd4LW1hdC1kYXRldGltZS1waWNrZXIgI2R0cGlja2VyIFtzaG93U2Vjb25kc109XCJ0cnVlXCI+PC9uZ3gtbWF0LWRhdGV0aW1lLXBpY2tlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEJvb2xlYW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0InXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWJcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHNlbGVjdCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nXCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVTdHJpbmdDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBlZGl0LXJlbmRlcmVyXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1knXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ1knXCI+WWVzPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ04nXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ04nXCI+Tm88L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRXh0ZW5kZWQgQm9vbGVhbiAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnRUInXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWViXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxzZWxlY3QgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlU3RyaW5nQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidZJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdZJ1wiPlllczwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidOJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdOJ1wiPk5vPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1UnXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ1UnXCI+VW5rbm93bjwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBDaG9pY2U6IFNpbmdsZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnQUMnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdOJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1hYy1uXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwiKGF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUF0dHJpYnV0ZUNob2ljZSk/YXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlQXR0cmlidXRlQ2hvaWNlLmlkQXR0cmlidXRlQ2hvaWNlOnVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hvaWNlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFx0W2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGVkaXQtcmVuZGVyZXJcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYXR0cmlidXRlQ2hvaWNlIG9mIGF0dHJpYnV0ZUNob2ljZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImF0dHJpYnV0ZUNob2ljZS5pZEF0dHJpYnV0ZUNob2ljZVwiPlxyXG4gICAgICAgICAgICAgIHt7IGF0dHJpYnV0ZUNob2ljZS5jaG9pY2UgfX1cclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIENob2ljZTogTXVsdGkgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0FDJyAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSAnWSdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtYWMteVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtY29sdW1uIHktYXV0b1wiIHN0eWxlPVwibWF4LWhlaWdodDogMTI1cHg7IHJvdy1nYXA6IDVweFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlQ2hvaWNlIG9mIGF0dHJpYnV0ZUNob2ljZXNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImF0dHJpYnV0ZUNob2ljZS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlTXVsdGlDaG9pY2VDaGFuZ2UoYXR0cmlidXRlQ2hvaWNlKVwiXHJcblx0XHRcdFx0XHQgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGNoZWNrYm94XCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1mbGV4LWlucHV0LWNob2ljZS1tdWx0aXBsZS17e2F0dHJpYnV0ZUNob2ljZS5jaG9pY2V9fVwiLz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29kLWxhYmVsIHBzLTFcIj5cclxuICAgICAgICAgICAgICAgIHt7YXR0cmlidXRlQ2hvaWNlLmNob2ljZX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDwhLS0gRGljdGlvbmFyeTogTXVsdGkgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0RJQ1QnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdZJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1hYy15XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTEgZmxleC1jb2x1bW4geS1hdXRvXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAxMjVweDsgcm93LWdhcDogNXB4XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBkaWN0aW9uYXJ5RW50cmllc1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZW50cnkuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlTXVsdGlEaWN0Q2hhbmdlKGVudHJ5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBjaGVja2JveFwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZmxleC1pbnB1dC1kaWN0aW9uYXJ5LWNob2ljZS17e2VudHJ5LmRpc3BsYXl9fVwiLz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29kLWxhYmVsIHBzLTFcIj5cclxuICAgICAgICAgICAgICAgIHt7ZW50cnkuZGlzcGxheX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+ICAgIFxyXG5cclxuICAgIDwhLS0gRGljdGlvbmFyeSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnRElDVCcgJiYgYXR0cmlidXRlLmlzTXVsdGlWYWx1ZSA9PT0gJ04nXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWRpY3RcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHNlbGVjdCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlSWREaWN0aW9uYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVEaWN0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBkaWN0aW9uYXJ5RW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiZW50cnkudmFsdWVcIj5cclxuICAgICAgICAgICAgICB7eyBlbnRyeS5kaXNwbGF5IH19XHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBHcmlkIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdHQSdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWdhXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5pZEF0dHJpYnV0ZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbXItMVwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZWRpdElubGluZVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWdhXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmVkaXRCdXR0b25zRW5hYmxlZClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkR3JpZFJvdyhlZGl0R3JpZE1vZGFsLCBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGUpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdhLWljb25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgZmEteHNcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tZ2FcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCF0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZWRpdEJ1dHRvbnNFbmFibGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVHcmlkUm93KGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2EtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXMgZmEteHNcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj4gICAgICAgICAgICAgXHJcbiAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyICNncmlkQXR0cmlidXRlXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmVcIlxyXG4gICAgICAgICAgICAgIChncmlkUmVhZHkpPVwidGhpcy5vbkdyaWRSZWFkeSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAobW9kZWxVcGRhdGVkKT1cIm9uTW9kZWxVcGRhdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChncmlkU2l6ZUNoYW5nZWQpPVwib25HcmlkU2l6ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKHJvd0RvdWJsZUNsaWNrZWQpPVwiZWRpdEdyaWRSb3coZWRpdEdyaWRNb2RhbCwgYXR0cmlidXRlLmlkQXR0cmlidXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwidGhpcy5ncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW3Jvd1NlbGVjdGlvbl09XCInc2luZ2xlJ1wiXHJcbiAgICAgICAgICAgICAgW2NvbHVtbkRlZnNdPVwiZ3JpZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgIFtyb3dEYXRhXT1cImdyaWREYXRhXCJcclxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYXR0cmlidXRlLncgKyAncHgnXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImF0dHJpYnV0ZS5oICsgJ3B4J1wiPlxyXG4gICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxuZy10ZW1wbGF0ZSAjZWRpdEdyaWRNb2RhbCBsZXQtY2xvc2U9XCJjbG9zZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fSBHcmlkIFJvd1xyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgZC1mbGV4IGZsZXgtY29sdW1uIGhjaS1jb2QtZWRpdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF0dHJpYnV0ZSBvZiBlZGl0R3JvdXBSb3dBdHRyaWJ1dGVzXCI+XHJcbiAgICAgICAgICA8aGNpLWF0dHJpYnV0ZS1lZGl0IFtpZF09XCInZWRpdC1pZC1hdHRyaWJ1dGUtJyArIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cEF0dHJpYnV0ZVJvd0lkXT1cImVkaXRHcm91cEF0dHJpYnV0ZVJvd0lkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJpYnV0ZV09XCJhdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF0dHJpYnV0ZVwiPjwvaGNpLWF0dHJpYnV0ZS1lZGl0PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmVkaXRCdXR0b25zRW5hYmxlZClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoJ1NhdmUnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBTYXZlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoJ0NhbmNlbCcpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGBcclxuICAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gIFx0LmhjaS1jb2QgYnV0dG9uLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWJhc2Uge1xyXG4gICAgICBcdGhlaWdodDogMjBweDtcclxuICAgICAgXHR3aWR0aDogMjBweDtcclxuICAgICAgXHRsaW5lLWhlaWdodDogdW5zZXQ7XHJcbiAgXHR9XHJcbiAgXHRcclxuICAgIC5idG4tZ2Ege1xyXG4gICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgIGhlaWdodDogMThweDtcclxuICAgICAgd2lkdGg6IDE4cHg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5nYS1pY29uIHtcclxuICAgICAgZm9udC1zaXplOiAuOWVtO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29kIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUtZGVmYXVsdC1pY29uIHtcclxuICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICB3aWR0aDogMjBweDtcclxuICAgIH1cclxuIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGVGbGV4Q29tcG9uZW50IGV4dGVuZHMgQXR0cmlidXRlQmFzZSB7XHJcbiAgaGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWUgPSBcIlwiO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgYXR0cmlidXRlU2VydmljZTogQXR0cmlidXRlU2VydmljZSxcclxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbFxyXG4gICkge1xyXG4gICAgc3VwZXIoYXR0cmlidXRlU2VydmljZSwgZWxlbWVudFJlZiwgcmVuZGVyZXIsIG1vZGFsU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIGlmICh0aGlzLmF0dHJpYnV0ZSAmJiB0aGlzLmF0dHJpYnV0ZS5kaXNwbGF5TmFtZSkge1xyXG4gICAgICB0aGlzLmhjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lID0gdGhpcy5hdHRyaWJ1dGUuZGlzcGxheU5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGbGV4IG5lZWRzIHRvIGV4dGVuZCBncmlkIGNvbHVtbnMgYmVjYXVzZSB3ZSBubyBsb25nZXIgd2FudCB0byB1c2UgYWJzb2x1dGUgd2lkdGguICBIZXJlIHdlIGdlbmVyYXRlIHBlcmNlbnRhZ2VcclxuICAgKiBiYXNlZCB1cG9uIHRoZSBhYnNvbHV0ZSB3aWR0aCwgYnV0IHN0aWxsIHVzZSBhYnNvbHV0ZSB3aWR0aCBmb3IgdGhlIG1pbiB3aWR0aC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7QXR0cmlidXRlW119IGF0dHJpYnV0ZXNcclxuICAgKiBAcGFyYW0ge2FueVtdfSBjb2x1bW5zXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUdyaWRDb2x1bW5zKGF0dHJpYnV0ZXM6IEdyYXBoaWNhbEF0dHJpYnV0ZVtdLCBjb2x1bW5zOiBhbnlbXSkge1xyXG4gICAgc3VwZXIuaW5pdGlhbGl6ZUdyaWRDb2x1bW5zKGF0dHJpYnV0ZXMsIGNvbHVtbnMpO1xyXG5cclxuICAgIGxldCB3aWR0aDogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XHJcbiAgICAgIHdpZHRoICs9IGF0dHJpYnV0ZS53O1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XHJcbiAgICAgIGxldCB3aWR0aFBlcmNlbnQ6IG51bWJlciA9IE1hdGguZmxvb3IoMTAwICogKGF0dHJpYnV0ZS53IC8gd2lkdGgpKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5leHRlcm5hbENvbmZpZyAmJiBjb2x1bW4uZXh0ZXJuYWxDb25maWcuaWRBdHRyaWJ1dGUgPT09IGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgY29sdW1uLm1pbldpZHRoID0gYXR0cmlidXRlLnc7XHJcbiAgICAgICAgICBjb2x1bW4ud2lkdGhQZXJjZW50ID0gd2lkdGhQZXJjZW50O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
809
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWZsZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kL3NyYy9jb21wb25lbnRzL2F0dHJpYnV0ZS1mbGV4LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBR3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7OztBQUkvRDs7OztHQUlHO0FBb1pILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBRXZELFlBQ0UsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLFlBQXNCO1FBRXRCLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBUDlELDJDQUFzQyxHQUFHLEVBQUUsQ0FBQztJQVE1QyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxzQ0FBc0MsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHFCQUFxQixDQUFDLFVBQWdDLEVBQUUsT0FBYztRQUNwRSxLQUFLLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWpELElBQUksS0FBSyxHQUFXLENBQUMsQ0FBQztRQUN0QixLQUFLLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxLQUFLLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLElBQUksWUFBWSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRW5FLEtBQUssSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzNCLElBQUksTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3pGLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDOUIsTUFBTSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7b0JBQ25DLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0E1Q1Usc0JBQXNCO21HQUF0QixzQkFBc0IsaUZBaFp2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzWFQ7OzRGQTBCVSxzQkFBc0I7a0JBblpsQyxTQUFTOytCQUNFLG9CQUFvQixpQkFDZixpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNYVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TmdiTW9kYWx9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5cclxuXHJcbmltcG9ydCB7QXR0cmlidXRlQmFzZX0gZnJvbSBcIi4vYXR0cmlidXRlLWJhc2VcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGVTZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZXMvYXR0cmlidXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtBdHRyaWJ1dGV9IGZyb20gXCIuLi9tb2RlbC9hdHRyaWJ1dGUuZW50aXR5XCI7XHJcbmltcG9ydCB7R3JhcGhpY2FsQXR0cmlidXRlfSBmcm9tIFwiLi4vbW9kZWwvZ3JhcGhpY2FsLWF0dHJpYnV0ZS5lbnRpdHlcIjtcclxuXHJcbi8qKlxyXG4gKiBUaGUgdmlldyBmb3IgYXR0cmlidXRlcyBvcmdhbml6ZWQgaW4gYSBmbGV4IGxheW91dC4gIFRoaXMgd2lsbCBhcnJhbmdlIGFsbCBhdHRyaWJ1dGVzIGluIGEgZm91ciBjb2x1bW4gbGF5b3V0XHJcbiAqIHdpdGggZ3JpZHMgdGFraW5nIHVwIGFsbCAxMiBjb2x1bW5zLiAgVGhlIGF0dHJpYnV0ZXMgaGVyZSB3aWxsIGZpbGwgdGhlIHRoaXMgcGFyZW50IGNvbXBvbmVudCB3aGljaCBkZWZpbmVzIHRoZVxyXG4gKiBjb2x1bW4gc2l6ZS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1hdHRyaWJ1dGUtZmxleFwiLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDwhLS0gTGluZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnTElORSdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgY29kLXR5cGUtbGluZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29kLWxpbmUgbWUtMSBtdC1hdXRvIG1iLWF1dG8gZmxleC1zaHJpbmstMFwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTEgZmxleC1zaHJpbmstMFwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29kLWxpbmUgZ3JvdyBtdC1hdXRvIG1iLWF1dG9cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIExhYmVsIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdMQUJFTCdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1sYWJlbFwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBTdHJpbmcgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdTJ1wiPlxyXG4gICAgICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLXNcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAgICAgIHt7IGF0dHJpYnV0ZS5kaXNwbGF5TmFtZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlU3RyaW5nQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knIHx8IGF0dHJpYnV0ZS5pc0FjdGl2ZSA9PT0gJ04nXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctYXR0cmlidXRlLWZsZXgtaW5wdXQtc3RyaW5nLXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgPCEtLSBUZXh0IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdUWFQnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLXR4dFwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8dGV4dGFyZWFcclxuICAgICAgICAgICAgI2lucHV0UmVmXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgc3BlbGxjaGVjaz1cInNwZWxsY2hlY2tcIlxyXG4gICAgICAgICAgICBsYW5nPVwiZW5cIlxyXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVMb25nVGV4dC50ZXh0RGF0YVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidmFsdWVUZXh0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knIHx8IGF0dHJpYnV0ZS5pc0FjdGl2ZSA9PT0gJ04nXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj5cclxuICAgICAgICAgIDwvdGV4dGFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBDaGVja2JveCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnQ0InXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWNiXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlQ2hlY2tib3hDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJyB8fCBhdHRyaWJ1dGUuaXNBY3RpdmUgPT09ICdOJ1wiXHJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctYXR0cmlidXRlLWZsZXgtaW5wdXQtY2hlY2tib3gte3toY2lOZ0F0dHJpYnV0ZUFic29sdXRlSW5wdXREaXNwbGF5TmFtZX19XCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gTnVtZXJpYyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnTidcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtblwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8aW5wdXQgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVOdW1lcmljXCJcclxuICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZU51bWVyaWNDaGFuZ2UoJGV2ZW50KVwiXHJcblx0XHRcdFx0ICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJyB8fCBhdHRyaWJ1dGUuaXNBY3RpdmUgPT09ICdOJ1wiXHJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctYXR0cmlidXRlLWZsZXgtaW5wdXQtbnVtZXJpYy17e2hjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lfX1cIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBJbnRlZ2VyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdJJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1pXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUludGVnZXJcIlxyXG4gICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlSW50ZWdlckNoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0XHQgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knIHx8IGF0dHJpYnV0ZS5pc0FjdGl2ZSA9PT0gJ04nXCJcclxuICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZmxleC1pbnB1dC1pbnRlZ2VyLXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIERhdGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0QnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIG5hbWU9XCJ2YWx1ZURhdGVcIiAgICAgICAgICBcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZURhdGVcIiBcclxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwidmFsdWVEYXRlXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knIHx8IGF0dHJpYnV0ZS5pc0FjdGl2ZSA9PT0gJ04nXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZmxleC1pbnB1dC1kYXRlLXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiPlxyXG4gICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlICBtYXRTdWZmaXggW2Zvcl09XCJ2YWx1ZURhdGVcIiBjbGFzcz1cImNvZC1kcC10b2dnbGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICN2YWx1ZURhdGU+PC9tYXQtZGF0ZXBpY2tlcj4gIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRGF0ZSBUaW1lIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdEVCdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtZHRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgbmFtZT1cInZhbHVlRGF0ZVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS5kYXRlXCJcclxuICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJyB8fCBhdHRyaWJ1dGUuaXNBY3RpdmUgPT09ICdOJ1wiXHJcbiAgICAgICAgICAgICAgICAgW25neE1hdERhdGV0aW1lUGlja2VyXT1cImR0cGlja2VyXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1mbGV4LWlucHV0LWRhdGUtdGltZS17e2hjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lfX1cIj5cclxuICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkdHBpY2tlclwiIGNsYXNzPVwiY29kLWRwLXRvZ2dsZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICA8bmd4LW1hdC1kYXRldGltZS1waWNrZXIgI2R0cGlja2VyIFtzaG93U2Vjb25kc109XCJ0cnVlXCI+PC9uZ3gtbWF0LWRhdGV0aW1lLXBpY2tlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEJvb2xlYW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0InXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWJcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHNlbGVjdCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nXCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVTdHJpbmdDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWScgfHwgYXR0cmlidXRlLmlzQWN0aXZlID09PSAnTidcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBlZGl0LXJlbmRlcmVyXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1knXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ1knXCI+WWVzPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ04nXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ04nXCI+Tm88L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRXh0ZW5kZWQgQm9vbGVhbiAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnRUInXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWViXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxzZWxlY3QgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlU3RyaW5nQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knIHx8IGF0dHJpYnV0ZS5pc0FjdGl2ZSA9PT0gJ04nXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidZJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdZJ1wiPlllczwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidOJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdOJ1wiPk5vPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1UnXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ1UnXCI+VW5rbm93bjwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBDaG9pY2U6IFNpbmdsZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnQUMnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdOJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1hYy1uXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwiKGF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUF0dHJpYnV0ZUNob2ljZSk/YXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlQXR0cmlidXRlQ2hvaWNlLmlkQXR0cmlidXRlQ2hvaWNlOnVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hvaWNlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFx0ICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knIHx8IGF0dHJpYnV0ZS5pc0FjdGl2ZSA9PT0gJ04nXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGVDaG9pY2Ugb2YgYXR0cmlidXRlQ2hvaWNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiYXR0cmlidXRlQ2hvaWNlLmlkQXR0cmlidXRlQ2hvaWNlXCI+XHJcbiAgICAgICAgICAgICAge3sgYXR0cmlidXRlQ2hvaWNlLmNob2ljZSB9fVxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQ2hvaWNlOiBNdWx0aSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnQUMnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdZJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1hYy15XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTEgZmxleC1jb2x1bW4geS1hdXRvXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAxMjVweDsgcm93LWdhcDogNXB4XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGVDaG9pY2Ugb2YgYXR0cmlidXRlQ2hvaWNlc1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYXR0cmlidXRlQ2hvaWNlLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJyB8fCBhdHRyaWJ1dGUuaXNBY3RpdmUgPT09ICdOJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidmFsdWVNdWx0aUNob2ljZUNoYW5nZShhdHRyaWJ1dGVDaG9pY2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY2hlY2tib3hcIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctYXR0cmlidXRlLWZsZXgtaW5wdXQtY2hvaWNlLW11bHRpcGxlLXt7YXR0cmlidXRlQ2hvaWNlLmNob2ljZX19XCIvPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2QtbGFiZWwgcHMtMVwiPlxyXG4gICAgICAgICAgICAgICAge3thdHRyaWJ1dGVDaG9pY2UuY2hvaWNlfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgPCEtLSBEaWN0aW9uYXJ5OiBNdWx0aSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnRElDVCcgJiYgYXR0cmlidXRlLmlzTXVsdGlWYWx1ZSA9PT0gJ1knXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWFjLXlcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMSBmbGV4LWNvbHVtbiB5LWF1dG9cIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDEyNXB4OyByb3ctZ2FwOiA1cHhcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVudHJ5IG9mIGRpY3Rpb25hcnlFbnRyaWVzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zaHJpbmstMFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJlbnRyeS5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJyB8fCBhdHRyaWJ1dGUuaXNBY3RpdmUgPT09ICdOJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidmFsdWVNdWx0aURpY3RDaGFuZ2UoZW50cnkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY2hlY2tib3hcIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctYXR0cmlidXRlLWZsZXgtaW5wdXQtZGljdGlvbmFyeS1jaG9pY2Ute3tlbnRyeS5kaXNwbGF5fX1cIi8+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvZC1sYWJlbCBwcy0xXCI+XHJcbiAgICAgICAgICAgICAgICB7e2VudHJ5LmRpc3BsYXl9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPiAgICBcclxuXHJcbiAgICA8IS0tIERpY3Rpb25hcnkgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0RJQ1QnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdOJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1kaWN0XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxzZWxlY3QgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUlkRGljdGlvbmFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlRGljdENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJyB8fCBhdHRyaWJ1dGUuaXNBY3RpdmUgPT09ICdOJ1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGVkaXQtcmVuZGVyZXJcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZW50cnkgb2YgZGljdGlvbmFyeUVudHJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImVudHJ5LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAge3sgZW50cnkuZGlzcGxheSB9fVxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gR3JpZCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnR0EnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1nYVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuaWRBdHRyaWJ1dGVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1yLTFcIj5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRJbmxpbmVcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvO1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1nYVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoIXRoaXMuYXR0cmlidXRlU2VydmljZS5lZGl0QnV0dG9uc0VuYWJsZWQpXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEdyaWRSb3coZWRpdEdyaWRNb2RhbCwgYXR0cmlidXRlLmlkQXR0cmlidXRlKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnYS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIGZhLXhzXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWdhXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmVkaXRCdXR0b25zRW5hYmxlZClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlR3JpZFJvdyhhdHRyaWJ1dGUuaWRBdHRyaWJ1dGUpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdhLWljb25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzIGZhLXhzXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xXCI+ICAgICAgICAgICAgIFxyXG4gICAgICAgICAgPGFnLWdyaWQtYW5ndWxhciAjZ3JpZEF0dHJpYnV0ZVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWctdGhlbWUtYWxwaW5lXCJcclxuICAgICAgICAgICAgICAoZ3JpZFJlYWR5KT1cInRoaXMub25HcmlkUmVhZHkoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKG1vZGVsVXBkYXRlZCk9XCJvbk1vZGVsVXBkYXRlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoZ3JpZFNpemVDaGFuZ2VkKT1cIm9uR3JpZFNpemVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChyb3dEb3VibGVDbGlja2VkKT1cImVkaXRHcmlkUm93KGVkaXRHcmlkTW9kYWwsIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cInRoaXMuZ3JpZE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFtyb3dTZWxlY3Rpb25dPVwiJ3NpbmdsZSdcIlxyXG4gICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImdyaWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICBbcm93RGF0YV09XCJncmlkRGF0YVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImF0dHJpYnV0ZS53ICsgJ3B4J1wiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJhdHRyaWJ1dGUuaCArICdweCdcIj5cclxuICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICA8bmctdGVtcGxhdGUgI2VkaXRHcmlkTW9kYWwgbGV0LWNsb3NlPVwiY2xvc2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX0gR3JpZCBSb3dcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGQtZmxleCBmbGV4LWNvbHVtbiBoY2ktY29kLWVkaXRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGUgb2YgZWRpdEdyb3VwUm93QXR0cmlidXRlc1wiPlxyXG4gICAgICAgICAgPGhjaS1hdHRyaWJ1dGUtZWRpdCBbaWRdPVwiJ2VkaXQtaWQtYXR0cmlidXRlLScgKyBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBBdHRyaWJ1dGVSb3dJZF09XCJlZGl0R3JvdXBBdHRyaWJ1dGVSb3dJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyaWJ1dGVdPVwiYXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdHRyaWJ1dGVcIj48L2hjaS1hdHRyaWJ1dGUtZWRpdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoIXRoaXMuYXR0cmlidXRlU2VydmljZS5lZGl0QnV0dG9uc0VuYWJsZWQpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKCdTYXZlJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKCdDYW5jZWwnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICBgXHJcbiAgLFxyXG4gIHN0eWxlczogW2BcclxuICBcdC5oY2ktY29kIGJ1dHRvbi5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1iYXNlIHtcclxuICAgICAgXHRoZWlnaHQ6IDIwcHg7XHJcbiAgICAgIFx0d2lkdGg6IDIwcHg7XHJcbiAgICAgIFx0bGluZS1oZWlnaHQ6IHVuc2V0O1xyXG4gIFx0fVxyXG4gIFx0XHJcbiAgICAuYnRuLWdhIHtcclxuICAgICAgcGFkZGluZzogMHB4O1xyXG4gICAgICBoZWlnaHQ6IDE4cHg7XHJcbiAgICAgIHdpZHRoOiAxOHB4O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAuZ2EtaWNvbiB7XHJcbiAgICAgIGZvbnQtc2l6ZTogLjllbTtcclxuICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvZCAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWRlZmF1bHQtaWNvbiB7XHJcbiAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICB9XHJcbiBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlRmxleENvbXBvbmVudCBleHRlbmRzIEF0dHJpYnV0ZUJhc2Uge1xyXG4gIGhjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lID0gXCJcIjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGF0dHJpYnV0ZVNlcnZpY2U6IEF0dHJpYnV0ZVNlcnZpY2UsXHJcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIG1vZGFsU2VydmljZTogTmdiTW9kYWxcclxuICApIHtcclxuICAgIHN1cGVyKGF0dHJpYnV0ZVNlcnZpY2UsIGVsZW1lbnRSZWYsIHJlbmRlcmVyLCBtb2RhbFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICBpZiAodGhpcy5hdHRyaWJ1dGUgJiYgdGhpcy5hdHRyaWJ1dGUuZGlzcGxheU5hbWUpIHtcclxuICAgICAgdGhpcy5oY2lOZ0F0dHJpYnV0ZUFic29sdXRlSW5wdXREaXNwbGF5TmFtZSA9IHRoaXMuYXR0cmlidXRlLmRpc3BsYXlOYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmxleCBuZWVkcyB0byBleHRlbmQgZ3JpZCBjb2x1bW5zIGJlY2F1c2Ugd2Ugbm8gbG9uZ2VyIHdhbnQgdG8gdXNlIGFic29sdXRlIHdpZHRoLiAgSGVyZSB3ZSBnZW5lcmF0ZSBwZXJjZW50YWdlXHJcbiAgICogYmFzZWQgdXBvbiB0aGUgYWJzb2x1dGUgd2lkdGgsIGJ1dCBzdGlsbCB1c2UgYWJzb2x1dGUgd2lkdGggZm9yIHRoZSBtaW4gd2lkdGguXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0F0dHJpYnV0ZVtdfSBhdHRyaWJ1dGVzXHJcbiAgICogQHBhcmFtIHthbnlbXX0gY29sdW1uc1xyXG4gICAqL1xyXG4gIGluaXRpYWxpemVHcmlkQ29sdW1ucyhhdHRyaWJ1dGVzOiBHcmFwaGljYWxBdHRyaWJ1dGVbXSwgY29sdW1uczogYW55W10pIHtcclxuICAgIHN1cGVyLmluaXRpYWxpemVHcmlkQ29sdW1ucyhhdHRyaWJ1dGVzLCBjb2x1bW5zKTtcclxuXHJcbiAgICBsZXQgd2lkdGg6IG51bWJlciA9IDA7XHJcbiAgICBmb3IgKGxldCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xyXG4gICAgICB3aWR0aCArPSBhdHRyaWJ1dGUudztcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xyXG4gICAgICBsZXQgd2lkdGhQZXJjZW50OiBudW1iZXIgPSBNYXRoLmZsb29yKDEwMCAqIChhdHRyaWJ1dGUudyAvIHdpZHRoKSk7XHJcblxyXG4gICAgICBmb3IgKGxldCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4uZXh0ZXJuYWxDb25maWcgJiYgY29sdW1uLmV4dGVybmFsQ29uZmlnLmlkQXR0cmlidXRlID09PSBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGUpIHtcclxuICAgICAgICAgIGNvbHVtbi5taW5XaWR0aCA9IGF0dHJpYnV0ZS53O1xyXG4gICAgICAgICAgY29sdW1uLndpZHRoUGVyY2VudCA9IHdpZHRoUGVyY2VudDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19