@fundamental-ngx/platform 0.44.0-rc.6 → 0.44.0
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/action-bar/action-bar.component.mjs +3 -3
- package/esm2022/button/button.component.mjs +4 -3
- package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -2
- package/esm2022/feed-input/feed-input.component.mjs +3 -2
- package/esm2022/form/checkbox/checkbox.component.mjs +6 -5
- package/esm2022/form/checkbox-group/checkbox-group.component.mjs +3 -3
- package/esm2022/form/date-picker/date-picker.component.mjs +7 -6
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +6 -5
- package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +3 -2
- package/esm2022/form/form-group/form-field/form-field.component.mjs +4 -3
- package/esm2022/form/form-group/form-group.component.mjs +3 -3
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +3 -3
- package/esm2022/form/platform-file-uploader/platform-file-uploader.component.mjs +4 -3
- package/esm2022/form/radio-group/radio/radio.component.mjs +4 -3
- package/esm2022/form/select/commons/base-select.mjs +3 -3
- package/esm2022/form/select/select/select.component.mjs +4 -4
- package/esm2022/form/text-area/text-area.component.mjs +4 -4
- package/esm2022/form/time-picker/time-picker.component.mjs +3 -2
- package/esm2022/list/base-list-item.mjs +5 -5
- package/esm2022/page-footer/page-footer.component.mjs +3 -2
- package/esm2022/search-field/search-field.component.mjs +4 -4
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +7 -6
- package/esm2022/thumbnail/thumbnail-details/thumbnail-details.component.mjs +3 -2
- package/esm2022/thumbnail/thumbnail-image/thumbnail-image.component.mjs +3 -3
- package/esm2022/thumbnail/thumbnail.component.mjs +3 -3
- package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +5 -5
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +4 -3
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +3 -2
- package/esm2022/value-help-dialog/components/value-help-dialog-search/value-help-dialog-search.component.mjs +3 -2
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +5 -5
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +2 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +2 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +31 -30
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +2 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +11 -10
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +9 -8
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.44.0.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/fundamental-ngx-platform-v0.44.0-rc.6.tgz +0 -0
|
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren,
|
|
|
2
2
|
import { isObservable, Subject, Subscription } from 'rxjs';
|
|
3
3
|
import { takeUntil } from 'rxjs/operators';
|
|
4
4
|
import { DialogConfig, DialogService } from '@fundamental-ngx/core/dialog';
|
|
5
|
-
import { RtlService } from '@fundamental-ngx/cdk/utils';
|
|
5
|
+
import { RtlService, warnOnce } from '@fundamental-ngx/cdk/utils';
|
|
6
6
|
import { isDataSource } from '@fundamental-ngx/platform/shared';
|
|
7
7
|
import { ArrayValueHelpDialogDataSource, ObservableValueHelpDialogDataSource, VhdDefineExcludeStrategy, VhdDefineIncludeStrategy, VhdTab } from '../models';
|
|
8
8
|
import { VhdFilterComponent } from '../components/value-help-dialog-filter/value-help-dialog-filter.component';
|
|
@@ -45,7 +45,7 @@ export class PlatformValueHelpDialogComponent {
|
|
|
45
45
|
* Select from list tab's and Search table settings
|
|
46
46
|
* */
|
|
47
47
|
set selectTabTitle(value) {
|
|
48
|
-
|
|
48
|
+
warnOnce("Property selectTabTitle is deprecated. Use i18n capabilities 'platformVHD.selectTabTitle' key instead.");
|
|
49
49
|
this._selectTabTitle = value;
|
|
50
50
|
}
|
|
51
51
|
get selectTabTitle() {
|
|
@@ -56,7 +56,7 @@ export class PlatformValueHelpDialogComponent {
|
|
|
56
56
|
* Text displayed when table has no items.
|
|
57
57
|
*/
|
|
58
58
|
set searchTableEmptyMessage(value) {
|
|
59
|
-
|
|
59
|
+
warnOnce("Property searchTableEmptyMessage is deprecated. Use i18n capabilities 'platformVHD.searchTableEmptyMessage' key instead.");
|
|
60
60
|
this._searchTableEmptyMessage = value;
|
|
61
61
|
}
|
|
62
62
|
get searchTableEmptyMessage() {
|
|
@@ -67,7 +67,7 @@ export class PlatformValueHelpDialogComponent {
|
|
|
67
67
|
* Define conditions tab's settings
|
|
68
68
|
*/
|
|
69
69
|
set defineTabTitle(value) {
|
|
70
|
-
|
|
70
|
+
warnOnce("Property defineTabTitle is deprecated. Use i18n capabilities 'platformVHD.defineTabTitle' key instead.");
|
|
71
71
|
this._defineTabTitle = value;
|
|
72
72
|
}
|
|
73
73
|
get defineTabTitle() {
|
|
@@ -608,4 +608,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
608
608
|
type: ViewChild,
|
|
609
609
|
args: ['container', { read: TemplateRef }]
|
|
610
610
|
}] } });
|
|
611
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQWMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBYSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFDSCw4QkFBOEIsRUFFOUIsbUNBQW1DLEVBR25DLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFFeEIsTUFBTSxFQUdULE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSx5QkFBeUIsRUFB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QkFNTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sTUFBTTtzQkFETCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBUUYsY0FBYztzQkFEakIsS0FBSztnQkFjTixlQUFlO3NCQURkLEtBQUs7Z0JBUUYsdUJBQXVCO3NCQUQxQixLQUFLO2dCQWNOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBS04sc0JBQXNCO3NCQURyQixLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFRRixjQUFjO3NCQURqQixLQUFLO2dCQWdCTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBcUJOLFdBQVc7c0JBRFYsTUFBTTtnQkFLRyxlQUFlO3NCQUF4QixNQUFNO2dCQUlHLGNBQWM7c0JBQXZCLE1BQU07Z0JBSVAsT0FBTztzQkFETixlQUFlO3VCQUFDLGtCQUFrQjtnQkFLbkMsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGlhbG9nQ29uZmlnLCBEaWFsb2dSZWYsIERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBpc0RhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQge1xuICAgIEFycmF5VmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZSxcbiAgICBCYXNlRW50aXR5LFxuICAgIE9ic2VydmFibGVWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlLFxuICAgIFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2UsXG4gICAgVmRoVGFibGVTZWxlY3Rpb24sXG4gICAgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5LFxuICAgIFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSxcbiAgICBWaGRGaWx0ZXIsXG4gICAgVmhkVGFiLFxuICAgIFZoZFZhbHVlLFxuICAgIFZoZFZhbHVlQ2hhbmdlRXZlbnRcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFZoZEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdmFsdWUtaGVscC1kaWFsb2ctZmlsdGVyL3ZhbHVlLWhlbHAtZGlhbG9nLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgZGVmYXVsdENvbmRpdGlvbkRpc3BsYXlGbiB9IGZyb20gJy4uL2NvbnN0YW5zL2NvbmRpdGlvbi1kaXNwbGF5LmZ1bmN0aW9uJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB0eXBlIEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD4gPVxuICAgIHwgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPlxuICAgIHwgQXJyYXlWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+XG4gICAgfCBPYnNlcnZhYmxlVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPjtcblxubGV0IHZoaVVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtdmFsdWUtaGVscC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdmFsdWUtaGVscC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBsYXRmb3JtVmFsdWVIZWxwRGlhbG9nQ29tcG9uZW50PFQgPSBhbnk+IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBJZCBvZiB0aGUgcG9wb3ZlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZyA9ICdmZHAtdmhkLScgKyB2aGlVbmlxdWVJZCsrO1xuXG4gICAgLyoqIEluaXRpYWwgc3RhdGUgb2YgVmFsdWUgaGVscCBkaWFsb2cgKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlOiBWaGRWYWx1ZTxUPiA9IHtcbiAgICAgICAgc2VsZWN0ZWQ6IFtdLFxuICAgICAgICBjb25kaXRpb25zOiBbXVxuICAgIH07XG5cbiAgICAvKiogRGlhbG9nIHRpdGxlICovXG4gICAgQElucHV0KClcbiAgICBkaWFsb2dUaXRsZTogc3RyaW5nO1xuXG4gICAgLyoqIFNlbGVjdCBmcm9tIGxpc3QgdGFiIGFjdGl2YXRpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIGluaXRpYWxUYWIgPSBWaGRUYWIuc2VsZWN0RnJvbUxpc3Q7XG5cbiAgICAvKiogVmlzaWJsZSB0YWJzICovXG4gICAgQElucHV0KClcbiAgICB0YWJzOiAnYm90aCcgfCAnc2VsZWN0JyB8ICdkZWZpbmUnID0gJ2JvdGgnO1xuXG4gICAgLyoqIEluaXRpYWwgZXhwYW5kIHN0YXRlIGZvciBhZHZhbmNlZCBzZWFyY2ggcGFuZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzT3BlbkFkdmFuY2VkID0gZmFsc2U7XG5cbiAgICAvKiogRGF0YSBzb3VyY2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhU291cmNlKHZhbHVlOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gdGhpcy50b0RhdGFTdHJlYW0odmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBkYXRhU291cmNlKCk6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xuICAgIH1cblxuICAgIC8qKiBEaWFsb2cncyBjdXN0b20gY29uZmlnICovXG4gICAgQElucHV0KClcbiAgICBkaWFsb2dDb25maWc6IERpYWxvZ0NvbmZpZyA9IHt9O1xuXG4gICAgLyoqIFVuaXF1ZSBrZXkgZnJvbSB0aGUgc291cmNlIGZpZWxkIG5hbWVzLiBSZXF1aXJlZCBmaWVsZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHVuaXF1ZUtleTogc3RyaW5nO1xuXG4gICAgLyoqIElkIGF0dHJpYnV0ZSBmb3IgZGlhbG9nIHRpdGxlICovXG4gICAgQElucHV0KClcbiAgICBoZWFkZXJJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogRmllbGQgbmFtZSBmb3IgZGVmYXVsdCByZW5kZXIgZnJvbSBkYXRhLlxuICAgICAqIFJlcXVpcmVkIGZpZWxkIGlmIHRva2VuaXplckZuIGlzIG5vdCBleGlzdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRva2VuVmlld0ZpZWxkOiBzdHJpbmc7XG5cbiAgICAvKiogVG9rZW5pemVyIGZ1bmN0aW9uIGZvciBjdXN0b20gdG9rZW4gcmVuZGVyLCBpdCBoYXMgaGlnaGVyIHByaW8gdGhhdCBgdG9rZW5WaWV3RmllbGRgLlxuICAgICAqIFJlcXVpcmVkIGZpZWxkIGlmIHRva2VuVmlld0ZpZWxkIGlzIG5vdCBleGlzdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRva2VuaXplckZuOiAoaXRlbTogVCkgPT4gc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHZhbHVlIGhlbHAgZGlhbG9nIHNob3VsZCBiZSB2aWV3IGluIG1vYmlsZSBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGUgPSBmYWxzZTtcblxuICAgIC8qKiBJdCBzaG91bGQgYmUgYWJsZSBpZiB5b3UgdXNlIG11bHRpcGxlIHNlbGVjdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybWF0VG9rZW46ICh2YWx1ZTogVmhkVmFsdWVDaGFuZ2VFdmVudDxUPikgPT4gdm9pZDtcblxuICAgIC8qKiBUb2tlbml6ZXIgZnVuY3Rpb24gZm9yIGNvbmRpdGlvbidzIHRva2VuIHJlbmRlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29uZGl0aW9uRGlzcGxheUZuID0gZGVmYXVsdENvbmRpdGlvbkRpc3BsYXlGbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogU2VsZWN0IGZyb20gbGlzdCB0YWIncyBhbmQgU2VhcmNoIHRhYmxlIHNldHRpbmdzXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3RUYWJUaXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgc2VsZWN0VGFiVGl0bGUgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0VGFiVGl0bGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0VGFiVGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdFRhYlRpdGxlO1xuICAgIH1cblxuICAgIC8qKiBTZWxlY3Rpb24gbW9kZSBmb3Igc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hTZWxlY3Rpb246IFZkaFRhYmxlU2VsZWN0aW9uID0gJ211bHRpJztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogVGV4dCBkaXNwbGF5ZWQgd2hlbiB0YWJsZSBoYXMgbm8gaXRlbXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VhcmNoVGFibGVFbXB0eU1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBcIlByb3BlcnR5IHNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAncGxhdGZvcm1WSEQuc2VhcmNoVGFibGVFbXB0eU1lc3NhZ2UnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3NlYXJjaFRhYmxlRW1wdHlNZXNzYWdlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWFyY2hUYWJsZUVtcHR5TWVzc2FnZTtcbiAgICB9XG5cbiAgICAvKiogSXRlbXMgcGVyIHBhZ2UgZm9yIHBhZ2luYXRpb24gYmVsb3cgc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUYWJsZVBhZ2VTaXplID0gMjA7XG5cbiAgICAvKiogQ291bnQgb2YgZGVmYXVsdCBtb2JpbGUgaGVhZGVyIGZyb20gc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUYWJsZU1vYmlsZUhlYWRlcnMgPSAyO1xuXG4gICAgLyoqIE1heCBzaG93biBpbml0aWFsIGZpbHRlcnMgb24gb3Blbi4gRGVza3RvcCBvbmx5ICovXG4gICAgQElucHV0KClcbiAgICBtYXhTaG93bkluaXRpYWxGaWx0ZXJzID0gNDtcblxuICAgIC8qKiBMb2FkaW5nIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBsb2FkaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBEZWZpbmUgY29uZGl0aW9ucyB0YWIncyBzZXR0aW5nc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRlZmluZVRhYlRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBkZWZpbmVUYWJUaXRsZSBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kZWZpbmVUYWJUaXRsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBkZWZpbmVUYWJUaXRsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmaW5lVGFiVGl0bGU7XG4gICAgfVxuXG4gICAgLyoqIEN1c3RvbSBzdHJhdGVnaWVzIGxhYmVsc1xuICAgICAqIEFsbG93ZWQga2V5czogY29udGFpbnMsIGVxdWFsVG8sIGJldHdlZW4sIHN0YXJ0c1dpdGgsIGVuZHNXaXRoLCBsZXNzVGhhbiwgbGVzc1RoYW5FcXVhbCwgZ3JlYXRlclRoYW4sIGdyZWF0ZXJUaGFuRXF1YWwsIGVtcHR5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkZWZpbmVTdHJhdGVneUxhYmVsczoge1xuICAgICAgICBba2V5IGluIGtleW9mICh0eXBlb2YgVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5IHwgdHlwZW9mIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneSldPzogc3RyaW5nO1xuICAgIH0gPSB7XG4gICAgICAgIGNvbnRhaW5zOiAnY29udGFpbnMnLFxuICAgICAgICBlcXVhbFRvOiAnZXF1YWwgdG8nLFxuICAgICAgICBiZXR3ZWVuOiAnYmV0d2VlbicsXG4gICAgICAgIHN0YXJ0c1dpdGg6ICdzdGFydHMgd2l0aCcsXG4gICAgICAgIGVuZHNXaXRoOiAnZW5kcyB3aXRoJyxcbiAgICAgICAgbGVzc1RoYW46ICdsZXNzIHRoYW4nLFxuICAgICAgICBsZXNzVGhhbkVxdWFsOiAnbGVzcyB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgICAgICAgZ3JlYXRlclRoYW46ICdncmVhdGVyIHRoYW4nLFxuICAgICAgICBncmVhdGVyVGhhbkVxdWFsOiAnZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgICAgICAgZW1wdHk6ICdlbXB0eScsXG4gICAgICAgIG5vdF9lcXVhbFRvOiAnbm90IGVxdWFsIHRvJyxcbiAgICAgICAgbm90X2VtcHR5OiAnbm90IGVtcHR5J1xuICAgIH07XG5cbiAgICAvKiogRGlhbG9nIG91dHB1dHMgKi9cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGZpbHRlcnMvdG9rZW5zIHdlcmUgY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VmhkVmFsdWVDaGFuZ2VFdmVudDxUPj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIHN0YXJ0ZWQuICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uRGF0YVJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIGZpbmlzaGVkLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkRhdGFSZWNlaXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuIEZpdGxlcnMgZm9yIHNlYXJjaCB0YWJsZSBhbmQgZGVmaW5jZSBjb25kaXRpb25zICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihWaGRGaWx0ZXJDb21wb25lbnQpXG4gICAgZmlsdGVyczogUXVlcnlMaXN0PFZoZEZpbHRlckNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiBJbnRlcm5hbCBjb250YWluZXIgZm9yIGRpYWxvZyAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBkaWFsb2dDb250YWluZXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFjdGl2ZURpYWxvZz86IERpYWxvZ1JlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYlR5cGVzID0gVmhkVGFiO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFzQWR2YW5jZWQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFzRGVmaW5lRmlsdGVycyA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5ZWRGaWx0ZXJzOiBWaGRGaWx0ZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheWVkRGF0YTogVFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tYWluU2VhcmNoID0gJyc7XG5cbiAgICAvKiogaGFuZGxlcyBydGwgc2VydmljZVxuICAgICAqIEBoaWRkZW4gKi9cbiAgICBfZGlyID0gJ2x0cic7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlYXJjaFRhYmxlRW1wdHlNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdFRhYlRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RlZmluZVRhYlRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RhdGFTb3VyY2U6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuIGZvciBkYXRhIHNvdXJjZSBoYW5kbGluZyAqL1xuICAgIHByaXZhdGUgX2RzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gUHJldmlvdXMgc3RhdGUgKi9cbiAgICBwcml2YXRlIF9wcmV2U3RhdGU6IFZoZFZhbHVlPFQ+ID0ge1xuICAgICAgICBzZWxlY3RlZDogW10sXG4gICAgICAgIGNvbmRpdGlvbnM6IFtdXG4gICAgfTtcbiAgICAvKiogQGhpZGRlbiBDdXJyZW50IGRhdGEgZm9yIGxvY2FsIG1hbnVwdWxhdGlvbiAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnRWYWx1ZTogVmhkVmFsdWU8VD4gPSB7XG4gICAgICAgIHNlbGVjdGVkOiBbXSxcbiAgICAgICAgY29uZGl0aW9uczogW11cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWxlY3RlZFRhYjogVmhkVGFiIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNob3duRmlsdGVyQ291bnQgPSBJbmZpbml0eTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGxvYWRpbmdTdGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZyA/PyB0aGlzLl9pbnRlcm5hbExvYWRpbmdTdGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBmaXJzdCBsb2FkaW5nIHdoZW4gc2tlbGV0b25zIGJlIHNob3duIGFuZCBzdWJzZXF1ZW50IGxvYWRpbmdzIHdoZW4gYnVzeSBpbmRpY2F0b3IgYmUgc2hvd25cbiAgICAgKi9cbiAgICBfZmlyc3RMb2FkaW5nRG9uZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgLyoqIERlZmF1bHQgZGlzcGxheSBmdW5jdGlvbiBmb3IgZGVmaW5lIGNvbmRpdGlvbnMgKi9cbiAgICAgICAgaWYgKCF0aGlzLmNvbmRpdGlvbkRpc3BsYXlGbiB8fCB0eXBlb2YgdGhpcy5jb25kaXRpb25EaXNwbGF5Rm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uRGlzcGxheUZuID0gZGVmYXVsdENvbmRpdGlvbkRpc3BsYXlGbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzTW9iaWxlQWR2YW5jZWRTZWFyY2hBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNPcGVuQWR2YW5jZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGhhc1NlbGVjdGVkVGFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRhYiAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRUYWIgaW4gVmhkVGFiO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHNob3dTZWxlY3Rpb25UYWIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMgIT09ICdkZWZpbmUnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHNob3dEZWZpbmVUYWIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMgIT09ICdzZWxlY3QnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzU2VsZWN0aW9uVGFiKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRhYiA9PT0gVmhkVGFiLnNlbGVjdEZyb21MaXN0IHx8IHRoaXMuc2VsZWN0ZWRUYWIgPT09IFZoZFRhYi5hZHZhbmNlZFNlYXJjaDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBzZWxlY3RlZEl0ZW1zKCk6IFRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VmFsdWUuc2VsZWN0ZWQgfHwgW107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY29uZGl0aW9uSXRlbXMoKTogQmFzZUVudGl0eVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRWYWx1ZS5jb25kaXRpb25zIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHZhbGlkQ29uZGl0aW9ucygpOiBCYXNlRW50aXR5W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VmFsaWRDb25kaXRpb24odGhpcy5jb25kaXRpb25JdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaGFzU2VsZWN0ZWRBbmRDb25kaXRpb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoICsgdGhpcy52YWxpZENvbmRpdGlvbnMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc1Nob3dBbGxGaWx0ZXJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJzLmxlbmd0aCA+IHRoaXMubWF4U2hvd25Jbml0aWFsRmlsdGVycyAmJiB0aGlzLnNob3duRmlsdGVyQ291bnQgPiB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmFjdGl2ZURpYWxvZztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoJ2RhdGFTb3VyY2UnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplRFMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2V0U3RhdGUoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW4gZGlhbG9nICovXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRPcHRpb25zKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIGNoZWNrIHJlcXVpcmVkIGZpZWxkcycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NhdmVQcmV2aW91c1N0YXRlKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcnMoKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURTKCk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVUYWIoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5kaWFsb2dDb250YWluZXIsIHtcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xpY2tDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgZXNjS2V5Q2xvc2VhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGRpYWxvZ1BhbmVsQ2xhc3M6IGBmZHAtdmFsdWUtaGVscC1kaWFsb2cgJHt0aGlzLm1vYmlsZSA/ICdmZHAtdmFsdWUtaGVscC1kaWFsb2ctbW9iaWxlJyA6ICcnfWAsXG4gICAgICAgICAgICAuLi50aGlzLmRpYWxvZ0NvbmZpZyxcblxuICAgICAgICAgICAgbW9iaWxlOiB0aGlzLm1vYmlsZSxcbiAgICAgICAgICAgIG1heFdpZHRoOiB0aGlzLm1vYmlsZSA/IHVuZGVmaW5lZCA6ICc5MiUnLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogJzEwODBweCcsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogJzk4JSdcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2xpc3RlbkRpYWxvZ0V2ZW50cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZSBhZHZhbmNlZCBzZWFyY2ggcGFuZWxcbiAgICAgKi9cbiAgICB0b2dnbGVBZHZhbmNlZFNlYXJjaChzdGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSBzdGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSAhdGhpcy5pc09wZW5BZHZhbmNlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHRoaXMuaXNPcGVuQWR2YW5jZWQgPyBWaGRUYWIuYWR2YW5jZWRTZWFyY2ggOiBWaGRUYWIuc2VsZWN0RnJvbUxpc3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXNcbiAgICAgKi9cbiAgICBjbGVhclNlbGVjdGVkQW5kQ29uZGl0aW9uSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5zZWxlY3RlZCA9IFtdO1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuY29uZGl0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogU2VhcmNoIGJ5IG9ubHkgdGhlIHNlYXJjaCB0ZXJtLiAqL1xuICAgIHNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXIodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VhcmNoIGJ5IGFsbCBmaWxsZWQgZmlsdGVycywgaW5jbHVkaW5nIHRoZSBzZWFyY2ggdGVybS5cbiAgICAgKi9cbiAgICBmaWx0ZXIob25seVNlYXJjaCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vbkVtcHR5RmlsdGVycyA9IG5ldyBNYXAoKTtcblxuICAgICAgICBpZiAoIW9ubHlTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXllZEZpbHRlcnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh7IHZhbHVlIH0pID0+ICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpLmxlbmd0aClcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZSkgPT4gbm9uRW1wdHlGaWx0ZXJzLnNldChlLmtleSwgZS52YWx1ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX21haW5TZWFyY2gubGVuZ3RoKSB7XG4gICAgICAgICAgICBub25FbXB0eUZpbHRlcnMuc2V0KCcqJywgdGhpcy5fbWFpblNlYXJjaCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRhU291cmNlPy5tYXRjaChub25FbXB0eUZpbHRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGx5IHNlYXJjaCBmcm9tIGFkdmFuY2VkIGZpbHRlcnMgdmlldywgdXNpbmcgd2hlbiBtb2JpbGUgdmlldyBpcyBhY3RpdmVcbiAgICAgKi9cbiAgICBzZWFyY2hBZHZhbmNlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXIoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IFZoZFRhYi5zZWxlY3RGcm9tTGlzdDtcbiAgICAgICAgdGhpcy5pc09wZW5BZHZhbmNlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBSZW1vdmUgaXRlbSBmcm9tIHNlbGVjdGVkIGFycmF5ICovXG4gICAgcmVtb3ZlU2VsZWN0ZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBjb25kaXRpb24gaXRlbVxuICAgICAqL1xuICAgIHJlbW92ZUNvbmRpdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5jb25kaXRpb25zID0gdGhpcy5jb25kaXRpb25JdGVtcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoIHRhYiBieSB0eXBlXG4gICAgICovXG4gICAgc3dpdGNoVGFiKHR5cGU6IFZoZFRhYiB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0eXBlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGRpYWxvZyB3aXRoIHZhbHVlO1xuICAgICAqL1xuICAgIHN1Y2Nlc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZURpYWxvZykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWU6IFZoZFZhbHVlQ2hhbmdlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zOiB0aGlzLnZhbGlkQ29uZGl0aW9uc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5mb3JtYXRUb2tlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0VG9rZW4odmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZURpYWxvZy5jbG9zZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZy5jbG9zZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlIGFkdmFuY2VkIHNlYXJjaCBvbiBtb2JpbGUgdmlldyBhbmQgaWYgaXQncyBvcGVuZWRcbiAgICAgKiBDbG9zZSBkaWFsb2cgd2l0aCBudWxsIHZhbHVlO1xuICAgICAqL1xuICAgIGRpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSAmJiB0aGlzLmlzT3BlbkFkdmFuY2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkFkdmFuY2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRhYihWaGRUYWIuc2VsZWN0RnJvbUxpc3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gdGhpcy5fcHJldlN0YXRlO1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRGlhbG9nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlTZWxlY3RlZEZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBUKTogbnVtYmVyIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gJiYgaXRlbVt0aGlzLnVuaXF1ZUtleV07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeUZpbHRlckZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBWaGRGaWx0ZXIpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbSAmJiBpdGVtLmtleTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5Q29uZGl0aW9uRm4oX2luZGV4OiBudW1iZXIsIGl0ZW06IEJhc2VFbnRpdHkpOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gaXRlbSA/IGl0ZW0udmFsdWUgKyBpdGVtLnZhbHVlVG8gKyBpdGVtLnN0cmF0ZWd5ICsgaXRlbS5rZXkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblNlbGVjdCgkZXZlbnQ6IFRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUuc2VsZWN0ZWQgPSAkZXZlbnQ7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hTZWxlY3Rpb24gPT09ICdvbmNlJykge1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ29uZGl0aW9uQ2hhbmdlKCRldmVudDogQmFzZUVudGl0eVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5jb25kaXRpb25zID0gJGV2ZW50O1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRvZ2dsZVNob3duRmlsdGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93bkZpbHRlckNvdW50ID1cbiAgICAgICAgICAgIHRoaXMubWF4U2hvd25Jbml0aWFsRmlsdGVycyA9PT0gdGhpcy5zaG93bkZpbHRlckNvdW50ID8gSW5maW5pdHkgOiB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0U2hvd25GaWx0ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3duRmlsdGVyQ291bnQgPSB0aGlzLm1heFNob3duSW5pdGlhbEZpbHRlcnMgfHwgSW5maW5pdHk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRWYWxpZENvbmRpdGlvbihpdGVtczogQmFzZUVudGl0eVtdID0gW10pOiBCYXNlRW50aXR5W10ge1xuICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaXRlbS5zdHJhdGVneSA9PT0gVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5LmVtcHR5IHx8XG4gICAgICAgICAgICAgICAgaXRlbS5zdHJhdGVneSA9PT0gVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5Lm5vdF9lbXB0eVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5zdHJhdGVneSA9PT0gVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5LmJldHdlZW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbihpdGVtLnZhbHVlLmxlbmd0aCAmJiBpdGVtLnZhbHVlVG8ubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXRlbS52YWxpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBCb29sZWFuKGl0ZW0udmFsdWUubGVuZ3RoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplRFMoZHM6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8YW55PiB8IHVuZGVmaW5lZCA9IHRoaXMuZGF0YVNvdXJjZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNldFNvdXJjZVN0cmVhbSgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNob3dTZWxlY3Rpb25UYWIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICAgICAgZHM/Lm9uRGF0YVJlcXVlc3RlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFSZXF1ZXN0ZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICAgICAgZHM/Lm9uRGF0YVJlY2VpdmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlyc3RMb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25EYXRhUmVjZWl2ZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBkc1N1YiA9IHRoaXMub3BlbkRhdGFTdHJlYW0oKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzcGxheWVkRGF0YSA9IGRhdGEuc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLmFkZChkc1N1Yik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTYXZlIHByZXZpb3VzIHN0YXRlICovXG4gICAgcHJpdmF0ZSBfc2F2ZVByZXZpb3VzU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY2xvbmVEZWVwKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fcHJldlN0YXRlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplVGFiKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zaG93U2VsZWN0aW9uVGFiICYmIHRoaXMuc2hvd0RlZmluZVRhYikge1xuICAgICAgICAgICAgdGhpcy5zd2l0Y2hUYWIodGhpcy5tb2JpbGUgPyB1bmRlZmluZWQgOiB0aGlzLmluaXRpYWxUYWIpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd1NlbGVjdGlvblRhYikge1xuICAgICAgICAgICAgdGhpcy5zd2l0Y2hUYWIoVmhkVGFiLnNlbGVjdEZyb21MaXN0KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dEZWZpbmVUYWIpIHtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVGFiKFZoZFRhYi5kZWZpbmVDb25kaXRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbml0U2hvd25GaWx0ZXJzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5EaWFsb2dFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmVEaWFsb2cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZy5hZnRlckNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcmVzZXRTdGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maWx0ZXJzLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcnMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpciA9IHRoaXMuX3J0bFNlcnZpY2UucnRsLmdldFZhbHVlKCkgPyAncnRsJyA6ICdsdHInO1xuICAgICAgICAgICAgdGhpcy5fcnRsU2VydmljZS5ydGwucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKChpc1J0bDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpciA9IGlzUnRsID8gJ3J0bCcgOiAnbHRyJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldFN0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcmVzZXRTb3VyY2VTdHJlYW0oKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVGaWx0ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kaXNwbGF5ZWRGaWx0ZXJzID0gdGhpcy5maWx0ZXJzLm1hcCgoZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICBsYWJlbDogZS5sYWJlbCB8fCBlLmtleVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5faGFzQWR2YW5jZWQgPSB0aGlzLl9kaXNwbGF5ZWRGaWx0ZXJzLnNvbWUoKGU6IFZoZEZpbHRlcikgPT4gISFlLmFkdmFuY2VkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgb3BlbkRhdGFTdHJlYW0oKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UubWF0Y2goKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2Uub3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW2RhdGFTb3VyY2VdIHNvdXJjZSBkaWQgbm90IG1hdGNoIGFuIGFycmF5LCBPYnNlcnZhYmxlLCBvciBEYXRhU291cmNlYCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHRvRGF0YVN0cmVhbShkczogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPik6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKGRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRzIGFzIFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD47XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkcykpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXlWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+KGRzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUoZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGVWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+KGRzIGFzIE9ic2VydmFibGU8VFtdPik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTb3VyY2VTdHJlYW0oKTogdm9pZCB7XG4gICAgICAgIGlmIChpc0RhdGFTb3VyY2UodGhpcy5kYXRhU291cmNlKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2RzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGlzVmFsaWRPcHRpb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5zaG93U2VsZWN0aW9uVGFiKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICEhdGhpcy5kYXRhU291cmNlICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMudW5pcXVlS2V5ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgdGhpcy50b2tlblZpZXdGaWVsZCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHRoaXMudG9rZW5pemVyRm4gPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjY29udGFpbmVyPlxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiPlxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlciBbZGlyXT1cIl9kaXJcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGUgPyBtb2JpbGVEaWFsb2dUaXRsZSA6IGRlc2t0b3BEaWFsb2dUaXRsZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZHZhbmNlZFNlYXJjaENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5IFtkaXJdPVwiX2RpclwiPlxuICAgICAgICAgICAgPGRpdiBmZC1zY3JvbGxiYXIgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2NvbnRlbnQtaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWR2YW5jZWRTZWFyY2hDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VsZWN0aW9uQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuZGVmaW5lQ29uZGl0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVmaW5lQ29uZGl0aW9uc0NvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgICAgICA8ZmQtZGlhbG9nLWZvb3RlciBbZGlyXT1cIl9kaXJcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3JvdyBmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3NlbGVjdGlvbi1yb3dcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVZIRC5zZWxlY3Rpb25CYXJMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlQWR2YW5jZWRTZWFyY2hBY3RpdmVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGZkLXRpdGxlIGNsYXNzPVwic2VsZWN0ZWQtYW5kLWNvbmRpdGlvbi10aXRsZVwiIFtpZF09XCJpZCArICctc2VsZWN0ZWQtaXRlbSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTZWxlY3RlZEFuZENvbmRpdGlvbnM7IGVsc2Ugbm9JdGVtc1BhbmVsVGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0ZWRBbmRDb25kaXRpb25MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBzZWxlY3RlZEl0ZW1zLmxlbmd0aCArIHZhbGlkQ29uZGl0aW9ucy5sZW5ndGggfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9oNT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190b2tlbnMtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdG9rZW5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWxlY3RlZCBpdGVtcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9rZW5pemVyIFt0b2tlbml6ZXJGb2N1c2FibGVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dQcmlvcml0eT1cImhpZ2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3NlbGVjdGlvbi10b2tlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbG9zZUNsaWNrKT1cInJlbW92ZVNlbGVjdGVkKHNlbGVjdGVkSW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggYXMgc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiBfdHJhY2tCeVNlbGVjdGVkRm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgISF0b2tlbml6ZXJGbiA/IChpdGVtIHwgZGlzcGxheUZuUGlwZSA6IHRva2VuaXplckZuKSA6IGl0ZW1bdG9rZW5WaWV3RmllbGRdIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9rZW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b2tlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJoaWdoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19zZWxlY3Rpb24tdG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xvc2VDbGljayk9XCJyZW1vdmVDb25kaXRpb24oY29uZGl0aW9uSW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIHZhbGlkQ29uZGl0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBjb25kaXRpb25JbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiBfdHJhY2tCeUNvbmRpdGlvbkZuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29uZGl0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9rZW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmZC1mb3JtLWNvbnRyb2wgZmQtdG9rZW5pemVyLWlucHV0IFtkaXNhYmxlZF09XCIhaGFzU2VsZWN0ZWRBbmRDb25kaXRpb25zXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXRva2VuaXplcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlbGVjdGVkQW5kQ29uZGl0aW9uSXRlbXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3Rva2Vucy1jbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZEFuZENvbmRpdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVkhELmZvb3RlckNsZWFyU2VsZWN0ZWRUaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJkZWNsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVZIRC5mb290ZXJDbGVhclNlbGVjdGVkQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fYWN0aW9ucy1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWdvLWFkdmFuY2VkXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlYXJjaEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtb2JpbGUgJiYgaXNPcGVuQWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaEFkdmFuY2VkKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zdWNjZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuc3VjY2Vzc0J1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFRhYiAhPT0gX3RhYlR5cGVzLmFkdmFuY2VkU2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWNjZXNzKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzLWRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgZmQtZGlhbG9nLWRlY2lzaXZlLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5jYW5jZWxCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGlzbWlzcygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuICAgIDwvZmQtZGlhbG9nPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0l0ZW1zUGFuZWxUaXRsZT5cbiAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0ZWRFbXB0eUxhYmVsJyB8IGZkVHJhbnNsYXRlIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FkdmFuY2VkU2VhcmNoQ29udGVudD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTZWxlY3Rpb25UYWJcIj5cbiAgICAgICAgPGZvcm1cbiAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19yb3cgZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19hZHZhbmNlZC1zZWFyY2hcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdGlkIGZpbHRlcnNcIlxuICAgICAgICAgICAgW2lkXT1cIidhZHZhbmNlZC1zZWFyY2gtJyArIGlkXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLWxheW91dC1ncmlkICpuZ0lmPVwiIW1vYmlsZSB8fCAobW9iaWxlICYmICFpc09wZW5BZHZhbmNlZClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCIgW2NvbE1kXT1cIjEyXCIgW2NvbExnXT1cIm1vYmlsZSA/IDEyIDogNlwiIFtjb2xYbF09XCJtb2JpbGUgPyAxMiA6IDZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtc2VhcmNoLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZIRC5zZWFyY2hCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIncGxhdGZvcm1WSEQuc2VhcmNoQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWFyY2hTdWJtaXQpPVwic2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJfbWFpblNlYXJjaCA9ICRldmVudC50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xMZ109XCJtb2JpbGUgPyAxMiA6IDZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cIm1vYmlsZSA/IDEyIDogNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIl9oYXNBZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fYWR2YW5jZWQtYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b29sYmFyIFtjbGVhckJvcmRlcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJfaGFzQWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9iaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1WSEQuc2VhcmNoQWR2YW5jZWRTZWFyY2hMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlzT3BlbkFkdmFuY2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1WSEQuc2VhcmNoSGlkZUFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1WSEQuc2VhcmNoU2hvd0FkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFkdmFuY2VkU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vYmlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVkhELnNlYXJjaEFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc09wZW5BZHZhbmNlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVkhELnNlYXJjaEhpZGVBZHZhbmNlZFNlYXJjaExhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVkhELnNlYXJjaFNob3dBZHZhbmNlZFNlYXJjaExhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5zZWFyY2hCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlYXJjaEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbHRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXRvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mZC1sYXlvdXQtZ3JpZD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBhcmlhTGFiZWw9XCJTZWxlY3RlZCBQYW5lbCBDb250ZW50XCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkdmFuY2VkLXNlYXJjaC1jb250ZW50LScgKyBpZFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc09wZW5BZHZhbmNlZCAmJiBfaGFzQWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19hZHZhbmNlZC1maWx0ZXJzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwibG9hZGluZ1N0YXRlICYmIF9maXJzdExvYWRpbmdEb25lXCIgW2Jsb2NrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWxheW91dC1ncmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIl9maXJzdExvYWRpbmdEb25lOyBlbHNlIGZpbHRlcnNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZHAtdmFsdWUtaGVscC1kaWFsb2dfX3dpdGgtdG9nZ2xlLWFsbF09XCJmaWx0ZXJzLmxlbmd0aCA+IG1heFNob3duSW5pdGlhbEZpbHRlcnNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlciBvZiBfZGlzcGxheWVkRmlsdGVycyB8IHNsaWNlIDogMCA6IHNob3duRmlsdGVyQ291bnQgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogX3RyYWNrQnlGaWx0ZXJGblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5hZHZhbmNlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCIgW2NvbE1kXT1cIjEyXCIgW2NvbExnXT1cIjZcIiBbY29sWGxdPVwiM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZkLWZvcm0tZ3JvdXBfX2hlYWRlclwiIGZkLWZvcm0tbGFiZWwgW2Zvcl09XCInaW5wdXQnICsgZmlsdGVyLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBmaWx0ZXIubGFiZWwgfX06PC9sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInc2VhcmNoLWJ5LScgKyBmaWx0ZXIubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2lucHV0JyArIGZpbHRlci5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbEdyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkTGF5b3V0R3JpZENvbF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xNZF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xMZ109XCI2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cIjNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpbHRlcnMubGVuZ3RoID4gbWF4U2hvd25Jbml0aWFsRmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190b2dnbGUtZmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93bkZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzU2hvd0FsbEZpbHRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1WSEQuc2VhcmNoSGlkZUFsbEFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVkhELnNlYXJjaFNob3dBbGxBZHZhbmNlZFNlYXJjaExhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmaWx0ZXJzTG9hZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1za2VsZXRvbiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDBweFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMFwiIHk9XCIwXCIgcng9XCI0XCIgd2lkdGg9XCIxNSVcIiBoZWlnaHQ9XCI4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnOnJlY3QgeD1cIjBcIiB5PVwiMjBcIiByeD1cIjRcIiB3aWR0aD1cIjI1JVwiIGhlaWdodD1cIjE2XCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMzUlXCIgeT1cIjBcIiByeD1cIjRcIiB3aWR0aD1cIjE1JVwiIGhlaWdodD1cIjhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMzUlXCIgeT1cIjIwXCIgcng9XCI0XCIgd2lkdGg9XCIyNSVcIiBoZWlnaHQ9XCIxNlwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnOnJlY3QgeD1cIjBcIiB5PVwiNjBcIiByeD1cIjRcIiB3aWR0aD1cIjE1JVwiIGhlaWdodD1cIjhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMFwiIHk9XCI4MFwiIHJ4PVwiNFwiIHdpZHRoPVwiMjUlXCIgaGVpZ2h0PVwiMTZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0aW9uQ29udGVudD5cbiAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1N0YXRlICYmIF9maXJzdExvYWRpbmdEb25lXCJcbiAgICAgICAgW2Jsb2NrXT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdGFibGUtYnVzeS1pbmRpY2F0b3JcIlxuICAgID5cbiAgICAgICAgPGZkcC1zZWxlY3QtdGFiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nU3RhdGUgJiYgIV9maXJzdExvYWRpbmdEb25lXCJcbiAgICAgICAgICAgIFt1aWRdPVwiaWRcIlxuICAgICAgICAgICAgW2Rpc3BsYXllZERhdGFdPVwiX2Rpc3BsYXllZERhdGFcIlxuICAgICAgICAgICAgW3RhYlRpdGxlXT1cInNlbGVjdFRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuc2VsZWN0VGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFttb2JpbGVdPVwibW9iaWxlXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwic2VhcmNoU2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtlbXB0eVRhYmxlTWVzc2FnZV09XCJzZWFyY2hUYWJsZUVtcHR5TWVzc2FnZSB8fCAoJ3BsYXRmb3JtVkhELnNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbdW5pcXVlS2V5XT1cInVuaXF1ZUtleVwiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwic2VhcmNoVGFibGVQYWdlU2l6ZVwiXG4gICAgICAgICAgICBbZGVmYXVsdE1vYmlsZUhlYWRlcnNdPVwic2VhcmNoVGFibGVNb2JpbGVIZWFkZXJzXCJcbiAgICAgICAgICAgIFtmaWx0ZXJzXT1cIl9kaXNwbGF5ZWRGaWx0ZXJzXCJcbiAgICAgICAgICAgIChzZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgID48L2ZkcC1zZWxlY3QtdGFiPlxuICAgIDwvZmQtYnVzeS1pbmRpY2F0b3I+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmluZUNvbmRpdGlvbnNDb250ZW50PlxuICAgIDxkaXYgZmQtc2Nyb2xsYmFyPlxuICAgICAgICA8ZmRwLWRlZmluZS10YWJcbiAgICAgICAgICAgIFtzdHJhdGVneUxhYmVsc109XCJkZWZpbmVTdHJhdGVneUxhYmVsc1wiXG4gICAgICAgICAgICBbY29uZGl0aW9uc109XCJjb25kaXRpb25JdGVtc1wiXG4gICAgICAgICAgICBbdWlkXT1cImlkXCJcbiAgICAgICAgICAgIFt0YWJUaXRsZV09XCJkZWZpbmVUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbbW9iaWxlXT1cIm1vYmlsZVwiXG4gICAgICAgICAgICAoY29uZGl0aW9uQ2hhbmdlKT1cIm9uQ29uZGl0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC9mZHAtZGVmaW5lLXRhYj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGlhbG9nVGl0bGVUZXh0PlxuICAgIDxoNSBbYXR0ci5pZF09XCJoZWFkZXJJZFwiIGZkLXRpdGxlPnt7IGRpYWxvZ1RpdGxlIH19PC9oNT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFiTGluayBsZXQtdGl0bGU9XCJ0aXRsZVwiIGxldC10eXBlPVwidHlwZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0gdHlwZSAmJiBzaG93U2VsZWN0aW9uVGFiICYmIHNob3dEZWZpbmVUYWJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBnbHlwaD1cIm5hdmlnYXRpb24tbGVmdC1hcnJvd1wiXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVGFiKClcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVZIRC5zZWxlY3RNb2JpbGVUYWJCYWNrQnRuVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxoNSBmZC10aXRsZT57eyB0aXRsZSB9fTwvaDU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVGFiICE9PSB0eXBlXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBmZC1saXN0LWxpbmtcbiAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIodHlwZSlcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVZIRC5zZWxlY3RNb2JpbGVUYWJCdG5PcGVuRGlhbG9nTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPGkgZmQtbGlzdC1pY29uIGdseXBoPVwibmF2aWdhdGlvbi1yaWdodC1hcnJvd1wiPjwvaT5cbiAgICAgICAgPC9hPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhZHZhbmNlZEhlYWRlcj5cbiAgICA8YnV0dG9uIGZkLWJ1dHRvbiBnbHlwaD1cIm5hdmlnYXRpb24tbGVmdC1hcnJvd1wiIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgKGNsaWNrKT1cInRvZ2dsZUFkdmFuY2VkU2VhcmNoKClcIj48L2J1dHRvbj5cbiAgICA8aDUgZmQtdGl0bGU+e3sgJ3BsYXRmb3JtVkhELnNlYXJjaEFkdmFuY2VkU2VhcmNoTGFiZWwnIHwgZmRUcmFuc2xhdGUgfX08L2g1PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZXNrdG9wRGlhbG9nVGl0bGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpYWxvZ1RpdGxlVGV4dFwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXNrdG9wVGFic1wiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2JpbGVEaWFsb2dUaXRsZT5cbiAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19tb2JpbGUtdGl0bGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1NlbGVjdGVkVGFiOyBlbHNlIGRpYWxvZ1RpdGxlVGV4dFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkVGFiSGVhZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGVUYWJzXCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Rlc2t0b3BUYWJzPlxuICAgIDxuYXYgZmQtdGFiLW5hdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdGFic1wiICpuZ0lmPVwic2hvd1NlbGVjdGlvblRhYiAmJiBzaG93RGVmaW5lVGFiXCI+XG4gICAgICAgIDxkaXYgZmQtdGFiLWl0ZW0gKGNsaWNrKT1cInN3aXRjaFRhYihfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3QpXCIgKm5nSWY9XCJzaG93U2VsZWN0aW9uVGFiXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGZkLXRhYi1saW5rXG4gICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLnNlbGVjdEZyb21MaXN0XCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwic2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdCA/ICcwJyA6ICctMSdcIlxuICAgICAgICAgICAgICAgID48c3BhbiBmZC10YWItdGFnPnt7IHNlbGVjdFRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuc2VsZWN0VGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpIH19PC9zcGFuPjwvYVxuICAgICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBmZC10YWItaXRlbSAoY2xpY2spPVwic3dpdGNoVGFiKF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zKVwiICpuZ0lmPVwic2hvd0RlZmluZVRhYlwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBmZC10YWItbGlua1xuICAgICAgICAgICAgICAgIFthY3RpdmVdPVwic2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwic2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zID8gJzAnIDogJy0xJ1wiXG4gICAgICAgICAgICAgICAgPjxzcGFuIGZkLXRhYi10YWc+e3sgZGVmaW5lVGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5kZWZpbmVUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSkgfX08L3NwYW4+PC9hXG4gICAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmF2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2JpbGVUYWJzPlxuICAgIDxkaXYgKm5nSWY9XCIhaGFzU2VsZWN0ZWRUYWIgJiYgc2hvd1NlbGVjdGlvblRhYiAmJiBzaG93RGVmaW5lVGFiXCI+XG4gICAgICAgIDxkaXYgZmQtYmFyIFtpblBhZ2VdPVwidHJ1ZVwiICpuZ0lmPVwic2hvd1NlbGVjdGlvblRhYlwiPlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdFRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuc2VsZWN0VGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpIH19XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIoX3RhYlR5cGVzLnNlbGVjdEZyb21MaXN0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYlRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgdGl0bGU6IHNlbGVjdFRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuc2VsZWN0VGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBmZC1iYXIgW2luUGFnZV09XCJ0cnVlXCIgKm5nSWY9XCJzaG93RGVmaW5lVGFiXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAge3sgZGVmaW5lVGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5kZWZpbmVUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSkgfX1cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cIm5hdmlnYXRpb24tcmlnaHQtYXJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5zZWxlY3RNb2JpbGVUYWJUaXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7IHRpdGxlOiBkZWZpbmVUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYihfdGFiVHlwZXMuZGVmaW5lQ29uZGl0aW9ucylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWxlY3RlZFRhYkhlYWRlcj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzZWxlY3RlZFRhYlwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICB0YWJMaW5rO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc2VsZWN0VGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzZWxlY3RlZFRhYlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIl90YWJUeXBlcy5hZHZhbmNlZFNlYXJjaFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkdmFuY2VkSGVhZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJfdGFiVHlwZXMuZGVmaW5lQ29uZGl0aW9uc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHRhYkxpbms7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkZWZpbmVUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHNlbGVjdGVkVGFiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29uZGl0aW9uVmFsdWUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJpdGVtLnN0cmF0ZWd5ICE9PSAnZW1wdHknICYmIGl0ZW0uc3RyYXRlZ3kgIT09ICdub3RfZW1wdHknOyBlbHNlIGVtcHR5Q29uZGl0aW9uXCI+XG4gICAgICAgIHt7IGl0ZW0gfCBkaXNwbGF5Rm5QaXBlIDogY29uZGl0aW9uRGlzcGxheUZuIDogX2Rpc3BsYXllZEZpbHRlcnMgfX1cbiAgICA8L3NwYW4+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eUNvbmRpdGlvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uc3RyYXRlZ3kgPT09ICdub3RfZW1wdHknOyBlbHNlIGVtcHR5Q29uZGl0aW9uVGV4dFwiPlxuICAgICAgICAgICAgISg8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlDb25kaXRpb25UZXh0XCI+PC9uZy1jb250YWluZXI+KVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eUNvbmRpdGlvblRleHQ+ICZsdDt7eyAncGxhdGZvcm1WSEQuc2VsZWN0TW9iaWxlQ29uZGl0aW9uRW1wdHknIHwgZmRUcmFuc2xhdGUgfX0mZ3Q7IDwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
611
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nL3ZhbHVlLWhlbHAtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQWMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBYSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQ0gsOEJBQThCLEVBRTlCLG1DQUFtQyxFQUduQyx3QkFBd0IsRUFDeEIsd0JBQXdCLEVBRXhCLE1BQU0sRUFHVCxNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUMvRyxPQUFPLEVBQUUs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O2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQVFGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBY04sZUFBZTtzQkFEZCxLQUFLO2dCQVFGLHVCQUF1QjtzQkFEMUIsS0FBSztnQkFjTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQUtOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFLTixPQUFPO3NCQUROLEtBQUs7Z0JBUUYsY0FBYztzQkFEakIsS0FBSztnQkFnQk4sb0JBQW9CO3NCQURuQixLQUFLO2dCQXFCTixXQUFXO3NCQURWLE1BQU07Z0JBS0csZUFBZTtzQkFBeEIsTUFBTTtnQkFJRyxjQUFjO3NCQUF2QixNQUFNO2dCQUlQLE9BQU87c0JBRE4sZUFBZTt1QkFBQyxrQkFBa0I7Z0JBS25DLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERpYWxvZ0NvbmZpZywgRGlhbG9nUmVmLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBSdGxTZXJ2aWNlLCB3YXJuT25jZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGlzRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7XG4gICAgQXJyYXlWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlLFxuICAgIEJhc2VFbnRpdHksXG4gICAgT2JzZXJ2YWJsZVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2UsXG4gICAgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZSxcbiAgICBWZGhUYWJsZVNlbGVjdGlvbixcbiAgICBWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3ksXG4gICAgVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5LFxuICAgIFZoZEZpbHRlcixcbiAgICBWaGRUYWIsXG4gICAgVmhkVmFsdWUsXG4gICAgVmhkVmFsdWVDaGFuZ2VFdmVudFxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmhkRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy92YWx1ZS1oZWxwLWRpYWxvZy1maWx0ZXIvdmFsdWUtaGVscC1kaWFsb2ctZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBkZWZhdWx0Q29uZGl0aW9uRGlzcGxheUZuIH0gZnJvbSAnLi4vY29uc3RhbnMvY29uZGl0aW9uLWRpc3BsYXkuZnVuY3Rpb24nO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IHR5cGUgRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPiA9XG4gICAgfCBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+XG4gICAgfCBBcnJheVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD5cbiAgICB8IE9ic2VydmFibGVWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+O1xuXG5sZXQgdmhpVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC12YWx1ZS1oZWxwLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ZhbHVlLWhlbHAtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi92YWx1ZS1oZWxwLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1WYWx1ZUhlbHBEaWFsb2dDb21wb25lbnQ8VCA9IGFueT4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqIElkIG9mIHRoZSBwb3BvdmVyICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJ2ZkcC12aGQtJyArIHZoaVVuaXF1ZUlkKys7XG5cbiAgICAvKiogSW5pdGlhbCBzdGF0ZSBvZiBWYWx1ZSBoZWxwIGRpYWxvZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWU6IFZoZFZhbHVlPFQ+ID0ge1xuICAgICAgICBzZWxlY3RlZDogW10sXG4gICAgICAgIGNvbmRpdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIC8qKiBEaWFsb2cgdGl0bGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpYWxvZ1RpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogU2VsZWN0IGZyb20gbGlzdCB0YWIgYWN0aXZhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5pdGlhbFRhYiA9IFZoZFRhYi5zZWxlY3RGcm9tTGlzdDtcblxuICAgIC8qKiBWaXNpYmxlIHRhYnMgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYnM6ICdib3RoJyB8ICdzZWxlY3QnIHwgJ2RlZmluZScgPSAnYm90aCc7XG5cbiAgICAvKiogSW5pdGlhbCBleHBhbmQgc3RhdGUgZm9yIGFkdmFuY2VkIHNlYXJjaCBwYW5lbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNPcGVuQWR2YW5jZWQgPSBmYWxzZTtcblxuICAgIC8qKiBEYXRhIHNvdXJjZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsdWU6IEZkcFZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8YW55PiB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSB0aGlzLnRvRGF0YVN0cmVhbSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGRhdGFTb3VyY2UoKTogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIERpYWxvZydzIGN1c3RvbSBjb25maWcgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnID0ge307XG5cbiAgICAvKiogVW5pcXVlIGtleSBmcm9tIHRoZSBzb3VyY2UgZmllbGQgbmFtZXMuIFJlcXVpcmVkIGZpZWxkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdW5pcXVlS2V5OiBzdHJpbmc7XG5cbiAgICAvKiogSWQgYXR0cmlidXRlIGZvciBkaWFsb2cgdGl0bGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGhlYWRlcklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBGaWVsZCBuYW1lIGZvciBkZWZhdWx0IHJlbmRlciBmcm9tIGRhdGEuXG4gICAgICogUmVxdWlyZWQgZmllbGQgaWYgdG9rZW5pemVyRm4gaXMgbm90IGV4aXN0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9rZW5WaWV3RmllbGQ6IHN0cmluZztcblxuICAgIC8qKiBUb2tlbml6ZXIgZnVuY3Rpb24gZm9yIGN1c3RvbSB0b2tlbiByZW5kZXIsIGl0IGhhcyBoaWdoZXIgcHJpbyB0aGF0IGB0b2tlblZpZXdGaWVsZGAuXG4gICAgICogUmVxdWlyZWQgZmllbGQgaWYgdG9rZW5WaWV3RmllbGQgaXMgbm90IGV4aXN0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9rZW5pemVyRm46IChpdGVtOiBUKSA9PiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdmFsdWUgaGVscCBkaWFsb2cgc2hvdWxkIGJlIHZpZXcgaW4gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEl0IHNob3VsZCBiZSBhYmxlIGlmIHlvdSB1c2UgbXVsdGlwbGUgc2VsZWN0aW9uICovXG4gICAgQElucHV0KClcbiAgICBmb3JtYXRUb2tlbjogKHZhbHVlOiBWaGRWYWx1ZUNoYW5nZUV2ZW50PFQ+KSA9PiB2b2lkO1xuXG4gICAgLyoqIFRva2VuaXplciBmdW5jdGlvbiBmb3IgY29uZGl0aW9uJ3MgdG9rZW4gcmVuZGVyICovXG4gICAgQElucHV0KClcbiAgICBjb25kaXRpb25EaXNwbGF5Rm4gPSBkZWZhdWx0Q29uZGl0aW9uRGlzcGxheUZuO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBTZWxlY3QgZnJvbSBsaXN0IHRhYidzIGFuZCBTZWFyY2ggdGFibGUgc2V0dGluZ3NcbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNlbGVjdFRhYlRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IHNlbGVjdFRhYlRpdGxlIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAncGxhdGZvcm1WSEQuc2VsZWN0VGFiVGl0bGUnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3NlbGVjdFRhYlRpdGxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdFRhYlRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RUYWJUaXRsZTtcbiAgICB9XG5cbiAgICAvKiogU2VsZWN0aW9uIG1vZGUgZm9yIHNlYXJjaCB0YWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VhcmNoU2VsZWN0aW9uOiBWZGhUYWJsZVNlbGVjdGlvbiA9ICdtdWx0aSc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFRleHQgZGlzcGxheWVkIHdoZW4gdGFibGUgaGFzIG5vIGl0ZW1zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IHNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAncGxhdGZvcm1WSEQuc2VhcmNoVGFibGVFbXB0eU1lc3NhZ2UnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3NlYXJjaFRhYmxlRW1wdHlNZXNzYWdlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWFyY2hUYWJsZUVtcHR5TWVzc2FnZTtcbiAgICB9XG5cbiAgICAvKiogSXRlbXMgcGVyIHBhZ2UgZm9yIHBhZ2luYXRpb24gYmVsb3cgc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUYWJsZVBhZ2VTaXplID0gMjA7XG5cbiAgICAvKiogQ291bnQgb2YgZGVmYXVsdCBtb2JpbGUgaGVhZGVyIGZyb20gc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUYWJsZU1vYmlsZUhlYWRlcnMgPSAyO1xuXG4gICAgLyoqIE1heCBzaG93biBpbml0aWFsIGZpbHRlcnMgb24gb3Blbi4gRGVza3RvcCBvbmx5ICovXG4gICAgQElucHV0KClcbiAgICBtYXhTaG93bkluaXRpYWxGaWx0ZXJzID0gNDtcblxuICAgIC8qKiBMb2FkaW5nIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBsb2FkaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBEZWZpbmUgY29uZGl0aW9ucyB0YWIncyBzZXR0aW5nc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRlZmluZVRhYlRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGRlZmluZVRhYlRpdGxlIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAncGxhdGZvcm1WSEQuZGVmaW5lVGFiVGl0bGUnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2RlZmluZVRhYlRpdGxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGRlZmluZVRhYlRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZpbmVUYWJUaXRsZTtcbiAgICB9XG5cbiAgICAvKiogQ3VzdG9tIHN0cmF0ZWdpZXMgbGFiZWxzXG4gICAgICogQWxsb3dlZCBrZXlzOiBjb250YWlucywgZXF1YWxUbywgYmV0d2Vlbiwgc3RhcnRzV2l0aCwgZW5kc1dpdGgsIGxlc3NUaGFuLCBsZXNzVGhhbkVxdWFsLCBncmVhdGVyVGhhbiwgZ3JlYXRlclRoYW5FcXVhbCwgZW1wdHlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRlZmluZVN0cmF0ZWd5TGFiZWxzOiB7XG4gICAgICAgIFtrZXkgaW4ga2V5b2YgKHR5cGVvZiBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kgfCB0eXBlb2YgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5KV0/OiBzdHJpbmc7XG4gICAgfSA9IHtcbiAgICAgICAgY29udGFpbnM6ICdjb250YWlucycsXG4gICAgICAgIGVxdWFsVG86ICdlcXVhbCB0bycsXG4gICAgICAgIGJldHdlZW46ICdiZXR3ZWVuJyxcbiAgICAgICAgc3RhcnRzV2l0aDogJ3N0YXJ0cyB3aXRoJyxcbiAgICAgICAgZW5kc1dpdGg6ICdlbmRzIHdpdGgnLFxuICAgICAgICBsZXNzVGhhbjogJ2xlc3MgdGhhbicsXG4gICAgICAgIGxlc3NUaGFuRXF1YWw6ICdsZXNzIHRoYW4gb3IgZXF1YWwgdG8nLFxuICAgICAgICBncmVhdGVyVGhhbjogJ2dyZWF0ZXIgdGhhbicsXG4gICAgICAgIGdyZWF0ZXJUaGFuRXF1YWw6ICdncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8nLFxuICAgICAgICBlbXB0eTogJ2VtcHR5JyxcbiAgICAgICAgbm90X2VxdWFsVG86ICdub3QgZXF1YWwgdG8nLFxuICAgICAgICBub3RfZW1wdHk6ICdub3QgZW1wdHknXG4gICAgfTtcblxuICAgIC8qKiBEaWFsb2cgb3V0cHV0cyAqL1xuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZmlsdGVycy90b2tlbnMgd2VyZSBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxWaGRWYWx1ZUNoYW5nZUV2ZW50PFQ+PigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgc3RhcnRlZC4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25EYXRhUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgZmluaXNoZWQuICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uRGF0YVJlY2VpdmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gRml0bGVycyBmb3Igc2VhcmNoIHRhYmxlIGFuZCBkZWZpbmNlIGNvbmRpdGlvbnMgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFZoZEZpbHRlckNvbXBvbmVudClcbiAgICBmaWx0ZXJzOiBRdWVyeUxpc3Q8VmhkRmlsdGVyQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuIEludGVybmFsIGNvbnRhaW5lciBmb3IgZGlhbG9nICovXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIGRpYWxvZ0NvbnRhaW5lcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWN0aXZlRGlhbG9nPzogRGlhbG9nUmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGFiVHlwZXMgPSBWaGRUYWI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYXNBZHZhbmNlZCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYXNEZWZpbmVGaWx0ZXJzID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXllZEZpbHRlcnM6IFZoZEZpbHRlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5ZWREYXRhOiBUW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21haW5TZWFyY2ggPSAnJztcblxuICAgIC8qKiBoYW5kbGVzIHJ0bCBzZXJ2aWNlXG4gICAgICogQGhpZGRlbiAqL1xuICAgIF9kaXIgPSAnbHRyJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VhcmNoVGFibGVFbXB0eU1lc3NhZ2U6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0VGFiVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVmaW5lVGFiVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEBoaWRkZW4gZm9yIGRhdGEgc291cmNlIGhhbmRsaW5nICovXG4gICAgcHJpdmF0ZSBfZHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiBQcmV2aW91cyBzdGF0ZSAqL1xuICAgIHByaXZhdGUgX3ByZXZTdGF0ZTogVmhkVmFsdWU8VD4gPSB7XG4gICAgICAgIHNlbGVjdGVkOiBbXSxcbiAgICAgICAgY29uZGl0aW9uczogW11cbiAgICB9O1xuICAgIC8qKiBAaGlkZGVuIEN1cnJlbnQgZGF0YSBmb3IgbG9jYWwgbWFudXB1bGF0aW9uICovXG4gICAgcHJpdmF0ZSBfY3VycmVudFZhbHVlOiBWaGRWYWx1ZTxUPiA9IHtcbiAgICAgICAgc2VsZWN0ZWQ6IFtdLFxuICAgICAgICBjb25kaXRpb25zOiBbXVxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdGVkVGFiOiBWaGRUYWIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2hvd25GaWx0ZXJDb3VudCA9IEluZmluaXR5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgbG9hZGluZ1N0YXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nID8/IHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogVG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGZpcnN0IGxvYWRpbmcgd2hlbiBza2VsZXRvbnMgYmUgc2hvd24gYW5kIHN1YnNlcXVlbnQgbG9hZGluZ3Mgd2hlbiBidXN5IGluZGljYXRvciBiZSBzaG93blxuICAgICAqL1xuICAgIF9maXJzdExvYWRpbmdEb25lID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ludGVybmFsTG9hZGluZ1N0YXRlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge1xuICAgICAgICAvKiogRGVmYXVsdCBkaXNwbGF5IGZ1bmN0aW9uIGZvciBkZWZpbmUgY29uZGl0aW9ucyAqL1xuICAgICAgICBpZiAoIXRoaXMuY29uZGl0aW9uRGlzcGxheUZuIHx8IHR5cGVvZiB0aGlzLmNvbmRpdGlvbkRpc3BsYXlGbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25EaXNwbGF5Rm4gPSBkZWZhdWx0Q29uZGl0aW9uRGlzcGxheUZuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNNb2JpbGVBZHZhbmNlZFNlYXJjaEFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc09wZW5BZHZhbmNlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaGFzU2VsZWN0ZWRUYWIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFiICE9IG51bGwgJiYgdGhpcy5zZWxlY3RlZFRhYiBpbiBWaGRUYWI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgc2hvd1NlbGVjdGlvblRhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicyAhPT0gJ2RlZmluZSc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgc2hvd0RlZmluZVRhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicyAhPT0gJ3NlbGVjdCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNTZWxlY3Rpb25UYWIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFiID09PSBWaGRUYWIuc2VsZWN0RnJvbUxpc3QgfHwgdGhpcy5zZWxlY3RlZFRhYiA9PT0gVmhkVGFiLmFkdmFuY2VkU2VhcmNoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogVFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRWYWx1ZS5zZWxlY3RlZCB8fCBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBjb25kaXRpb25JdGVtcygpOiBCYXNlRW50aXR5W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFZhbHVlLmNvbmRpdGlvbnMgfHwgW107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdmFsaWRDb25kaXRpb25zKCk6IEJhc2VFbnRpdHlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRWYWxpZENvbmRpdGlvbih0aGlzLmNvbmRpdGlvbkl0ZW1zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBoYXNTZWxlY3RlZEFuZENvbmRpdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggKyB0aGlzLnZhbGlkQ29uZGl0aW9ucy5sZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzU2hvd0FsbEZpbHRlcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnMubGVuZ3RoID4gdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzICYmIHRoaXMuc2hvd25GaWx0ZXJDb3VudCA+IHRoaXMubWF4U2hvd25Jbml0aWFsRmlsdGVycztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYWN0aXZlRGlhbG9nO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIGlmICgnZGF0YVNvdXJjZScgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVEUygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzZXRTdGF0ZSgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogT3BlbiBkaWFsb2cgKi9cbiAgICBvcGVuKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZE9wdGlvbnMoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgY2hlY2sgcmVxdWlyZWQgZmllbGRzJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2F2ZVByZXZpb3VzU3RhdGUoKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlRmlsdGVycygpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplRFMoKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVRhYigpO1xuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZyA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLmRpYWxvZ0NvbnRhaW5lciwge1xuICAgICAgICAgICAgYmFja2Ryb3BDbGlja0Nsb3NlYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIHZlcnRpY2FsUGFkZGluZzogZmFsc2UsXG4gICAgICAgICAgICBlc2NLZXlDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZGlhbG9nUGFuZWxDbGFzczogYGZkcC12YWx1ZS1oZWxwLWRpYWxvZyAke3RoaXMubW9iaWxlID8gJ2ZkcC12YWx1ZS1oZWxwLWRpYWxvZy1tb2JpbGUnIDogJyd9YCxcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuXG4gICAgICAgICAgICBtb2JpbGU6IHRoaXMubW9iaWxlLFxuICAgICAgICAgICAgbWF4V2lkdGg6IHRoaXMubW9iaWxlID8gdW5kZWZpbmVkIDogJzkyJScsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5tb2JpbGUgPyB1bmRlZmluZWQgOiAnMTA4MHB4JyxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5tb2JpbGUgPyB1bmRlZmluZWQgOiAnOTglJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fbGlzdGVuRGlhbG9nRXZlbnRzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGFkdmFuY2VkIHNlYXJjaCBwYW5lbFxuICAgICAqL1xuICAgIHRvZ2dsZUFkdmFuY2VkU2VhcmNoKHN0YXRlPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIHN0YXRlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5BZHZhbmNlZCA9IHN0YXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5BZHZhbmNlZCA9ICF0aGlzLmlzT3BlbkFkdmFuY2VkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdGhpcy5pc09wZW5BZHZhbmNlZCA/IFZoZFRhYi5hZHZhbmNlZFNlYXJjaCA6IFZoZFRhYi5zZWxlY3RGcm9tTGlzdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFyIGFsbCBzZWxlY3RlZCBpdGVtc1xuICAgICAqL1xuICAgIGNsZWFyU2VsZWN0ZWRBbmRDb25kaXRpb25JdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLnNlbGVjdGVkID0gW107XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5jb25kaXRpb25zID0gW107XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBTZWFyY2ggYnkgb25seSB0aGUgc2VhcmNoIHRlcm0uICovXG4gICAgc2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcih0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggYnkgYWxsIGZpbGxlZCBmaWx0ZXJzLCBpbmNsdWRpbmcgdGhlIHNlYXJjaCB0ZXJtLlxuICAgICAqL1xuICAgIGZpbHRlcihvbmx5U2VhcmNoID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9uRW1wdHlGaWx0ZXJzID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGlmICghb25seVNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5fZGlzcGxheWVkRmlsdGVyc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHsgdmFsdWUgfSkgPT4gISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkubGVuZ3RoKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlKSA9PiBub25FbXB0eUZpbHRlcnMuc2V0KGUua2V5LCBlLnZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fbWFpblNlYXJjaC5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vbkVtcHR5RmlsdGVycy5zZXQoJyonLCB0aGlzLl9tYWluU2VhcmNoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGFTb3VyY2U/Lm1hdGNoKG5vbkVtcHR5RmlsdGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbHkgc2VhcmNoIGZyb20gYWR2YW5jZWQgZmlsdGVycyB2aWV3LCB1c2luZyB3aGVuIG1vYmlsZSB2aWV3IGlzIGFjdGl2ZVxuICAgICAqL1xuICAgIHNlYXJjaEFkdmFuY2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gVmhkVGFiLnNlbGVjdEZyb21MaXN0O1xuICAgICAgICB0aGlzLmlzT3BlbkFkdmFuY2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZSBpdGVtIGZyb20gc2VsZWN0ZWQgYXJyYXkgKi9cbiAgICByZW1vdmVTZWxlY3RlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGNvbmRpdGlvbiBpdGVtXG4gICAgICovXG4gICAgcmVtb3ZlQ29uZGl0aW9uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLmNvbmRpdGlvbnMgPSB0aGlzLmNvbmRpdGlvbkl0ZW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTd2l0Y2ggdGFiIGJ5IHR5cGVcbiAgICAgKi9cbiAgICBzd2l0Y2hUYWIodHlwZTogVmhkVGFiIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgZGlhbG9nIHdpdGggdmFsdWU7XG4gICAgICovXG4gICAgc3VjY2VzcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlRGlhbG9nKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZTogVmhkVmFsdWVDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IHRoaXMudmFsaWRDb25kaXRpb25zXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvcm1hdFRva2VuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRUb2tlbih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlRGlhbG9nLmNsb3NlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nLmNsb3NlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGUgYWR2YW5jZWQgc2VhcmNoIG9uIG1vYmlsZSB2aWV3IGFuZCBpZiBpdCdzIG9wZW5lZFxuICAgICAqIENsb3NlIGRpYWxvZyB3aXRoIG51bGwgdmFsdWU7XG4gICAgICovXG4gICAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlICYmIHRoaXMuaXNPcGVuQWR2YW5jZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQWR2YW5jZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVGFiKFZoZFRhYi5zZWxlY3RGcm9tTGlzdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB0aGlzLl9wcmV2U3RhdGU7XG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVEaWFsb2cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeVNlbGVjdGVkRm4oX2luZGV4OiBudW1iZXIsIGl0ZW06IFQpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbSAmJiBpdGVtW3RoaXMudW5pcXVlS2V5XTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5RmlsdGVyRm4oX2luZGV4OiBudW1iZXIsIGl0ZW06IFZoZEZpbHRlcik6IG51bWJlciB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtICYmIGl0ZW0ua2V5O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlDb25kaXRpb25GbihfaW5kZXg6IG51bWJlciwgaXRlbTogQmFzZUVudGl0eSk6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpdGVtID8gaXRlbS52YWx1ZSArIGl0ZW0udmFsdWVUbyArIGl0ZW0uc3RyYXRlZ3kgKyBpdGVtLmtleSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uU2VsZWN0KCRldmVudDogVFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZS5zZWxlY3RlZCA9ICRldmVudDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFNlbGVjdGlvbiA9PT0gJ29uY2UnKSB7XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3MoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Db25kaXRpb25DaGFuZ2UoJGV2ZW50OiBCYXNlRW50aXR5W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlLmNvbmRpdGlvbnMgPSAkZXZlbnQ7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdG9nZ2xlU2hvd25GaWx0ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3duRmlsdGVyQ291bnQgPVxuICAgICAgICAgICAgdGhpcy5tYXhTaG93bkluaXRpYWxGaWx0ZXJzID09PSB0aGlzLnNob3duRmlsdGVyQ291bnQgPyBJbmZpbml0eSA6IHRoaXMubWF4U2hvd25Jbml0aWFsRmlsdGVycztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRTaG93bkZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd25GaWx0ZXJDb3VudCA9IHRoaXMubWF4U2hvd25Jbml0aWFsRmlsdGVycyB8fCBJbmZpbml0eTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFZhbGlkQ29uZGl0aW9uKGl0ZW1zOiBCYXNlRW50aXR5W10gPSBbXSk6IEJhc2VFbnRpdHlbXSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBpdGVtLnN0cmF0ZWd5ID09PSBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kuZW1wdHkgfHxcbiAgICAgICAgICAgICAgICBpdGVtLnN0cmF0ZWd5ID09PSBWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3kubm90X2VtcHR5XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLnN0cmF0ZWd5ID09PSBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kuYmV0d2Vlbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuKGl0ZW0udmFsdWUubGVuZ3RoICYmIGl0ZW0udmFsdWVUby5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpdGVtLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW4oaXRlbS52YWx1ZS5sZW5ndGgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVEUyhkczogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxhbnk+IHwgdW5kZWZpbmVkID0gdGhpcy5kYXRhU291cmNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2V0U291cmNlU3RyZWFtKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd1NlbGVjdGlvblRhYikge1xuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICBkcz8ub25EYXRhUmVxdWVzdGVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVJlcXVlc3RlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICBkcz8ub25EYXRhUmVjZWl2ZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maXJzdExvYWRpbmdEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFSZWNlaXZlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRzU3ViID0gdGhpcy5vcGVuRGF0YVN0cmVhbSgpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kaXNwbGF5ZWREYXRhID0gZGF0YS5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKGRzU3ViKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNhdmUgcHJldmlvdXMgc3RhdGUgKi9cbiAgICBwcml2YXRlIF9zYXZlUHJldmlvdXNTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjbG9uZURlZXAodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9wcmV2U3RhdGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVUYWIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5BZHZhbmNlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNob3dTZWxlY3Rpb25UYWIgJiYgdGhpcy5zaG93RGVmaW5lVGFiKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRhYih0aGlzLm1vYmlsZSA/IHVuZGVmaW5lZCA6IHRoaXMuaW5pdGlhbFRhYik7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93U2VsZWN0aW9uVGFiKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRhYihWaGRUYWIuc2VsZWN0RnJvbUxpc3QpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd0RlZmluZVRhYikge1xuICAgICAgICAgICAgdGhpcy5zd2l0Y2hUYWIoVmhkVGFiLmRlZmluZUNvbmRpdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2luaXRTaG93bkZpbHRlcnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlbkRpYWxvZ0V2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZURpYWxvZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nLmFmdGVyQ2xvc2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9yZXNldFN0YXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZpbHRlcnMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlRmlsdGVycygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5fcnRsU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fZGlyID0gdGhpcy5fcnRsU2VydmljZS5ydGwuZ2V0VmFsdWUoKSA/ICdydGwnIDogJ2x0cic7XG4gICAgICAgICAgICB0aGlzLl9ydGxTZXJ2aWNlLnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKGlzUnRsOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlyID0gaXNSdGwgPyAncnRsJyA6ICdsdHInO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9yZXNldFNvdXJjZVN0cmVhbSgpO1xuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXllZEZpbHRlcnMgPSB0aGlzLmZpbHRlcnMubWFwKChlKSA9PiAoe1xuICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgIGxhYmVsOiBlLmxhYmVsIHx8IGUua2V5XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLl9oYXNBZHZhbmNlZCA9IHRoaXMuX2Rpc3BsYXllZEZpbHRlcnMuc29tZSgoZTogVmhkRmlsdGVyKSA9PiAhIWUuYWR2YW5jZWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBvcGVuRGF0YVN0cmVhbSgpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5tYXRjaCgpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZS5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbZGF0YVNvdXJjZV0gc291cmNlIGRpZCBub3QgbWF0Y2ggYW4gYXJyYXksIE9ic2VydmFibGUsIG9yIERhdGFTb3VyY2VgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgdG9EYXRhU3RyZWFtKGRzOiBGZHBWYWx1ZUhlbHBEaWFsb2dEYXRhU291cmNlPFQ+KTogRmRwVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0RhdGFTb3VyY2UoZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZHMgYXMgVmFsdWVIZWxwRGlhbG9nRGF0YVNvdXJjZTxUPjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD4oZHMpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JzZXJ2YWJsZShkcykpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZVZhbHVlSGVscERpYWxvZ0RhdGFTb3VyY2U8VD4oZHMgYXMgT2JzZXJ2YWJsZTxUW10+KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldFNvdXJjZVN0cmVhbSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZSh0aGlzLmRhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZHNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgaXNWYWxpZE9wdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnNob3dTZWxlY3Rpb25UYWIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgISF0aGlzLmRhdGFTb3VyY2UgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy51bmlxdWVLZXkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiB0aGlzLnRva2VuVmlld0ZpZWxkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdGhpcy50b2tlbml6ZXJGbiA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNjb250YWluZXI+XG4gICAgPGZkLWRpYWxvZyBbZGlhbG9nQ29uZmlnXT1cImRpYWxvZ0NvbmZpZ1wiIFtkaWFsb2dSZWZdPVwiZGlhbG9nXCI+XG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyIFtkaXJdPVwiX2RpclwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vYmlsZSA/IG1vYmlsZURpYWxvZ1RpdGxlIDogZGVza3RvcERpYWxvZ1RpdGxlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb2JpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkdmFuY2VkU2VhcmNoQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHkgW2Rpcl09XCJfZGlyXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLXNjcm9sbGJhciBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fY29udGVudC1ob2xkZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZHZhbmNlZFNlYXJjaENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLnNlbGVjdEZyb21MaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3Rpb25Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09IF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWZpbmVDb25kaXRpb25zQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyIFtkaXJdPVwiX2RpclwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fcm93IGZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fc2VsZWN0aW9uLXJvd1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdGlvbkJhckxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNNb2JpbGVBZHZhbmNlZFNlYXJjaEFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aDUgZmQtdGl0bGUgY2xhc3M9XCJzZWxlY3RlZC1hbmQtY29uZGl0aW9uLXRpdGxlXCIgW2lkXT1cImlkICsgJy1zZWxlY3RlZC1pdGVtJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1NlbGVjdGVkQW5kQ29uZGl0aW9uczsgZWxzZSBub0l0ZW1zUGFuZWxUaXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5zZWxlY3RlZEFuZENvbmRpdGlvbkxhYmVsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7IHNlbGVjdGVkSXRlbXMubGVuZ3RoICsgdmFsaWRDb25kaXRpb25zLmxlbmd0aCB9fSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2g1PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3Rva2Vucy13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190b2tlbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIGl0ZW1zIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b2tlbml6ZXIgW3Rva2VuaXplckZvY3VzYWJsZV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd1ByaW9yaXR5PVwiaGlnaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fc2VsZWN0aW9uLXRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsb3NlQ2xpY2spPVwicmVtb3ZlU2VsZWN0ZWQoc2VsZWN0ZWRJbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBzZWxlY3RlZEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IF90cmFja0J5U2VsZWN0ZWRGblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAhIXRva2VuaXplckZuID8gKGl0ZW0gfCBkaXNwbGF5Rm5QaXBlIDogdG9rZW5pemVyRm4pIDogaXRlbVt0b2tlblZpZXdGaWVsZF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC10b2tlbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dQcmlvcml0eT1cImhpZ2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3NlbGVjdGlvbi10b2tlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbG9zZUNsaWNrKT1cInJlbW92ZUNvbmRpdGlvbihjb25kaXRpb25JbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgdmFsaWRDb25kaXRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4IGFzIGNvbmRpdGlvbkluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IF90cmFja0J5Q29uZGl0aW9uRm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25WYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC10b2tlbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZkLWZvcm0tY29udHJvbCBmZC10b2tlbml6ZXItaW5wdXQgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZEFuZENvbmRpdGlvbnNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9rZW5pemVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWRBbmRDb25kaXRpb25JdGVtcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fdG9rZW5zLWNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc1NlbGVjdGVkQW5kQ29uZGl0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuZm9vdGVyQ2xlYXJTZWxlY3RlZFRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImRlY2xpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtVkhELmZvb3RlckNsZWFyU2VsZWN0ZWRBcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19hY3Rpb25zLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ28tYWR2YW5jZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuc2VhcmNoQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vYmlsZSAmJiBpc09wZW5BZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoQWR2YW5jZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXN1Y2Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5zdWNjZXNzQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkVGFiICE9PSBfdGFiVHlwZXMuYWR2YW5jZWRTZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN1Y2Nlc3MoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3MtZGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1kaWFsb2ctZGVjaXNpdmUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELmNhbmNlbEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkaXNtaXNzKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG4gICAgPC9mZC1kaWFsb2c+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vSXRlbXNQYW5lbFRpdGxlPlxuICAgIHt7ICdwbGF0Zm9ybVZIRC5zZWxlY3RlZEVtcHR5TGFiZWwnIHwgZmRUcmFuc2xhdGUgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWR2YW5jZWRTZWFyY2hDb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlbGVjdGlvblRhYlwiPlxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3JvdyBmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2FkdmFuY2VkLXNlYXJjaFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0aWQgZmlsdGVyc1wiXG4gICAgICAgICAgICBbaWRdPVwiJ2FkdmFuY2VkLXNlYXJjaC0nICsgaWRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtbGF5b3V0LWdyaWQgKm5nSWY9XCIhbW9iaWxlIHx8IChtb2JpbGUgJiYgIWlzT3BlbkFkdmFuY2VkKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtmZExheW91dEdyaWRDb2xdPVwiMTJcIiBbY29sTWRdPVwiMTJcIiBbY29sTGddPVwibW9iaWxlID8gMTIgOiA2XCIgW2NvbFhsXT1cIm1vYmlsZSA/IDEyIDogNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1zZWFyY2gtZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtVkhELnNlYXJjaEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIidwbGF0Zm9ybVZIRC5zZWFyY2hCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlYXJjaFN1Ym1pdCk9XCJzZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlKT1cIl9tYWluU2VhcmNoID0gJGV2ZW50LnRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZkTGF5b3V0R3JpZENvbF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sTWRdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbExnXT1cIm1vYmlsZSA/IDEyIDogNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwibW9iaWxlID8gMTIgOiA2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiX2hhc0FkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19hZHZhbmNlZC1hY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRvb2xiYXIgW2NsZWFyQm9yZGVyXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhci1zcGFjZXI+PC9mZC10b29sYmFyLXNwYWNlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIl9oYXNBZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2JpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVZIRC5zZWFyY2hBZHZhbmNlZFNlYXJjaExhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNPcGVuQWR2YW5jZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVZIRC5zZWFyY2hIaWRlQWR2YW5jZWRTZWFyY2hMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVZIRC5zZWFyY2hTaG93QWR2YW5jZWRTZWFyY2hMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWR2YW5jZWRTZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9iaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1WSEQuc2VhcmNoQWR2YW5jZWRTZWFyY2hMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlzT3BlbkFkdmFuY2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1WSEQuc2VhcmNoSGlkZUFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1WSEQuc2VhcmNoU2hvd0FkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlYXJjaEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuc2VhcmNoQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGFyaWFMYWJlbD1cIlNlbGVjdGVkIFBhbmVsIENvbnRlbnRcIlxuICAgICAgICAgICAgICAgIFtpZF09XCInYWR2YW5jZWQtc2VhcmNoLWNvbnRlbnQtJyArIGlkXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzT3BlbkFkdmFuY2VkICYmIF9oYXNBZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2FkdmFuY2VkLWZpbHRlcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1idXN5LWluZGljYXRvciBbbG9hZGluZ109XCJsb2FkaW5nU3RhdGUgJiYgX2ZpcnN0TG9hZGluZ0RvbmVcIiBbYmxvY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtbGF5b3V0LWdyaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiX2ZpcnN0TG9hZGluZ0RvbmU7IGVsc2UgZmlsdGVyc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fd2l0aC10b2dnbGUtYWxsXT1cImZpbHRlcnMubGVuZ3RoID4gbWF4U2hvd25Jbml0aWFsRmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsdGVyIG9mIF9kaXNwbGF5ZWRGaWx0ZXJzIHwgc2xpY2UgOiAwIDogc2hvd25GaWx0ZXJDb3VudCArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiBfdHJhY2tCeUZpbHRlckZuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLmFkdmFuY2VkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtmZExheW91dEdyaWRDb2xdPVwiMTJcIiBbY29sTWRdPVwiMTJcIiBbY29sTGddPVwiNlwiIFtjb2xYbF09XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmQtZm9ybS1ncm91cF9faGVhZGVyXCIgZmQtZm9ybS1sYWJlbCBbZm9yXT1cIidpbnB1dCcgKyBmaWx0ZXIua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGZpbHRlci5sYWJlbCB9fTo8L2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidzZWFyY2gtYnktJyArIGZpbHRlci5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInaW5wdXQnICsgZmlsdGVyLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sR3Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbExnXT1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwiM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsdGVycy5sZW5ndGggPiBtYXhTaG93bkluaXRpYWxGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3RvZ2dsZS1maWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3duRmlsdGVycygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNTaG93QWxsRmlsdGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVZIRC5zZWFyY2hIaWRlQWxsQWR2YW5jZWRTZWFyY2hMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1WSEQuc2VhcmNoU2hvd0FsbEFkdmFuY2VkU2VhcmNoTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1sYXlvdXQtZ3JpZD5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZpbHRlcnNMb2FkaW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXNrZWxldG9uIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMHB4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIwXCIgeT1cIjBcIiByeD1cIjRcIiB3aWR0aD1cIjE1JVwiIGhlaWdodD1cIjhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMFwiIHk9XCIyMFwiIHJ4PVwiNFwiIHdpZHRoPVwiMjUlXCIgaGVpZ2h0PVwiMTZcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIzNSVcIiB5PVwiMFwiIHJ4PVwiNFwiIHdpZHRoPVwiMTUlXCIgaGVpZ2h0PVwiOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIzNSVcIiB5PVwiMjBcIiByeD1cIjRcIiB3aWR0aD1cIjI1JVwiIGhlaWdodD1cIjE2XCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc6cmVjdCB4PVwiMFwiIHk9XCI2MFwiIHJ4PVwiNFwiIHdpZHRoPVwiMTUlXCIgaGVpZ2h0PVwiOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZzpyZWN0IHg9XCIwXCIgeT1cIjgwXCIgcng9XCI0XCIgd2lkdGg9XCIyNSVcIiBoZWlnaHQ9XCIxNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWxlY3Rpb25Db250ZW50PlxuICAgIDxmZC1idXN5LWluZGljYXRvclxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nU3RhdGUgJiYgX2ZpcnN0TG9hZGluZ0RvbmVcIlxuICAgICAgICBbYmxvY2tdPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190YWJsZS1idXN5LWluZGljYXRvclwiXG4gICAgPlxuICAgICAgICA8ZmRwLXNlbGVjdC10YWJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZEl0ZW1zXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdTdGF0ZSAmJiAhX2ZpcnN0TG9hZGluZ0RvbmVcIlxuICAgICAgICAgICAgW3VpZF09XCJpZFwiXG4gICAgICAgICAgICBbZGlzcGxheWVkRGF0YV09XCJfZGlzcGxheWVkRGF0YVwiXG4gICAgICAgICAgICBbdGFiVGl0bGVdPVwic2VsZWN0VGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW21vYmlsZV09XCJtb2JpbGVcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJzZWFyY2hTZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2VtcHR5VGFibGVNZXNzYWdlXT1cInNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlIHx8ICgncGxhdGZvcm1WSEQuc2VhcmNoVGFibGVFbXB0eU1lc3NhZ2UnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFt1bmlxdWVLZXldPVwidW5pcXVlS2V5XCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJzZWFyY2hUYWJsZVBhZ2VTaXplXCJcbiAgICAgICAgICAgIFtkZWZhdWx0TW9iaWxlSGVhZGVyc109XCJzZWFyY2hUYWJsZU1vYmlsZUhlYWRlcnNcIlxuICAgICAgICAgICAgW2ZpbHRlcnNdPVwiX2Rpc3BsYXllZEZpbHRlcnNcIlxuICAgICAgICAgICAgKHNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgPjwvZmRwLXNlbGVjdC10YWI+XG4gICAgPC9mZC1idXN5LWluZGljYXRvcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmaW5lQ29uZGl0aW9uc0NvbnRlbnQ+XG4gICAgPGRpdiBmZC1zY3JvbGxiYXI+XG4gICAgICAgIDxmZHAtZGVmaW5lLXRhYlxuICAgICAgICAgICAgW3N0cmF0ZWd5TGFiZWxzXT1cImRlZmluZVN0cmF0ZWd5TGFiZWxzXCJcbiAgICAgICAgICAgIFtjb25kaXRpb25zXT1cImNvbmRpdGlvbkl0ZW1zXCJcbiAgICAgICAgICAgIFt1aWRdPVwiaWRcIlxuICAgICAgICAgICAgW3RhYlRpdGxlXT1cImRlZmluZVRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuZGVmaW5lVGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFttb2JpbGVdPVwibW9iaWxlXCJcbiAgICAgICAgICAgIChjb25kaXRpb25DaGFuZ2UpPVwib25Db25kaXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2ZkcC1kZWZpbmUtdGFiPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkaWFsb2dUaXRsZVRleHQ+XG4gICAgPGg1IFthdHRyLmlkXT1cImhlYWRlcklkXCIgZmQtdGl0bGU+e3sgZGlhbG9nVGl0bGUgfX08L2g1PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJMaW5rIGxldC10aXRsZT1cInRpdGxlXCIgbGV0LXR5cGU9XCJ0eXBlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVGFiID09PSB0eXBlICYmIHNob3dTZWxlY3Rpb25UYWIgJiYgc2hvd0RlZmluZVRhYlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGdseXBoPVwibmF2aWdhdGlvbi1sZWZ0LWFycm93XCJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIoKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYkJhY2tCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGg1IGZkLXRpdGxlPnt7IHRpdGxlIH19PC9oNT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIgIT09IHR5cGVcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGZkLWxpc3QtbGlua1xuICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYih0eXBlKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYkJ0bk9wZW5EaWFsb2dMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgdGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8aSBmZC1saXN0LWljb24gZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCI+PC9pPlxuICAgICAgICA8L2E+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FkdmFuY2VkSGVhZGVyPlxuICAgIDxidXR0b24gZmQtYnV0dG9uIGdseXBoPVwibmF2aWdhdGlvbi1sZWZ0LWFycm93XCIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiAoY2xpY2spPVwidG9nZ2xlQWR2YW5jZWRTZWFyY2goKVwiPjwvYnV0dG9uPlxuICAgIDxoNSBmZC10aXRsZT57eyAncGxhdGZvcm1WSEQuc2VhcmNoQWR2YW5jZWRTZWFyY2hMYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fTwvaDU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Rlc2t0b3BEaWFsb2dUaXRsZT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlhbG9nVGl0bGVUZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlc2t0b3BUYWJzXCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vYmlsZURpYWxvZ1RpdGxlPlxuICAgIDxkaXYgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX21vYmlsZS10aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzU2VsZWN0ZWRUYWI7IGVsc2UgZGlhbG9nVGl0bGVUZXh0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VsZWN0ZWRUYWJIZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vYmlsZVRhYnNcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVza3RvcFRhYnM+XG4gICAgPG5hdiBmZC10YWItbmF2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190YWJzXCIgKm5nSWY9XCJzaG93U2VsZWN0aW9uVGFiICYmIHNob3dEZWZpbmVUYWJcIj5cbiAgICAgICAgPGRpdiBmZC10YWItaXRlbSAoY2xpY2spPVwic3dpdGNoVGFiKF90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdClcIiAqbmdJZj1cInNob3dTZWxlY3Rpb25UYWJcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgZmQtdGFiLWxpbmtcbiAgICAgICAgICAgICAgICBbYWN0aXZlXT1cInNlbGVjdGVkVGFiID09PSBfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3RcIlxuICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLnNlbGVjdEZyb21MaXN0ID8gJzAnIDogJy0xJ1wiXG4gICAgICAgICAgICAgICAgPjxzcGFuIGZkLXRhYi10YWc+e3sgc2VsZWN0VGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSkgfX08L3NwYW4+PC9hXG4gICAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZkLXRhYi1pdGVtIChjbGljayk9XCJzd2l0Y2hUYWIoX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnMpXCIgKm5nSWY9XCJzaG93RGVmaW5lVGFiXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGZkLXRhYi1saW5rXG4gICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnNcIlxuICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJzZWxlY3RlZFRhYiA9PT0gX3RhYlR5cGVzLmRlZmluZUNvbmRpdGlvbnMgPyAnMCcgOiAnLTEnXCJcbiAgICAgICAgICAgICAgICA+PHNwYW4gZmQtdGFiLXRhZz57eyBkZWZpbmVUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSB9fTwvc3Bhbj48L2FcbiAgICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uYXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vYmlsZVRhYnM+XG4gICAgPGRpdiAqbmdJZj1cIiFoYXNTZWxlY3RlZFRhYiAmJiBzaG93U2VsZWN0aW9uVGFiICYmIHNob3dEZWZpbmVUYWJcIj5cbiAgICAgICAgPGRpdiBmZC1iYXIgW2luUGFnZV09XCJ0cnVlXCIgKm5nSWY9XCJzaG93U2VsZWN0aW9uVGFiXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0VGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSkgfX1cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cIm5hdmlnYXRpb24tcmlnaHQtYXJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYihfdGFiVHlwZXMuc2VsZWN0RnJvbUxpc3QpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuc2VsZWN0TW9iaWxlVGFiVGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyB0aXRsZTogc2VsZWN0VGFiVGl0bGUgfHwgKCdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJUaXRsZScgfCBmZFRyYW5zbGF0ZSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZkLWJhciBbaW5QYWdlXT1cInRydWVcIiAqbmdJZj1cInNob3dEZWZpbmVUYWJcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICB7eyBkZWZpbmVUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELmRlZmluZVRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSB9fVxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwibmF2aWdhdGlvbi1yaWdodC1hcnJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVkhELnNlbGVjdE1vYmlsZVRhYlRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgdGl0bGU6IGRlZmluZVRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuZGVmaW5lVGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVGFiKF90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlbGVjdGVkVGFiSGVhZGVyPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInNlbGVjdGVkVGFiXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIl90YWJUeXBlcy5zZWxlY3RGcm9tTGlzdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHRhYkxpbms7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWxlY3RUYWJUaXRsZSB8fCAoJ3BsYXRmb3JtVkhELnNlbGVjdFRhYlRpdGxlJyB8IGZkVHJhbnNsYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHNlbGVjdGVkVGFiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiX3RhYlR5cGVzLmFkdmFuY2VkU2VhcmNoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWR2YW5jZWRIZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIl90YWJUeXBlcy5kZWZpbmVDb25kaXRpb25zXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgdGFiTGluaztcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRlZmluZVRhYlRpdGxlIHx8ICgncGxhdGZvcm1WSEQuZGVmaW5lVGFiVGl0bGUnIHwgZmRUcmFuc2xhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogc2VsZWN0ZWRUYWJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb25kaXRpb25WYWx1ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0uc3RyYXRlZ3kgIT09ICdlbXB0eScgJiYgaXRlbS5zdHJhdGVneSAhPT0gJ25vdF9lbXB0eSc7IGVsc2UgZW1wdHlDb25kaXRpb25cIj5cbiAgICAgICAge3sgaXRlbSB8IGRpc3BsYXlGblBpcGUgOiBjb25kaXRpb25EaXNwbGF5Rm4gOiBfZGlzcGxheWVkRmlsdGVycyB9fVxuICAgIDwvc3Bhbj5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5Q29uZGl0aW9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5zdHJhdGVneSA9PT0gJ25vdF9lbXB0eSc7IGVsc2UgZW1wdHlDb25kaXRpb25UZXh0XCI+XG4gICAgICAgICAgICAhKDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eUNvbmRpdGlvblRleHRcIj48L25nLWNvbnRhaW5lcj4pXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5Q29uZGl0aW9uVGV4dD4gJmx0O3t7ICdwbGF0Zm9ybVZIRC5zZWxlY3RNb2JpbGVDb25kaXRpb25FbXB0eScgfCBmZFRyYW5zbGF0ZSB9fSZndDsgPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -5,7 +5,7 @@ import { CommonModule } from '@angular/common';
|
|
|
5
5
|
import * as i4 from '@fundamental-ngx/core/action-bar';
|
|
6
6
|
import { ActionBarModule } from '@fundamental-ngx/core/action-bar';
|
|
7
7
|
import * as i1 from '@fundamental-ngx/cdk/utils';
|
|
8
|
-
import { PipeModule } from '@fundamental-ngx/cdk/utils';
|
|
8
|
+
import { warnOnce, PipeModule } from '@fundamental-ngx/cdk/utils';
|
|
9
9
|
import * as i5 from '@fundamental-ngx/i18n';
|
|
10
10
|
import { I18nModule } from '@fundamental-ngx/i18n';
|
|
11
11
|
import * as i3 from '@fundamental-ngx/core/button';
|
|
@@ -32,7 +32,7 @@ class ActionBarComponent extends BaseComponent {
|
|
|
32
32
|
* Emitted event when "back" button is clicked.
|
|
33
33
|
*/
|
|
34
34
|
this.backButtonClick = new EventEmitter();
|
|
35
|
-
|
|
35
|
+
warnOnce('ActionBarComponent is deprecated since version 0.40.0 and will be removed in next release. Use [fd-action-bar] from @fundamental-ngx/core instead.');
|
|
36
36
|
}
|
|
37
37
|
/** @hidden */
|
|
38
38
|
ngOnInit() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-platform-action-bar.mjs","sources":["../../../../libs/platform/src/lib/action-bar/action-bar.component.ts","../../../../libs/platform/src/lib/action-bar/action-bar.component.html","../../../../libs/platform/src/lib/action-bar/action-bar.module.ts","../../../../libs/platform/src/lib/action-bar/fundamental-ngx-platform-action-bar.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef, OnInit, Optional } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { BaseComponent } from '@fundamental-ngx/platform/shared';\n/**\n * @deprecated\n * Action Bar component is deprecated since version 0.40.0\n */\n@Component({\n selector: 'fdp-action-bar',\n templateUrl: './action-bar.component.html'\n})\nexport class ActionBarComponent extends BaseComponent implements OnInit {\n /**\n * Actionbar title\n */\n @Input()\n title: string;\n\n /**\n * Actionbar description\n */\n @Input()\n description: string;\n\n /**\n * Show \"back\" button.\n */\n @Input()\n showBackButton = false;\n\n /**\n * @deprecated use i18n capabilities instead\n * \"back\" button label.\n */\n @Input()\n backButtonLabel: string;\n\n /**\n * Emitted event when \"back\" button is clicked.\n */\n @Output()\n backButtonClick: EventEmitter<void> = new EventEmitter();\n\n /** @hidden */\n navigationArrow$: Observable<string>;\n\n /** @hidden */\n constructor(@Optional() private _rtlService: RtlService, _cd: ChangeDetectorRef) {\n super(_cd);\n
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-platform-action-bar.mjs","sources":["../../../../libs/platform/src/lib/action-bar/action-bar.component.ts","../../../../libs/platform/src/lib/action-bar/action-bar.component.html","../../../../libs/platform/src/lib/action-bar/action-bar.module.ts","../../../../libs/platform/src/lib/action-bar/fundamental-ngx-platform-action-bar.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef, OnInit, Optional } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { RtlService, warnOnce } from '@fundamental-ngx/cdk/utils';\nimport { BaseComponent } from '@fundamental-ngx/platform/shared';\n/**\n * @deprecated\n * Action Bar component is deprecated since version 0.40.0\n */\n@Component({\n selector: 'fdp-action-bar',\n templateUrl: './action-bar.component.html'\n})\nexport class ActionBarComponent extends BaseComponent implements OnInit {\n /**\n * Actionbar title\n */\n @Input()\n title: string;\n\n /**\n * Actionbar description\n */\n @Input()\n description: string;\n\n /**\n * Show \"back\" button.\n */\n @Input()\n showBackButton = false;\n\n /**\n * @deprecated use i18n capabilities instead\n * \"back\" button label.\n */\n @Input()\n backButtonLabel: string;\n\n /**\n * Emitted event when \"back\" button is clicked.\n */\n @Output()\n backButtonClick: EventEmitter<void> = new EventEmitter();\n\n /** @hidden */\n navigationArrow$: Observable<string>;\n\n /** @hidden */\n constructor(@Optional() private _rtlService: RtlService, _cd: ChangeDetectorRef) {\n super(_cd);\n warnOnce(\n 'ActionBarComponent is deprecated since version 0.40.0 and will be removed in next release. Use [fd-action-bar] from @fundamental-ngx/core instead.'\n );\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.navigationArrow$ = this._rtlService\n ? this._rtlService.rtl.pipe(map((isRtl) => (isRtl ? 'navigation-right-arrow' : 'navigation-left-arrow')))\n : of('navigation-left-arrow');\n }\n}\n","<div fd-action-bar role=\"toolbar\">\n <div fd-action-bar-header>\n <div fd-action-bar-back *ngIf=\"showBackButton\">\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"backButtonLabel || ('platformActionBar.backButtonLabel' | fdTranslate)\"\n data-tag=\"actionbar__back-button\"\n [attr.title]=\"backButtonLabel || ('platformActionBar.backButtonLabel' | fdTranslate)\"\n [glyph]=\"navigationArrow$ | async\"\n (click)=\"backButtonClick.emit()\"\n ></button>\n </div>\n <div fd-action-bar-title aria-level=\"2\" [attr.title]=\"title\" data-tag=\"actionbar__title\">\n {{ title }}\n </div>\n <ng-content select=\"fdp-action-button-group\"></ng-content>\n </div>\n <p\n fd-action-bar-description\n *ngIf=\"description\"\n [withBackBtn]=\"showBackButton\"\n [attr.title]=\"description\"\n data-tag=\"actionbar__description\"\n >\n {{ description }}\n </p>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ActionBarModule } from '@fundamental-ngx/core/action-bar';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { I18nModule } from '@fundamental-ngx/i18n';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { ActionBarComponent } from './action-bar.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n declarations: [ActionBarComponent],\n imports: [\n CommonModule,\n ButtonModule,\n ActionBarModule,\n PipeModule,\n PlatformContentDensityDeprecationsModule,\n ContentDensityModule,\n I18nModule\n ],\n exports: [ActionBarComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule]\n})\nexport class PlatformActionBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { EventEmitter, Component, Input, Output, HostBinding, NgModule } from '@
|
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import * as i1 from '@fundamental-ngx/core/button';
|
|
5
5
|
import { ButtonModule } from '@fundamental-ngx/core/button';
|
|
6
|
-
import { PipeModule } from '@fundamental-ngx/cdk/utils';
|
|
6
|
+
import { warnOnce, PipeModule } from '@fundamental-ngx/cdk/utils';
|
|
7
7
|
import { BaseComponent, PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';
|
|
8
8
|
import { ContentDensityModule } from '@fundamental-ngx/core/content-density';
|
|
9
9
|
|
|
@@ -12,7 +12,7 @@ class ButtonComponent extends BaseComponent {
|
|
|
12
12
|
* aria-selected for acccesiblity to the native HTML button
|
|
13
13
|
*/
|
|
14
14
|
set ariaSelected(value) {
|
|
15
|
-
|
|
15
|
+
warnOnce('Property ariaSelected is deprecated. Use `toggled` input property instead.');
|
|
16
16
|
this._ariaSelected = value;
|
|
17
17
|
}
|
|
18
18
|
get ariaSelected() {
|
|
@@ -22,7 +22,7 @@ class ButtonComponent extends BaseComponent {
|
|
|
22
22
|
* propagate aria-pressed for accessiblity to the native HTML button
|
|
23
23
|
*/
|
|
24
24
|
set ariaPressed(value) {
|
|
25
|
-
|
|
25
|
+
warnOnce('Property ariaPressed is deprecated. Use `toggled` input property instead.');
|
|
26
26
|
this._ariaPressed = value;
|
|
27
27
|
}
|
|
28
28
|
get ariaPressed() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-platform-button.mjs","sources":["../../../../libs/platform/src/lib/button/button.component.ts","../../../../libs/platform/src/lib/button/button.component.html","../../../../libs/platform/src/lib/button/button.module.ts","../../../../libs/platform/src/lib/button/fundamental-ngx-platform-button.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output\n} from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonType, GlyphPosition } from '@fundamental-ngx/core/button';\nimport { BaseComponent } from '@fundamental-ngx/platform/shared';\nimport { ModuleDeprecation } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n selector: 'fdp-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss']\n})\nexport class ButtonComponent extends BaseComponent implements AfterViewInit {\n /** Position of glyph related to text */\n @Input()\n glyphPosition: GlyphPosition = 'before';\n\n /**\n * Text rendered inside button component\n */\n @Input()\n label: string;\n\n /** The icon to include in the button. See the icon page for the list of icons.\n * Setter is used to control when css class have to be rebuilded.\n * Default value is set to ''.\n */\n @Input()\n glyph: string;\n\n /** The buttonType of the button. Types includes\n 'standard','positive', 'negative', 'attention', 'ghost',\n 'transparent', 'emphasized','menu'.\n *Leave empty for default (standard button).'*/\n @Input()\n buttonType: ButtonType = 'standard';\n\n /** Whether button is in toggled state. */\n @Input()\n toggled: Nullable<boolean>;\n\n /** arialabel, tooltip for truncated text\n * for acccesiblity of the element */\n @Input()\n title: Nullable<string>;\n\n /** @deprecated use toggled input property instead\n * aria-selected for acccesiblity to the native HTML button\n */\n @Input()\n set ariaSelected(value: Nullable<boolean>) {\n console.warn('Property ariaSelected is deprecated. Use `toggled` input property instead.');\n this._ariaSelected = value;\n }\n\n get ariaSelected(): Nullable<boolean> {\n return this._ariaSelected;\n }\n\n /** aria-disabled for acccesiblity to\n * the native HTML button*/\n @Input()\n ariaDisabled: Nullable<boolean>;\n\n /**\n * propagate aria-expanded for accessiblity to\n * the native HTML button\n */\n @Input()\n ariaExpanded: Nullable<boolean>;\n\n /**\n * propagate aria-controls for accessiblity to\n * the native HTML button\n */\n @Input()\n ariaControlsId: Nullable<string>;\n\n /** @deprecated use toggled input property instead\n * propagate aria-pressed for accessiblity to the native HTML button\n */\n @Input()\n set ariaPressed(value: Nullable<boolean>) {\n console.warn('Property ariaPressed is deprecated. Use `toggled` input property instead.');\n this._ariaPressed = value;\n }\n\n get ariaPressed(): Nullable<boolean> {\n return this._ariaPressed;\n }\n\n /** Specifies a name to\n * the native HTML button */\n @Input()\n name: string;\n\n /** Specifies the type to\n * the native HTML button */\n @Input()\n type: Nullable<string>;\n\n /** Specifies an initial value to\n * the native HTML button */\n @Input()\n value: Nullable<string>;\n\n /** Event sent when button is clicked */\n @Output()\n buttonClicked: EventEmitter<any> = new EventEmitter();\n\n /**\n * Take host element out of tab order, so that child button can\n * be properly focused on.\n */\n @HostBinding('attr.tabindex')\n tabIndex = '-1';\n\n /** @hidden */\n private _ariaSelected: Nullable<boolean>;\n\n /** @hidden */\n private _ariaPressed: Nullable<boolean>;\n\n /** @hidden */\n constructor(protected _changeDetector: ChangeDetectorRef, private _elementRef: ElementRef) {\n super(_changeDetector);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._elementRef.nativeElement.childNodes[0].classList.add('fd-ellipsis');\n }\n\n /**\n * Handles button click\n */\n public onBtnClick($event: any): void {\n this.buttonClicked.emit($event);\n }\n}\n\nexport class DeprecatedButtonAriaSelected implements ModuleDeprecation {\n /** @hidden */\n message = 'ariaSelected input property is deprecated.';\n\n /** @hidden */\n alternative = {\n name: 'Use [toggled] input property instead',\n link: ['/platform', 'button'],\n fragment: 'state'\n };\n}\n\nexport class DeprecatedButtonAriaPressed implements ModuleDeprecation {\n /** @hidden */\n message = 'ariaPressed input property is deprecated.';\n\n /** @hidden */\n alternative = {\n name: 'Use [toggled] input property instead',\n link: ['/platform', 'button'],\n fragment: 'state'\n };\n}\n","<button\n #fdButton\n fd-button\n [attr.id]=\"id\"\n [attr.title]=\"title\"\n [attr.name]=\"name\"\n [ariaLabel]=\"ariaLabel\"\n [attr.aria-controls]=\"ariaControlsId\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-pressed]=\"ariaPressed\"\n [attr.aria-selected]=\"ariaSelected\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [attr.value]=\"value\"\n [glyphPosition]=\"glyphPosition\"\n [label]=\"label\"\n [type]=\"type\"\n [toggled]=\"toggled || ariaPressed || ariaSelected\"\n [glyph]=\"glyph\"\n [disabled]=\"disabled\"\n [fdType]=\"buttonType\"\n [class.is-disabled]=\"ariaDisabled\"\n [style.width]=\"width\"\n (click)=\"onBtnClick($event)\"\n></button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from './button.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, PipeModule, PlatformContentDensityDeprecationsModule, ContentDensityModule],\n exports: [ButtonComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule],\n declarations: [ButtonComponent]\n})\nexport class PlatformButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-platform-button.mjs","sources":["../../../../libs/platform/src/lib/button/button.component.ts","../../../../libs/platform/src/lib/button/button.component.html","../../../../libs/platform/src/lib/button/button.module.ts","../../../../libs/platform/src/lib/button/fundamental-ngx-platform-button.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output\n} from '@angular/core';\n\nimport { Nullable, warnOnce } from '@fundamental-ngx/cdk/utils';\nimport { ButtonType, GlyphPosition } from '@fundamental-ngx/core/button';\nimport { BaseComponent } from '@fundamental-ngx/platform/shared';\nimport { ModuleDeprecation } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n selector: 'fdp-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss']\n})\nexport class ButtonComponent extends BaseComponent implements AfterViewInit {\n /** Position of glyph related to text */\n @Input()\n glyphPosition: GlyphPosition = 'before';\n\n /**\n * Text rendered inside button component\n */\n @Input()\n label: string;\n\n /** The icon to include in the button. See the icon page for the list of icons.\n * Setter is used to control when css class have to be rebuilded.\n * Default value is set to ''.\n */\n @Input()\n glyph: string;\n\n /** The buttonType of the button. Types includes\n 'standard','positive', 'negative', 'attention', 'ghost',\n 'transparent', 'emphasized','menu'.\n *Leave empty for default (standard button).'*/\n @Input()\n buttonType: ButtonType = 'standard';\n\n /** Whether button is in toggled state. */\n @Input()\n toggled: Nullable<boolean>;\n\n /** arialabel, tooltip for truncated text\n * for acccesiblity of the element */\n @Input()\n title: Nullable<string>;\n\n /** @deprecated use toggled input property instead\n * aria-selected for acccesiblity to the native HTML button\n */\n @Input()\n set ariaSelected(value: Nullable<boolean>) {\n warnOnce('Property ariaSelected is deprecated. Use `toggled` input property instead.');\n this._ariaSelected = value;\n }\n\n get ariaSelected(): Nullable<boolean> {\n return this._ariaSelected;\n }\n\n /** aria-disabled for acccesiblity to\n * the native HTML button*/\n @Input()\n ariaDisabled: Nullable<boolean>;\n\n /**\n * propagate aria-expanded for accessiblity to\n * the native HTML button\n */\n @Input()\n ariaExpanded: Nullable<boolean>;\n\n /**\n * propagate aria-controls for accessiblity to\n * the native HTML button\n */\n @Input()\n ariaControlsId: Nullable<string>;\n\n /** @deprecated use toggled input property instead\n * propagate aria-pressed for accessiblity to the native HTML button\n */\n @Input()\n set ariaPressed(value: Nullable<boolean>) {\n warnOnce('Property ariaPressed is deprecated. Use `toggled` input property instead.');\n this._ariaPressed = value;\n }\n\n get ariaPressed(): Nullable<boolean> {\n return this._ariaPressed;\n }\n\n /** Specifies a name to\n * the native HTML button */\n @Input()\n name: string;\n\n /** Specifies the type to\n * the native HTML button */\n @Input()\n type: Nullable<string>;\n\n /** Specifies an initial value to\n * the native HTML button */\n @Input()\n value: Nullable<string>;\n\n /** Event sent when button is clicked */\n @Output()\n buttonClicked: EventEmitter<any> = new EventEmitter();\n\n /**\n * Take host element out of tab order, so that child button can\n * be properly focused on.\n */\n @HostBinding('attr.tabindex')\n tabIndex = '-1';\n\n /** @hidden */\n private _ariaSelected: Nullable<boolean>;\n\n /** @hidden */\n private _ariaPressed: Nullable<boolean>;\n\n /** @hidden */\n constructor(protected _changeDetector: ChangeDetectorRef, private _elementRef: ElementRef) {\n super(_changeDetector);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._elementRef.nativeElement.childNodes[0].classList.add('fd-ellipsis');\n }\n\n /**\n * Handles button click\n */\n public onBtnClick($event: any): void {\n this.buttonClicked.emit($event);\n }\n}\n\nexport class DeprecatedButtonAriaSelected implements ModuleDeprecation {\n /** @hidden */\n message = 'ariaSelected input property is deprecated.';\n\n /** @hidden */\n alternative = {\n name: 'Use [toggled] input property instead',\n link: ['/platform', 'button'],\n fragment: 'state'\n };\n}\n\nexport class DeprecatedButtonAriaPressed implements ModuleDeprecation {\n /** @hidden */\n message = 'ariaPressed input property is deprecated.';\n\n /** @hidden */\n alternative = {\n name: 'Use [toggled] input property instead',\n link: ['/platform', 'button'],\n fragment: 'state'\n };\n}\n","<button\n #fdButton\n fd-button\n [attr.id]=\"id\"\n [attr.title]=\"title\"\n [attr.name]=\"name\"\n [ariaLabel]=\"ariaLabel\"\n [attr.aria-controls]=\"ariaControlsId\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-pressed]=\"ariaPressed\"\n [attr.aria-selected]=\"ariaSelected\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [attr.value]=\"value\"\n [glyphPosition]=\"glyphPosition\"\n [label]=\"label\"\n [type]=\"type\"\n [toggled]=\"toggled || ariaPressed || ariaSelected\"\n [glyph]=\"glyph\"\n [disabled]=\"disabled\"\n [fdType]=\"buttonType\"\n [class.is-disabled]=\"ariaDisabled\"\n [style.width]=\"width\"\n (click)=\"onBtnClick($event)\"\n></button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from './button.component';\nimport { PlatformContentDensityDeprecationsModule } from '@fundamental-ngx/platform/shared';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, PipeModule, PlatformContentDensityDeprecationsModule, ContentDensityModule],\n exports: [ButtonComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule],\n declarations: [ButtonComponent]\n})\nexport class PlatformButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { TabListComponent, TabPanelComponent, TabsModule } from '@fundamental-ng
|
|
|
6
6
|
import * as i1 from '@fundamental-ngx/platform/shared';
|
|
7
7
|
import { PlatformConfig, BaseComponent } from '@fundamental-ngx/platform/shared';
|
|
8
8
|
import { tap, Subject } from 'rxjs';
|
|
9
|
+
import { warnOnce } from '@fundamental-ngx/cdk/utils';
|
|
9
10
|
import { DYNAMIC_PAGE_HEADER_TOKEN } from '@fundamental-ngx/core/shared';
|
|
10
11
|
import * as i1$1 from '@angular/common';
|
|
11
12
|
import { CommonModule } from '@angular/common';
|
|
@@ -349,7 +350,7 @@ class DynamicPageHeaderComponent {
|
|
|
349
350
|
/** Collapse/Expand change event raised */
|
|
350
351
|
this.collapsedChange = new EventEmitter();
|
|
351
352
|
/** @deprecated - use `collapsedChange` instead */
|
|
352
|
-
this.collapseChange = this.collapsedChange.pipe(tap(() =>
|
|
353
|
+
this.collapseChange = this.collapsedChange.pipe(tap(() => warnOnce('`collapseChange` is deprecated and will be removed next release. Use `collapsedChange` instead.')));
|
|
353
354
|
}
|
|
354
355
|
/**
|
|
355
356
|
* @hidden
|