tnx-shared 5.3.294 → 5.3.295
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/bundles/tnx-shared.umd.js +26 -4
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/components/user-picker/models/user-picker-setting.d.ts.map +1 -1
- package/components/user-picker/user-picker.component.d.ts.map +1 -1
- package/esm2015/components/user-picker/models/user-picker-setting.js +2 -1
- package/esm2015/components/user-picker/user-picker.component.js +11 -3
- package/fesm2015/tnx-shared.js +9 -0
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/tnx-shared.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-picker-setting.d.ts","sourceRoot":"","sources":["../../../../../projects/tnx-shared/src/lib/components/user-picker/models/user-picker-setting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,qBAAa,iBAAiB;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,oBAAoB,UAAS;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,SAAK;IACjB,QAAQ,CAAC,UAAQ;CACpB;AAED,eAAO,MAAM,qBAAqB;;;
|
|
1
|
+
{"version":3,"file":"user-picker-setting.d.ts","sourceRoot":"","sources":["../../../../../projects/tnx-shared/src/lib/components/user-picker/models/user-picker-setting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,qBAAa,iBAAiB;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,oBAAoB,UAAS;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,SAAK;IACjB,QAAQ,CAAC,UAAQ;CACpB;AAED,eAAO,MAAM,qBAAqB;;;GAIjC,CAAC;AAGF,eAAO,MAAM,qBAAqB;;;GAGjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-picker.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/user-picker/user-picker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,YAAY,EAEZ,QAAQ,EAER,MAAM,EAEN,WAAW,EAEd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAqB,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"user-picker.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/user-picker/user-picker.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,11 @@ export class UserPickerSetting {
|
|
|
7
7
|
}
|
|
8
8
|
export const DatasourceFieldFilter = [
|
|
9
9
|
{ id: 'userName', ten: 'Tài khoản' },
|
|
10
|
+
{ id: 'code', ten: 'Mã' },
|
|
10
11
|
{ id: 'email', ten: 'Email' },
|
|
11
12
|
];
|
|
12
13
|
export const DatasourceFilterCanBo = [
|
|
13
14
|
{ id: 'code', ten: 'Mã' },
|
|
14
15
|
{ id: 'email', ten: 'Email' }
|
|
15
16
|
];
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1waWNrZXItc2V0dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItcGlja2VyL21vZGVscy91c2VyLXBpY2tlci1zZXR0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFFSSx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFN0IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNqQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTtJQUNwQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUN6QixFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtDQUNoQyxDQUFDO0FBR0YsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDakMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7SUFDekIsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUU7Q0FDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xuXG5leHBvcnQgY2xhc3MgVXNlclBpY2tlclNldHRpbmcge1xuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+O1xuICAgIGxhenlMb2FkT3JnYW5pemF0aW9uID0gZmFsc2U7XG4gICAgcGFyZW50T3JnQ29kZT86IHN0cmluZztcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xuICAgIHJlcXVpcmVkPz0gZmFsc2U7XG59XG5cbmV4cG9ydCBjb25zdCBEYXRhc291cmNlRmllbGRGaWx0ZXIgPSBbXG4gICAgeyBpZDogJ3VzZXJOYW1lJywgdGVuOiAnVMOgaSBraG/huqNuJyB9LFxuICAgIHsgaWQ6ICdjb2RlJywgdGVuOiAnTcOjJyB9LFxuICAgIHsgaWQ6ICdlbWFpbCcsIHRlbjogJ0VtYWlsJyB9LFxuXTtcblxuXG5leHBvcnQgY29uc3QgRGF0YXNvdXJjZUZpbHRlckNhbkJvID0gW1xuICAgIHsgaWQ6ICdjb2RlJywgdGVuOiAnTcOjJyB9LFxuICAgIHsgaWQ6ICdlbWFpbCcsIHRlbjogJ0VtYWlsJyB9XG5dOyJdfQ==
|
|
@@ -4,14 +4,14 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
|
4
4
|
import { TranslateService } from '@ngx-translate/core';
|
|
5
5
|
import { ComponentContextService } from '../../app-context/component-context.service';
|
|
6
6
|
import { ComponentBase } from '../../classes/base/component-base';
|
|
7
|
+
import { isLiteralObject } from '../../classes/environment-schema';
|
|
7
8
|
import { CrudListSetting, DropdownControlSchema, DropdownOptions, EntityPickerColumn, EntityPickerControlSchema, HeightType, Operator, PopupSize, UserPickerControlSchema, UserType } from '../../classes/form-schema';
|
|
8
9
|
import { Filter } from '../../models/grid-info';
|
|
10
|
+
import { FormState } from '../../public-api';
|
|
9
11
|
import { DmChucVuService } from '../../services/dm-chucvu.service';
|
|
10
12
|
import { UserV5Service } from '../../services/user-v5.service';
|
|
11
13
|
import { appendDefaultFilter } from '../../utils/common';
|
|
12
14
|
import { AdvanceDataEntityPicker } from '../entity-picker/model/advance-data';
|
|
13
|
-
import { isLiteralObject } from '../../classes/environment-schema';
|
|
14
|
-
import { FormState } from '../../public-api';
|
|
15
15
|
export class UserPickerComponent extends ComponentBase {
|
|
16
16
|
constructor(_injector, _userV5Service, _dm_ChucVuService) {
|
|
17
17
|
super(_injector);
|
|
@@ -86,6 +86,14 @@ export class UserPickerComponent extends ComponentBase {
|
|
|
86
86
|
fullTextSearch: true,
|
|
87
87
|
width: '100px'
|
|
88
88
|
}),
|
|
89
|
+
new EntityPickerColumn({
|
|
90
|
+
label: 'Mã',
|
|
91
|
+
code: 'code',
|
|
92
|
+
dataType: 'string',
|
|
93
|
+
operator: Operator.contain,
|
|
94
|
+
fullTextSearch: true,
|
|
95
|
+
width: '160px'
|
|
96
|
+
}),
|
|
89
97
|
new EntityPickerColumn({
|
|
90
98
|
label: 'Họ và tên',
|
|
91
99
|
code: 'fullNameNew',
|
|
@@ -621,4 +629,4 @@ UserPickerComponent.propDecorators = {
|
|
|
621
629
|
onReady: [{ type: Output, args: ['onReady',] }],
|
|
622
630
|
onAdjustedValue: [{ type: Output, args: ['onAdjustedValue',] }]
|
|
623
631
|
};
|
|
624
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1waWNrZXIvdXNlci1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFFSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULHVCQUF1QixFQUN2QixRQUFRLEVBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxF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SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OztZQTNwQkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxhQUFhO2dCQUN2Qix1M0ZBQTJDO2dCQUUzQyxTQUFTLEVBQUU7b0JBQ1A7d0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDbEQsS0FBSyxFQUFFLElBQUk7cUJBQ2Q7b0JBQ0QsdUJBQXVCO2lCQUMxQjs7YUFDSjs7O1lBL0NHLFFBQVE7WUEyQkgsYUFBYTtZQURiLGVBQWU7Ozs4QkF1Qm5CLFNBQVMsU0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7c0JBSTdDLEtBQUs7d0JBQ0wsS0FBSzt5QkFLTCxLQUFLO3VCQUNMLEtBQUs7dUJBQ0wsS0FBSzs2QkFFTCxLQUFLO3FCQVNMLE1BQU07dUJBQ04sTUFBTSxTQUFDLFVBQVU7eUJBQ2pCLE1BQU0sU0FBQyxZQUFZO3dCQUNuQixNQUFNLFNBQUMsV0FBVztzQkFDbEIsTUFBTSxTQUFDLFNBQVM7cUJBQ2hCLE1BQU0sU0FBQyxRQUFRO3NCQUNmLE1BQU0sU0FBQyxTQUFTOzhCQUNoQixNQUFNLFNBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3RJdGVtIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvYXBpJztcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcbmltcG9ydCB7XG4gICAgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSxcbiAgICBDcnVkTGlzdFNldHRpbmcsXG4gICAgRHJvcGRvd25Db250cm9sU2NoZW1hLFxuICAgIERyb3Bkb3duT3B0aW9ucyxcbiAgICBFbnRpdHlQaWNrZXJDb2x1bW4sXG4gICAgRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSxcbiAgICBIZWlnaHRUeXBlLFxuICAgIE9wZXJhdG9yLFxuICAgIFBvcHVwU2l6ZSxcbiAgICBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSxcbiAgICBVc2VyVHlwZVxufSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xuaW1wb3J0IHsgRG1DaHVjVnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG0tY2h1Y3Z1LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclY1U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXItdjUuc2VydmljZSc7XG5pbXBvcnQgeyBhcHBlbmREZWZhdWx0RmlsdGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29tbW9uJztcbmltcG9ydCB7IEFkdmFuY2VEYXRhRW50aXR5UGlja2VyIH0gZnJvbSAnLi4vZW50aXR5LXBpY2tlci9tb2RlbC9hZHZhbmNlLWRhdGEnO1xuaW1wb3J0IHsgVXNlclBpY2tlckJveENvbXBvbmVudCB9IGZyb20gJy4vdXNlci1waWNrZXItYm94L3VzZXItcGlja2VyLWJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNMaXRlcmFsT2JqZWN0IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnZpcm9ubWVudC1zY2hlbWEnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VzZXItcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXNlci1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3VzZXItcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVXNlclBpY2tlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBDb21wb25lbnRDb250ZXh0U2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVXNlclBpY2tlckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJDaHVjVnVSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWx0ZXJDaHVjVnVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgb25DaGFuZ2VCYXNlOiBGdW5jdGlvbjtcbiAgICBvblRvdWNoZWQ6IEZ1bmN0aW9uO1xuXG4gICAgQElucHV0KCkgY29udHJvbDogVXNlclBpY2tlckNvbnRyb2xTY2hlbWE7XG4gICAgQElucHV0KCkgcG9wdXBTaXplOiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHtcbiAgICAgICAgd2lkdGg6IDExMDAsXG4gICAgICAgIGhlaWdodDogOTAwLFxuICAgICAgICBtYXhpbWl6ZTogdHJ1ZVxuICAgIH0pO1xuICAgIEBJbnB1dCgpIGhpZGRlbkNvbHM6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIF9yZWFkT25seVZhbHVlczogc3RyaW5nW107XG4gICAgQElucHV0KCkgc2V0IHJlYWRPbmx5VmFsdWVzKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgICAgICB0aGlzLl9yZWFkT25seVZhbHVlcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZUZ1bmNDaGVja1JlYWRPbmx5SXRlbSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZVJlYWRPbmx5SXRlbSgpO1xuICAgIH1cbiAgICBnZXQgcmVhZE9ubHlWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkT25seVZhbHVlcztcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgnb25TZWxlY3QnKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCdvblVuU2VsZWN0Jykgb25VblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCdvbkNoYW5nZWQnKSBvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgnb25Gb2N1cycpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgnb25CbHVyJykgb25CbHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoJ29uUmVhZHknKSBvblJlYWR5OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoJ29uQWRqdXN0ZWRWYWx1ZScpIG9uQWRqdXN0ZWRWYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIGNvbnRyb2xQaWNrZXI6IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWE7XG4gICAgc2V0dGluZ1BpY2tlcjogQ3J1ZExpc3RTZXR0aW5nID0gbmV3IENydWRMaXN0U2V0dGluZygpO1xuICAgIGFkdmFuY2VEYXRhUGlja2VyOiBBZHZhbmNlRGF0YUVudGl0eVBpY2tlciA9IG5ldyBBZHZhbmNlRGF0YUVudGl0eVBpY2tlcigpO1xuXG4gICAgdmFsdWU6IGFueTtcbiAgICBmdW5jUmV0dXJuVmFsdWU6ICh2YWx1ZSkgPT4ge30gPSB2YWx1ZSA9PiB2YWx1ZTtcbiAgICBzZWxlY3RlZFJvd0RhdGE6IGFueTtcbiAgICBzZWxlY3RlZFZhbHVlOiBhbnk7XG4gICAgc2VsZWN0ZWRWYWx1ZU9iamVjdDogYW55O1xuICAgIGRhdGFTb3VyY2U6IGFueVtdID0gW107XG4gICAgZnVuY0NoZWNrUmVhZE9ubHlJdGVtOiAoaXRlbTogYW55KSA9PiB2b2lkO1xuXG4gICAgZmllbGRTZWFyY2hUZXh0OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcmVzdWx0czogYW55W10gPSBbXTtcblxuICAgIHNob3dGb3JtUGlja2VyID0gZmFsc2U7XG4gICAgZGlydHkgPSBmYWxzZTtcblxuICAgIHRvb2x0aXAgPSAnJztcbiAgICBoYXNWYWx1ZSA9IGZhbHNlO1xuICAgIHNlYXJjaFNjaGVtYTogYW55ID0ge307XG4gICAgc2VhcmNoRGF0YTogYW55ID0ge307XG5cbiAgICBwcml2YXRlIGdldEZpbHRlck9uU2VhcmNoPzogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHVibGljIF91c2VyVjVTZXJ2aWNlOiBVc2VyVjVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9kbV9DaHVjVnVTZXJ2aWNlOiBEbUNodWNWdVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZSA9IF9pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY29udHJvbC5fY29tcG9uZW50ID0gdGhpcztcbiAgICAgICAgY29uc3QgY29tbW9uRmllbGRQbHVzID0gJ21hQ2h1Y1Z1LGxzdFRlbkRvblZpJztcbiAgICAgICAgdGhpcy5jb250cm9sUGlja2VyID0gbmV3IEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgLi4udGhpcy5jb250cm9sLFxuICAgICAgICAgICAgZmllbGQ6ICdhcnJJZE5ndW9pRHVuZycsXG4gICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIGTDuW5nJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQ2jhu41uIG5nxrDhu51pIGTDuW5nJyxcbiAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyVjVTZXJ2aWNlLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBkaXNwbGF5RmllbGQ6IHRoaXMuY29udHJvbC5nZXREaXNwbGF5TmFtZSA/ICdkaXNwbGF5TmFtZScgOiB0aGlzLmNvbnRyb2wuZGlzcGxheUZpZWxkLFxuICAgICAgICAgICAgZmllbGRQbHVzOiB0aGlzLmNvbnRyb2wuZmllbGRQbHVzID8gYCR7dGhpcy5jb250cm9sLmZpZWxkUGx1c30sJHtjb21tb25GaWVsZFBsdXN9YCA6IGNvbW1vbkZpZWxkUGx1cyxcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6IHRoaXMuY29udHJvbC52YWx1ZUZpZWxkLFxuICAgICAgICAgICAgZGVmYXVsdEZpbHRlcnM6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVycyA9IFtdO1xuICAgICAgICAgICAgICAgIGF3YWl0IGFwcGVuZERlZmF1bHRGaWx0ZXIoZmlsdGVycywgdGhpcy5jb250cm9sLmRlZmF1bHRGaWx0ZXJzKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuQUREKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignbG9ja291dEVuYWJsZWQnLCBPcGVyYXRvci5lcXVhbCwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbXVsdGlwbGU6IHRoaXMuY29udHJvbC5tdWx0aXBsZSxcbiAgICAgICAgICAgIGZ1bmNHZXRMYWJlbDogKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCkgcmV0dXJuIHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwoaXRlbSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZGlzcGxheU5hbWUgPz8gdGhpcy5fdXNlclY1U2VydmljZS5nZXRVc2VyTmFtZShpdGVtKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBwYWdlU2l6ZTogdGhpcy5jb250cm9sLnBhZ2VTaXplLFxuICAgICAgICAgICAgLy8gZmllbGRQbHVzOiAnaG8sdGVuJyxcbiAgICAgICAgICAgIC8vIGZpZWxkU2VhcmNoVGV4dDogWydobycsICd0ZW4nXSxcbiAgICAgICAgICAgIC8vIGFmdGVyR2V0RGF0YTogdGhpcy5nZW5lcmF0ZUhvVGVuLFxuICAgICAgICAgICAgLy8gYWZ0ZXJHZXREYXRhVW5QaWNrZWQ6IHRoaXMuZ2VuZXJhdGVIb1RlbixcbiAgICAgICAgICAgIC8vIGFmdGVyR2V0RGF0YVBpY2tlZDogdGhpcy5nZW5lcmF0ZUhvVGVuLFxuICAgICAgICAgICAgY29sdW1uczogdGhpcy5jb250cm9sLmNvbHVtbnMgfHwgW1xuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1TDoGkga2hv4bqjbicsXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICd1c2VyTmFtZScsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMHB4J1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnZnVsbE5hbWVOZXcnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxNjBweCdcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdIw7JtIHRoxrAnLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE2MHB4J1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyB24bulJyxcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ2xzdFRlbkNodWNWdScsXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvZGU6ICdtYUNodWNWdScsXG4gICAgICAgICAgICAgICAgICAgIC8vIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbV9DaHVjVnVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUZpbHRlcjogdGhpcy5maWx0ZXJDaHVjVnVSZWYsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTYwcHgnXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnR2nhuqNuZyB2acOqbicsXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICdpc0dpYW5nVmllbicsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnOTBweCcsXG4gICAgICAgICAgICAgICAgICAgIGlzRGlzcGxheTogdGhpcy5jb250cm9sLnVzZXJUeXBlID09PSBVc2VyVHlwZS5DYW5CbyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDaHV5w6puIHZpw6puJyxcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ2lzQ2h1eWVuVmllbicsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnOTBweCcsXG4gICAgICAgICAgICAgICAgICAgIGlzRGlzcGxheTogdGhpcy5jb250cm9sLnVzZXJUeXBlID09PSBVc2VyVHlwZS5DYW5CbyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG1kV2lkdGg6IDEyXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZpZWxkU2VhcmNoVGV4dCA9IFsuLi50aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRTZWFyY2hUZXh0XTtcbiAgICAgICAgLy8gQ8WpXG4gICAgICAgIC8vIGlmICghdGhpcy5maWVsZFNlYXJjaFRleHQuc29tZShpdGVtID0+IGl0ZW0gPT0gdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCkpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuZmllbGRTZWFyY2hUZXh0LnB1c2godGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICAvLyBN4bubaSAtIE7hur91IGtvIGPDsyBmaWVsZFNlYXJjaFRleHQgdGjDrCBkw7luZyBkaXNwbGF5RmllbGQgxJHhu4Mgc2VhcmNoXG4gICAgICAgIGlmICh0aGlzLmZpZWxkU2VhcmNoVGV4dC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZFNlYXJjaFRleHQucHVzaCh0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOG6qG4gY+G7mXQga2hpIGPDsyBnacOhIHRy4buLIMSRxrDhu6NjIHRyeeG7gW4gdsOgbyBoaWRkZW5Db2xzXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuaGlkZGVuQ29scy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5jb2x1bW5zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5oaWRkZW5Db2xzLmluY2x1ZGVzKGl0ZW0uY29kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pc0Rpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5yZXR1cm5UeXBlID09ICd2YWx1ZScpIHtcbiAgICAgICAgICAgIHRoaXMuZnVuY1JldHVyblZhbHVlID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZ1bmNSZXR1cm5WYWx1ZSA9IHZhbHVlID0+IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJLZXl3b3JkKCk7XG4gICAgICAgIHRoaXMuYnVpbGRTZXR0aW5nRW50aXR5UGlja2VyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlU2NoZW1hU2VhcmNoKCk7XG4gICAgICAgIHRoaXMudXBkYXRlRnVuY0NoZWNrUmVhZE9ubHlJdGVtKCk7XG4gICAgICAgIHRoaXMub25SZWFkeS5lbWl0KCk7XG4gICAgICAgIHRoaXMub25Jbml0LmVtaXQodGhpcyk7XG4gICAgfVxuXG4gICAgdXBkYXRlRnVuY0NoZWNrUmVhZE9ubHlJdGVtKCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seVZhbHVlcyAmJiB0aGlzLnJlYWRPbmx5VmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5mdW5jQ2hlY2tSZWFkT25seUl0ZW0gPSB0aGlzLl9mdW5jQ2hlY2tSZWFkT25seUl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZ1bmNDaGVja1JlYWRPbmx5SXRlbSA9IChpdGVtOiBhbnkpID0+IHsgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZVNjaGVtYVNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hTY2hlbWEuaWRDaHVjVnVzID0gbmV3IERyb3Bkb3duQ29udHJvbFNjaGVtYSh7XG4gICAgICAgICAgICBmaWVsZDogJ2lkQ2h1Y1Z1cycsXG4gICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQ2jhu41uIGNo4bupYyB24bulJyxcbiAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbV9DaHVjVnVTZXJ2aWNlLFxuICAgICAgICAgICAgc29ydEZpZWxkOiAnc29UaHVUdScsXG4gICAgICAgICAgICBsb2FkT25Jbml0OiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGJ1aWxkRmlsdGVyS2V5d29yZCgpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSB0aGlzLmNvbnRyb2xQaWNrZXIub3BlcmF0b3JGaWVsZFNlYXJjaFRleHQgPz8gT3BlcmF0b3IuY29udGFpbjtcbiAgICAgICAgaWYgKHRoaXMuZmllbGRTZWFyY2hUZXh0Lmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlck9uU2VhcmNoID0gdmFsdWUgPT4gdGhpcy5uZXdGaWx0ZXIodGhpcy5maWVsZFNlYXJjaFRleHRbMF0sIG9wZXJhdG9yLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlck9uU2VhcmNoID0gdmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBGaWx0ZXIoe1xuICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ29yJyxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW11cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkU2VhcmNoIG9mIHRoaXMuZmllbGRTZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoZmllbGRTZWFyY2gsIG9wZXJhdG9yLCB2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1aWxkU2V0dGluZ0VudGl0eVBpY2tlcigpIHtcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmNvbHMgPSBbXTtcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLnRpdGxlID0gJyc7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIucGFnZVNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5wYWdlU2V0dGluZy5wYWdlU2l6ZSA9IHRoaXMuY29udHJvbFBpY2tlci5wYWdlU2l6ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuYmFzZVNlcnZpY2UgPSB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2U7XG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuaGlkZGVuQ2hlY2tib3ggPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuc2V0dGluZ0tleSA9ICd1c2VyUGlja2VyJztcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmhpZGRlblNldHRpbmdXb3JrZmxvdyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5oaWRkZW5TZXR0aW5nUGVybWlzc2lvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5maWVsZFNlYXJjaFRleHQgPSB0aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRTZWFyY2hUZXh0O1xuICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmlzRGlzcGxheSkge1xuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uZGF0YVR5cGUgPT0gJ2N1c3RvbScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmNvbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogY29sdW1uLmNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGNvbHVtbi5sYWJlbCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IGNvbHVtbi5iYXNlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6IGNvbHVtbi52YWx1ZUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiBjb2x1bW4uZGlzcGxheUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRQbHVzOiBjb2x1bW4uZmllbGRQbHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydEZpZWxkOiBjb2x1bW4uc29ydEZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydERpcjogY29sdW1uLnNvcnREaXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jR2V0TGFiZWw6IGNvbHVtbi5mdW5jR2V0TGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBjb2x1bW4uZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwQ29kZTogY29sdW1uLmdyb3VwQ29kZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5jb2xzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5jb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChjb2x1bW4ubGFiZWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkdmFuY2VEYXRhUGlja2VyLmZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKCk7XG4gICAgfVxuXG4gICAgLy8gTOG6pXkgdW5pb24gY+G7p2E6IHNlbGVjdGVkRmllbGQsIGZpZWxkUGx1cywgZGlzcGxheSBmaWVsZHMgY8OzIHRyb25nIHRhYmxlLlxuICAgIGdldEZpZWxkcygpIHtcbiAgICAgICAgY29uc3QgYXJyRmllbGQ6IHN0cmluZ1tdID0gW3RoaXMuY29udHJvbFBpY2tlci5kaXNwbGF5RmllbGQsICdpZCddO1xuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQgJiYgdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQgIT0gJ2lkJykge1xuICAgICAgICAgICAgYXJyRmllbGQucHVzaCh0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLmZpZWxkUGx1cykge1xuICAgICAgICAgICAgYXJyRmllbGQucHVzaCguLi50aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRQbHVzLnNwbGl0KCcsJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJyRGlzcGxheUZpZWxkID0gdGhpcy5jb250cm9sUGlja2VyLmNvbHVtbnNcbiAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4LmlzRGlzcGxheSA9PSB0cnVlICYmICF4Lm5vdEluRmllbGRzICYmIHguZGF0YVR5cGUgIT0gJ2N1c3RvbScpXG4gICAgICAgICAgICAubWFwKHggPT4geC5jb2RlKTtcblxuICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLmFkZERpc3RpbmN0KGFyckRpc3BsYXlGaWVsZCwgYXJyRmllbGQpO1xuICAgICAgICByZXR1cm4gYXJyRmllbGQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBnZXREcm9wZG93bk9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRHJvcGRvd25PcHRpb25zKHtcbiAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCxcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6IHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLFxuICAgICAgICAgICAgZmllbGRQbHVzOiB0aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRQbHVzLFxuICAgICAgICAgICAgZnVuY0dldExhYmVsOiB0aGlzLmNvbnRyb2xQaWNrZXIuZnVuY0dldExhYmVsLFxuICAgICAgICAgICAgcGx1c1VybDogdGhpcy5jb250cm9sUGlja2VyLnBsdXNVcmxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2hvd1BpY2tGb3JtKCkge1xuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1QaWNrZXIgPSB0cnVlO1xuICAgIH1cblxuICAgIGFzeW5jIGdldERhdGEoa2V5V29yZCkge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW107XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCwgT3BlcmF0b3Iubm90SW4sIHRoaXMudmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLCBPcGVyYXRvci5ub3RFcXVhbCwgdGhpcy52YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgYXBwZW5kRGVmYXVsdEZpbHRlcihmaWx0ZXJzLCB0aGlzLmNvbnRyb2wuZGVmYXVsdEZpbHRlcnMpO1xuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuQUREKSB7XG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2xvY2tvdXRFbmFibGVkJywgT3BlcmF0b3IuZXF1YWwsIGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleVdvcmQgJiYga2V5V29yZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5nZXRGaWx0ZXJPblNlYXJjaChrZXlXb3JkKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IGF3YWl0IHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcbiAgICAgICAgICAgIGZpbHRlcnMsIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UoZGF0YVNvdXJjZSk7XG4gICAgICAgIHRoaXMucmVzdWx0cyA9IHRoaXMuZGF0YVNvdXJjZTtcbiAgICAgICAgLy8gUmV0dXJuIMSR4buDIG3hu5l0IHPhu5EgbsahaSBraMOhYyBkw7luZywgayByZW1vdmVcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0cztcbiAgICB9XG5cbiAgICBzZWFyY2goZXZlbnQpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKGV2ZW50LnF1ZXJ5KTtcbiAgICB9XG5cbiAgICBjbGVhclZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xuICAgICAgICB0aGlzLmhhc1ZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25VblNlbGVjdC5lbWl0KHtcbiAgICAgICAgICAgIGl0ZW06IHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZUV2ZW50KCk7XG4gICAgfVxuXG4gICAgaGFuZGxlUm93U2VsZWN0KGl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0RhdGEgPSBpdGVtO1xuICAgIH1cblxuICAgIC8vIFNlbGVjdCBpdGVtIGPhu6dhIGF1dG9jb21wbGV0ZVxuICAgIGhhbmRsZVNlbGVjdChpdGVtKSB7XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBldnQgPSB7XG4gICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRWYWx1ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoZXZ0KTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjayAmJiB0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2suc2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2suc2VsZWN0KGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQuG7jyBzZWxlY3QgaXRlbSBj4bunYSBhdXRvY29tcGxldGVcbiAgICBoYW5kbGVVblNlbGVjdCgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGV2dCA9IHtcbiAgICAgICAgICAgIGl0ZW06ICRldmVudCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vblVuU2VsZWN0LmVtaXQoZXZ0KTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVGb2N1cyhldnQpIHtcbiAgICAgICAgaWYgKGV2dC50YXJnZXQudmFsdWUpIHtcbiAgICAgICAgICAgIGV2dC50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZ0KTtcbiAgICB9XG5cbiAgICBoYW5kbGVCbHVyKCRldmVudCkge1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KCk7XG4gICAgfVxuXG4gICAgaGFuZGxlS2V5VXAoZXZ0KSB7XG4gICAgICAgIGxldCBoaWRlU3VnZ2Vzc2lvbnMgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaGlkZVN1Z2dlc3Npb25zID0gZXZ0LnRhcmdldC5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5jaGlsZEVsZW1lbnRDb3VudCA9PSAxO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCAmJiB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICYmIGV2dC5rZXlDb2RlID09IDQwICYmIGhpZGVTdWdnZXNzaW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaGlkZVN1Z2dlc3Npb25zID0gZXZ0LnRhcmdldC5wYXJlbnROb2RlLmNoaWxkRWxlbWVudENvdW50ID09IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZ0LnRhcmdldC52YWx1ZSA9PSAnJyAmJiBoaWRlU3VnZ2Vzc2lvbnMgJiYgZXZ0LmtleUNvZGUgIT0gNDAgJiYgZXZ0LmtleUNvZGUgIT0gMzgpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHNlbGVjdCBpdGVtIHRyb25nIGVudGl0eSBwaWNrZXIgYm94IChLaMO0bmcgY+G6p24gZW1pdCBjaGFuZ2UpXG4gICAgaGFuZGxlU2VsZWN0RW50aXR5KGV2dCkge1xuICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoZXZ0KTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdW5zZWxlY3QgaXRlbSB0cm9uZyBlbnRpdHkgcGlja2VyIGJveCAoS2jDtG5nIGPhuqduIGVtaXQgY2hhbmdlKVxuICAgIGhhbmRsZVVuU2VsZWN0RW50aXR5KGV2dCkge1xuICAgICAgICB0aGlzLm9uVW5TZWxlY3QuZW1pdChldnQpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjaGFuZ2UgaXRlbSB0cm9uZyBlbnRpdHkgcGlja2VyIGJveFxuICAgIGhhbmRsZUNoYW5nZUVudGl0eShldnQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gZXZ0LnZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVB1cmVWYWx1ZSgpO1xuICAgICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICBfZnVuY0NoZWNrUmVhZE9ubHlJdGVtKGl0ZW06IGFueSkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seVZhbHVlcy5zb21lKHEgPT4gcSA9PSBpdGVtLnZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSkpIHtcbiAgICAgICAgICAgIGl0ZW0uX2Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVJlYWRPbmx5SXRlbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSAmJiB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZnVuY0NoZWNrUmVhZE9ubHlJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVTZWxlY3RlZFZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gW107XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2goaXRlbS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mdW5jQ2hlY2tSZWFkT25seUl0ZW0oaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHNlbGVjdGVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlUHVyZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlUHVyZVZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGRdKTtcbiAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VmFsdWVSZXR1cm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bmNSZXR1cm5WYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgIH1cblxuICAgIGZpcmVDaGFuZ2VFdmVudCgpIHtcbiAgICAgICAgY29uc3QgdmFsdWVSZXR1cm4gPSB0aGlzLmdldFZhbHVlUmV0dXJuKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2VCYXNlKHZhbHVlUmV0dXJuKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVSZXR1cm5cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlSGlkZShldnQpIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVBpY2tlciA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5kaXJ0eSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmluLCB0aGlzLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgdGhpcy5nZXREcm9wZG93bk9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKGRhdGFTb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sUGlja2VyLmJhc2VTZXJ2aWNlLmdldERhdGFEcm9wZG93bkJ5RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLCBPcGVyYXRvci5lcXVhbCwgdGhpcy52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IHRoaXMuZGF0YVNvdXJjZVswXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LmxhYmVsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2xpY2tTdWJtaXRCdXR0b24oZXZ0LCB1c2VyUGlja2VyQm94OiBVc2VyUGlja2VyQm94Q29tcG9uZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSGlkZShldnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSb3dEYXRhKSB7XG4gICAgICAgICAgICBpZiAodXNlclBpY2tlckJveCAmJiB1c2VyUGlja2VyQm94LmVudGl0eVBpY2tlckJveCkge1xuICAgICAgICAgICAgICAgIHVzZXJQaWNrZXJCb3guZW50aXR5UGlja2VyQm94LmhhbmRsZVBpY2sodGhpcy5zZWxlY3RlZFJvd0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybVBpY2tlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZVN0cnVjdHVyZURhdGFTb3VyY2Uoc291cmNlczogYW55W10pIHtcbiAgICAgICAgaWYgKHNvdXJjZXMgIT0gbnVsbCAmJiBzb3VyY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIEzhuqV5IHRow6ptIHRow7RuZyB0aW4gY2jhu6ljIHbhu6UgxJHhu4MgaGnhu4NuIHRo4buLXG4gICAgICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2Ygc291cmNlcykge1xuICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLnJlU3RydWN0dXJlSXRlbU9iamVjdChpdGVtKTtcbiAgICAgICAgICAgICAgICBhcnIucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubW9kaWZ5RGF0YVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb250cm9sUGlja2VyLm1vZGlmeURhdGFTZWxlY3RlZChhcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gYXJyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk6IFNlbGVjdEl0ZW0ge1xuICAgICAgICBjb25zdCB0ZW1wOiBTZWxlY3RJdGVtID0geyB2YWx1ZTogaXRlbSB9O1xuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCkge1xuICAgICAgICAgICAgdGVtcC5sYWJlbCA9IHRoaXMuY29udHJvbFBpY2tlci5mdW5jR2V0TGFiZWwoaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5kaXNwbGF5RmllbGQgIT09ICdmdWxsTmFtZU5ldycpIHtcbiAgICAgICAgICAgIHRlbXAubGFiZWwgPSBpdGVtW3RoaXMuY29udHJvbFBpY2tlci5kaXNwbGF5RmllbGRdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGVuRG9uVmkgPSBpdGVtLmxzdFRlbkRvblZpICYmIGl0ZW0ubHN0VGVuRG9uVmkubGVuZ3RoID4gMCA/IGl0ZW0ubHN0VGVuRG9uVmkuc3BsaXQoJywnKVswXSA6ICcnO1xuICAgICAgICAgICAgdGVtcC5sYWJlbCA9IChpdGVtLm1hQ2h1Y1Z1ID8gYCR7aXRlbS5tYUNodWNWdX0uIGAgOiAnJykgKyBgJHt0ZW1wLmxhYmVsIHx8IHRoaXMuZ2V0RGlzcGxheU5hbWUoaXRlbSl9YCArICh0ZW5Eb25WaSA/IGAgLSAke3RlbkRvblZpfWAgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGVtcC52YWx1ZS5fZHJvcGRvd252YWx1ZSA9IHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkO1xuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG5cbiAgICBnZXREaXNwbGF5TmFtZShpdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uZGlzcGxheU5hbWUgPyBpdGVtLmRpc3BsYXlOYW1lIDogaXRlbS5mdWxsTmFtZU5ldztcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVZhbHVlKG9iajogYW55KSB7XG4gICAgICAgIHRoaXMuaGFzVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKG9iaiAhPSBudWxsICYmIG9iai5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyczogRmlsdGVyW10gPSBbXTtcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmluLCBvYmopKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBhcHBlbmREZWZhdWx0RmlsdGVyKGZpbHRlcnMsIHRoaXMuY29udHJvbC5kZWZhdWx0RmlsdGVycyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcbiAgICAgICAgICAgICAgICApLnRoZW4oYXN5bmMgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gdGhpcy5kYXRhU291cmNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25BZGp1c3RlZFZhbHVlLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQWRqdXN0ZWRWYWx1ZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob2JqICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSAhaXNMaXRlcmFsT2JqZWN0KG9iaikgPyBvYmogOiBvYmpbdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLCBPcGVyYXRvci5lcXVhbCwgdmFsdWUpXSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREcm9wZG93bk9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICkudGhlbihhc3luYyByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSB0aGlzLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2VbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQWRqdXN0ZWRWYWx1ZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC5sYWJlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2sgJiYgdGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrLnNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjay5zZWxlY3QodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQWRqdXN0ZWRWYWx1ZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUJhc2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxufVxuIl19
|
|
632
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1waWNrZXIvdXNlci1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBRUgsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QixVQUFVLEVBQ1YsUUFBUSxFQUNSLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsUUFBUSxFQUNYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFB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QUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO29CQUNwRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztpQkFDOUI7YUFDSjtRQUNMLENBQUM7S0FBQTtJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7O1lBbnFCSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLHUzRkFBMkM7Z0JBRTNDLFNBQVMsRUFBRTtvQkFDUDt3QkFDSSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO3dCQUNsRCxLQUFLLEVBQUUsSUFBSTtxQkFDZDtvQkFDRCx1QkFBdUI7aUJBQzFCOzthQUNKOzs7WUE5Q0csUUFBUTtZQTZCSCxhQUFhO1lBRGIsZUFBZTs7OzhCQW9CbkIsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtzQkFJN0MsS0FBSzt3QkFDTCxLQUFLO3lCQUtMLEtBQUs7dUJBQ0wsS0FBSzt1QkFDTCxLQUFLOzZCQUVMLEtBQUs7cUJBU0wsTUFBTTt1QkFDTixNQUFNLFNBQUMsVUFBVTt5QkFDakIsTUFBTSxTQUFDLFlBQVk7d0JBQ25CLE1BQU0sU0FBQyxXQUFXO3NCQUNsQixNQUFNLFNBQUMsU0FBUztxQkFDaEIsTUFBTSxTQUFDLFFBQVE7c0JBQ2YsTUFBTSxTQUFDLFNBQVM7OEJBQ2hCLE1BQU0sU0FBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xuaW1wb3J0IHsgaXNMaXRlcmFsT2JqZWN0IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnZpcm9ubWVudC1zY2hlbWEnO1xuaW1wb3J0IHtcbiAgICBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hLFxuICAgIENydWRMaXN0U2V0dGluZyxcbiAgICBEcm9wZG93bkNvbnRyb2xTY2hlbWEsXG4gICAgRHJvcGRvd25PcHRpb25zLFxuICAgIEVudGl0eVBpY2tlckNvbHVtbixcbiAgICBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hLFxuICAgIEhlaWdodFR5cGUsXG4gICAgT3BlcmF0b3IsXG4gICAgUG9wdXBTaXplLFxuICAgIFVzZXJQaWNrZXJDb250cm9sU2NoZW1hLFxuICAgIFVzZXJUeXBlXG59IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IERtQ2h1Y1Z1U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RtLWNodWN2dS5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJWNVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLXY1LnNlcnZpY2UnO1xuaW1wb3J0IHsgYXBwZW5kRGVmYXVsdEZpbHRlciB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbW1vbic7XG5pbXBvcnQgeyBBZHZhbmNlRGF0YUVudGl0eVBpY2tlciB9IGZyb20gJy4uL2VudGl0eS1waWNrZXIvbW9kZWwvYWR2YW5jZS1kYXRhJztcbmltcG9ydCB7IFVzZXJQaWNrZXJCb3hDb21wb25lbnQgfSBmcm9tICcuL3VzZXItcGlja2VyLWJveC91c2VyLXBpY2tlci1ib3guY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd1c2VyLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VzZXItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91c2VyLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFVzZXJQaWNrZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ29tcG9uZW50Q29udGV4dFNlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyQ2h1Y1Z1UmVmJywgeyBzdGF0aWM6IHRydWUgfSkgZmlsdGVyQ2h1Y1Z1UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIG9uQ2hhbmdlQmFzZTogRnVuY3Rpb247XG4gICAgb25Ub3VjaGVkOiBGdW5jdGlvbjtcblxuICAgIEBJbnB1dCgpIGNvbnRyb2w6IFVzZXJQaWNrZXJDb250cm9sU2NoZW1hO1xuICAgIEBJbnB1dCgpIHBvcHVwU2l6ZTogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSh7XG4gICAgICAgIHdpZHRoOiAxMTAwLFxuICAgICAgICBoZWlnaHQ6IDkwMCxcbiAgICAgICAgbWF4aW1pemU6IHRydWVcbiAgICB9KTtcbiAgICBASW5wdXQoKSBoaWRkZW5Db2xzOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBfcmVhZE9ubHlWYWx1ZXM6IHN0cmluZ1tdO1xuICAgIEBJbnB1dCgpIHNldCByZWFkT25seVZhbHVlcyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICAgICAgdGhpcy5fcmVhZE9ubHlWYWx1ZXMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVGdW5jQ2hlY2tSZWFkT25seUl0ZW0oKTtcbiAgICAgICAgdGhpcy51cGRhdGVSZWFkT25seUl0ZW0oKTtcbiAgICB9XG4gICAgZ2V0IHJlYWRPbmx5VmFsdWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlWYWx1ZXM7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoJ29uU2VsZWN0Jykgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgnb25VblNlbGVjdCcpIG9uVW5TZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgnb25DaGFuZ2VkJykgb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoJ29uRm9jdXMnKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoJ29uQmx1cicpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCdvblJlYWR5Jykgb25SZWFkeTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCdvbkFkanVzdGVkVmFsdWUnKSBvbkFkanVzdGVkVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBjb250cm9sUGlja2VyOiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hO1xuICAgIHNldHRpbmdQaWNrZXI6IENydWRMaXN0U2V0dGluZyA9IG5ldyBDcnVkTGlzdFNldHRpbmcoKTtcbiAgICBhZHZhbmNlRGF0YVBpY2tlcjogQWR2YW5jZURhdGFFbnRpdHlQaWNrZXIgPSBuZXcgQWR2YW5jZURhdGFFbnRpdHlQaWNrZXIoKTtcblxuICAgIHZhbHVlOiBhbnk7XG4gICAgZnVuY1JldHVyblZhbHVlOiAodmFsdWUpID0+IHt9ID0gdmFsdWUgPT4gdmFsdWU7XG4gICAgc2VsZWN0ZWRSb3dEYXRhOiBhbnk7XG4gICAgc2VsZWN0ZWRWYWx1ZTogYW55O1xuICAgIHNlbGVjdGVkVmFsdWVPYmplY3Q6IGFueTtcbiAgICBkYXRhU291cmNlOiBhbnlbXSA9IFtdO1xuICAgIGZ1bmNDaGVja1JlYWRPbmx5SXRlbTogKGl0ZW06IGFueSkgPT4gdm9pZDtcblxuICAgIGZpZWxkU2VhcmNoVGV4dDogc3RyaW5nW10gPSBbXTtcblxuICAgIHJlc3VsdHM6IGFueVtdID0gW107XG5cbiAgICBzaG93Rm9ybVBpY2tlciA9IGZhbHNlO1xuICAgIGRpcnR5ID0gZmFsc2U7XG5cbiAgICB0b29sdGlwID0gJyc7XG4gICAgaGFzVmFsdWUgPSBmYWxzZTtcbiAgICBzZWFyY2hTY2hlbWE6IGFueSA9IHt9O1xuICAgIHNlYXJjaERhdGE6IGFueSA9IHt9O1xuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJPblNlYXJjaD86IEZ1bmN0aW9uO1xuICAgIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHB1YmxpYyBfdXNlclY1U2VydmljZTogVXNlclY1U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZG1fQ2h1Y1Z1U2VydmljZTogRG1DaHVjVnVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSBfaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudCA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGNvbW1vbkZpZWxkUGx1cyA9ICdtYUNodWNWdSxsc3RUZW5Eb25WaSc7XG4gICAgICAgIHRoaXMuY29udHJvbFBpY2tlciA9IG5ldyBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgIC4uLnRoaXMuY29udHJvbCxcbiAgICAgICAgICAgIGZpZWxkOiAnYXJySWROZ3VvaUR1bmcnLFxuICAgICAgICAgICAgbGFiZWw6ICdOZ8aw4budaSBkw7luZycsXG4gICAgICAgICAgICB0aXRsZTogJ0No4buNbiBuZ8aw4budaSBkw7luZycsXG4gICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclY1U2VydmljZSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGlzcGxheUZpZWxkOiB0aGlzLmNvbnRyb2wuZ2V0RGlzcGxheU5hbWUgPyAnZGlzcGxheU5hbWUnIDogdGhpcy5jb250cm9sLmRpc3BsYXlGaWVsZCxcbiAgICAgICAgICAgIGZpZWxkUGx1czogdGhpcy5jb250cm9sLmZpZWxkUGx1cyA/IGAke3RoaXMuY29udHJvbC5maWVsZFBsdXN9LCR7Y29tbW9uRmllbGRQbHVzfWAgOiBjb21tb25GaWVsZFBsdXMsXG4gICAgICAgICAgICB2YWx1ZUZpZWxkOiB0aGlzLmNvbnRyb2wudmFsdWVGaWVsZCxcbiAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcnMgPSBbXTtcbiAgICAgICAgICAgICAgICBhd2FpdCBhcHBlbmREZWZhdWx0RmlsdGVyKGZpbHRlcnMsIHRoaXMuY29udHJvbC5kZWZhdWx0RmlsdGVycyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLkFERCkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2xvY2tvdXRFbmFibGVkJywgT3BlcmF0b3IuZXF1YWwsIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG11bHRpcGxlOiB0aGlzLmNvbnRyb2wubXVsdGlwbGUsXG4gICAgICAgICAgICBmdW5jR2V0TGFiZWw6IChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwpIHJldHVybiB0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmRpc3BsYXlOYW1lID8/IHRoaXMuX3VzZXJWNVNlcnZpY2UuZ2V0VXNlck5hbWUoaXRlbSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gcGFnZVNpemU6IHRoaXMuY29udHJvbC5wYWdlU2l6ZSxcbiAgICAgICAgICAgIC8vIGZpZWxkUGx1czogJ2hvLHRlbicsXG4gICAgICAgICAgICAvLyBmaWVsZFNlYXJjaFRleHQ6IFsnaG8nLCAndGVuJ10sXG4gICAgICAgICAgICAvLyBhZnRlckdldERhdGE6IHRoaXMuZ2VuZXJhdGVIb1RlbixcbiAgICAgICAgICAgIC8vIGFmdGVyR2V0RGF0YVVuUGlja2VkOiB0aGlzLmdlbmVyYXRlSG9UZW4sXG4gICAgICAgICAgICAvLyBhZnRlckdldERhdGFQaWNrZWQ6IHRoaXMuZ2VuZXJhdGVIb1RlbixcbiAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMuY29udHJvbC5jb2x1bW5zIHx8IFtcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdUw6BpIGtob+G6o24nLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAndXNlck5hbWUnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDBweCdcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdNw6MnLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnY29kZScsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE2MHB4J1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnZnVsbE5hbWVOZXcnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxNjBweCdcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdIw7JtIHRoxrAnLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE2MHB4J1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyB24bulJyxcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ2xzdFRlbkNodWNWdScsXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvZGU6ICdtYUNodWNWdScsXG4gICAgICAgICAgICAgICAgICAgIC8vIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbV9DaHVjVnVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUZpbHRlcjogdGhpcy5maWx0ZXJDaHVjVnVSZWYsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTYwcHgnXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnR2nhuqNuZyB2acOqbicsXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICdpc0dpYW5nVmllbicsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnOTBweCcsXG4gICAgICAgICAgICAgICAgICAgIGlzRGlzcGxheTogdGhpcy5jb250cm9sLnVzZXJUeXBlID09PSBVc2VyVHlwZS5DYW5CbyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDaHV5w6puIHZpw6puJyxcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ2lzQ2h1eWVuVmllbicsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnOTBweCcsXG4gICAgICAgICAgICAgICAgICAgIGlzRGlzcGxheTogdGhpcy5jb250cm9sLnVzZXJUeXBlID09PSBVc2VyVHlwZS5DYW5CbyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG1kV2lkdGg6IDEyXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZpZWxkU2VhcmNoVGV4dCA9IFsuLi50aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRTZWFyY2hUZXh0XTtcbiAgICAgICAgLy8gQ8WpXG4gICAgICAgIC8vIGlmICghdGhpcy5maWVsZFNlYXJjaFRleHQuc29tZShpdGVtID0+IGl0ZW0gPT0gdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCkpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuZmllbGRTZWFyY2hUZXh0LnB1c2godGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICAvLyBN4bubaSAtIE7hur91IGtvIGPDsyBmaWVsZFNlYXJjaFRleHQgdGjDrCBkw7luZyBkaXNwbGF5RmllbGQgxJHhu4Mgc2VhcmNoXG4gICAgICAgIGlmICh0aGlzLmZpZWxkU2VhcmNoVGV4dC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZFNlYXJjaFRleHQucHVzaCh0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOG6qG4gY+G7mXQga2hpIGPDsyBnacOhIHRy4buLIMSRxrDhu6NjIHRyeeG7gW4gdsOgbyBoaWRkZW5Db2xzXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuaGlkZGVuQ29scy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5jb2x1bW5zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5oaWRkZW5Db2xzLmluY2x1ZGVzKGl0ZW0uY29kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pc0Rpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5yZXR1cm5UeXBlID09ICd2YWx1ZScpIHtcbiAgICAgICAgICAgIHRoaXMuZnVuY1JldHVyblZhbHVlID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZ1bmNSZXR1cm5WYWx1ZSA9IHZhbHVlID0+IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJLZXl3b3JkKCk7XG4gICAgICAgIHRoaXMuYnVpbGRTZXR0aW5nRW50aXR5UGlja2VyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlU2NoZW1hU2VhcmNoKCk7XG4gICAgICAgIHRoaXMudXBkYXRlRnVuY0NoZWNrUmVhZE9ubHlJdGVtKCk7XG4gICAgICAgIHRoaXMub25SZWFkeS5lbWl0KCk7XG4gICAgICAgIHRoaXMub25Jbml0LmVtaXQodGhpcyk7XG4gICAgfVxuXG4gICAgdXBkYXRlRnVuY0NoZWNrUmVhZE9ubHlJdGVtKCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seVZhbHVlcyAmJiB0aGlzLnJlYWRPbmx5VmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5mdW5jQ2hlY2tSZWFkT25seUl0ZW0gPSB0aGlzLl9mdW5jQ2hlY2tSZWFkT25seUl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZ1bmNDaGVja1JlYWRPbmx5SXRlbSA9IChpdGVtOiBhbnkpID0+IHsgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZVNjaGVtYVNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hTY2hlbWEuaWRDaHVjVnVzID0gbmV3IERyb3Bkb3duQ29udHJvbFNjaGVtYSh7XG4gICAgICAgICAgICBmaWVsZDogJ2lkQ2h1Y1Z1cycsXG4gICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQ2jhu41uIGNo4bupYyB24bulJyxcbiAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbV9DaHVjVnVTZXJ2aWNlLFxuICAgICAgICAgICAgc29ydEZpZWxkOiAnc29UaHVUdScsXG4gICAgICAgICAgICBsb2FkT25Jbml0OiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGJ1aWxkRmlsdGVyS2V5d29yZCgpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSB0aGlzLmNvbnRyb2xQaWNrZXIub3BlcmF0b3JGaWVsZFNlYXJjaFRleHQgPz8gT3BlcmF0b3IuY29udGFpbjtcbiAgICAgICAgaWYgKHRoaXMuZmllbGRTZWFyY2hUZXh0Lmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlck9uU2VhcmNoID0gdmFsdWUgPT4gdGhpcy5uZXdGaWx0ZXIodGhpcy5maWVsZFNlYXJjaFRleHRbMF0sIG9wZXJhdG9yLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlck9uU2VhcmNoID0gdmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBGaWx0ZXIoe1xuICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ29yJyxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW11cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkU2VhcmNoIG9mIHRoaXMuZmllbGRTZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoZmllbGRTZWFyY2gsIG9wZXJhdG9yLCB2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1aWxkU2V0dGluZ0VudGl0eVBpY2tlcigpIHtcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmNvbHMgPSBbXTtcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLnRpdGxlID0gJyc7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIucGFnZVNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5wYWdlU2V0dGluZy5wYWdlU2l6ZSA9IHRoaXMuY29udHJvbFBpY2tlci5wYWdlU2l6ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuYmFzZVNlcnZpY2UgPSB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2U7XG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuaGlkZGVuQ2hlY2tib3ggPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuc2V0dGluZ0tleSA9ICd1c2VyUGlja2VyJztcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmhpZGRlblNldHRpbmdXb3JrZmxvdyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5oaWRkZW5TZXR0aW5nUGVybWlzc2lvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5maWVsZFNlYXJjaFRleHQgPSB0aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRTZWFyY2hUZXh0O1xuICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmlzRGlzcGxheSkge1xuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uZGF0YVR5cGUgPT0gJ2N1c3RvbScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmNvbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogY29sdW1uLmNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGNvbHVtbi5sYWJlbCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IGNvbHVtbi5iYXNlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6IGNvbHVtbi52YWx1ZUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiBjb2x1bW4uZGlzcGxheUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRQbHVzOiBjb2x1bW4uZmllbGRQbHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydEZpZWxkOiBjb2x1bW4uc29ydEZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydERpcjogY29sdW1uLnNvcnREaXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jR2V0TGFiZWw6IGNvbHVtbi5mdW5jR2V0TGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBjb2x1bW4uZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwQ29kZTogY29sdW1uLmdyb3VwQ29kZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5jb2xzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5jb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChjb2x1bW4ubGFiZWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkdmFuY2VEYXRhUGlja2VyLmZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKCk7XG4gICAgfVxuXG4gICAgLy8gTOG6pXkgdW5pb24gY+G7p2E6IHNlbGVjdGVkRmllbGQsIGZpZWxkUGx1cywgZGlzcGxheSBmaWVsZHMgY8OzIHRyb25nIHRhYmxlLlxuICAgIGdldEZpZWxkcygpIHtcbiAgICAgICAgY29uc3QgYXJyRmllbGQ6IHN0cmluZ1tdID0gW3RoaXMuY29udHJvbFBpY2tlci5kaXNwbGF5RmllbGQsICdpZCddO1xuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQgJiYgdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQgIT0gJ2lkJykge1xuICAgICAgICAgICAgYXJyRmllbGQucHVzaCh0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLmZpZWxkUGx1cykge1xuICAgICAgICAgICAgYXJyRmllbGQucHVzaCguLi50aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRQbHVzLnNwbGl0KCcsJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJyRGlzcGxheUZpZWxkID0gdGhpcy5jb250cm9sUGlja2VyLmNvbHVtbnNcbiAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4LmlzRGlzcGxheSA9PSB0cnVlICYmICF4Lm5vdEluRmllbGRzICYmIHguZGF0YVR5cGUgIT0gJ2N1c3RvbScpXG4gICAgICAgICAgICAubWFwKHggPT4geC5jb2RlKTtcblxuICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLmFkZERpc3RpbmN0KGFyckRpc3BsYXlGaWVsZCwgYXJyRmllbGQpO1xuICAgICAgICByZXR1cm4gYXJyRmllbGQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBnZXREcm9wZG93bk9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRHJvcGRvd25PcHRpb25zKHtcbiAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCxcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6IHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLFxuICAgICAgICAgICAgZmllbGRQbHVzOiB0aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRQbHVzLFxuICAgICAgICAgICAgZnVuY0dldExhYmVsOiB0aGlzLmNvbnRyb2xQaWNrZXIuZnVuY0dldExhYmVsLFxuICAgICAgICAgICAgcGx1c1VybDogdGhpcy5jb250cm9sUGlja2VyLnBsdXNVcmxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2hvd1BpY2tGb3JtKCkge1xuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1QaWNrZXIgPSB0cnVlO1xuICAgIH1cblxuICAgIGFzeW5jIGdldERhdGEoa2V5V29yZCkge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW107XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCwgT3BlcmF0b3Iubm90SW4sIHRoaXMudmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLCBPcGVyYXRvci5ub3RFcXVhbCwgdGhpcy52YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgYXBwZW5kRGVmYXVsdEZpbHRlcihmaWx0ZXJzLCB0aGlzLmNvbnRyb2wuZGVmYXVsdEZpbHRlcnMpO1xuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuQUREKSB7XG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2xvY2tvdXRFbmFibGVkJywgT3BlcmF0b3IuZXF1YWwsIGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleVdvcmQgJiYga2V5V29yZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5nZXRGaWx0ZXJPblNlYXJjaChrZXlXb3JkKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IGF3YWl0IHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcbiAgICAgICAgICAgIGZpbHRlcnMsIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UoZGF0YVNvdXJjZSk7XG4gICAgICAgIHRoaXMucmVzdWx0cyA9IHRoaXMuZGF0YVNvdXJjZTtcbiAgICAgICAgLy8gUmV0dXJuIMSR4buDIG3hu5l0IHPhu5EgbsahaSBraMOhYyBkw7luZywgayByZW1vdmVcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0cztcbiAgICB9XG5cbiAgICBzZWFyY2goZXZlbnQpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKGV2ZW50LnF1ZXJ5KTtcbiAgICB9XG5cbiAgICBjbGVhclZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xuICAgICAgICB0aGlzLmhhc1ZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25VblNlbGVjdC5lbWl0KHtcbiAgICAgICAgICAgIGl0ZW06IHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZUV2ZW50KCk7XG4gICAgfVxuXG4gICAgaGFuZGxlUm93U2VsZWN0KGl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0RhdGEgPSBpdGVtO1xuICAgIH1cblxuICAgIC8vIFNlbGVjdCBpdGVtIGPhu6dhIGF1dG9jb21wbGV0ZVxuICAgIGhhbmRsZVNlbGVjdChpdGVtKSB7XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBldnQgPSB7XG4gICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRWYWx1ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoZXZ0KTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjayAmJiB0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2suc2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2suc2VsZWN0KGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQuG7jyBzZWxlY3QgaXRlbSBj4bunYSBhdXRvY29tcGxldGVcbiAgICBoYW5kbGVVblNlbGVjdCgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGV2dCA9IHtcbiAgICAgICAgICAgIGl0ZW06ICRldmVudCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vblVuU2VsZWN0LmVtaXQoZXZ0KTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVGb2N1cyhldnQpIHtcbiAgICAgICAgaWYgKGV2dC50YXJnZXQudmFsdWUpIHtcbiAgICAgICAgICAgIGV2dC50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZ0KTtcbiAgICB9XG5cbiAgICBoYW5kbGVCbHVyKCRldmVudCkge1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KCk7XG4gICAgfVxuXG4gICAgaGFuZGxlS2V5VXAoZXZ0KSB7XG4gICAgICAgIGxldCBoaWRlU3VnZ2Vzc2lvbnMgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaGlkZVN1Z2dlc3Npb25zID0gZXZ0LnRhcmdldC5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5jaGlsZEVsZW1lbnRDb3VudCA9PSAxO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCAmJiB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICYmIGV2dC5rZXlDb2RlID09IDQwICYmIGhpZGVTdWdnZXNzaW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaGlkZVN1Z2dlc3Npb25zID0gZXZ0LnRhcmdldC5wYXJlbnROb2RlLmNoaWxkRWxlbWVudENvdW50ID09IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZ0LnRhcmdldC52YWx1ZSA9PSAnJyAmJiBoaWRlU3VnZ2Vzc2lvbnMgJiYgZXZ0LmtleUNvZGUgIT0gNDAgJiYgZXZ0LmtleUNvZGUgIT0gMzgpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHNlbGVjdCBpdGVtIHRyb25nIGVudGl0eSBwaWNrZXIgYm94IChLaMO0bmcgY+G6p24gZW1pdCBjaGFuZ2UpXG4gICAgaGFuZGxlU2VsZWN0RW50aXR5KGV2dCkge1xuICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoZXZ0KTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdW5zZWxlY3QgaXRlbSB0cm9uZyBlbnRpdHkgcGlja2VyIGJveCAoS2jDtG5nIGPhuqduIGVtaXQgY2hhbmdlKVxuICAgIGhhbmRsZVVuU2VsZWN0RW50aXR5KGV2dCkge1xuICAgICAgICB0aGlzLm9uVW5TZWxlY3QuZW1pdChldnQpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjaGFuZ2UgaXRlbSB0cm9uZyBlbnRpdHkgcGlja2VyIGJveFxuICAgIGhhbmRsZUNoYW5nZUVudGl0eShldnQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gZXZ0LnZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVB1cmVWYWx1ZSgpO1xuICAgICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICBfZnVuY0NoZWNrUmVhZE9ubHlJdGVtKGl0ZW06IGFueSkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seVZhbHVlcy5zb21lKHEgPT4gcSA9PSBpdGVtLnZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSkpIHtcbiAgICAgICAgICAgIGl0ZW0uX2Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVJlYWRPbmx5SXRlbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSAmJiB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZnVuY0NoZWNrUmVhZE9ubHlJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVTZWxlY3RlZFZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gW107XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2goaXRlbS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mdW5jQ2hlY2tSZWFkT25seUl0ZW0oaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHNlbGVjdGVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlUHVyZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlUHVyZVZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGRdKTtcbiAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VmFsdWVSZXR1cm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bmNSZXR1cm5WYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgIH1cblxuICAgIGZpcmVDaGFuZ2VFdmVudCgpIHtcbiAgICAgICAgY29uc3QgdmFsdWVSZXR1cm4gPSB0aGlzLmdldFZhbHVlUmV0dXJuKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2VCYXNlKHZhbHVlUmV0dXJuKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVSZXR1cm5cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlSGlkZShldnQpIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVBpY2tlciA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5kaXJ0eSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmluLCB0aGlzLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgdGhpcy5nZXREcm9wZG93bk9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKGRhdGFTb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sUGlja2VyLmJhc2VTZXJ2aWNlLmdldERhdGFEcm9wZG93bkJ5RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLCBPcGVyYXRvci5lcXVhbCwgdGhpcy52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IHRoaXMuZGF0YVNvdXJjZVswXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LmxhYmVsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2xpY2tTdWJtaXRCdXR0b24oZXZ0LCB1c2VyUGlja2VyQm94OiBVc2VyUGlja2VyQm94Q29tcG9uZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSGlkZShldnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSb3dEYXRhKSB7XG4gICAgICAgICAgICBpZiAodXNlclBpY2tlckJveCAmJiB1c2VyUGlja2VyQm94LmVudGl0eVBpY2tlckJveCkge1xuICAgICAgICAgICAgICAgIHVzZXJQaWNrZXJCb3guZW50aXR5UGlja2VyQm94LmhhbmRsZVBpY2sodGhpcy5zZWxlY3RlZFJvd0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybVBpY2tlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZVN0cnVjdHVyZURhdGFTb3VyY2Uoc291cmNlczogYW55W10pIHtcbiAgICAgICAgaWYgKHNvdXJjZXMgIT0gbnVsbCAmJiBzb3VyY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIEzhuqV5IHRow6ptIHRow7RuZyB0aW4gY2jhu6ljIHbhu6UgxJHhu4MgaGnhu4NuIHRo4buLXG4gICAgICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2Ygc291cmNlcykge1xuICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLnJlU3RydWN0dXJlSXRlbU9iamVjdChpdGVtKTtcbiAgICAgICAgICAgICAgICBhcnIucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubW9kaWZ5RGF0YVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb250cm9sUGlja2VyLm1vZGlmeURhdGFTZWxlY3RlZChhcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gYXJyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk6IFNlbGVjdEl0ZW0ge1xuICAgICAgICBjb25zdCB0ZW1wOiBTZWxlY3RJdGVtID0geyB2YWx1ZTogaXRlbSB9O1xuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCkge1xuICAgICAgICAgICAgdGVtcC5sYWJlbCA9IHRoaXMuY29udHJvbFBpY2tlci5mdW5jR2V0TGFiZWwoaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5kaXNwbGF5RmllbGQgIT09ICdmdWxsTmFtZU5ldycpIHtcbiAgICAgICAgICAgIHRlbXAubGFiZWwgPSBpdGVtW3RoaXMuY29udHJvbFBpY2tlci5kaXNwbGF5RmllbGRdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGVuRG9uVmkgPSBpdGVtLmxzdFRlbkRvblZpICYmIGl0ZW0ubHN0VGVuRG9uVmkubGVuZ3RoID4gMCA/IGl0ZW0ubHN0VGVuRG9uVmkuc3BsaXQoJywnKVswXSA6ICcnO1xuICAgICAgICAgICAgdGVtcC5sYWJlbCA9IChpdGVtLm1hQ2h1Y1Z1ID8gYCR7aXRlbS5tYUNodWNWdX0uIGAgOiAnJykgKyBgJHt0ZW1wLmxhYmVsIHx8IHRoaXMuZ2V0RGlzcGxheU5hbWUoaXRlbSl9YCArICh0ZW5Eb25WaSA/IGAgLSAke3RlbkRvblZpfWAgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGVtcC52YWx1ZS5fZHJvcGRvd252YWx1ZSA9IHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkO1xuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG5cbiAgICBnZXREaXNwbGF5TmFtZShpdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uZGlzcGxheU5hbWUgPyBpdGVtLmRpc3BsYXlOYW1lIDogaXRlbS5mdWxsTmFtZU5ldztcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVZhbHVlKG9iajogYW55KSB7XG4gICAgICAgIHRoaXMuaGFzVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKG9iaiAhPSBudWxsICYmIG9iai5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyczogRmlsdGVyW10gPSBbXTtcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmluLCBvYmopKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBhcHBlbmREZWZhdWx0RmlsdGVyKGZpbHRlcnMsIHRoaXMuY29udHJvbC5kZWZhdWx0RmlsdGVycyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcbiAgICAgICAgICAgICAgICApLnRoZW4oYXN5bmMgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gdGhpcy5kYXRhU291cmNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25BZGp1c3RlZFZhbHVlLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQWRqdXN0ZWRWYWx1ZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob2JqICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSAhaXNMaXRlcmFsT2JqZWN0KG9iaikgPyBvYmogOiBvYmpbdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkLCBPcGVyYXRvci5lcXVhbCwgdmFsdWUpXSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREcm9wZG93bk9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICkudGhlbihhc3luYyByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSB0aGlzLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2VbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQWRqdXN0ZWRWYWx1ZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC5sYWJlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2sgJiYgdGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrLnNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjay5zZWxlY3QodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQWRqdXN0ZWRWYWx1ZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUJhc2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxufVxuIl19
|
package/fesm2015/tnx-shared.js
CHANGED
|
@@ -38672,6 +38672,7 @@ class UserPickerSetting {
|
|
|
38672
38672
|
}
|
|
38673
38673
|
const DatasourceFieldFilter = [
|
|
38674
38674
|
{ id: 'userName', ten: 'Tài khoản' },
|
|
38675
|
+
{ id: 'code', ten: 'Mã' },
|
|
38675
38676
|
{ id: 'email', ten: 'Email' },
|
|
38676
38677
|
];
|
|
38677
38678
|
const DatasourceFilterCanBo = [
|
|
@@ -46915,6 +46916,14 @@ class UserPickerComponent extends ComponentBase {
|
|
|
46915
46916
|
fullTextSearch: true,
|
|
46916
46917
|
width: '100px'
|
|
46917
46918
|
}),
|
|
46919
|
+
new EntityPickerColumn({
|
|
46920
|
+
label: 'Mã',
|
|
46921
|
+
code: 'code',
|
|
46922
|
+
dataType: 'string',
|
|
46923
|
+
operator: Operator.contain,
|
|
46924
|
+
fullTextSearch: true,
|
|
46925
|
+
width: '160px'
|
|
46926
|
+
}),
|
|
46918
46927
|
new EntityPickerColumn({
|
|
46919
46928
|
label: 'Họ và tên',
|
|
46920
46929
|
code: 'fullNameNew',
|