@ieeesa-npm/presentation 0.30.7 → 0.31.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.
- package/esm2022/lib/assets/constants.json +2 -1
- package/esm2022/lib/components/accordion/accordion.component.mjs +2 -2
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +1 -1
- package/esm2022/lib/components/card/card.component.mjs +3 -3
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +1 -1
- package/esm2022/lib/components/chips/chips.component.mjs +2 -2
- package/esm2022/lib/components/data-table/data-table.component.mjs +4 -3
- package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +2 -2
- package/esm2022/lib/components/export-format-popover/export-format-popover.component.mjs +206 -0
- package/esm2022/lib/components/export-success-dialog/export-success-dialog.component.mjs +39 -0
- package/esm2022/lib/components/file-download/file-download.component.mjs +21 -12
- package/esm2022/lib/components/file-upload/file-upload.component.mjs +2 -2
- package/esm2022/lib/components/filter/filter.component.mjs +2 -2
- package/esm2022/lib/components/form-support-text/form-support-text.component.mjs +3 -2
- package/esm2022/lib/components/header/header.component.mjs +15 -10
- package/esm2022/lib/components/icon-button/icon-button.component.mjs +1 -1
- package/esm2022/lib/components/list/list.component.mjs +3 -2
- package/esm2022/lib/components/menu/menu.component.mjs +1 -1
- package/esm2022/lib/components/modal/modal.component.mjs +8 -6
- package/esm2022/lib/components/modal-confirmation/modal-confirmation.component.mjs +2 -2
- package/esm2022/lib/components/modal-info/modal-info.component.mjs +41 -0
- package/esm2022/lib/components/multi-select-autocomplete/multi-select-autocomplete.component.mjs +1 -1
- package/esm2022/lib/components/notification/notification.component.mjs +3 -2
- package/esm2022/lib/components/policy-confirmation-dialog/policy-confirmation-dialog.component.mjs +58 -0
- package/esm2022/lib/components/select/select.component.mjs +1 -1
- package/esm2022/lib/components/tabs/tabs.component.mjs +1 -1
- package/esm2022/lib/components/tile/tile.component.mjs +2 -2
- package/esm2022/lib/directives/dynamic-form-field/dynamic-form-field.directive.mjs +1 -1
- package/esm2022/lib/directives/set-background/set-background.directive.mjs +4 -3
- package/esm2022/lib/models/card-button.model.mjs +1 -1
- package/esm2022/lib/models/export-format-popover.model.mjs +10 -0
- package/esm2022/lib/models/export-success-dialog.model.mjs +2 -0
- package/esm2022/lib/models/field-config.model.mjs +1 -1
- package/esm2022/lib/models/filters-options.model.mjs +1 -1
- package/esm2022/lib/models/list-item.model.mjs +1 -1
- package/esm2022/lib/models/policy-confirmation-dialog.model.mjs +2 -0
- package/esm2022/lib/pipes/safe.pipe.mjs +44 -0
- package/esm2022/lib/services/break-point-observer.service.mjs +36 -0
- package/esm2022/lib/services/file-upload.service.mjs +2 -2
- package/esm2022/public-api.mjs +12 -6
- package/fesm2022/ieeesa-npm-presentation.mjs +489 -79
- package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
- package/lib/components/accordion/accordion.component.d.ts +1 -1
- package/lib/components/autocomplete/autocomplete.component.d.ts +1 -1
- package/lib/components/card/card.component.d.ts +2 -2
- package/lib/components/checkbox/checkbox.component.d.ts +1 -2
- package/lib/components/chips/chips.component.d.ts +4 -9
- package/lib/components/data-table/data-table.component.d.ts +2 -3
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +1 -3
- package/lib/components/export-format-popover/export-format-popover.component.d.ts +91 -0
- package/lib/components/export-success-dialog/export-success-dialog.component.d.ts +24 -0
- package/lib/components/file-download/file-download.component.d.ts +5 -4
- package/lib/components/file-upload/file-upload.component.d.ts +11 -12
- package/lib/components/filter/filter.component.d.ts +2 -4
- package/lib/components/header/header.component.d.ts +6 -6
- package/lib/components/icon-button/icon-button.component.d.ts +1 -1
- package/lib/components/list/list.component.d.ts +1 -1
- package/lib/components/menu/menu.component.d.ts +1 -1
- package/lib/components/modal/modal.component.d.ts +1 -1
- package/lib/components/modal-confirmation/modal-confirmation.component.d.ts +1 -2
- package/lib/components/modal-info/modal-info.component.d.ts +23 -0
- package/lib/components/multi-select-autocomplete/multi-select-autocomplete.component.d.ts +1 -1
- package/lib/components/policy-confirmation-dialog/policy-confirmation-dialog.component.d.ts +36 -0
- package/lib/components/select/select.component.d.ts +1 -1
- package/lib/components/tabs/tabs.component.d.ts +1 -2
- package/lib/components/tile/tile.component.d.ts +1 -1
- package/lib/directives/dynamic-form-field/dynamic-form-field.directive.d.ts +2 -2
- package/lib/directives/set-background/set-background.directive.d.ts +1 -1
- package/lib/models/card-button.model.d.ts +1 -1
- package/lib/models/export-format-popover.model.d.ts +15 -0
- package/lib/models/export-success-dialog.model.d.ts +8 -0
- package/lib/models/field-config.model.d.ts +1 -3
- package/lib/models/filters-options.model.d.ts +1 -1
- package/lib/models/list-item.model.d.ts +1 -1
- package/lib/models/policy-confirmation-dialog.model.d.ts +9 -0
- package/lib/pipes/safe.pipe.d.ts +16 -0
- package/lib/services/break-point-observer.service.d.ts +21 -0
- package/lib/services/file-upload.service.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +10 -5
- package/src/lib/assets/constants.json +2 -1
- package/esm2022/lib/models/align-type.model.mjs +0 -11
- package/esm2022/lib/models/checkbox-option.model.mjs +0 -2
- package/esm2022/lib/models/confirmation-modal-data.model.mjs +0 -2
- package/esm2022/lib/models/icon-button.model.mjs +0 -2
- package/esm2022/lib/models/select-option.model.mjs +0 -2
- package/lib/models/align-type.model.d.ts +0 -8
- package/lib/models/checkbox-option.model.d.ts +0 -8
- package/lib/models/confirmation-modal-data.model.d.ts +0 -11
- package/lib/models/icon-button.model.d.ts +0 -8
- package/lib/models/select-option.model.d.ts +0 -5
|
@@ -9,7 +9,8 @@ import { MatButtonModule } from '@angular/material/button';
|
|
|
9
9
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
10
10
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
11
11
|
import { Subject, takeUntil } from 'rxjs';
|
|
12
|
-
import { SafePipe
|
|
12
|
+
import { SafePipe } from '../../pipes/safe.pipe';
|
|
13
|
+
import { SafeType } from '@ieeesa-npm/models';
|
|
13
14
|
import { IconButtonComponent } from '../icon-button/icon-button.component';
|
|
14
15
|
import { CheckboxComponent } from '../checkbox/checkbox.component';
|
|
15
16
|
import { TableColumnSortDirection, TableColumnType, } from '../../models/table-schema.model';
|
|
@@ -25,7 +26,7 @@ import { animate, state, style, transition, trigger, } from '@angular/animations
|
|
|
25
26
|
import { LegendComponent } from '../legend/legend.component';
|
|
26
27
|
import { SlideToggleComponent } from '../slide-toggle/slide-toggle.component';
|
|
27
28
|
import * as i0 from "@angular/core";
|
|
28
|
-
import * as i1 from "
|
|
29
|
+
import * as i1 from "../../services/break-point-observer.service";
|
|
29
30
|
import * as i2 from "@angular/common";
|
|
30
31
|
import * as i3 from "@angular/material/sort";
|
|
31
32
|
import * as i4 from "@angular/material/table";
|
|
@@ -777,4 +778,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
777
778
|
}], isEllipsisRequiredForLink: [{
|
|
778
779
|
type: Input
|
|
779
780
|
}] } });
|
|
780
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxpQkFBaUIsRUFFakIsVUFBVSxFQUVWLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RSxPQUFPLEVBRUwsa0JBQWtCLEdBRW5CLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLE9BQU8sRUFDUCxhQUFhLEdBR2QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFFTCxRQUFRLEVBQ1IsUUFB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QXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDUSxvQkFBb0I7c0JBQXBELFlBQVk7dUJBQUMsaUJBQWlCO2dCQTZEM0IsbUJBQW1CO3NCQUR0QixLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgT25EZXN0cm95LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgUmVuZGVyZXIyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSwgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7XHJcbiAgTWF0UGFnaW5hdG9yLFxyXG4gIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuICBQYWdlRXZlbnQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHtcclxuICBNYXRTb3J0LFxyXG4gIE1hdFNvcnRNb2R1bGUsXHJcbiAgU29ydCxcclxuICBTb3J0RGlyZWN0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgU2FmZVBpcGUsXHJcbiAgU2FmZVR5cGUsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgVGFibGVDb2x1bW5TY2hlbWEsXHJcbiAgVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtc2NoZW1hLm1vZGVsJztcclxuaW1wb3J0IHsgUGFnaW5hdG9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BhZ2luYXRvci1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGVja2JveE9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9jaGVja2JveC1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ljb24tYnV0dG9uLm1vZGVsJztcclxuaW1wb3J0IHsgU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQWN0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1hY3Rpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgQ2hpcE9wdGlvbiwgQ2hpcHNUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoaXAtb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IFNlYXJjaFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VhcmNoLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyc0FuZE9wdGlvbnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVycy1vcHRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgVGV4dFRydW5jYXRlZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdGV4dC10cnVuY2F0ZWQvdGV4dC10cnVuY2F0ZWQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbWVudS9tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1lbnUgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVudS5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgYW5pbWF0ZSxcclxuICBzdGF0ZSxcclxuICBzdHlsZSxcclxuICB0cmFuc2l0aW9uLFxyXG4gIHRyaWdnZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IExlZ2VuZENvbXBvbmVudCB9IGZyb20gJy4uL2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGVnZW5kIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xlZ2VuZC5tb2RlbCc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uTWVudUluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtY29sdW1uLW1lbnUtaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7IFNsaWRlVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2xpZGUtdG9nZ2xlL3NsaWRlLXRvZ2dsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbGlkZVRvZ2dsZU9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9zbGlkZS10b2dnbGUtb3B0aW9ucy5tb2RlbCc7XHJcblxyXG4vKipcclxuICogUHJvdmlkZXMgYSBNYXRlcmlhbCBEZXNpZ24gc3R5bGVkIGRhdGEtdGFibGUgdGhhdCBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IHJvd3Mgb2YgZGF0YSB3aXRoIHNvcnRCeSwgZmlsdGVyQnksIGFkZC9lZGl0L2RlbGV0ZSB0YWJsZSByb3cgZGF0YSwgcGFnaW5hdGlvbiwgc2VhcmNoIHRhYmxlIGRhdGEuXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7QWZ0ZXJWaWV3SW5pdH1cclxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWRhdGEtdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgZm9yd2FyZFJlZigoKSA9PiBTYWZlUGlwZSksXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0U29ydE1vZHVsZSxcclxuICAgIFNsaWRlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgU2VhcmNoQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgVGV4dFRydW5jYXRlZERpcmVjdGl2ZSxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWVudUNvbXBvbmVudCxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNZW51Q29tcG9uZW50LFxyXG4gICAgTGVnZW5kQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ2NvbGxhcHNlZCcsXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJywgZGlzcGxheTogJ25vbmUnIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKFxyXG4gICAgICAgICdleHBhbmRlZCA8PT4gY29sbGFwc2VkJyxcclxuICAgICAgICBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKVxyXG4gICAgICApLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHByaXZhdGUgdGFibGVEYXRhITogYW55W107XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBwcml2YXRlIG5lc3RlZFRhYmxlRGF0YSE6IGFueVtdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZXhwYW5kZWRFbGVtZW50OiBhbnk7XHJcbiAgQElucHV0KClcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHNldCB0YWJsZURhdGFJbmZvKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhQ2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldCB0YWJsZURhdGFJbmZvKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBzZXQgbmVzdGVkVGFibGVEYXRhSW5mbyh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YUNoYW5nZXMoKTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBnZXQgbmVzdGVkVGFibGVEYXRhSW5mbygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZURhdGE7XHJcbiAgfVxyXG4gIHByaXZhdGUgY29sdW1uU2NoZW1hITogVGFibGVDb2x1bW5TY2hlbWFbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBjb2x1bW5TY2hlbWFJbmZvKHZhbHVlOiBUYWJsZUNvbHVtblNjaGVtYVtdKSB7XHJcbiAgICB0aGlzLmNvbHVtblNjaGVtYSA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuY29sdW1uU2NoZW1hKVxyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmNvbHVtblNjaGVtYT8ubWFwKChjKSA9PiBjPy5jb2x1bW5EZWYpO1xyXG4gIH1cclxuICBnZXQgY29sdW1uU2NoZW1hSW5mbygpOiBUYWJsZUNvbHVtblNjaGVtYVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtblNjaGVtYTtcclxuICB9XHJcbiAgcHJpdmF0ZSBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYSE6IFRhYmxlQ29sdW1uU2NoZW1hW107XHJcbiAgQElucHV0KClcclxuICBzZXQgbmVzdGVkVGFibGVDb2x1bW5TY2hlbWFJbmZvKHZhbHVlOiBUYWJsZUNvbHVtblNjaGVtYVtdKSB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hID0gdmFsdWU7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucyA9IHRoaXMubmVzdGVkVGFibGVDb2x1bW5TY2hlbWE/Lm1hcChcclxuICAgICAgKGMpID0+IGM/LmNvbHVtbkRlZlxyXG4gICAgKTtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLm5lc3RlZFRhYmxlRGF0YSk7XHJcbiAgfVxyXG4gIGdldCBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYUluZm8oKTogVGFibGVDb2x1bW5TY2hlbWFbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZUNvbHVtblNjaGVtYTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IGNvbnN0YW50cztcclxuICBASW5wdXQoKSB0YWJsZUFjdGlvbnMhOiBUYWJsZUFjdGlvbnM7XHJcbiAgQElucHV0KCkgaGFzTmVzdGVkVGFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSB0YWJsZUNvbHVtbkFjdGlvbnMhOiBNZW51W107XHJcbiAgQElucHV0KCkgdGFibGVDb2x1bW5BY3Rpb25NZW51U2l6ZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHRhYmxlUm93QWN0aW9ucyE6IE1lbnVbXTtcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZVJvd0FjdGlvbnMhOiBNZW51W107XHJcbiAgQElucHV0KCkgY2FwdGlvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB2aWV3QWxsITogc3RyaW5nO1xyXG4gIHByaXZhdGUgcGFnaW5hdG9yQ29uZmlndXJhdGlvbiE6IFBhZ2luYXRvckNvbmZpZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBwYWdpbmF0b3JDb25maWcodmFsdWU6IFBhZ2luYXRvckNvbmZpZykge1xyXG4gICAgdGhpcy5wYWdpbmF0b3JDb25maWd1cmF0aW9uID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBwYWdpbmF0b3JDb25maWcoKTogUGFnaW5hdG9yQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2luYXRvckNvbmZpZ3VyYXRpb247XHJcbiAgfVxyXG4gIHByaXZhdGUgbmVzdGVkUGFnaW5hdG9yQ29uZmlndXJhdGlvbiE6IFBhZ2luYXRvckNvbmZpZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBuZXN0ZWRQYWdpbmF0b3JDb25maWcodmFsdWU6IFBhZ2luYXRvckNvbmZpZykge1xyXG4gICAgdGhpcy5uZXN0ZWRQYWdpbmF0b3JDb25maWd1cmF0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLnNob3dOZXN0ZWRUYWJsZVBhZ2luYXRpb25JbmZvID1cclxuICAgICAgJzEgLSAnICtcclxuICAgICAgK2Ake3RoaXMubmVzdGVkUGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlfWAgK1xyXG4gICAgICAnIG9mICcgK1xyXG4gICAgICArYCR7dGhpcy5uZXN0ZWRQYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzfWA7XHJcbiAgfVxyXG4gIGdldCBuZXN0ZWRQYWdpbmF0b3JDb25maWcoKTogUGFnaW5hdG9yQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLm5lc3RlZFBhZ2luYXRvckNvbmZpZ3VyYXRpb247XHJcbiAgfVxyXG4gIHByaXZhdGUgbGVnZW5kc0luZm8hOiBMZWdlbmRbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBsZWdlbmRzKHZhbHVlOiBMZWdlbmRbXSkge1xyXG4gICAgdGhpcy5sZWdlbmRzSW5mbyA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgbGVnZW5kcygpOiBMZWdlbmRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5sZWdlbmRzSW5mbztcclxuICB9XHJcbiAgcHJpdmF0ZSBjdXJyZW50UGFnZUluZGV4ID0gMDtcclxuICBASW5wdXQoKVxyXG4gIHNldCBwYWdlSW5kZXgodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZUluZGV4ID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcclxuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBwYWdlSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlSW5kZXg7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3VycmVudFBhZ2VTaXplID0gMDtcclxuICBASW5wdXQoKVxyXG4gIHNldCBwYWdlU2l6ZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlU2l6ZSA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBwYWdlU2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2VTaXplO1xyXG4gIH1cclxuICBASW5wdXQoKSBzZWFyY2hQbGFjZUhvbGRlclRleHQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcm93RWRpdEJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgcm93RGVsZXRlQnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSB0YWJsZUVkaXRCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIHRhYmxlRGVsZXRlQnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSByb3dFeHBhbmRCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIHJvd0NvbGxhcHNlQnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSBpc05lc3RlZFRhYmxlSGVhZGVyTmVlZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWRkQnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSBkZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9XHJcbiAgICBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24uQVNDRU5ESU5HO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRTb3J0ZWRDb2x1bW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaXNDbGVhclNvcnROZWVkZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnMhOiBDaGlwT3B0aW9uW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zITogQ2hlY2tib3hPcHRpb25bXTtcclxuICBASW5wdXQoKSBhcHBsaWVkRmlsdGVyT3B0aW9ucyE6IENoaXBPcHRpb25bXTtcclxuICBASW5wdXQoKSBzZWFyY2hUeXBlOiBTZWFyY2hUeXBlID0gU2VhcmNoVHlwZS5PTl9DTElDSztcclxuICBASW5wdXQoKSBjbGFzc05hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2VhcmNoU3VwcG9ydE1lc3NhZ2UhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5idWlsdFNvcnRpbmdOZWVkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0NlbGxUZXh0T3ZlcmZsb3dFbGxpcHNpcyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzVGFibGVIZWFkZXJOZWVkZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHRhYmxlQ29sdW1uc0hlYWRlclRleHQgPSAnJztcclxuICBASW5wdXQoKSB2ZXJ0aWNhbENvbHVtbkhlYWRlck51bWJlciA9IDA7XHJcbiAgQElucHV0KCkgc2Nyb2xsYmFyU3VwcG9ydE1lc3NhZ2UgPSAnJztcclxuICBASW5wdXQoKSBpc1Njcm9sbFN1cHBvcnRNZXNzYWdlTmVlZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNTdGlja3lIZWFkZXJOZWVkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjdXN0b21TdGlja3lIZWFkZXJOZWVkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBoZWFkZXJFbGVtZW50Q2xhc3NOYW1lID0gJyc7XHJcbiAgQElucHV0KCkgbWluQ2hhclRvU2VhcmNoID0gdGhpcy5jb25zdGFudHM/LnNlYXJjaD8ubWluQ2hhclRvU2VhcmNoO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dUb0VkaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93VG9EZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93c1RvRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZUNvbHVtblNjaGVtYVtdPigpO1xyXG4gIEBPdXRwdXQoKSByb3dMaW5rID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhZGRSb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkRhdGFPblJvd0xpbmtDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbWVudUFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RBY3Rpb25NZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwT3B0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVGaWx0ZXJlZE9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyZWRPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJzQW5kT3B0aW9uc1tdPigpO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2hlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93c0luZm8gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQ29sdW1uU2NoZW1hW10+KCk7XHJcbiAgQE91dHB1dCgpIHJvd0V4cGFuc2lvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0YWJsZUNvbHVtbk1lbnVBY3Rpb25DbGljayA9XHJcbiAgICBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQ29sdW1uTWVudUluZm8+KCk7XHJcbiAgQE91dHB1dCgpIHRhYmxlQ29sdW1uTWVudVRvZ2dsZUJ1dHRvbiA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KCk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBAT3V0cHV0KCkgcm93U2xpZGVUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHNsaWRlVG9nZ2xlOiBTbGlkZVRvZ2dsZU9wdGlvbjtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICByb3dEYXRhOiBhbnk7XHJcbiAgfT4oKTtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQhOiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luYXRvcicpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcclxuICBoZWFkZXJDZWxsRWxlbWVudCE6IEhUTUxFbGVtZW50O1xyXG4gIGhlYWRlckhlaWdodCE6IERPTVJlY3Q7XHJcbiAgQFZpZXdDaGlsZCgndGFibGVDb250ZW50JykgdGFibGVDb250ZW50ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6c2Nyb2xsJykgc2V0U3RpY2t5VGFibGVIZWFkZXIoKSB7XHJcbiAgICBpZiAodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50ICYmIHRoaXMuY3VzdG9tU3RpY2t5SGVhZGVyTmVlZGVkKSB7XHJcbiAgICAgIGNvbnN0IGRhdGFUYWJsZUNvbnRlbnQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAucXVlcnlTZWxlY3RvcignLmllZWVzYS1kYXRhLXRhYmxlX19jb250ZW50JylcclxuICAgICAgICAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGlmICh0aGlzLmhlYWRlckVsZW1lbnRDbGFzc05hbWUpXHJcbiAgICAgICAgdGhpcy5oZWFkZXJIZWlnaHQgPSBkb2N1bWVudFxyXG4gICAgICAgICAgPy5xdWVyeVNlbGVjdG9yKHRoaXMuaGVhZGVyRWxlbWVudENsYXNzTmFtZSlcclxuICAgICAgICAgID8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgYXMgRE9NUmVjdDtcclxuICAgICAgaWYgKGRhdGFUYWJsZUNvbnRlbnQpIHtcclxuICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcgLm1hdC1tZGMtaGVhZGVyLWNlbGwnKVxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIC5mb3JFYWNoKChjb2x1bW46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgZGF0YVRhYmxlQ29udGVudC50b3AgPFxyXG4gICAgICAgICAgICAgICAgKHRoaXMuaGVhZGVySGVpZ2h0ID8gdGhpcy5oZWFkZXJIZWlnaHQuYm90dG9tIDogMCkgJiZcclxuICAgICAgICAgICAgICBkYXRhVGFibGVDb250ZW50LmJvdHRvbSA+IDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcclxuICAgICAgICAgICAgICAgIGNvbHVtbixcclxuICAgICAgICAgICAgICAgICd0b3AnLFxyXG4gICAgICAgICAgICAgICAgZGF0YVRhYmxlQ29udGVudC50b3AgKiAtMSArXHJcbiAgICAgICAgICAgICAgICAgICh0aGlzLmhlYWRlckhlaWdodCA/IHRoaXMuaGVhZGVySGVpZ2h0LmhlaWdodCA6IDApIC1cclxuICAgICAgICAgICAgICAgICAgMSArXHJcbiAgICAgICAgICAgICAgICAgICdweCdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW4uY2xhc3NMaXN0LmNvbnRhaW5zKCdtYXQtbWRjLXRhYmxlLXN0aWNreScpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbHVtbiwgJ3pJbmRleCcsIDIpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbHVtbiwgJ3Bvc2l0aW9uJywgJ3N0aWNreScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb2x1bW4sICd6SW5kZXgnLCAxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb2x1bW4sICd0b3AnLCAwICsgJ3B4Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRpc3BsYXllZENvbHVtbnMhOiBzdHJpbmdbXTtcclxuICBuZXN0ZWRUYWJsZURpc3BsYXllZENvbHVtbnMhOiBzdHJpbmdbXTtcclxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcclxuICBpc1Njcm9sbGluZ0VuYWJsZWQgPSBmYWxzZTtcclxuICByZXNpemVPYnNlcnZlckZvclRhYmxlQ29udGVudCE6IFJlc2l6ZU9ic2VydmVyO1xyXG4gIHJlc2l6ZU9ic2VydmVyRm9yVGFibGVDZWxsITogUmVzaXplT2JzZXJ2ZXI7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBkYXRhU291cmNlITogTWF0VGFibGVEYXRhU291cmNlPGFueT47XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBuZXN0ZWRUYWJsZURhdGFTb3VyY2UhOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuICBzZWxlY3RlZFJvd3MgPSBuZXcgU2VsZWN0aW9uTW9kZWw8VGFibGVDb2x1bW5TY2hlbWE+KHRydWUsIFtdKTtcclxuICBwYWdlTGltaXQhOiBudW1iZXI7XHJcbiAgcGFnZU9mZnNldCE6IG51bWJlcjtcclxuICBjb2x1bW5UeXBlID0gVGFibGVDb2x1bW5UeXBlO1xyXG4gIGlzU2VhcmNoQWN0aXZlID0gZmFsc2U7XHJcbiAgY2xlYXJBbGwgPSB0aGlzLmNvbnN0YW50cz8uZGF0YVRhYmxlPy5sYWJlbD8uY2xlYXJBbGw7XHJcbiAgbm9SZWNvcmRGb3VuZCA9IHRoaXMuY29uc3RhbnRzPy5kYXRhVGFibGU/Lm1lc3NhZ2U/Lm5vUmVjb3JkRm91bmQ7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIHNob3dOZXN0ZWRUYWJsZVBhZ2luYXRpb25JbmZvITogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3NlYXJjaFJlc3VsdE1lc3NhZ2UhOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBzZXQgc2VhcmNoUmVzdWx0TWVzc2FnZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zZWFyY2hSZXN1bHRNZXNzYWdlID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBzZWFyY2hSZXN1bHRNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoUmVzdWx0TWVzc2FnZTtcclxuICB9XHJcbiAgc2FmZVR5cGU6IFNhZmVUeXBlID0gU2FmZVR5cGUuSFRNTDtcclxuICBASW5wdXQoKSByb3dNZW51QWN0aW9uSWNvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgY2FuRGlzYWJsZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNFbGxpcHNpc1JlcXVpcmVkRm9yTGluayA9IGZhbHNlO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycywgbm8tZW1wdHktZnVuY3Rpb25cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlOiBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcclxuICApIHtcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyU2VydmljZVxyXG4gICAgICAuZ2V0QnJlYWtwb2ludCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSByZXN1bHQubWF0Y2hlcztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgZGF0YSB0YWJsZSBjb21wb25lbnQgYW5kIHNldHMgdGhlIHRhYmxlIGFjdGlvbiBidXR0b25zLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuY29sdW1uU2NoZW1hPy5tYXAoKGMpID0+IGM/LmNvbHVtbkRlZik7XHJcbiAgICBjb25zdCB0YWJsZUFjdGlvbkJ1dHRvbnM6IEljb25CdXR0b25bXSA9IHRoaXMuY29uc3RhbnRzPy5kYXRhVGFibGU/LmJ1dHRvbnM7XHJcbiAgICB0aGlzLnJvd0VkaXRCdXR0b24gPSB0aGlzLnJvd0VkaXRCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzNdO1xyXG4gICAgdGhpcy5yb3dEZWxldGVCdXR0b24gPSB0aGlzLnJvd0RlbGV0ZUJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbNF07XHJcbiAgICB0aGlzLmFkZEJ1dHRvbiA9IHRoaXMuYWRkQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1syXTtcclxuICAgIHRoaXMudGFibGVFZGl0QnV0dG9uID0gdGhpcy50YWJsZUVkaXRCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzBdO1xyXG4gICAgdGhpcy50YWJsZUVkaXRCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy50YWJsZURlbGV0ZUJ1dHRvbiA9IHRoaXMudGFibGVEZWxldGVCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzFdO1xyXG4gICAgdGhpcy5yb3dFeHBhbmRCdXR0b24gPSB0aGlzLnJvd0V4cGFuZEJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbNV07XHJcbiAgICB0aGlzLnJvd0NvbGxhcHNlQnV0dG9uID1cclxuICAgICAgdGhpcy5yb3dDb2xsYXBzZUJ1dHRvbiA/PyB0aGlzLnJvd0NvbGxhcHNlQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1s2XTtcclxuICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3MuY2hhbmdlZFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50YWJsZUVkaXRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlc3VsdD8uc291cmNlPy5zZWxlY3RlZD8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgcmVzdWx0Py5zb3VyY2U/LnNlbGVjdGVkPy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICAgICFyZXN1bHQ/LnNvdXJjZT8uc2VsZWN0ZWQ/LlswXT8uY2FuRGVsZXRlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdD8uc291cmNlPy5zZWxlY3RlZD8ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZURlbGV0ZUJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy50YWJsZUVkaXRCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMudGFibGVEYXRhKTtcclxuICAgIGlmICh0aGlzLnNjcm9sbGJhclN1cHBvcnRNZXNzYWdlKSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNvbnRlbnQgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoXHJcbiAgICAgICAgKGVsZW1lbnQ6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1Njcm9sbGluZ0VuYWJsZWQgPVxyXG4gICAgICAgICAgICBlbGVtZW50WzBdPy50YXJnZXQ/LnNjcm9sbFdpZHRoID4gZWxlbWVudFswXT8udGFyZ2V0Py5jbGllbnRXaWR0aDtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJsZUNvbHVtbnNIZWFkZXJUZXh0ICYmIHRoaXMudmVydGljYWxDb2x1bW5IZWFkZXJOdW1iZXIpXHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNlbGwgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0TWFyZ2luTGVmdEZvckhlYWRlclRleHQoKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnRhYmxlRGF0YUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBzb3J0IGZlYXR1cmUgb2YgZGF0YVNvdXJjZSBhbmQgc2V0IG1hcmdpbiBsZWZ0IGZvciB0YWJsZUNvbHVtbnNIZWFkZXJUZXh0IGlmIGl0IGlzbid0IGVtcHR5LlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbmJ1aWx0U29ydGluZ05lZWRlZCkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgdGhpcy5zb3J0LmRpc2FibGVDbGVhciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhlYWRlckNlbGxFbGVtZW50ID0gdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAnLm1hdC1tZGMtaGVhZGVyLWNlbGwnXHJcbiAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlckZvclRhYmxlQ2VsbD8ub2JzZXJ2ZSh0aGlzLmhlYWRlckNlbGxFbGVtZW50KTtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNvbnRlbnQ/Lm9ic2VydmUoXHJcbiAgICAgIHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnRcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldCBtYXJnaW4gbGVmdCBmb3IgdGFibGUgY29sdW1uIGhlYWRlciB0ZXh0IGJhc2VkIG9uIHdpZHRoIG9mIGNvbHVtbnMuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNldE1hcmdpbkxlZnRGb3JIZWFkZXJUZXh0KCk6IHZvaWQge1xyXG4gICAgbGV0IGNvbHVtbnNXaWR0aCA9IDA7XHJcbiAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLnZlcnRpY2FsQ29sdW1uSGVhZGVyTnVtYmVyOyBjb2x1bW4rKykge1xyXG4gICAgICBjb25zdCB2ZXJ0aWNhbENvbHVtbkhlYWRlckNsYXNzTmFtZSA9XHJcbiAgICAgICAgJy5tYXQtY29sdW1uLScgKyB0aGlzLmNvbHVtblNjaGVtYVtjb2x1bW5dLmNvbHVtbkRlZjtcclxuICAgICAgY29uc3QgY29sdW1uRWxlbWVudCA9IHRoaXMuZWxSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgdmVydGljYWxDb2x1bW5IZWFkZXJDbGFzc05hbWVcclxuICAgICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKGNvbHVtbkVsZW1lbnQpIGNvbHVtbnNXaWR0aCArPSBjb2x1bW5FbGVtZW50Py5vZmZzZXRXaWR0aDtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbHVtbnNIZWFkZXJFbGVtZW50ID0gdGhpcy5lbFJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcclxuICAgICAgJy5pZWVlc2EtZGF0YS10YWJsZV9fY29sdW1ucy1oZWFkZXItdGV4dCdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoY29sdW1uc0hlYWRlckVsZW1lbnQpXHJcbiAgICAgIGNvbHVtbnNIZWFkZXJFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSBjb2x1bW5zV2lkdGggKyAncHgnO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkYXRhU291cmNlIHdoZW5ldmVyIHRoZSB0YWJsZSBkYXRhIGNoYW5nZXMuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRhYmxlRGF0YUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy50YWJsZURhdGE7XHJcbiAgICAgIGlmICh0aGlzLmluYnVpbHRTb3J0aW5nTmVlZGVkKSB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm5lc3RlZFRhYmxlRGF0YVNvdXJjZSkge1xyXG4gICAgICB0aGlzLm5lc3RlZFRhYmxlRGF0YVNvdXJjZS5kYXRhID0gdGhpcy5uZXN0ZWRUYWJsZURhdGE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgLyoqXHJcbiAgICogU29ydFRhYmxlRGF0YSBtZXRob2QgZW1pdHMgdGhlIGNsaWNrZWQgdGFibGUgY29sdW1uIG5hbWUgYW5kIHNvcnRpbmcgZGlyZWN0aW9uXHJcbiAgICogQHBhcmFtIHtTb3J0fSBzb3J0XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNvcnRUYWJsZURhdGEoc29ydDogU29ydCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoc29ydCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBlZGl0IGFjdGlvbnMgbWV0aG9kIGVtaXRzIHRoZSBjbGlja2VkIHJvdyBkYXRhXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvblJvd0FjdGlvbkNsaWNrKHJvdzogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdEFjdGlvbk1lbnUuZW1pdChyb3cpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgc2xpZGUgdG9nZ2xlIG9wdGlvbiBhbG9uZyB3aXRoIHRoZSBzZWxlY3RlZCByb3cgaW5mby5cclxuICAgKiBAcGFyYW0ge1NsaWRlVG9nZ2xlT3B0aW9ufSBzbGlkZVRvZ2dsZU9wdGlvblxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgcm93U2xpZGVUb2dnbGVDaGFuZ2Uoc2xpZGVUb2dnbGVPcHRpb246IFNsaWRlVG9nZ2xlT3B0aW9uLCByb3c6IGFueSkge1xyXG4gICAgdGhpcy5yb3dTbGlkZVRvZ2dsZS5lbWl0KHsgc2xpZGVUb2dnbGU6IHNsaWRlVG9nZ2xlT3B0aW9uLCByb3dEYXRhOiByb3cgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE1lbnUgaXRlbSBhY3Rpb24gbWV0aG9kIGVtaXRzIHRoZSBjbGlja2VkIG1lbnUgb3B0aW9uc1xyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgbWVudUl0ZW1BY3Rpb24ocm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubWVudUFjdGlvbkNsaWNrLmVtaXQocm93KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT25TZWxlY3RDbGljayBtZXRob2QgZW1pdHMgdGhlIHJvd1NlbGVjdGVkIGV2ZW50IHdpdGggc2VsZWN0ZWQgcm93IGRhdGEuXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNoZWNrZWRcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvblNlbGVjdENsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cy50b2dnbGUocm93KTtcclxuICAgIHJvdy5jaGVja2VkID0gIXJvdy5jaGVja2VkO1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KHJvdyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93c0luZm8uZW1pdCh0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3RlZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRhYmxlQ29sdW1uQWN0aW9uSW5mbyBldmVudCB3aXRoIHRhYmxlQ29sdW1uSW5mbyBhbmQgbWVudUFjdGlvbkluZm8uXHJcbiAgICogQHBhcmFtIHtUYWJsZUNvbHVtblNjaGVtYX0gY29sdW1uXHJcbiAgICogQHBhcmFtIHtNZW51fSBtZW51QWN0aW9uXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRhYmxlQ29sdW1uQWN0aW9uQ2xpY2soY29sdW1uOiBUYWJsZUNvbHVtblNjaGVtYSwgbWVudUFjdGlvbjogTWVudSk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZUNvbHVtbk1lbnVBY3Rpb25DbGljay5lbWl0KHtcclxuICAgICAgdGFibGVDb2x1bW5JbmZvOiBjb2x1bW4sXHJcbiAgICAgIG1lbnVBY3Rpb25JbmZvOiBtZW51QWN0aW9uLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRhYmxlQ29sdW1uQWN0aW9uRWxlbWVudCBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCBIVE1MIEVsZW1lbnQuXHJcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICB0YWJsZUNvbHVtbkFjdGlvbkVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGVDb2x1bW5NZW51VG9nZ2xlQnV0dG9uLmVtaXQoZWxlbWVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9uRWRpdENsaWNrIG1ldGhvZCBlbWl0cyB0aGUgc2VsZWN0ZWRSb3dUb0VkaXQgZXZlbnQgd2l0aCB0aGUgc2VsZWN0ZWQgcm93IGRhdGEuXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvbkVkaXRDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd1RvRWRpdC5lbWl0KHJvdyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbkRlbGV0ZUNsaWNrIG1ldGhvZCBlbWl0cyB0aGUgc2VsZWN0ZWRSb3dUb0RlbGV0ZSBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCByb3cgZGF0YS5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uRGVsZXRlQ2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dUb0RlbGV0ZS5lbWl0KHJvdyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKk9uTGlua0NsaWNrIG1ldGhvZCBlbWl0cyB0aGUgZXZlbnQgd2l0aCByb3cgYW5kIGNvbHVtbi5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBwYXJhbSB7VGFibGVDb2x1bW5TY2hlbWF9IFtjb2x1bW5dXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25MaW5rQ2xpY2socm93OiBhbnksIGNvbHVtbj86IFRhYmxlQ29sdW1uU2NoZW1hKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvd0xpbmsuZW1pdChyb3cpO1xyXG4gICAgdGhpcy5jb2x1bW5EYXRhT25Sb3dMaW5rQ2xpY2suZW1pdCh7IHJvdywgY29sdW1uIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25UYWJsZUVkaXRDbGljayBtZXRob2QgZW1pdHMgZXZlbnQgd2l0aCBzZWxlY3RlZCByb3dzIGRhdGEgd2hlbiBlZGl0IGJ1dHRvbiBjbGlja2VkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvblRhYmxlRWRpdENsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd1RvRWRpdC5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uRGVsZXRlVGFibGVDbGljayBtZXRob2QgZW1pdHMgZXZlbnQgd2l0aCBzZWxlY3RlZCByb3cgZGF0YSB3aGVuIGRlbGV0ZSBidXR0b24gY2xpY2tlZC5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25EZWxldGVUYWJsZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3NUb0RlbGV0ZS5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uQWRkQ2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBhZGQgZXZlbnQgd2hlbiBhZGQgYnV0dG9uIGNsaWNrZWQuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQWRkQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZFJvdy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPblRhYmxlU2VhcmNoQ2xpY2sgbWV0aG9kIHRvZ2dsZXMgdGhlIGlzU2VhcmNoQWN0aXZlIHN0YXRlIHdoZW4gdGhlIHNlYXJjaCBpY29uIGlzIGNsaWNrZWQgZm9yIHRoZSBtb2JpbGUgdmlldy5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25UYWJsZVNlYXJjaENsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1NlYXJjaEFjdGl2ZSA9ICF0aGlzLmlzU2VhcmNoQWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0ZWRGaWx0ZXJJbmZvIG1ldGhvZCBlbWl0cyB0aGUgc2VsZWN0ZWRGaWx0ZXIgZXZlbnQgd2l0aCBzZWxlY3RlZCBmaWx0ZXIgaW5mb3JtYXRpb24uXHJcbiAgICogQHBhcmFtIHtDaGlwT3B0aW9ufSBvcHRpb25cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2VsZWN0ZWRGaWx0ZXJUeXBlSW5mbyhvcHRpb246IENoaXBPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIuZW1pdChvcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIHJvd0V4cGFuc2lvbkNsaWNrIGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIHJvdyBkYXRhIHdoZW4gdGhlIHJvdyBpcyBleHBhbmRlZC5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uVGFibGVSb3dFeHBhbnNpb25DbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5uZXN0ZWRUYWJsZURhdGFTb3VyY2UuZGF0YSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRFbGVtZW50ID09PSByb3cpIHRoaXMucm93RXhwYW5zaW9uQ2xpY2suZW1pdChyb3cpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25TZWxlY3RlZEZpbHRlck9wdGlvbnMgbWV0aG9kIGVtaXRzIHRoZSBmaWx0ZXJlZE9wdGlvbnMgZXZlbnQgd2l0aCB0aGUgc2VsZWN0ZWQgb3B0aW9ucyBhbmQgYWRkcyBcIkNsZWFyIGFsbFwiIG9wdGlvbiB0byBjbGVhciB0aGUgYWxsIHNlbGVjdGlvbnMuXHJcbiAgICogQHBhcmFtIHtDaGVja2JveE9wdGlvbltdfSBvcHRpb25zXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uU2VsZWN0ZWRGaWx0ZXJPcHRpb25zKHNlbGVjdGVkT3B0aW9uczogRmlsdGVyc0FuZE9wdGlvbnNbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuZW1pdChzZWxlY3RlZE9wdGlvbnMpO1xyXG4gICAgdGhpcy5hcHBsaWVkRmlsdGVyT3B0aW9ucyA9IFtdO1xyXG4gICAgc2VsZWN0ZWRPcHRpb25zPy5mb3JFYWNoKChvcHRpb25zKSA9PiB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMsIG5vLXVudXNlZC12YXJzXHJcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpKSB7XHJcbiAgICAgICAgdmFsdWU/LmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgaWYgKG9wdGlvbi5jaGVja2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbGllZEZpbHRlck9wdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5pZCxcclxuICAgICAgICAgICAgICBuYW1lOiBvcHRpb24ubmFtZSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgY2hlY2tlZDogb3B0aW9uLmNoZWNrZWQsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcclxuICAgICAgICAgICAgICBjaGlwVHlwZTogQ2hpcHNUeXBlLlRPR0dMRSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcHBsaWVkRmlsdGVyT3B0aW9ucy5wdXNoKHtcclxuICAgICAgaWQ6IHRoaXMuY2xlYXJBbGwsXHJcbiAgICAgIG5hbWU6IHRoaXMuY2xlYXJBbGwsXHJcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuU1RBVElDLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9uUmVtb3ZhbE9mRmlsdGVyZWRPcHRpb24gbWV0aG9kIGVtaXRzIHRoZSByZW1vdmVGaWx0ZXJlZE9wdGlvbiBldmVudCB3aXRoIHJlbW92ZWQgb3B0aW9uLlxyXG4gICAqIEBwYXJhbSB7Q2hpcE9wdGlvbn0gb3B0aW9uXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uUmVtb3ZhbE9mRmlsdGVyZWRPcHRpb24ob3B0aW9uczogRmlsdGVyc0FuZE9wdGlvbnNbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW1vdmVGaWx0ZXJlZE9wdGlvbi5lbWl0KG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VhcmNoVmFsdWUgbWV0aG9kIGVtaXRzIHRoZSBzZWFyY2hlZCB2YWx1ZSBhbmQgcmVzZXRzIHBhZ2UgaW5kZXggdG8gemVyby5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2VhcmNoVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hlZFZhbHVlLmVtaXQodmFsdWUpO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnBhZ2luYXRvciAmJlxyXG4gICAgICAodmFsdWU/Lmxlbmd0aCA9PT0gMCB8fCB2YWx1ZS50cmltKCk/Lmxlbmd0aCA+PSB0aGlzLm1pbkNoYXJUb1NlYXJjaClcclxuICAgICkge1xyXG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBwYWdpbmF0aW9uIGZvciBldmVyeSBwYWdlLlxyXG4gICAqIEBwYXJhbSB7UGFnZUV2ZW50fSBldmVudFxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBoYW5kbGVQYWdpbmF0aW9uKGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSXNBbGxSb3dTZWxlY3RlZCBtZXRob2QgcmV0dXJucyB0aGUgYm9vbGVhbiB2YWx1ZSBieSBjaGVja2luZyBzZWxlY3RlZFJvd3MgYW5kIHRvdGFsUm93cyBsZW5ndGguXHJcbiAgICogQHJldHVybiB7Kn0gIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBpc0FsbFJvd3NTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmNhbkRpc2FibGVDaGVja2JveClcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3RlZC5sZW5ndGggPT09XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEuZmlsdGVyKChpdGVtKSA9PiAhaXRlbT8uZGlzYWJsZSk/Lmxlbmd0aFxyXG4gICAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkLmxlbmd0aCA9PT0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlQWxsUm93c1NlbGVjdGlvbiBtZXRob2QgY2xlYXJzIHNlbGVjdGVkUm93cyB3aGVuIGFsbCByb3dzIGFyZSBzZWxlY3RlZCBlbHNlIHNlbGVjdHMgdGhlIGFsbCByb3dzLlxyXG4gICAqIEByZXR1cm4geyp9ICB7dm9pZH1cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdG9nZ2xlQWxsUm93c1NlbGVjdGlvbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzQWxsUm93c1NlbGVjdGVkKCkpIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmNhbkRpc2FibGVDaGVja2JveClcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0KFxyXG4gICAgICAgIC4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0/LmRpc2FibGUpXHJcbiAgICAgICk7XHJcbiAgICBlbHNlIHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdCguLi50aGlzLmRhdGFTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3NJbmZvLmVtaXQodGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIEFuZ3VsYXIgdG8gZGV0ZWN0IHRoZSBzcGVjaWZpYyB0YWJsZSByb3cgdGhhdCBuZWVkcyB0byBjaGFuZ2Ugb3IgYmUgYWRkZWQgYnkgdHJhY2tpbmcgcm93IHVuaXF1ZSBJZC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge1RhYmxlQ29sdW1uU2NoZW1hfSBjb2x1bW5cclxuICAgKiBAcmV0dXJuIHsqfSAge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIGNvbHVtbjogVGFibGVDb2x1bW5TY2hlbWEpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGNvbHVtbi5pZDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGFibGUgcm93IGxlZnQgYm9yZGVyIGFzIHBlciB0aGUgbGVnZW5kIGNvbG9yXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yXHJcbiAgICogQHJldHVybiB7Kn1cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBnZXRSb3dCb3JkZXJMZWZ0Q29sb3IoY29sb3I6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBib3JkZXJMZWZ0OiAnNXB4IHNvbGlkICcgKyBjb2xvcixcclxuICAgIH07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyRm9yVGFibGVDZWxsPy51bm9ic2VydmUodGhpcy5oZWFkZXJDZWxsRWxlbWVudCk7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyRm9yVGFibGVDb250ZW50Py51bm9ic2VydmUoXHJcbiAgICAgIHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnRcclxuICAgICk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZSBkLWZsZXggZmxleC1jb2x1bW4gY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkLWZsZXhcIlxyXG4gICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgID8gJ2ZsZXgtY29sdW1uIG1zLTQnXHJcbiAgICAgICAgOiAnanVzdGlmeS1jb250ZW50LWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSdcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGNhcHRpb25cclxuICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZS0tY2FwdGlvblwiXHJcbiAgICAgICpuZ0lmPVwiY2FwdGlvblwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdpZWVlc2EtdGl0bGUtbGctMjQnIDogJ2llZWVzYS10aXRsZS1tZC0xOCdcIlxyXG4gICAgPlxyXG4gICAgICB7e1xyXG4gICAgICAgIGNhcHRpb25cclxuICAgICAgfX1cclxuICAgIDwvY2FwdGlvbj5cclxuICAgIDxwXHJcbiAgICAgICpuZ0lmPVwiaXNTY3JvbGxpbmdFbmFibGVkICYmIGlzU2Nyb2xsU3VwcG9ydE1lc3NhZ2VOZWVkZWRcIlxyXG4gICAgICBjbGFzcz1cIm0tMCBtYi0yXCJcclxuICAgICAgW25nQ2xhc3NdPVwieyAncG9zaXRpb24tYWJzb2x1dGUgYm90dG9tLTAgZW5kLTAnOiAhaXNNb2JpbGVWaWV3IH1cIlxyXG4gICAgPlxyXG4gICAgICB7eyBzY3JvbGxiYXJTdXBwb3J0TWVzc2FnZSB9fVxyXG4gICAgPC9wPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwidGFibGVBY3Rpb25zXCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2FjdGlvbnMgZC1mbGV4IHJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1sZy1iYXNlbGluZSBwLXNtLTBcIlxyXG4gICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1kYXRhLXRhYmxlX19tb2JpbGUtdmlldy1hY3Rpb25zJyA6ICcnXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ0lmPVwiIWlzTW9iaWxlVmlld1wiXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbHRlclRlbXBsYXRlUmVmXCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZGF0YTogJ2NvbC1tZC03IGNvbC1sZy02JyB9XCJcclxuICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC1sZy00IGdhcC1tZC0zIGdhcC1zbS0zIGdhcC0zIGNvbC1tZC01IGNvbC1sZy02IGp1c3RpZnktY29udGVudC1lbmQgcHMtMFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIiF0YWJsZUFjdGlvbnM/LmlzRmlsdGVyTmVlZGVkID8gJ2NvbC1tZC0xMiBjb2wtbGctMTInIDogJydcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlVmlld1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpZWVlc2FTZWFyY2hcIj4gPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzQWRkTmVlZGVkXCJcclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJhZGRCdXR0b25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwib25BZGRDbGljaygpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgIGFkZEJ1dHRvbj8uZGlzYWJsZWQgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2FjdGlvbnMtLWRpc2FibGVkJyA6ICcnXHJcbiAgICAgICAgXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzRWRpdE5lZWRlZFwiXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwidGFibGVFZGl0QnV0dG9uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uVGFibGVFZGl0Q2xpY2soKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICBzZWxlY3RlZFJvd3Muc2VsZWN0ZWQubGVuZ3RoICE9PSAxXHJcbiAgICAgICAgICAgID8gJ2llZWVzYS1kYXRhLXRhYmxlX19hY3Rpb25zLS1kaXNhYmxlZCdcclxuICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID48L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc0RlbGV0ZU5lZWRlZFwiXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwidGFibGVEZWxldGVCdXR0b25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwib25EZWxldGVUYWJsZUNsaWNrKClcIlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICBzZWxlY3RlZFJvd3Muc2VsZWN0ZWQubGVuZ3RoID09PSAwIHx8IHRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkXHJcbiAgICAgICAgICAgID8gJ2llZWVzYS1kYXRhLXRhYmxlX19hY3Rpb25zLS1kaXNhYmxlZCdcclxuICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID48L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNTZWFyY2hOZWVkZWRcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5kYXRhVGFibGU/LmFyaWFMYWJlbD8uc2VhcmNoXCJcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBkLXNtLWZsZXggZC1tZC1ub25lIGQtbGctbm9uZSBkLXhsLW5vbmUgaWVlZXNhLWRhdGEtdGFibGVfX2FjdGlvbnMtLXNlYXJjaC1ncm91cC1pY29uXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwib25UYWJsZVNlYXJjaENsaWNrKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1tYWduaWZ5aW5nLWdsYXNzXCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxuZy1jb250YWluZXJcclxuICAgICpuZ0lmPVwiaXNNb2JpbGVWaWV3XCJcclxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbHRlclRlbXBsYXRlUmVmXCJcclxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGRhdGE6ICdpZWVlc2EtZGF0YS10YWJsZV9fZmlsdGVyJyB9XCJcclxuICA+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLXRlbXBsYXRlICNmaWx0ZXJUZW1wbGF0ZVJlZiBsZXQtY2xhc3NOYW1lPVwiZGF0YVwiPlxyXG4gICAgPGllZWVzYS1maWx0ZXJcclxuICAgICAgY2xhc3M9XCJ7eyBjbGFzc05hbWUgfX0gcC0wXCJcclxuICAgICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXHJcbiAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc0ZpbHRlck5lZWRlZFwiXHJcbiAgICAgIFtzZWxlY3RlZEZpbHRlck9wdGlvbnNdPVwic2VsZWN0ZWRGaWx0ZXJPcHRpb25zXCJcclxuICAgICAgW2FwcGxpZWRGaWx0ZXJPcHRpb25zXT1cImFwcGxpZWRGaWx0ZXJPcHRpb25zXCJcclxuICAgICAgKHNlbGVjdGVkRmlsdGVyKT1cInNlbGVjdGVkRmlsdGVyVHlwZUluZm8oJGV2ZW50KVwiXHJcbiAgICAgIChyZW1vdmVGaWx0ZXJlZE9wdGlvbik9XCJvblJlbW92YWxPZkZpbHRlcmVkT3B0aW9uKCRldmVudClcIlxyXG4gICAgICAoZmlsdGVyZWRPcHRpb25zKT1cIm9uU2VsZWN0ZWRGaWx0ZXJPcHRpb25zKCRldmVudClcIlxyXG4gICAgPjwvaWVlZXNhLWZpbHRlcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc01vYmlsZVZpZXcgJiYgaXNTZWFyY2hBY3RpdmVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpZWVlc2FTZWFyY2hcIj4gPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLXRlbXBsYXRlICNpZWVlc2FTZWFyY2g+XHJcbiAgICA8aWVlZXNhLXNlYXJjaFxyXG4gICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJzZWFyY2hQbGFjZUhvbGRlclRleHRcIlxyXG4gICAgICBbc2VhcmNoVHlwZV09XCJzZWFyY2hUeXBlXCJcclxuICAgICAgKHNlYXJjaFZhbHVlKT1cInNlYXJjaFZhbHVlKCRldmVudClcIlxyXG4gICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNTZWFyY2hOZWVkZWRcIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19zZWFyY2gtd3JhcHBlciBtdC1zbS0yIG1kLXNtLTIgbXQtMiBtZC0yXCJcclxuICAgICAgW3N1cHBvcnRNZXNzYWdlXT1cInNlYXJjaFN1cHBvcnRNZXNzYWdlXCJcclxuICAgID48L2llZWVzYS1zZWFyY2g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8cFxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fc2VhcmNoX3Jlc3VsdF9sYWJlbFwiXHJcbiAgICAqbmdJZj1cInNlYXJjaFJlc3VsdE1lc3NhZ2VcIlxyXG4gICAgW2lubmVySFRNTF09XCJzZWFyY2hSZXN1bHRNZXNzYWdlIHwgc2FmZSA6IHNhZmVUeXBlXCJcclxuICA+PC9wPlxyXG4gIDxwXHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jb2x1bW5zLWhlYWRlci10ZXh0IG1iLTAgaWVlZXNhLXRpdGxlLW1kLTE4IHRleHQtY2VudGVyXCJcclxuICAgICpuZ0lmPVwidGFibGVDb2x1bW5zSGVhZGVyVGV4dFwiXHJcbiAgICBbaW5uZXJIVE1MXT1cInRhYmxlQ29sdW1uc0hlYWRlclRleHQgfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gID48L3A+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fY29udGVudFwiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgdGFibGVEYXRhSW5mbyAmJiB0YWJsZURhdGFJbmZvLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgID8gJ2llZWVzYS1kYXRhLXRhYmxlX19uby10YWJsZS1kYXRhJ1xyXG4gICAgICAgIDogJydcclxuICAgIFwiXHJcbiAgICAjdGFibGVDb250ZW50XHJcbiAgPlxyXG4gICAgPHRhYmxlXHJcbiAgICAgIG1hdC10YWJsZVxyXG4gICAgICBbbmdDbGFzc109XCJjbGFzc05hbWVcIlxyXG4gICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcclxuICAgICAgbWF0U29ydFxyXG4gICAgICBbbWF0U29ydERpc2FibGVDbGVhcl09XCJpc0NsZWFyU29ydE5lZWRlZFwiXHJcbiAgICAgIFttYXRTb3J0QWN0aXZlXT1cImRlZmF1bHRTb3J0ZWRDb2x1bW5cIlxyXG4gICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJkZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvblwiXHJcbiAgICAgIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRUYWJsZURhdGEoJGV2ZW50KVwiXHJcbiAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlJZFwiXHJcbiAgICAgIG11bHRpVGVtcGxhdGVEYXRhUm93c1xyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICBsZXQgY29sdW1uIG9mIGNvbHVtblNjaGVtYUluZm87XHJcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWQ7XHJcbiAgICAgICAgICBsZXQgaWQgPSBpbmRleFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgbWF0Q29sdW1uRGVmPVwie3sgY29sdW1uPy5jb2x1bW5EZWYgfX1cIlxyXG4gICAgICAgIFtzdGlja3ldPVwiY29sdW1uPy5pc1N0aWNreUNvbHVtblwiXHJcbiAgICAgICAgW3N0aWNreUVuZF09XCJjb2x1bW4/LmlzU3RpY2t5RW5kQ29sdW1uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDx0aFxyXG4gICAgICAgICAgbWF0LWhlYWRlci1jZWxsXHJcbiAgICAgICAgICBtYXQtc29ydC1oZWFkZXJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29sdW1uPy5pc1NvcnRhYmxlQ29sdW1uXCJcclxuICAgICAgICAgIFtuZ1N3aXRjaF09XCJjb2x1bW4/LmNvbHVtbkRlZlwiXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlLWhlYWRlciBpZWVlc2EtYm9keS1zbS1ib2xkLTE0XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICBjb2x1bW4/LmNvbHVtbkRlZiA9PT0gY29sdW1uVHlwZT8uU0VMRUNUXHJcbiAgICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2NvbHVtbi1zZWxlY3QnXHJcbiAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbHVtbj8uaGVhZGluZ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uU0VMRUNUXCI+XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHRvZ2dsZUFsbFJvd3NTZWxlY3Rpb24oKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkUm93cz8uaGFzVmFsdWUoKSAmJiBpc0FsbFJvd3NTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3RlZFJvd3M/Lmhhc1ZhbHVlKCkgJiYgIWlzQWxsUm93c1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cImNvbnN0YW50cz8uZGF0YVRhYmxlPy5hcmlhTGFiZWw/LnNlbGVjdEFsbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieyAnbWUtMic6IGNvbHVtbi5oYXNDb2x1bW5BY3Rpb25zIH1cIj57e1xyXG4gICAgICAgICAgICAgIGNvbHVtbi5oZWFkaW5nXHJcbiAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhhc0NvbHVtbkFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8aWVlZXNhLW1lbnVcclxuICAgICAgICAgICAgICAgIFttZW51SXRlbXNdPVwidGFibGVDb2x1bW5BY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgIFtkZWZhdWx0SWNvblNpemVdPVwidGFibGVDb2x1bW5BY3Rpb25NZW51U2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAobWVudUl0ZW1DbGljayk9XCJ0YWJsZUNvbHVtbkFjdGlvbkNsaWNrKGNvbHVtbiwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAobWVudVRvZ2dsZUJ1dHRvbkVsZW1lbnQpPVwidGFibGVDb2x1bW5BY3Rpb25FbGVtZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLW1lbnVcIlxyXG4gICAgICAgICAgICAgID48L2llZWVzYS1tZW51PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBtYXQtY2VsbFxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50IGllZWVzYS10aXRsZS1zbS0xNlwiXHJcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICB0YWJsZURhdGE7XHJcbiAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4sXHJcbiAgICAgICAgICAgICAgICByb3c6IHJvdyxcclxuICAgICAgICAgICAgICAgIHRhYmxlUm93QWN0aW9uczogdGFibGVSb3dBY3Rpb25zXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBtYXQtY2VsbFxyXG4gICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcclxuICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWV4cGFuZGVkLXJvd1wiXHJcbiAgICAgICAgICAgIFtAZGV0YWlsRXhwYW5kXT1cInJvdyA9PT0gZXhwYW5kZWRFbGVtZW50ID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1uZXN0ZWQtZGF0YS10YWJsZVwiPlxyXG4gICAgICAgICAgICAgIDx0YWJsZVxyXG4gICAgICAgICAgICAgICAgI25lc3RlZFRhYmxlXHJcbiAgICAgICAgICAgICAgICBtYXQtdGFibGVcclxuICAgICAgICAgICAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlJZFwiXHJcbiAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJuZXN0ZWRUYWJsZURhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbiBvZiBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYUluZm87XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpZCA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdENvbHVtbkRlZj1cInt7IGNvbHVtbj8uY29sdW1uRGVmIH19XCJcclxuICAgICAgICAgICAgICAgICAgW3N0aWNreV09XCJjb2x1bW4/LmlzU3RpY2t5Q29sdW1uXCJcclxuICAgICAgICAgICAgICAgICAgW3N0aWNreUVuZF09XCJjb2x1bW4/LmlzU3RpY2t5RW5kQ29sdW1uXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWhlYWRlci1jZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uRGVmXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlLWhlYWRlciBpZWVlc2EtYm9keS1zbS1ib2xkLTE0XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2NvbHVtbi1zZWxlY3QnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2x1bW4/LmhlYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sdW1uLmhlYWRpbmcgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50IGllZWVzYS10aXRsZS1zbS0xNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2NvbHVtbi1zZWxlY3QnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVSb3dBY3Rpb25zOiBuZXN0ZWRUYWJsZVJvd0FjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc05lc3RlZFRhYmxlSGVhZGVyTmVlZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9faGVhZGVyLXJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbmVzdGVkVGFibGVEaXNwbGF5ZWRDb2x1bW5zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3RpY2t5OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgICAgbWF0LXJvd1xyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1uZXN0ZWQtZGF0YS10YWJsZV9fY2VsbC1yb3dcIlxyXG4gICAgICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogbmVzdGVkVGFibGVEaXNwbGF5ZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcm93Py5sZWdlbmRDb2xvclxyXG4gICAgICAgICAgICAgICAgICAgICAgPyBnZXRSb3dCb3JkZXJMZWZ0Q29sb3Iocm93Py5sZWdlbmRDb2xvcilcclxuICAgICAgICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93ID09PSBleHBhbmRlZEVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgaWVlZXNhLWV4cGFuZGVkLXJvd19fZm9vdGVyXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIG5lc3RlZFBhZ2luYXRvckNvbmZpZy50b3RhbFJlY29yZHMgPlxyXG4gICAgICAgICAgICAgICAgICAgIG5lc3RlZFBhZ2luYXRvckNvbmZpZy5yZWNvcmRzUGVyUGFnZSAmJlxyXG4gICAgICAgICAgICAgICAgICBuZXN0ZWRQYWdpbmF0b3JDb25maWcucmVjb3Jkc1BlclBhZ2UgPiAwXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25MaW5rQ2xpY2socm93KVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJ0bi1sYWJlbC1sZy1ib2xkLTE2IGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtbGlua1wiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5kYXRhVGFibGU/LmFyaWFMYWJlbD8ubGlua1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHZpZXdBbGwgPz8gXCJcIiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5lc3RlZC1lbGVtZW50LWRldGFpbF9fZm9vdGVyLS1kZXRhaWxcIj57e1xyXG4gICAgICAgICAgICAgICAgICBzaG93TmVzdGVkVGFibGVQYWdpbmF0aW9uSW5mb1xyXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RhYmxlSGVhZGVyTmVlZGVkXCI+XHJcbiAgICAgICAgPHRyXHJcbiAgICAgICAgICBtYXQtaGVhZGVyLXJvd1xyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9faGVhZGVyLXJvd1wiXHJcbiAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiBmYWxzZVwiXHJcbiAgICAgICAgPjwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8dHJcclxuICAgICAgICBtYXQtcm93XHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1yb3dcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIihpICsgMSkgJSAyID09PSAwID8gJ2V2ZW4nIDogJ29kZCdcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIlxyXG4gICAgICAgICAgcm93Py5sZWdlbmRDb2xvciA/IGdldFJvd0JvcmRlckxlZnRDb2xvcihyb3c/LmxlZ2VuZENvbG9yKSA6ICcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uczsgbGV0IGkgPSBkYXRhSW5kZXhcIlxyXG4gICAgICA+PC90cj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc05lc3RlZFRhYmxlXCI+XHJcbiAgICAgICAgPHRyXHJcbiAgICAgICAgICBtYXQtcm93XHJcbiAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IGRldGFpbHM7IGNvbHVtbnM6IFsnZXhwYW5kZWREZXRhaWwnXVwiXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1yb3ctZXhwYW5kZWQtdGFibGUtZGV0YWlsXCJcclxuICAgICAgICA+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3RhYmxlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPHBcclxuICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19tZXNzYWdlIGllZWVzYS10aXRsZS1sZy1ib2xkLTI0IHRleHQtY2VudGVyIHAtNVwiXHJcbiAgKm5nSWY9XCJ0YWJsZURhdGFJbmZvICYmIHRhYmxlRGF0YUluZm8ubGVuZ3RoID09PSAwXCJcclxuPlxyXG4gIHt7IG5vUmVjb3JkRm91bmQgfX1cclxuPC9wPlxyXG48ZGl2IGNsYXNzPVwicm93IGllZWVzYS1kYXRhLXRhYmxlX19wYWdpbmF0aW9uLWNvbnRhaW5lclwiPlxyXG4gIDxpZWVlc2EtbGVnZW5kXHJcbiAgICBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNSBkLWZsZXggYWxpZ24taXRlbXMtZW5kIHB4LTRcIlxyXG4gICAgKm5nSWY9XCJsZWdlbmRzPy5sZW5ndGhcIlxyXG4gICAgW25nQ2xhc3NdPVwiIXRhYmxlQWN0aW9ucz8uaXNQYWdpbmF0aW9uTmVlZGVkID8gJ2NvbC1tZC0xMicgOiAnJ1wiXHJcbiAgICBbbGVnZW5kc109XCJsZWdlbmRzXCJcclxuICAgIFtpc1NvcnRpbmddPVwidHJ1ZVwiXHJcbiAgPjwvaWVlZXNhLWxlZ2VuZD5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNQYWdpbmF0aW9uTmVlZGVkXCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX3BhZ2luYXRpb24gZC1mbGV4IGZsZXgtcm93LXJldmVyc2UgY29sLXNtLTEyIGNvbC1tZC03XCJcclxuICAgIFtuZ0NsYXNzXT1cIiFsZWdlbmRzPy5sZW5ndGggPyAnY29sLW1kLTEyJyA6ICcnXCJcclxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5kYXRhVGFibGU/LmFyaWFMYWJlbD8ucGFnaW5hdGlvblwiXHJcbiAgPlxyXG4gICAgPG1hdC1wYWdpbmF0b3JcclxuICAgICAgI3BhZ2luYXRvclxyXG4gICAgICBbcGFnZVNpemVdPVwicGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZVwiXHJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICAgIChwYWdlKT1cImhhbmRsZVBhZ2luYXRpb24oJGV2ZW50KVwiXHJcbiAgICAgIFtsZW5ndGhdPVwicGFnaW5hdG9yQ29uZmlnPy50b3RhbFJlY29yZHNcIlxyXG4gICAgPjwvbWF0LXBhZ2luYXRvcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZVxyXG4gICN0YWJsZURhdGFcclxuICBsZXQtY29sdW1uPVwiY29sdW1uXCJcclxuICBsZXQtcm93PVwicm93XCJcclxuICBsZXQtdGFibGVSb3dBY3Rpb25zPVwidGFibGVSb3dBY3Rpb25zXCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uVHlwZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJpc0NlbGxUZXh0T3ZlcmZsb3dFbGxpcHNpczsgdGhlbiBlbGxpcHNpc0NlbGw7IGVsc2UgdGV4dFdyYXBDZWxsXCJcclxuICAgICAgPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0V3JhcENlbGw+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgIGNsYXNzPVwibS0wIGllZWVzYS1ib2R5LWNvbG9yLXNtLTE0IGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtLXRleHRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCJcclxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29sdW1uPy5jZWxsRGF0YShyb3cpIHwgc2FmZSA6IHNhZmVUeXBlXCJcclxuICAgICAgICA+PC9wPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uPy5pc0hUTUxDZWxsRGF0YVwiPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgY2xhc3M9XCJtLTAgaWVlZXNhLWJvZHktY29sb3Itc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tdGV4dFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbHVtbj8uY2VsbERhdGEocm93KSB9fVxyXG4gICAgICAgICAgPC9wPjwvbmctY29udGFpbmVyXHJcbiAgICAgICAgPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2VsbGlwc2lzQ2VsbD5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgaWVlZXNhVGV4dFRydW5jYXRlZFxyXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29sdW1uPy5jZWxsRGF0YShyb3cpXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tZWxsaXBzaXMgaWVlZXNhLWJvZHktY29sb3Itc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tdGV4dFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgY29sdW1uPy5jZWxsRGF0YShyb3cpIH19XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5MSU5LXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtY2VsbC1kYXRhXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgaXNFbGxpcHNpc1JlcXVpcmVkRm9yTGluaztcclxuICAgICAgICAgICAgdGhlbiBlbGxpcHNpc0NlbGw7XHJcbiAgICAgICAgICAgIGVsc2UgdGV4dFdyYXBDZWxsXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2VsbGlwc2lzQ2VsbD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25MaW5rQ2xpY2socm93LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgaWVlZXNhVGV4dFRydW5jYXRlZFxyXG4gICAgICAgICAgICBbZWxlbWVudENsYXNzTmFtZVRvQWRkVG9vbHRpcF09XCInLm1kYy1idXR0b24gLm1kYy1idXR0b25fX2xhYmVsJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJ0bi1sYWJlbC1sZy1ib2xkLTE2IGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtbGluayBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LWxpbmstLWVsbGlwc2lzXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2x1bW4/LmNlbGxEYXRhKHJvdylcIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJyb3c/LnRvb2xUaXBUZXh0ID8/IGNvbHVtbj8uY2VsbERhdGEocm93KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbHVtbj8uY2VsbERhdGEocm93KSB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3RleHRXcmFwQ2VsbD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25MaW5rQ2xpY2socm93LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYnRuLWxhYmVsLWxnLWJvbGQtMTYgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC1saW5rXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2x1bW4/LmNlbGxEYXRhKHJvdylcIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJyb3c/LnRvb2xUaXBUZXh0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29sdW1uPy5jZWxsRGF0YShyb3cpIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uPy5pc0NvbnRlbnRVbmRlckxpbmtcIj5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJvZHktc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC11bmRlci1saW5rXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCJcclxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJyb3c/LmNvbnRlbnRVbmRlckxpbmsgfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gICAgICAgICAgPjwvcD5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJvZHktc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC11bmRlci1saW5rXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhY29sdW1uPy5pc0hUTUxDZWxsRGF0YVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHJvdz8uY29udGVudFVuZGVyTGluayB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uTkVTVEVEX1RBQkxFXCI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJyb3c/Lmhhc0NoaWxkcmVuXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIlxyXG4gICAgICAgICAgZXhwYW5kZWRFbGVtZW50ID0gZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyBudWxsIDogcm93O1xyXG4gICAgICAgICAgb25UYWJsZVJvd0V4cGFuc2lvbkNsaWNrKHJvdylcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cIlxyXG4gICAgICAgICAgZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyByb3dFeHBhbmRCdXR0b24gOiByb3dDb2xsYXBzZUJ1dHRvblxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGU/LlNFTEVDVFwiPlxyXG4gICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgY2xhc3M9XCJjb2wtMlwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBvblNlbGVjdENsaWNrKHJvdykgOiBudWxsXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFJvd3MuaXNTZWxlY3RlZChyb3cpXCJcclxuICAgICAgICBbYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5zZWxlY3RcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJyb3c/LmRpc2FibGUgJiYgY2FuRGlzYWJsZUNoZWNrYm94XCJcclxuICAgICAgPlxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uRURJVFwiPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwicm93RWRpdEJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkVkaXRDbGljayhyb3cpXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5ERUxFVEVcIj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cInJvd0RlbGV0ZUJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkRlbGV0ZUNsaWNrKHJvdylcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGUuU0xJREVfVE9HR0xFXCI+XHJcbiAgICAgIDxpZWVlc2Etc2xpZGUtdG9nZ2xlXHJcbiAgICAgICAgW3NsaWRlVG9nZ2xlXT1cImNvbHVtbj8uY2VsbERhdGEocm93KVwiXHJcbiAgICAgICAgKHNsaWRlVG9nZ2xlQ2hhbmdlKT1cInJvd1NsaWRlVG9nZ2xlQ2hhbmdlKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgW2NhblNob3dJY29uXT1cInRydWVcIlxyXG4gICAgICA+PC9pZWVlc2Etc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5BQ1RJT05TXCI+XHJcbiAgICAgIDxpZWVlc2EtbWVudVxyXG4gICAgICAgIFtidXR0b25dPVwicm93TWVudUFjdGlvbkljb25cIlxyXG4gICAgICAgIFttZW51SXRlbXNdPVwidGFibGVSb3dBY3Rpb25zID8/IHJvdy5tZW51QWN0aW9uXCJcclxuICAgICAgICAoY2xpY2spPVwibWVudUl0ZW1BY3Rpb24ocm93KVwiXHJcbiAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwib25Sb3dBY3Rpb25DbGljaygkZXZlbnQpXCJcclxuICAgICAgPjwvaWVlZXNhLW1lbnU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
781
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxpQkFBaUIsRUFFakIsVUFBVSxFQUVWLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RSxPQUFPLEVBRUwsa0JBQWtCLEdBRW5CLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLE9BQU8sRUFDUCxhQUFhLEdBR2QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFB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QWhDLFNBQVM7dUJBQUMsV0FBVztnQkFHSyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ1Esb0JBQW9CO3NCQUFwRCxZQUFZO3VCQUFDLGlCQUFpQjtnQkE2RDNCLG1CQUFtQjtzQkFEdEIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLHlCQUF5QjtzQkFBakMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE9uRGVzdHJveSxcclxuICBmb3J3YXJkUmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIFJlbmRlcmVyMixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UsIE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQge1xyXG4gIE1hdFBhZ2luYXRvcixcclxuICBNYXRQYWdpbmF0b3JNb2R1bGUsXHJcbiAgUGFnZUV2ZW50LFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7XHJcbiAgTWF0U29ydCxcclxuICBNYXRTb3J0TW9kdWxlLFxyXG4gIFNvcnQsXHJcbiAgU29ydERpcmVjdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2JyZWFrLXBvaW50LW9ic2VydmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTYWZlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3NhZmUucGlwZSc7XHJcbmltcG9ydCB7IFNhZmVUeXBlLCBJY29uQnV0dG9uLCBDaGVja2JveE9wdGlvbiB9IGZyb20gJ0BpZWVlc2EtbnBtL21vZGVscyc7XHJcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgVGFibGVDb2x1bW5TY2hlbWEsXHJcbiAgVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtc2NoZW1hLm1vZGVsJztcclxuaW1wb3J0IHsgUGFnaW5hdG9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BhZ2luYXRvci1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVBY3Rpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLWFjdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGlwT3B0aW9uLCBDaGlwc1R5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hpcC1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgU2VhcmNoVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9zZWFyY2gubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJzQW5kT3B0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0ZXJzLW9wdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBUZXh0VHJ1bmNhdGVkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90ZXh0LXRydW5jYXRlZC90ZXh0LXRydW5jYXRlZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uLy4uL21vZGVscy9tZW51Lm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBhbmltYXRlLFxyXG4gIHN0YXRlLFxyXG4gIHN0eWxlLFxyXG4gIHRyYW5zaXRpb24sXHJcbiAgdHJpZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgTGVnZW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vbGVnZW5kL2xlZ2VuZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMZWdlbmQgfSBmcm9tICcuLi8uLi9tb2RlbHMvbGVnZW5kLm1vZGVsJztcclxuaW1wb3J0IHsgVGFibGVDb2x1bW5NZW51SW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1jb2x1bW4tbWVudS1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHsgU2xpZGVUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuLi9zbGlkZS10b2dnbGUvc2xpZGUtdG9nZ2xlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNsaWRlVG9nZ2xlT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NsaWRlLXRvZ2dsZS1vcHRpb25zLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBQcm92aWRlcyBhIE1hdGVyaWFsIERlc2lnbiBzdHlsZWQgZGF0YS10YWJsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgcm93cyBvZiBkYXRhIHdpdGggc29ydEJ5LCBmaWx0ZXJCeSwgYWRkL2VkaXQvZGVsZXRlIHRhYmxlIHJvdyBkYXRhLCBwYWdpbmF0aW9uLCBzZWFyY2ggdGFibGUgZGF0YS5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBpbXBsZW1lbnRzIHtBZnRlclZpZXdJbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7T25EZXN0cm95fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtZGF0YS10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBmb3J3YXJkUmVmKCgpID0+IFNhZmVQaXBlKSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRTb3J0TW9kdWxlLFxyXG4gICAgU2xpZGVUb2dnbGVDb21wb25lbnQsXHJcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcclxuICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBDaGVja2JveENvbXBvbmVudCxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBTZWFyY2hDb21wb25lbnQsXHJcbiAgICBGaWx0ZXJDb21wb25lbnQsXHJcbiAgICBUZXh0VHJ1bmNhdGVkRGlyZWN0aXZlLFxyXG4gICAgTWVudUNvbXBvbmVudCxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNZW51Q29tcG9uZW50LFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBMZWdlbmRDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gICAgICBzdGF0ZShcclxuICAgICAgICAnY29sbGFwc2VkJyxcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogJzBweCcsIG1pbkhlaWdodDogJzAnLCBkaXNwbGF5OiAnbm9uZScgfSlcclxuICAgICAgKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oXHJcbiAgICAgICAgJ2V4cGFuZGVkIDw9PiBjb2xsYXBzZWQnLFxyXG4gICAgICAgIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpXHJcbiAgICAgICksXHJcbiAgICBdKSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgcHJpdmF0ZSB0YWJsZURhdGEhOiBhbnlbXTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHByaXZhdGUgbmVzdGVkVGFibGVEYXRhITogYW55W107XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBleHBhbmRlZEVsZW1lbnQ6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgc2V0IHRhYmxlRGF0YUluZm8odmFsdWU6IGFueVtdKSB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHZhbHVlO1xyXG4gICAgdGhpcy50YWJsZURhdGFDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZ2V0IHRhYmxlRGF0YUluZm8oKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVEYXRhO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHNldCBuZXN0ZWRUYWJsZURhdGFJbmZvKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgdGhpcy5uZXN0ZWRUYWJsZURhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhQ2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldCBuZXN0ZWRUYWJsZURhdGFJbmZvKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLm5lc3RlZFRhYmxlRGF0YTtcclxuICB9XHJcbiAgcHJpdmF0ZSBjb2x1bW5TY2hlbWEhOiBUYWJsZUNvbHVtblNjaGVtYVtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNvbHVtblNjaGVtYUluZm8odmFsdWU6IFRhYmxlQ29sdW1uU2NoZW1hW10pIHtcclxuICAgIHRoaXMuY29sdW1uU2NoZW1hID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5jb2x1bW5TY2hlbWEpXHJcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuY29sdW1uU2NoZW1hPy5tYXAoKGMpID0+IGM/LmNvbHVtbkRlZik7XHJcbiAgfVxyXG4gIGdldCBjb2x1bW5TY2hlbWFJbmZvKCk6IFRhYmxlQ29sdW1uU2NoZW1hW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sdW1uU2NoZW1hO1xyXG4gIH1cclxuICBwcml2YXRlIG5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hITogVGFibGVDb2x1bW5TY2hlbWFbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYUluZm8odmFsdWU6IFRhYmxlQ29sdW1uU2NoZW1hW10pIHtcclxuICAgIHRoaXMubmVzdGVkVGFibGVDb2x1bW5TY2hlbWEgPSB2YWx1ZTtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5uZXN0ZWRUYWJsZUNvbHVtblNjaGVtYT8ubWFwKFxyXG4gICAgICAoYykgPT4gYz8uY29sdW1uRGVmXHJcbiAgICApO1xyXG4gICAgdGhpcy5uZXN0ZWRUYWJsZURhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMubmVzdGVkVGFibGVEYXRhKTtcclxuICB9XHJcbiAgZ2V0IG5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hSW5mbygpOiBUYWJsZUNvbHVtblNjaGVtYVtdIHtcclxuICAgIHJldHVybiB0aGlzLm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hO1xyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gY29uc3RhbnRzO1xyXG4gIEBJbnB1dCgpIHRhYmxlQWN0aW9ucyE6IFRhYmxlQWN0aW9ucztcclxuICBASW5wdXQoKSBoYXNOZXN0ZWRUYWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRhYmxlQ29sdW1uQWN0aW9ucyE6IE1lbnVbXTtcclxuICBASW5wdXQoKSB0YWJsZUNvbHVtbkFjdGlvbk1lbnVTaXplID0gJyc7XHJcbiAgQElucHV0KCkgdGFibGVSb3dBY3Rpb25zITogTWVudVtdO1xyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlUm93QWN0aW9ucyE6IE1lbnVbXTtcclxuICBASW5wdXQoKSBjYXB0aW9uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHZpZXdBbGwhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwYWdpbmF0b3JDb25maWd1cmF0aW9uITogUGFnaW5hdG9yQ29uZmlnO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHBhZ2luYXRvckNvbmZpZyh2YWx1ZTogUGFnaW5hdG9yQ29uZmlnKSB7XHJcbiAgICB0aGlzLnBhZ2luYXRvckNvbmZpZ3VyYXRpb24gPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IHBhZ2luYXRvckNvbmZpZygpOiBQYWdpbmF0b3JDb25maWcge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdG9yQ29uZmlndXJhdGlvbjtcclxuICB9XHJcbiAgcHJpdmF0ZSBuZXN0ZWRQYWdpbmF0b3JDb25maWd1cmF0aW9uITogUGFnaW5hdG9yQ29uZmlnO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG5lc3RlZFBhZ2luYXRvckNvbmZpZyh2YWx1ZTogUGFnaW5hdG9yQ29uZmlnKSB7XHJcbiAgICB0aGlzLm5lc3RlZFBhZ2luYXRvckNvbmZpZ3VyYXRpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMuc2hvd05lc3RlZFRhYmxlUGFnaW5hdGlvbkluZm8gPVxyXG4gICAgICAnMSAtICcgK1xyXG4gICAgICArYCR7dGhpcy5uZXN0ZWRQYWdpbmF0b3JDb25maWcucmVjb3Jkc1BlclBhZ2V9YCArXHJcbiAgICAgICcgb2YgJyArXHJcbiAgICAgICtgJHt0aGlzLm5lc3RlZFBhZ2luYXRvckNvbmZpZy50b3RhbFJlY29yZHN9YDtcclxuICB9XHJcbiAgZ2V0IG5lc3RlZFBhZ2luYXRvckNvbmZpZygpOiBQYWdpbmF0b3JDb25maWcge1xyXG4gICAgcmV0dXJuIHRoaXMubmVzdGVkUGFnaW5hdG9yQ29uZmlndXJhdGlvbjtcclxuICB9XHJcbiAgcHJpdmF0ZSBsZWdlbmRzSW5mbyE6IExlZ2VuZFtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxlZ2VuZHModmFsdWU6IExlZ2VuZFtdKSB7XHJcbiAgICB0aGlzLmxlZ2VuZHNJbmZvID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBsZWdlbmRzKCk6IExlZ2VuZFtdIHtcclxuICAgIHJldHVybiB0aGlzLmxlZ2VuZHNJbmZvO1xyXG4gIH1cclxuICBwcml2YXRlIGN1cnJlbnRQYWdlSW5kZXggPSAwO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHBhZ2VJbmRleCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXggPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHBhZ2VJbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2VJbmRleDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjdXJyZW50UGFnZVNpemUgPSAwO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHBhZ2VTaXplKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2VTaXplID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcclxuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHBhZ2VTaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZVNpemU7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlSG9sZGVyVGV4dCE6IHN0cmluZztcclxuICBASW5wdXQoKSByb3dFZGl0QnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSByb3dEZWxldGVCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIHRhYmxlRWRpdEJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgdGFibGVEZWxldGVCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIHJvd0V4cGFuZEJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgcm93Q29sbGFwc2VCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIGlzTmVzdGVkVGFibGVIZWFkZXJOZWVkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhZGRCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uID1cclxuICAgIFRhYmxlQ29sdW1uU29ydERpcmVjdGlvbi5BU0NFTkRJTkc7XHJcbiAgQElucHV0KCkgZGVmYXVsdFNvcnRlZENvbHVtbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBpc0NsZWFyU29ydE5lZWRlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgZmlsdGVycyE6IENoaXBPcHRpb25bXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEZpbHRlck9wdGlvbnMhOiBDaGVja2JveE9wdGlvbltdO1xyXG4gIEBJbnB1dCgpIGFwcGxpZWRGaWx0ZXJPcHRpb25zITogQ2hpcE9wdGlvbltdO1xyXG4gIEBJbnB1dCgpIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUgPSBTZWFyY2hUeXBlLk9OX0NMSUNLO1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBzZWFyY2hTdXBwb3J0TWVzc2FnZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBpbmJ1aWx0U29ydGluZ05lZWRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzQ2VsbFRleHRPdmVyZmxvd0VsbGlwc2lzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNUYWJsZUhlYWRlck5lZWRlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgdGFibGVDb2x1bW5zSGVhZGVyVGV4dCA9ICcnO1xyXG4gIEBJbnB1dCgpIHZlcnRpY2FsQ29sdW1uSGVhZGVyTnVtYmVyID0gMDtcclxuICBASW5wdXQoKSBzY3JvbGxiYXJTdXBwb3J0TWVzc2FnZSA9ICcnO1xyXG4gIEBJbnB1dCgpIGlzU2Nyb2xsU3VwcG9ydE1lc3NhZ2VOZWVkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc1N0aWNreUhlYWRlck5lZWRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVN0aWNreUhlYWRlck5lZWRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhlYWRlckVsZW1lbnRDbGFzc05hbWUgPSAnJztcclxuICBASW5wdXQoKSBtaW5DaGFyVG9TZWFyY2ggPSB0aGlzLmNvbnN0YW50cz8uc2VhcmNoPy5taW5DaGFyVG9TZWFyY2g7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFJvd1RvRWRpdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dUb0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dzVG9EZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQ29sdW1uU2NoZW1hW10+KCk7XHJcbiAgQE91dHB1dCgpIHJvd0xpbmsgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFkZFJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY29sdW1uRGF0YU9uUm93TGlua0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBtZW51QWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdEFjdGlvbk1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBhZ2luYXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBPcHRpb24+KCk7XHJcbiAgQE91dHB1dCgpIHJlbW92ZUZpbHRlcmVkT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJlZE9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlcnNBbmRPcHRpb25zW10+KCk7XHJcbiAgQE91dHB1dCgpIHNlYXJjaGVkVmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dzSW5mbyA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVDb2x1bW5TY2hlbWFbXT4oKTtcclxuICBAT3V0cHV0KCkgcm93RXhwYW5zaW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHRhYmxlQ29sdW1uTWVudUFjdGlvbkNsaWNrID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8VGFibGVDb2x1bW5NZW51SW5mbz4oKTtcclxuICBAT3V0cHV0KCkgdGFibGVDb2x1bW5NZW51VG9nZ2xlQnV0dG9uID0gbmV3IEV2ZW50RW1pdHRlcjxIVE1MRWxlbWVudD4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIEBPdXRwdXQoKSByb3dTbGlkZVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgc2xpZGVUb2dnbGU6IFNsaWRlVG9nZ2xlT3B0aW9uO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgIHJvd0RhdGE6IGFueTtcclxuICB9PigpO1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydCE6IE1hdFNvcnQ7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5hdG9yJykgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xyXG4gIGhlYWRlckNlbGxFbGVtZW50ITogSFRNTEVsZW1lbnQ7XHJcbiAgaGVhZGVySGVpZ2h0ITogRE9NUmVjdDtcclxuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRlbnQnKSB0YWJsZUNvbnRlbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpzY3JvbGwnKSBzZXRTdGlja3lUYWJsZUhlYWRlcigpIHtcclxuICAgIGlmICh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5jdXN0b21TdGlja3lIZWFkZXJOZWVkZWQpIHtcclxuICAgICAgY29uc3QgZGF0YVRhYmxlQ29udGVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yKCcuaWVlZXNhLWRhdGEtdGFibGVfX2NvbnRlbnQnKVxyXG4gICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgaWYgKHRoaXMuaGVhZGVyRWxlbWVudENsYXNzTmFtZSlcclxuICAgICAgICB0aGlzLmhlYWRlckhlaWdodCA9IGRvY3VtZW50XHJcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3IodGhpcy5oZWFkZXJFbGVtZW50Q2xhc3NOYW1lKVxyXG4gICAgICAgICAgPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBhcyBET01SZWN0O1xyXG4gICAgICBpZiAoZGF0YVRhYmxlQ29udGVudCkge1xyXG4gICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJyAubWF0LW1kYy1oZWFkZXItY2VsbCcpXHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBkYXRhVGFibGVDb250ZW50LnRvcCA8XHJcbiAgICAgICAgICAgICAgICAodGhpcy5oZWFkZXJIZWlnaHQgPyB0aGlzLmhlYWRlckhlaWdodC5ib3R0b20gOiAwKSAmJlxyXG4gICAgICAgICAgICAgIGRhdGFUYWJsZUNvbnRlbnQuYm90dG9tID4gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxyXG4gICAgICAgICAgICAgICAgY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgJ3RvcCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhVGFibGVDb250ZW50LnRvcCAqIC0xICtcclxuICAgICAgICAgICAgICAgICAgKHRoaXMuaGVhZGVySGVpZ2h0ID8gdGhpcy5oZWFkZXJIZWlnaHQuaGVpZ2h0IDogMCkgLVxyXG4gICAgICAgICAgICAgICAgICAxICtcclxuICAgICAgICAgICAgICAgICAgJ3B4J1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbi5jbGFzc0xpc3QuY29udGFpbnMoJ21hdC1tZGMtdGFibGUtc3RpY2t5JykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29sdW1uLCAnekluZGV4JywgMik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29sdW1uLCAncG9zaXRpb24nLCAnc3RpY2t5Jyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbHVtbiwgJ3pJbmRleCcsIDEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbHVtbiwgJ3RvcCcsIDAgKyAncHgnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xyXG4gIG5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xyXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG4gIGlzU2Nyb2xsaW5nRW5hYmxlZCA9IGZhbHNlO1xyXG4gIHJlc2l6ZU9ic2VydmVyRm9yVGFibGVDb250ZW50ITogUmVzaXplT2JzZXJ2ZXI7XHJcbiAgcmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNlbGwhOiBSZXNpemVPYnNlcnZlcjtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRhdGFTb3VyY2UhOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG5lc3RlZFRhYmxlRGF0YVNvdXJjZSE6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+O1xyXG4gIHNlbGVjdGVkUm93cyA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUYWJsZUNvbHVtblNjaGVtYT4odHJ1ZSwgW10pO1xyXG4gIHBhZ2VMaW1pdCE6IG51bWJlcjtcclxuICBwYWdlT2Zmc2V0ITogbnVtYmVyO1xyXG4gIGNvbHVtblR5cGUgPSBUYWJsZUNvbHVtblR5cGU7XHJcbiAgaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICBjbGVhckFsbCA9IHRoaXMuY29uc3RhbnRzPy5kYXRhVGFibGU/LmxhYmVsPy5jbGVhckFsbDtcclxuICBub1JlY29yZEZvdW5kID0gdGhpcy5jb25zdGFudHM/LmRhdGFUYWJsZT8ubWVzc2FnZT8ubm9SZWNvcmRGb3VuZDtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgc2hvd05lc3RlZFRhYmxlUGFnaW5hdGlvbkluZm8hOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfc2VhcmNoUmVzdWx0TWVzc2FnZSE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBzZWFyY2hSZXN1bHRNZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NlYXJjaFJlc3VsdE1lc3NhZ2UgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IHNlYXJjaFJlc3VsdE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWFyY2hSZXN1bHRNZXNzYWdlO1xyXG4gIH1cclxuICBzYWZlVHlwZTogU2FmZVR5cGUgPSBTYWZlVHlwZS5IVE1MO1xyXG4gIEBJbnB1dCgpIHJvd01lbnVBY3Rpb25JY29uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSBjYW5EaXNhYmxlQ2hlY2tib3ggPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0VsbGlwc2lzUmVxdWlyZWRGb3JMaW5rID0gZmFsc2U7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2U6IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRCcmVha3BvaW50KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdC5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBkYXRhIHRhYmxlIGNvbXBvbmVudCBhbmQgc2V0cyB0aGUgdGFibGUgYWN0aW9uIGJ1dHRvbnMuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5TY2hlbWE/Lm1hcCgoYykgPT4gYz8uY29sdW1uRGVmKTtcclxuICAgIGNvbnN0IHRhYmxlQWN0aW9uQnV0dG9uczogSWNvbkJ1dHRvbltdID0gdGhpcy5jb25zdGFudHM/LmRhdGFUYWJsZT8uYnV0dG9ucztcclxuICAgIHRoaXMucm93RWRpdEJ1dHRvbiA9IHRoaXMucm93RWRpdEJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbM107XHJcbiAgICB0aGlzLnJvd0RlbGV0ZUJ1dHRvbiA9IHRoaXMucm93RGVsZXRlQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1s0XTtcclxuICAgIHRoaXMuYWRkQnV0dG9uID0gdGhpcy5hZGRCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzJdO1xyXG4gICAgdGhpcy50YWJsZUVkaXRCdXR0b24gPSB0aGlzLnRhYmxlRWRpdEJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uID0gdGhpcy50YWJsZURlbGV0ZUJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbMV07XHJcbiAgICB0aGlzLnJvd0V4cGFuZEJ1dHRvbiA9IHRoaXMucm93RXhwYW5kQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1s1XTtcclxuICAgIHRoaXMucm93Q29sbGFwc2VCdXR0b24gPVxyXG4gICAgICB0aGlzLnJvd0NvbGxhcHNlQnV0dG9uID8/IHRoaXMucm93Q29sbGFwc2VCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzZdO1xyXG4gICAgdGhpcy50YWJsZURlbGV0ZUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cy5jaGFuZ2VkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzdWx0Py5zb3VyY2U/LnNlbGVjdGVkPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVFZGl0QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICByZXN1bHQ/LnNvdXJjZT8uc2VsZWN0ZWQ/Lmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgICAgIXJlc3VsdD8uc291cmNlPy5zZWxlY3RlZD8uWzBdPy5jYW5EZWxldGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Py5zb3VyY2U/LnNlbGVjdGVkPy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy50YWJsZURhdGEpO1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsYmFyU3VwcG9ydE1lc3NhZ2UpIHtcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlckZvclRhYmxlQ29udGVudCA9IG5ldyBSZXNpemVPYnNlcnZlcihcclxuICAgICAgICAoZWxlbWVudDogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzU2Nyb2xsaW5nRW5hYmxlZCA9XHJcbiAgICAgICAgICAgIGVsZW1lbnRbMF0/LnRhcmdldD8uc2Nyb2xsV2lkdGggPiBlbGVtZW50WzBdPy50YXJnZXQ/LmNsaWVudFdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRhYmxlQ29sdW1uc0hlYWRlclRleHQgJiYgdGhpcy52ZXJ0aWNhbENvbHVtbkhlYWRlck51bWJlcilcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlckZvclRhYmxlQ2VsbCA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRNYXJnaW5MZWZ0Rm9ySGVhZGVyVGV4dCgpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMudGFibGVEYXRhQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHNvcnQgZmVhdHVyZSBvZiBkYXRhU291cmNlIGFuZCBzZXQgbWFyZ2luIGxlZnQgZm9yIHRhYmxlQ29sdW1uc0hlYWRlclRleHQgaWYgaXQgaXNuJ3QgZW1wdHkuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmluYnVpbHRTb3J0aW5nTmVlZGVkKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLnNvcnQuZGlzYWJsZUNsZWFyID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGVhZGVyQ2VsbEVsZW1lbnQgPSB0aGlzLnRhYmxlQ29udGVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcubWF0LW1kYy1oZWFkZXItY2VsbCdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyRm9yVGFibGVDZWxsPy5vYnNlcnZlKHRoaXMuaGVhZGVyQ2VsbEVsZW1lbnQpO1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlckZvclRhYmxlQ29udGVudD8ub2JzZXJ2ZShcclxuICAgICAgdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudFxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0IG1hcmdpbiBsZWZ0IGZvciB0YWJsZSBjb2x1bW4gaGVhZGVyIHRleHQgYmFzZWQgb24gd2lkdGggb2YgY29sdW1ucy5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0TWFyZ2luTGVmdEZvckhlYWRlclRleHQoKTogdm9pZCB7XHJcbiAgICBsZXQgY29sdW1uc1dpZHRoID0gMDtcclxuICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMudmVydGljYWxDb2x1bW5IZWFkZXJOdW1iZXI7IGNvbHVtbisrKSB7XHJcbiAgICAgIGNvbnN0IHZlcnRpY2FsQ29sdW1uSGVhZGVyQ2xhc3NOYW1lID1cclxuICAgICAgICAnLm1hdC1jb2x1bW4tJyArIHRoaXMuY29sdW1uU2NoZW1hW2NvbHVtbl0uY29sdW1uRGVmO1xyXG4gICAgICBjb25zdCBjb2x1bW5FbGVtZW50ID0gdGhpcy5lbFJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcclxuICAgICAgICB2ZXJ0aWNhbENvbHVtbkhlYWRlckNsYXNzTmFtZVxyXG4gICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoY29sdW1uRWxlbWVudCkgY29sdW1uc1dpZHRoICs9IGNvbHVtbkVsZW1lbnQ/Lm9mZnNldFdpZHRoO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uc0hlYWRlckVsZW1lbnQgPSB0aGlzLmVsUmVmPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAnLmllZWVzYS1kYXRhLXRhYmxlX19jb2x1bW5zLWhlYWRlci10ZXh0J1xyXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmIChjb2x1bW5zSGVhZGVyRWxlbWVudClcclxuICAgICAgY29sdW1uc0hlYWRlckVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9IGNvbHVtbnNXaWR0aCArICdweCc7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRhdGFTb3VyY2Ugd2hlbmV2ZXIgdGhlIHRhYmxlIGRhdGEgY2hhbmdlcy5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdGFibGVEYXRhQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRhYmxlRGF0YTtcclxuICAgICAgaWYgKHRoaXMuaW5idWlsdFNvcnRpbmdOZWVkZWQpIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5jbGVhcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlLmRhdGEgPSB0aGlzLm5lc3RlZFRhYmxlRGF0YTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAvKipcclxuICAgKiBTb3J0VGFibGVEYXRhIG1ldGhvZCBlbWl0cyB0aGUgY2xpY2tlZCB0YWJsZSBjb2x1bW4gbmFtZSBhbmQgc29ydGluZyBkaXJlY3Rpb25cclxuICAgKiBAcGFyYW0ge1NvcnR9IHNvcnRcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc29ydFRhYmxlRGF0YShzb3J0OiBTb3J0KTogdm9pZCB7XHJcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGVkaXQgYWN0aW9ucyBtZXRob2QgZW1pdHMgdGhlIGNsaWNrZWQgcm93IGRhdGFcclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uUm93QWN0aW9uQ2xpY2socm93OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0QWN0aW9uTWVudS5lbWl0KHJvdyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBzbGlkZSB0b2dnbGUgb3B0aW9uIGFsb25nIHdpdGggdGhlIHNlbGVjdGVkIHJvdyBpbmZvLlxyXG4gICAqIEBwYXJhbSB7U2xpZGVUb2dnbGVPcHRpb259IHNsaWRlVG9nZ2xlT3B0aW9uXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICByb3dTbGlkZVRvZ2dsZUNoYW5nZShzbGlkZVRvZ2dsZU9wdGlvbjogU2xpZGVUb2dnbGVPcHRpb24sIHJvdzogYW55KSB7XHJcbiAgICB0aGlzLnJvd1NsaWRlVG9nZ2xlLmVtaXQoeyBzbGlkZVRvZ2dsZTogc2xpZGVUb2dnbGVPcHRpb24sIHJvd0RhdGE6IHJvdyB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWVudSBpdGVtIGFjdGlvbiBtZXRob2QgZW1pdHMgdGhlIGNsaWNrZWQgbWVudSBvcHRpb25zXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBtZW51SXRlbUFjdGlvbihyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5tZW51QWN0aW9uQ2xpY2suZW1pdChyb3cpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPblNlbGVjdENsaWNrIG1ldGhvZCBlbWl0cyB0aGUgcm93U2VsZWN0ZWQgZXZlbnQgd2l0aCBzZWxlY3RlZCByb3cgZGF0YS5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hlY2tlZFxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uU2VsZWN0Q2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnRvZ2dsZShyb3cpO1xyXG4gICAgcm93LmNoZWNrZWQgPSAhcm93LmNoZWNrZWQ7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQocm93KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5mby5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGFibGVDb2x1bW5BY3Rpb25JbmZvIGV2ZW50IHdpdGggdGFibGVDb2x1bW5JbmZvIGFuZCBtZW51QWN0aW9uSW5mby5cclxuICAgKiBAcGFyYW0ge1RhYmxlQ29sdW1uU2NoZW1hfSBjb2x1bW5cclxuICAgKiBAcGFyYW0ge01lbnV9IG1lbnVBY3Rpb25cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdGFibGVDb2x1bW5BY3Rpb25DbGljayhjb2x1bW46IFRhYmxlQ29sdW1uU2NoZW1hLCBtZW51QWN0aW9uOiBNZW51KTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlQ29sdW1uTWVudUFjdGlvbkNsaWNrLmVtaXQoe1xyXG4gICAgICB0YWJsZUNvbHVtbkluZm86IGNvbHVtbixcclxuICAgICAgbWVudUFjdGlvbkluZm86IG1lbnVBY3Rpb24sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGFibGVDb2x1bW5BY3Rpb25FbGVtZW50IGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIEhUTUwgRWxlbWVudC5cclxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRhYmxlQ29sdW1uQWN0aW9uRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZUNvbHVtbk1lbnVUb2dnbGVCdXR0b24uZW1pdChlbGVtZW50KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT25FZGl0Q2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBzZWxlY3RlZFJvd1RvRWRpdCBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCByb3cgZGF0YS5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uRWRpdENsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93VG9FZGl0LmVtaXQocm93KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uRGVsZXRlQ2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBzZWxlY3RlZFJvd1RvRGVsZXRlIGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIHJvdyBkYXRhLlxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25EZWxldGVDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd1RvRGVsZXRlLmVtaXQocm93KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqT25MaW5rQ2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBldmVudCB3aXRoIHJvdyBhbmQgY29sdW1uLlxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQHBhcmFtIHtUYWJsZUNvbHVtblNjaGVtYX0gW2NvbHVtbl1cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvbkxpbmtDbGljayhyb3c6IGFueSwgY29sdW1uPzogVGFibGVDb2x1bW5TY2hlbWEpOiB2b2lkIHtcclxuICAgIHRoaXMucm93TGluay5lbWl0KHJvdyk7XHJcbiAgICB0aGlzLmNvbHVtbkRhdGFPblJvd0xpbmtDbGljay5lbWl0KHsgcm93LCBjb2x1bW4gfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPblRhYmxlRWRpdENsaWNrIG1ldGhvZCBlbWl0cyBldmVudCB3aXRoIHNlbGVjdGVkIHJvd3MgZGF0YSB3aGVuIGVkaXQgYnV0dG9uIGNsaWNrZWQuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVGFibGVFZGl0Q2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93VG9FZGl0LmVtaXQodGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25EZWxldGVUYWJsZUNsaWNrIG1ldGhvZCBlbWl0cyBldmVudCB3aXRoIHNlbGVjdGVkIHJvdyBkYXRhIHdoZW4gZGVsZXRlIGJ1dHRvbiBjbGlja2VkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvbkRlbGV0ZVRhYmxlQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93c1RvRGVsZXRlLmVtaXQodGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25BZGRDbGljayBtZXRob2QgZW1pdHMgdGhlIGFkZCBldmVudCB3aGVuIGFkZCBidXR0b24gY2xpY2tlZC5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25BZGRDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkUm93LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uVGFibGVTZWFyY2hDbGljayBtZXRob2QgdG9nZ2xlcyB0aGUgaXNTZWFyY2hBY3RpdmUgc3RhdGUgd2hlbiB0aGUgc2VhcmNoIGljb24gaXMgY2xpY2tlZCBmb3IgdGhlIG1vYmlsZSB2aWV3LlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvblRhYmxlU2VhcmNoQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlID0gIXRoaXMuaXNTZWFyY2hBY3RpdmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3RlZEZpbHRlckluZm8gbWV0aG9kIGVtaXRzIHRoZSBzZWxlY3RlZEZpbHRlciBldmVudCB3aXRoIHNlbGVjdGVkIGZpbHRlciBpbmZvcm1hdGlvbi5cclxuICAgKiBAcGFyYW0ge0NoaXBPcHRpb259IG9wdGlvblxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBzZWxlY3RlZEZpbHRlclR5cGVJbmZvKG9wdGlvbjogQ2hpcE9wdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlci5lbWl0KG9wdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgcm93RXhwYW5zaW9uQ2xpY2sgZXZlbnQgd2l0aCB0aGUgc2VsZWN0ZWQgcm93IGRhdGEgd2hlbiB0aGUgcm93IGlzIGV4cGFuZGVkLlxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25UYWJsZVJvd0V4cGFuc2lvbkNsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlRGF0YVNvdXJjZS5kYXRhID0gW107XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZEVsZW1lbnQgPT09IHJvdykgdGhpcy5yb3dFeHBhbnNpb25DbGljay5lbWl0KHJvdyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPblNlbGVjdGVkRmlsdGVyT3B0aW9ucyBtZXRob2QgZW1pdHMgdGhlIGZpbHRlcmVkT3B0aW9ucyBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCBvcHRpb25zIGFuZCBhZGRzIFwiQ2xlYXIgYWxsXCIgb3B0aW9uIHRvIGNsZWFyIHRoZSBhbGwgc2VsZWN0aW9ucy5cclxuICAgKiBAcGFyYW0ge0NoZWNrYm94T3B0aW9uW119IG9wdGlvbnNcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25TZWxlY3RlZEZpbHRlck9wdGlvbnMoc2VsZWN0ZWRPcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5lbWl0KHNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zID0gW107XHJcbiAgICBzZWxlY3RlZE9wdGlvbnM/LmZvckVhY2goKG9wdGlvbnMpID0+IHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgbm8tdW51c2VkLXZhcnNcclxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucykpIHtcclxuICAgICAgICB2YWx1ZT8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0aW9uLmNoZWNrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyT3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogb3B0aW9uLmlkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5uYW1lIGFzIHN0cmluZyxcclxuICAgICAgICAgICAgICBjaGVja2VkOiBvcHRpb24uY2hlY2tlZCxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogb3B0aW9uLmRpc2FibGVkLFxyXG4gICAgICAgICAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuVE9HR0xFLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zLnB1c2goe1xyXG4gICAgICBpZDogdGhpcy5jbGVhckFsbCxcclxuICAgICAgbmFtZTogdGhpcy5jbGVhckFsbCxcclxuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgY2hpcFR5cGU6IENoaXBzVHlwZS5TVEFUSUMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbiBtZXRob2QgZW1pdHMgdGhlIHJlbW92ZUZpbHRlcmVkT3B0aW9uIGV2ZW50IHdpdGggcmVtb3ZlZCBvcHRpb24uXHJcbiAgICogQHBhcmFtIHtDaGlwT3B0aW9ufSBvcHRpb25cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbihvcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUZpbHRlcmVkT3B0aW9uLmVtaXQob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWFyY2hWYWx1ZSBtZXRob2QgZW1pdHMgdGhlIHNlYXJjaGVkIHZhbHVlIGFuZCByZXNldHMgcGFnZSBpbmRleCB0byB6ZXJvLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBzZWFyY2hWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaGVkVmFsdWUuZW1pdCh2YWx1ZSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucGFnaW5hdG9yICYmXHJcbiAgICAgICh2YWx1ZT8ubGVuZ3RoID09PSAwIHx8IHZhbHVlLnRyaW0oKT8ubGVuZ3RoID49IHRoaXMubWluQ2hhclRvU2VhcmNoKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIHBhZ2luYXRpb24gZm9yIGV2ZXJ5IHBhZ2UuXHJcbiAgICogQHBhcmFtIHtQYWdlRXZlbnR9IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZVBhZ2luYXRpb24oZXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJc0FsbFJvd1NlbGVjdGVkIG1ldGhvZCByZXR1cm5zIHRoZSBib29sZWFuIHZhbHVlIGJ5IGNoZWNraW5nIHNlbGVjdGVkUm93cyBhbmQgdG90YWxSb3dzIGxlbmd0aC5cclxuICAgKiBAcmV0dXJuIHsqfSAge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGlzQWxsUm93c1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY2FuRGlzYWJsZUNoZWNrYm94KVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkLmxlbmd0aCA9PT1cclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtPy5kaXNhYmxlKT8ubGVuZ3RoXHJcbiAgICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVBbGxSb3dzU2VsZWN0aW9uIG1ldGhvZCBjbGVhcnMgc2VsZWN0ZWRSb3dzIHdoZW4gYWxsIHJvd3MgYXJlIHNlbGVjdGVkIGVsc2Ugc2VsZWN0cyB0aGUgYWxsIHJvd3MuXHJcbiAgICogQHJldHVybiB7Kn0gIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICB0b2dnbGVBbGxSb3dzU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNBbGxSb3dzU2VsZWN0ZWQoKSkgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcclxuICAgIGVsc2UgaWYgKHRoaXMuY2FuRGlzYWJsZUNoZWNrYm94KVxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3QoXHJcbiAgICAgICAgLi4udGhpcy5kYXRhU291cmNlLmRhdGEuZmlsdGVyKChpdGVtKSA9PiAhaXRlbT8uZGlzYWJsZSlcclxuICAgICAgKTtcclxuICAgIGVsc2UgdGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0KC4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkUm93c0luZm8uZW1pdCh0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGxvd3MgQW5ndWxhciB0byBkZXRlY3QgdGhlIHNwZWNpZmljIHRhYmxlIHJvdyB0aGF0IG5lZWRzIHRvIGNoYW5nZSBvciBiZSBhZGRlZCBieSB0cmFja2luZyByb3cgdW5pcXVlIElkLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEBwYXJhbSB7VGFibGVDb2x1bW5TY2hlbWF9IGNvbHVtblxyXG4gICAqIEByZXR1cm4geyp9ICB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtblNjaGVtYSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gY29sdW1uLmlkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0YWJsZSByb3cgbGVmdCBib3JkZXIgYXMgcGVyIHRoZSBsZWdlbmQgY29sb3JcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sb3JcclxuICAgKiBAcmV0dXJuIHsqfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldFJvd0JvcmRlckxlZnRDb2xvcihjb2xvcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJvcmRlckxlZnQ6ICc1cHggc29saWQgJyArIGNvbG9yLFxyXG4gICAgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNlbGw/LnVub2JzZXJ2ZSh0aGlzLmhlYWRlckNlbGxFbGVtZW50KTtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNvbnRlbnQ/LnVub2JzZXJ2ZShcclxuICAgICAgdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudFxyXG4gICAgKTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlIGQtZmxleCBmbGV4LWNvbHVtbiBjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgPyAnZmxleC1jb2x1bW4gbXMtNCdcclxuICAgICAgICA6ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlJ1xyXG4gICAgXCJcclxuICA+XHJcbiAgICA8Y2FwdGlvblxyXG4gICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlLS1jYXB0aW9uXCJcclxuICAgICAgKm5nSWY9XCJjYXB0aW9uXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS10aXRsZS1sZy0yNCcgOiAnaWVlZXNhLXRpdGxlLW1kLTE4J1wiXHJcbiAgICA+XHJcbiAgICAgIHt7XHJcbiAgICAgICAgY2FwdGlvblxyXG4gICAgICB9fVxyXG4gICAgPC9jYXB0aW9uPlxyXG4gICAgPHBcclxuICAgICAgKm5nSWY9XCJpc1Njcm9sbGluZ0VuYWJsZWQgJiYgaXNTY3JvbGxTdXBwb3J0TWVzc2FnZU5lZWRlZFwiXHJcbiAgICAgIGNsYXNzPVwibS0wIG1iLTJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdwb3NpdGlvbi1hYnNvbHV0ZSBib3R0b20tMCBlbmQtMCc6ICFpc01vYmlsZVZpZXcgfVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IHNjcm9sbGJhclN1cHBvcnRNZXNzYWdlIH19XHJcbiAgICA8L3A+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnNcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucyBkLWZsZXggcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHAtc20tMFwiXHJcbiAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAnaWVlZXNhLWRhdGEtdGFibGVfX21vYmlsZS12aWV3LWFjdGlvbnMnIDogJydcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCIhaXNNb2JpbGVWaWV3XCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyVGVtcGxhdGVSZWZcIlxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXRhOiAnY29sLW1kLTcgY29sLWxnLTYnIH1cIlxyXG4gICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLWxnLTQgZ2FwLW1kLTMgZ2FwLXNtLTMgZ2FwLTMgY29sLW1kLTUgY29sLWxnLTYganVzdGlmeS1jb250ZW50LWVuZCBwcy0wXCJcclxuICAgICAgW25nQ2xhc3NdPVwiIXRhYmxlQWN0aW9ucz8uaXNGaWx0ZXJOZWVkZWQgPyAnY29sLW1kLTEyIGNvbC1sZy0xMicgOiAnJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVWaWV3XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImllZWVzYVNlYXJjaFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNBZGROZWVkZWRcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cImFkZEJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkFkZENsaWNrKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgYWRkQnV0dG9uPy5kaXNhYmxlZCA/ICdpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucy0tZGlzYWJsZWQnIDogJydcclxuICAgICAgICBcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNFZGl0TmVlZGVkXCJcclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJ0YWJsZUVkaXRCdXR0b25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwib25UYWJsZUVkaXRDbGljaygpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgIHNlbGVjdGVkUm93cy5zZWxlY3RlZC5sZW5ndGggIT09IDFcclxuICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2FjdGlvbnMtLWRpc2FibGVkJ1xyXG4gICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzRGVsZXRlTmVlZGVkXCJcclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJ0YWJsZURlbGV0ZUJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkRlbGV0ZVRhYmxlQ2xpY2soKVwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgIHNlbGVjdGVkUm93cy5zZWxlY3RlZC5sZW5ndGggPT09IDAgfHwgdGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWRcclxuICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2FjdGlvbnMtLWRpc2FibGVkJ1xyXG4gICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc1NlYXJjaE5lZWRlZFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5zZWFyY2hcIlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGQtc20tZmxleCBkLW1kLW5vbmUgZC1sZy1ub25lIGQteGwtbm9uZSBpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucy0tc2VhcmNoLWdyb3VwLWljb25cIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIChjbGljayk9XCJvblRhYmxlU2VhcmNoQ2xpY2soKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLW1hZ25pZnlpbmctZ2xhc3NcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRhaW5lclxyXG4gICAgKm5nSWY9XCJpc01vYmlsZVZpZXdcIlxyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyVGVtcGxhdGVSZWZcIlxyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZGF0YTogJ2llZWVzYS1kYXRhLXRhYmxlX19maWx0ZXInIH1cIlxyXG4gID5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2ZpbHRlclRlbXBsYXRlUmVmIGxldC1jbGFzc05hbWU9XCJkYXRhXCI+XHJcbiAgICA8aWVlZXNhLWZpbHRlclxyXG4gICAgICBjbGFzcz1cInt7IGNsYXNzTmFtZSB9fSBwLTBcIlxyXG4gICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcclxuICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzRmlsdGVyTmVlZGVkXCJcclxuICAgICAgW3NlbGVjdGVkRmlsdGVyT3B0aW9uc109XCJzZWxlY3RlZEZpbHRlck9wdGlvbnNcIlxyXG4gICAgICBbYXBwbGllZEZpbHRlck9wdGlvbnNdPVwiYXBwbGllZEZpbHRlck9wdGlvbnNcIlxyXG4gICAgICAoc2VsZWN0ZWRGaWx0ZXIpPVwic2VsZWN0ZWRGaWx0ZXJUeXBlSW5mbygkZXZlbnQpXCJcclxuICAgICAgKHJlbW92ZUZpbHRlcmVkT3B0aW9uKT1cIm9uUmVtb3ZhbE9mRmlsdGVyZWRPcHRpb24oJGV2ZW50KVwiXHJcbiAgICAgIChmaWx0ZXJlZE9wdGlvbnMpPVwib25TZWxlY3RlZEZpbHRlck9wdGlvbnMoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EtZmlsdGVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9iaWxlVmlldyAmJiBpc1NlYXJjaEFjdGl2ZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImllZWVzYVNlYXJjaFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2llZWVzYVNlYXJjaD5cclxuICAgIDxpZWVlc2Etc2VhcmNoXHJcbiAgICAgIFtwbGFjZWhvbGRlckxhYmVsXT1cInNlYXJjaFBsYWNlSG9sZGVyVGV4dFwiXHJcbiAgICAgIFtzZWFyY2hUeXBlXT1cInNlYXJjaFR5cGVcIlxyXG4gICAgICAoc2VhcmNoVmFsdWUpPVwic2VhcmNoVmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc1NlYXJjaE5lZWRlZFwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX3NlYXJjaC13cmFwcGVyIG10LXNtLTIgbWQtc20tMiBtdC0yIG1kLTJcIlxyXG4gICAgICBbc3VwcG9ydE1lc3NhZ2VdPVwic2VhcmNoU3VwcG9ydE1lc3NhZ2VcIlxyXG4gICAgPjwvaWVlZXNhLXNlYXJjaD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxwXHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19zZWFyY2hfcmVzdWx0X2xhYmVsXCJcclxuICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0TWVzc2FnZVwiXHJcbiAgICBbaW5uZXJIVE1MXT1cInNlYXJjaFJlc3VsdE1lc3NhZ2UgfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gID48L3A+XHJcbiAgPHBcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NvbHVtbnMtaGVhZGVyLXRleHQgbWItMCBpZWVlc2EtdGl0bGUtbWQtMTggdGV4dC1jZW50ZXJcIlxyXG4gICAgKm5nSWY9XCJ0YWJsZUNvbHVtbnNIZWFkZXJUZXh0XCJcclxuICAgIFtpbm5lckhUTUxdPVwidGFibGVDb2x1bW5zSGVhZGVyVGV4dCB8IHNhZmUgOiBzYWZlVHlwZVwiXHJcbiAgPjwvcD5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jb250ZW50XCJcclxuICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICB0YWJsZURhdGFJbmZvICYmIHRhYmxlRGF0YUluZm8ubGVuZ3RoID09PSAwXHJcbiAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX25vLXRhYmxlLWRhdGEnXHJcbiAgICAgICAgOiAnJ1xyXG4gICAgXCJcclxuICAgICN0YWJsZUNvbnRlbnRcclxuICA+XHJcbiAgICA8dGFibGVcclxuICAgICAgbWF0LXRhYmxlXHJcbiAgICAgIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiXHJcbiAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG4gICAgICBtYXRTb3J0XHJcbiAgICAgIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cImlzQ2xlYXJTb3J0TmVlZGVkXCJcclxuICAgICAgW21hdFNvcnRBY3RpdmVdPVwiZGVmYXVsdFNvcnRlZENvbHVtblwiXHJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cImRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uXCJcclxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwic29ydFRhYmxlRGF0YSgkZXZlbnQpXCJcclxuICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUlkXCJcclxuICAgICAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2x1bW4gb2YgY29sdW1uU2NoZW1hSW5mbztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZDtcclxuICAgICAgICAgIGxldCBpZCA9IGluZGV4XHJcbiAgICAgICAgXCJcclxuICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7eyBjb2x1bW4/LmNvbHVtbkRlZiB9fVwiXHJcbiAgICAgICAgW3N0aWNreV09XCJjb2x1bW4/LmlzU3RpY2t5Q29sdW1uXCJcclxuICAgICAgICBbc3RpY2t5RW5kXT1cImNvbHVtbj8uaXNTdGlja3lFbmRDb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgIG1hdC1zb3J0LWhlYWRlclxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2x1bW4/LmlzU29ydGFibGVDb2x1bW5cIlxyXG4gICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uRGVmXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGUtaGVhZGVyIGllZWVzYS1ib2R5LXNtLWJvbGQtMTRcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sdW1uPy5oZWFkaW5nXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5TRUxFQ1RcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlQWxsUm93c1NlbGVjdGlvbigpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRSb3dzPy5oYXNWYWx1ZSgpICYmIGlzQWxsUm93c1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGVkUm93cz8uaGFzVmFsdWUoKSAmJiAhaXNBbGxSb3dzU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5kYXRhVGFibGU/LmFyaWFMYWJlbD8uc2VsZWN0QWxsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdtZS0yJzogY29sdW1uLmhhc0NvbHVtbkFjdGlvbnMgfVwiPnt7XHJcbiAgICAgICAgICAgICAgY29sdW1uLmhlYWRpbmdcclxuICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGFzQ29sdW1uQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxpZWVlc2EtbWVudVxyXG4gICAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJ0YWJsZUNvbHVtbkFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRJY29uU2l6ZV09XCJ0YWJsZUNvbHVtbkFjdGlvbk1lbnVTaXplXCJcclxuICAgICAgICAgICAgICAgIChtZW51SXRlbUNsaWNrKT1cInRhYmxlQ29sdW1uQWN0aW9uQ2xpY2soY29sdW1uLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChtZW51VG9nZ2xlQnV0dG9uRWxlbWVudCk9XCJ0YWJsZUNvbHVtbkFjdGlvbkVsZW1lbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jb2x1bW4tbWVudVwiXHJcbiAgICAgICAgICAgICAgPjwvaWVlZXNhLW1lbnU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQgaWVlZXNhLXRpdGxlLXNtLTE2XCJcclxuICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgY29sdW1uPy5jb2x1bW5EZWYgPT09IGNvbHVtblR5cGU/LlNFTEVDVFxyXG4gICAgICAgICAgICAgID8gJ2llZWVzYS1kYXRhLXRhYmxlX19jb2x1bW4tc2VsZWN0J1xyXG4gICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgIHRhYmxlRGF0YTtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbixcclxuICAgICAgICAgICAgICAgIHJvdzogcm93LFxyXG4gICAgICAgICAgICAgICAgdGFibGVSb3dBY3Rpb25zOiB0YWJsZVJvd0FjdGlvbnNcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zPy5sZW5ndGhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXhwYW5kZWQtcm93XCJcclxuICAgICAgICAgICAgW0BkZXRhaWxFeHBhbmRdPVwicm93ID09PSBleHBhbmRlZEVsZW1lbnQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLW5lc3RlZC1kYXRhLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlXHJcbiAgICAgICAgICAgICAgICAjbmVzdGVkVGFibGVcclxuICAgICAgICAgICAgICAgIG1hdC10YWJsZVxyXG4gICAgICAgICAgICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUlkXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cIm5lc3RlZFRhYmxlRGF0YVNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uIG9mIG5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hSW5mbztcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlkID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgbWF0Q29sdW1uRGVmPVwie3sgY29sdW1uPy5jb2x1bW5EZWYgfX1cIlxyXG4gICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cImNvbHVtbj8uaXNTdGlja3lDb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICBbc3RpY2t5RW5kXT1cImNvbHVtbj8uaXNTdGlja3lFbmRDb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uPy5jb2x1bW5EZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGUtaGVhZGVyIGllZWVzYS1ib2R5LXNtLWJvbGQtMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5jb2x1bW5EZWYgPT09IGNvbHVtblR5cGU/LlNFTEVDVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbHVtbj8uaGVhZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2x1bW4uaGVhZGluZyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQgaWVlZXNhLXRpdGxlLXNtLTE2XCJcclxuICAgICAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5jb2x1bW5EZWYgPT09IGNvbHVtblR5cGU/LlNFTEVDVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByb3c6IHJvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVJvd0FjdGlvbnM6IG5lc3RlZFRhYmxlUm93QWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTmVzdGVkVGFibGVIZWFkZXJOZWVkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWhlYWRlci1yb3dcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19oZWFkZXItcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWRUYWJsZURpc3BsYXllZENvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdGlja3k6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgICBtYXQtcm93XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLW5lc3RlZC1kYXRhLXRhYmxlX19jZWxsLXJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBuZXN0ZWRUYWJsZURpc3BsYXllZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcclxuICAgICAgICAgICAgICAgICAgICByb3c/LmxlZ2VuZENvbG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IGdldFJvd0JvcmRlckxlZnRDb2xvcihyb3c/LmxlZ2VuZENvbG9yKVxyXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvdHI+XHJcbiAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cgPT09IGV4cGFuZGVkRWxlbWVudFwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBpZWVlc2EtZXhwYW5kZWQtcm93X19mb290ZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgbmVzdGVkUGFnaW5hdG9yQ29uZmlnLnRvdGFsUmVjb3JkcyA+XHJcbiAgICAgICAgICAgICAgICAgICAgbmVzdGVkUGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlICYmXHJcbiAgICAgICAgICAgICAgICAgIG5lc3RlZFBhZ2luYXRvckNvbmZpZy5yZWNvcmRzUGVyUGFnZSA+IDBcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkxpbmtDbGljayhyb3cpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYnRuLWxhYmVsLWxnLWJvbGQtMTYgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5saW5rXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgdmlld0FsbCA/PyBcIlwiIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmVzdGVkLWVsZW1lbnQtZGV0YWlsX19mb290ZXItLWRldGFpbFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIHNob3dOZXN0ZWRUYWJsZVBhZ2luYXRpb25JbmZvXHJcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGFibGVIZWFkZXJOZWVkZWRcIj5cclxuICAgICAgICA8dHJcclxuICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19oZWFkZXItcm93XCJcclxuICAgICAgICAgICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IGZhbHNlXCJcclxuICAgICAgICA+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDx0clxyXG4gICAgICAgIG1hdC1yb3dcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jZWxsLXJvd1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGkgKyAxKSAlIDIgPT09IDAgPyAnZXZlbicgOiAnb2RkJ1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiXHJcbiAgICAgICAgICByb3c/LmxlZ2VuZENvbG9yID8gZ2V0Um93Qm9yZGVyTGVmdENvbG9yKHJvdz8ubGVnZW5kQ29sb3IpIDogJydcclxuICAgICAgICBcIlxyXG4gICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zOyBsZXQgaSA9IGRhdGFJbmRleFwiXHJcbiAgICAgID48L3RyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzTmVzdGVkVGFibGVcIj5cclxuICAgICAgICA8dHJcclxuICAgICAgICAgIG1hdC1yb3dcclxuICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgZGV0YWlsczsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLXJvdy1leHBhbmRlZC10YWJsZS1kZXRhaWxcIlxyXG4gICAgICAgID48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48cFxyXG4gIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX21lc3NhZ2UgaWVlZXNhLXRpdGxlLWxnLWJvbGQtMjQgdGV4dC1jZW50ZXIgcC01XCJcclxuICAqbmdJZj1cInRhYmxlRGF0YUluZm8gJiYgdGFibGVEYXRhSW5mby5sZW5ndGggPT09IDBcIlxyXG4+XHJcbiAge3sgbm9SZWNvcmRGb3VuZCB9fVxyXG48L3A+XHJcbjxkaXYgY2xhc3M9XCJyb3cgaWVlZXNhLWRhdGEtdGFibGVfX3BhZ2luYXRpb24tY29udGFpbmVyXCI+XHJcbiAgPGllZWVzYS1sZWdlbmRcclxuICAgIGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC01IGQtZmxleCBhbGlnbi1pdGVtcy1lbmQgcHgtNFwiXHJcbiAgICAqbmdJZj1cImxlZ2VuZHM/Lmxlbmd0aFwiXHJcbiAgICBbbmdDbGFzc109XCIhdGFibGVBY3Rpb25zPy5pc1BhZ2luYXRpb25OZWVkZWQgPyAnY29sLW1kLTEyJyA6ICcnXCJcclxuICAgIFtsZWdlbmRzXT1cImxlZ2VuZHNcIlxyXG4gICAgW2lzU29ydGluZ109XCJ0cnVlXCJcclxuICA+PC9pZWVlc2EtbGVnZW5kPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc1BhZ2luYXRpb25OZWVkZWRcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fcGFnaW5hdGlvbiBkLWZsZXggZmxleC1yb3ctcmV2ZXJzZSBjb2wtc20tMTIgY29sLW1kLTdcIlxyXG4gICAgW25nQ2xhc3NdPVwiIWxlZ2VuZHM/Lmxlbmd0aCA/ICdjb2wtbWQtMTInIDogJydcIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5wYWdpbmF0aW9uXCJcclxuICA+XHJcbiAgICA8bWF0LXBhZ2luYXRvclxyXG4gICAgICAjcGFnaW5hdG9yXHJcbiAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlXCJcclxuICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0b3JDb25maWcucGFnZVNpemVPcHRpb25zXCJcclxuICAgICAgKHBhZ2UpPVwiaGFuZGxlUGFnaW5hdGlvbigkZXZlbnQpXCJcclxuICAgICAgW2xlbmd0aF09XCJwYWdpbmF0b3JDb25maWc/LnRvdGFsUmVjb3Jkc1wiXHJcbiAgICA+PC9tYXQtcGFnaW5hdG9yPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI3RhYmxlRGF0YVxyXG4gIGxldC1jb2x1bW49XCJjb2x1bW5cIlxyXG4gIGxldC1yb3c9XCJyb3dcIlxyXG4gIGxldC10YWJsZVJvd0FjdGlvbnM9XCJ0YWJsZVJvd0FjdGlvbnNcIlxyXG4+XHJcbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW1uPy5jb2x1bW5UeXBlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdJZj1cImlzQ2VsbFRleHRPdmVyZmxvd0VsbGlwc2lzOyB0aGVuIGVsbGlwc2lzQ2VsbDsgZWxzZSB0ZXh0V3JhcENlbGxcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3RleHRXcmFwQ2VsbD5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgY2xhc3M9XCJtLTAgaWVlZXNhLWJvZHktY29sb3Itc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tdGV4dFwiXHJcbiAgICAgICAgICAqbmdJZj1cImNvbHVtbj8uaXNIVE1MQ2VsbERhdGFcIlxyXG4gICAgICAgICAgW2lubmVySFRNTF09XCJjb2x1bW4/LmNlbGxEYXRhKHJvdykgfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gICAgICAgID48L3A+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCI+XHJcbiAgICAgICAgICA8cFxyXG4gICAgICAgICAgICBjbGFzcz1cIm0tMCBpZWVlc2EtYm9keS1jb2xvci1zbS0xNCBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LS10ZXh0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29sdW1uPy5jZWxsRGF0YShyb3cpIH19XHJcbiAgICAgICAgICA8L3A+PC9uZy1jb250YWluZXJcclxuICAgICAgICA+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZWxsaXBzaXNDZWxsPlxyXG4gICAgICAgIDxwXHJcbiAgICAgICAgICBpZWVlc2FUZXh0VHJ1bmNhdGVkXHJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb2x1bW4/LmNlbGxEYXRhKHJvdylcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LS1lbGxpcHNpcyBpZWVlc2EtYm9keS1jb2xvci1zbS0xNCBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LS10ZXh0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBjb2x1bW4/LmNlbGxEYXRhKHJvdykgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGU/LkxJTktcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1jZWxsLWRhdGFcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBpc0VsbGlwc2lzUmVxdWlyZWRGb3JMaW5rO1xyXG4gICAgICAgICAgICB0aGVuIGVsbGlwc2lzQ2VsbDtcclxuICAgICAgICAgICAgZWxzZSB0ZXh0V3JhcENlbGxcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxsaXBzaXNDZWxsPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkxpbmtDbGljayhyb3csIGNvbHVtbilcIlxyXG4gICAgICAgICAgICBpZWVlc2FUZXh0VHJ1bmNhdGVkXHJcbiAgICAgICAgICAgIFtlbGVtZW50Q2xhc3NOYW1lVG9BZGRUb29sdGlwXT1cIicubWRjLWJ1dHRvbiAubWRjLWJ1dHRvbl9fbGFiZWwnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYnRuLWxhYmVsLWxnLWJvbGQtMTYgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC1saW5rIGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtbGluay0tZWxsaXBzaXNcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbHVtbj8uY2VsbERhdGEocm93KVwiXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInJvdz8udG9vbFRpcFRleHQgPz8gY29sdW1uPy5jZWxsRGF0YShyb3cpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29sdW1uPy5jZWxsRGF0YShyb3cpIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGV4dFdyYXBDZWxsPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkxpbmtDbGljayhyb3csIGNvbHVtbilcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImllZWVzYS1idG4tbGFiZWwtbGctYm9sZC0xNiBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LWxpbmtcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbHVtbj8uY2VsbERhdGEocm93KVwiXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInJvdz8udG9vbFRpcFRleHRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb2x1bW4/LmNlbGxEYXRhKHJvdykgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4/LmlzQ29udGVudFVuZGVyTGlua1wiPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LXVuZGVyLWxpbmtcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImNvbHVtbj8uaXNIVE1MQ2VsbERhdGFcIlxyXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJvdz8uY29udGVudFVuZGVyTGluayB8IHNhZmUgOiBzYWZlVHlwZVwiXHJcbiAgICAgICAgICA+PC9wPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LXVuZGVyLWxpbmtcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgcm93Py5jb250ZW50VW5kZXJMaW5rIH19XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5ORVNURURfVEFCTEVcIj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAqbmdJZj1cInJvdz8uaGFzQ2hpbGRyZW5cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwiXHJcbiAgICAgICAgICBleHBhbmRlZEVsZW1lbnQgPSBleHBhbmRlZEVsZW1lbnQgPT09IHJvdyA/IG51bGwgOiByb3c7XHJcbiAgICAgICAgICBvblRhYmxlUm93RXhwYW5zaW9uQ2xpY2socm93KVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwiXHJcbiAgICAgICAgICBleHBhbmRlZEVsZW1lbnQgPT09IHJvdyA/IHJvd0V4cGFuZEJ1dHRvbiA6IHJvd0NvbGxhcHNlQnV0dG9uXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICA8L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uU0VMRUNUXCI+XHJcbiAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICBjbGFzcz1cImNvbC0yXCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IG9uU2VsZWN0Q2xpY2socm93KSA6IG51bGxcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkUm93cy5pc1NlbGVjdGVkKHJvdylcIlxyXG4gICAgICAgIFthcmlhLWxhYmVsXT1cImNvbnN0YW50cz8uZGF0YVRhYmxlPy5hcmlhTGFiZWw/LnNlbGVjdFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJvdz8uZGlzYWJsZSAmJiBjYW5EaXNhYmxlQ2hlY2tib3hcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5FRElUXCI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJyb3dFZGl0QnV0dG9uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uRWRpdENsaWNrKHJvdylcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGU/LkRFTEVURVwiPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwicm93RGVsZXRlQnV0dG9uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uRGVsZXRlQ2xpY2socm93KVwiXHJcbiAgICAgID48L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZS5TTElERV9UT0dHTEVcIj5cclxuICAgICAgPGllZWVzYS1zbGlkZS10b2dnbGVcclxuICAgICAgICBbc2xpZGVUb2dnbGVdPVwiY29sdW1uPy5jZWxsRGF0YShyb3cpXCJcclxuICAgICAgICAoc2xpZGVUb2dnbGVDaGFuZ2UpPVwicm93U2xpZGVUb2dnbGVDaGFuZ2UoJGV2ZW50LCByb3cpXCJcclxuICAgICAgICBbY2FuU2hvd0ljb25dPVwidHJ1ZVwiXHJcbiAgICAgID48L2llZWVzYS1zbGlkZS10b2dnbGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGU/LkFDVElPTlNcIj5cclxuICAgICAgPGllZWVzYS1tZW51XHJcbiAgICAgICAgW2J1dHRvbl09XCJyb3dNZW51QWN0aW9uSWNvblwiXHJcbiAgICAgICAgW21lbnVJdGVtc109XCJ0YWJsZVJvd0FjdGlvbnMgPz8gcm93Lm1lbnVBY3Rpb25cIlxyXG4gICAgICAgIChjbGljayk9XCJtZW51SXRlbUFjdGlvbihyb3cpXCJcclxuICAgICAgICAobWVudUl0ZW1DbGljayk9XCJvblJvd0FjdGlvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICA+PC9pZWVlc2EtbWVudT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|