tnx-shared 5.2.20 → 5.2.21
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/app-context/component-context.service.d.ts.map +1 -1
- package/classes/base/component-base.d.ts +1 -1
- package/classes/public-function.d.ts +3 -2
- package/classes/public-function.d.ts.map +1 -1
- package/components/chat/chat-box/chat-box.component.d.ts +1 -1
- package/components/dropdown/services/dropdown.service.d.ts.map +1 -1
- package/components/file-explorer/services/file-explorer-new.service.d.ts.map +1 -1
- package/components/file-explorer/services/file-explorer.service.d.ts.map +1 -1
- package/components/file-explorer/services/file-version.service.d.ts.map +1 -1
- package/components/file-explorer/services/folder.service.d.ts.map +1 -1
- package/components/file-explorer/services/ky-so-sim-signPDF.service.d.ts.map +1 -1
- package/components/file-explorer/services/my-drive.service.d.ts.map +1 -1
- package/components/tn-app-help/services/path-name.service.d.ts.map +1 -1
- package/congviec/congviec/services/congviec-dinhkem.service.d.ts.map +1 -1
- package/esm2020/app-context/component-context.service.mjs +4 -5
- package/esm2020/classes/base/component-base.mjs +2 -2
- package/esm2020/components/common-app-component/common-app-component.mjs +2 -2
- package/esm2020/components/crud/crud-form/crud-form.component.mjs +1 -1
- package/esm2020/components/dropdown/services/dropdown.service.mjs +5 -5
- package/esm2020/components/file-explorer/file-ky-so-sim/file-ky-so-sim.component.mjs +1 -1
- package/esm2020/components/file-explorer/file-manager/file-manager.component.mjs +2 -2
- package/esm2020/components/file-explorer/file-viewer/file-viewer.component.mjs +3 -3
- package/esm2020/components/file-explorer/services/file-explorer-new.service.mjs +39 -40
- package/esm2020/components/file-explorer/services/file-explorer.service.mjs +48 -51
- package/esm2020/components/file-explorer/services/file-version.service.mjs +5 -4
- package/esm2020/components/file-explorer/services/folder.service.mjs +3 -3
- package/esm2020/components/file-explorer/services/ky-so-sim-signPDF.service.mjs +3 -2
- package/esm2020/components/file-explorer/services/my-drive.service.mjs +34 -34
- package/esm2020/components/mask/mask.component.mjs +1 -1
- package/esm2020/components/number-picker-range/number-picker-range.component.mjs +1 -1
- package/esm2020/components/tn-app-help/services/path-name.service.mjs +4 -3
- package/esm2020/components/tn-tinymce/tn-tinymce.component.mjs +2 -2
- package/esm2020/components/user-picker/user-picker-box/user-picker-box.component.mjs +1 -1
- package/esm2020/components/workflow/workflow-history-new/workflow-history-new.component.mjs +1 -1
- package/esm2020/congviec/cauhinh-workflow/cauhinh-workflow.component.mjs +1 -1
- package/esm2020/congviec/congviec/services/congviec-dinhkem.service.mjs +5 -4
- package/esm2020/services/article.service.mjs +10 -13
- package/esm2020/services/base.service.mjs +36 -41
- package/esm2020/services/custom-router.service.mjs +4 -5
- package/esm2020/services/entity-picker.service.mjs +4 -3
- package/esm2020/services/file-object-v4.service.mjs +5 -7
- package/esm2020/services/high-performance.service.mjs +4 -3
- package/esm2020/services/master-data.service.mjs +23 -30
- package/esm2020/services/organization.service.mjs +18 -23
- package/esm2020/services/template-v4.service.mjs +3 -2
- package/esm2020/services/template.service.mjs +19 -27
- package/esm2020/services/templateinstance.service.mjs +22 -31
- package/esm2020/services/tn-client.service.mjs +3 -3
- package/esm2020/services/unique-number.service.mjs +4 -3
- package/esm2020/services/user-v5.service.mjs +31 -39
- package/esm2020/services/user.service.mjs +32 -40
- package/fesm2015/tnx-shared.mjs +334 -409
- package/fesm2015/tnx-shared.mjs.map +1 -1
- package/fesm2020/tnx-shared.mjs +334 -409
- package/fesm2020/tnx-shared.mjs.map +1 -1
- package/package.json +2 -2
- package/services/article.service.d.ts.map +1 -1
- package/services/base.service.d.ts.map +1 -1
- package/services/common.service.d.ts +2 -2
- package/services/custom-router.service.d.ts.map +1 -1
- package/services/entity-picker.service.d.ts.map +1 -1
- package/services/file-object-v4.service.d.ts.map +1 -1
- package/services/high-performance.service.d.ts.map +1 -1
- package/services/master-data.service.d.ts.map +1 -1
- package/services/organization.service.d.ts.map +1 -1
- package/services/template-v4.service.d.ts.map +1 -1
- package/services/template.service.d.ts.map +1 -1
- package/services/templateinstance.service.d.ts.map +1 -1
- package/services/unique-number.service.d.ts.map +1 -1
- package/services/user-v5.service.d.ts.map +1 -1
- package/services/user.service.d.ts.map +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { firstValueFrom } from 'rxjs';
|
|
2
3
|
import { catchError } from 'rxjs/operators';
|
|
3
4
|
import { EnumControlPickerType } from '../classes/constants';
|
|
4
5
|
import { EntityPickerColumn, Operator } from '../classes/form-schema';
|
|
@@ -1037,8 +1038,8 @@ export class EntityPickerService extends BaseService {
|
|
|
1037
1038
|
return this.defaultGet(apiUrl);
|
|
1038
1039
|
}
|
|
1039
1040
|
getPaged(gridInfo, endpoint) {
|
|
1040
|
-
return this._http.post(endpoint, gridInfo)
|
|
1041
|
-
.pipe(catchError(err => this.handleError(err, this._injector)))
|
|
1041
|
+
return firstValueFrom(this._http.post(endpoint, gridInfo)
|
|
1042
|
+
.pipe(catchError(err => this.handleError(err, this._injector))));
|
|
1042
1043
|
}
|
|
1043
1044
|
getTeacherFullPickerTemplate(control) {
|
|
1044
1045
|
// TODO: Upgrade later
|
|
@@ -1147,4 +1148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1147
1148
|
providedIn: 'root'
|
|
1148
1149
|
}]
|
|
1149
1150
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.Injector }, { type: i2.UserService }, { type: i3.MasterDataService }, { type: i4.OrganizationService }, { type: i5.CanBo_HoSoService }, { type: i6.tbl_HocPhanService }, { type: i7.CoCauToChucService }, { type: i8.tbl_DM_NguoiHoc_HeDaoTaoService }, { type: i9.tbl_HeThong_NamHocService }, { type: i10.tbl_DM_KhoaHocService }, { type: i11.tbl_ChuongTrinhDaoTaoService }]; } });
|
|
1150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXBpY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvc2VydmljZXMvZW50aXR5LXBpY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBbUMsa0JBQWtCLEVBQUUsUUFBUSxFQUEyQixNQUFNLHdCQUF3QixDQUFDO0FBS2hJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWM3QyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsV0FBVztJQUVoRCxZQUNJLFdBQXVCLEVBQ3ZCLFNBQW1CLEVBQ1gsWUFBeUIsRUFDekIsa0JBQXFDLEVBQ3JDLG9CQUF5QyxFQUN6QyxrQkFBcUMsRUFDckMsbUJBQXVDLEVBQ3ZDLDBCQUE4QyxFQUM5QyxnQ0FBaUUsRUFDakUsMEJBQXFEO0lBQzdELCtEQUErRDtJQUN2RCxzQkFBNkMsRUFDN0MsNkJBQTJEO1FBaUJuRSxLQUFLLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQTNCMUIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN2QywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQW9CO1FBQzlDLHFDQUFnQyxHQUFoQyxnQ0FBZ0MsQ0FBaUM7UUFDakUsK0JBQTBCLEdB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dkMsMkRBQTJEO1FBQzNELGlDQUFpQztRQUNqQyxxQ0FBcUM7UUFDckMsa0NBQWtDO1FBQ2xDLHNDQUFzQztRQUN0QyxtQ0FBbUM7UUFDbkMsb0NBQW9DO1FBQ3BDLGlCQUFpQjtRQUNqQiwrQkFBK0I7UUFDL0IscUVBQXFFO1FBQ3JFLGdCQUFnQjtRQUNoQiw0QkFBNEI7UUFDNUIsYUFBYTtRQUNiLGtDQUFrQztRQUNsQyw4QkFBOEI7UUFDOUIsOEJBQThCO1FBQzlCLG1DQUFtQztRQUNuQywyREFBMkQ7UUFDM0QsaUNBQWlDO1FBQ2pDLHFDQUFxQztRQUNyQyw0Q0FBNEM7UUFDNUMseUNBQXlDO1FBQ3pDLCtCQUErQjtRQUMvQixrRUFBa0U7UUFDbEUsZ0JBQWdCO1FBQ2hCLDRCQUE0QjtRQUM1QixZQUFZO1FBQ1osS0FBSztRQUVMLGtCQUFrQjtJQUN0QixDQUFDOztnSEFuckNRLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07MkZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVudW1Db250cm9sUGlja2VyVHlwZSB9IGZyb20gJy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSwgRW50aXR5UGlja2VyQ29sdW1uLCBPcGVyYXRvciwgV3JhcFBpY2tlckNvbnRyb2xTY2hlbWEgfSBmcm9tICcuLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgQ2FuQm9fSG9Tb1NlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL3dvcmtmbG93L3NlcnZpY2VzL2NhbmJvLWhvc28uc2VydmljZSc7XHJcbmltcG9ydCB7IEdyaWRJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IFBhZ2VPcHRpb25CYXNlIH0gZnJvbSAnLi4vbW9kZWxzL3BhZ2Utb3B0aW9uJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hc3RlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JnYW5pemF0aW9uU2VydmljZSB9IGZyb20gJy4vb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29DYXVUb0NodWNTZXJ2aWNlIH0gZnJvbSAnLi91c21hcnQvY29jYXV0b2NodWMuc2VydmljZSc7XHJcbmltcG9ydCB7IHRibF9DaHVvbmdUcmluaERhb1Rhb1NlcnZpY2UgfSBmcm9tICcuL3VzbWFydC90YmwtY2h1b25ndHJpbmhkYW90YW8uc2VydmljZSc7XHJcbmltcG9ydCB7IHRibF9ETV9LaG9hSG9jU2VydmljZSB9IGZyb20gJy4vdXNtYXJ0L3RibC1kbS1raG9haG9jLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0YmxfRE1fTmd1b2lIb2NfSGVEYW9UYW9TZXJ2aWNlIH0gZnJvbSAnLi91c21hcnQvdGJsLWRtLW5ndW9paG9jLWhlZGFvdGFvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0YmxfSGVUaG9uZ19OYW1Ib2NTZXJ2aWNlIH0gZnJvbSAnLi91c21hcnQvdGJsLWhldGhvbmctbmFtaG9jLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0YmxfSG9jUGhhblNlcnZpY2UgfSBmcm9tICcuL3VzbWFydC90YmwtaG9jcGhhbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRW50aXR5UGlja2VyU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBfaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgICAgICBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9tYXN0ZXJEYXRhU2VydmljZTogTWFzdGVyRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfb3JnYW5pemF0aW9uU2VydmljZTogT3JnYW5pemF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jYW5Cb19Ib1NvU2VydmljZTogQ2FuQm9fSG9Tb1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdGJsX0hvY1BoYW5TZXJ2aWNlOiB0YmxfSG9jUGhhblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdGJsX0RNX0NodW5nX0RvblZpU2VydmljZTogQ29DYXVUb0NodWNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RibF9ETV9OZ3VvaUhvY19IZURhb1Rhb1NlcnZpY2U6IHRibF9ETV9OZ3VvaUhvY19IZURhb1Rhb1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdGJsX0hlVGhvbmdfTmFtSG9jU2VydmljZTogdGJsX0hlVGhvbmdfTmFtSG9jU2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIF90YmxfTmd1b2lIb2NfSG9Tb1NlcnZpY2U6IHRibF9OZ3VvaUhvY19Ib1NvU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF90YmxfRE1fS2hvYUhvY1NlcnZpY2U6IHRibF9ETV9LaG9hSG9jU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF90YmxfQ2h1b25nVHJpbmhEYW9UYW9TZXJ2aWNlOiB0YmxfQ2h1b25nVHJpbmhEYW9UYW9TZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9EYW5oU2FjaF9Mb3BIYW5oQ2hpbmhTZXJ2aWNlOiB0YmxfRGFuaFNhY2hfTG9wSGFuaENoaW5oU2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIF90YmxfRE1fUGhvbmdIb2NTZXJ2aWNlOiB0YmxfRE1fUGhvbmdIb2NTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9ETV9Db1NvRGFvVGFvU2VydmljZTogdGJsX0RNX0NvU29EYW9UYW9TZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9ETV9Ub2FOaGFTZXJ2aWNlOiB0YmxfRE1fVG9hTmhhU2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIF90YmxfRE1fVGFuZ1NlcnZpY2U6IHRibF9ETV9UYW5nU2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIF90YmxfS3R4X05ndW9pVGh1ZVNlcnZpY2U6IHRibF9LdHhfTmd1b2lUaHVlU2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIF90YmxfRE1fS3lUdWNYYV9Mb2FpRG9pVHVvbmdTZXJ2aWNlOiB0YmxfRE1fS3lUdWNYYV9Mb2FpRG9pVHVvbmdTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9ETV9OZ3VvaUhvY19OZ2FuaFNlcnZpY2U6IHRibF9ETV9OZ3VvaUhvY19OZ2FuaFNlcnZpY2UsXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBfdGJsX0RNX0tob1NlcnZpY2U6IHRibF9ETV9LaG9TZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9Uc19UYWlTYW5Db0RpbmhTZXJ2aWNlOiB0YmxfVHNfVGFpU2FuQ29EaW5oU2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIF90YmxfRE1fTG9haUhvY1BoYW5TZXJ2aWNlOiB0YmxfRE1fTG9haUhvY1BoYW5TZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX2RiT3JnYW5pemF0aW9uT3JnYW5pemF0aW9uU2VydmljZTogRGJPcmdhbml6YXRpb25Pcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9DaHVvbmdUcmluaERhb1Rhb19Ib2NQaGFuU2VydmljZTogdGJsX0NodW9uZ1RyaW5oRGFvVGFvX0hvY1BoYW5TZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9LdHhfTmd1b2lUaHVlX0hvcERvbmdTZXJ2aWNlOiB0YmxfS3R4X05ndW9pVGh1ZV9Ib3BEb25nU2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIF90YmxfS3R4X0dpdW9uZ1NlcnZpY2U6IHRibF9LdHhfR2l1b25nU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2h0dHBDbGllbnQsIF9pbmplY3RvciwgJycpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFdyYXBQaWNrZXJUZW1wbGF0ZShjb250cm9sOiBXcmFwUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN3aXRjaCAoY29udHJvbC5waWNrZXJUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgRW51bUNvbnRyb2xQaWNrZXJUeXBlLlVTRVI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRVc2VyUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5TVUJKRUNUOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3ViamVjdFBpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuVEVBQ0hFUjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRlYWNoZXJQaWNrZXJUZW1wbGF0ZShjb250cm9sKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgRW51bUNvbnRyb2xQaWNrZXJUeXBlLlRFQUNIRVJQTFVTOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGVhY2hlclBsdXNQaWNrZXJUZW1wbGF0ZShjb250cm9sKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgRW51bUNvbnRyb2xQaWNrZXJUeXBlLlNUVURFTlQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdHVkZW50UGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5ST09NOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um9vbVBpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuTkdVT0lfVEhVRTpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5ndW9pVGh1ZVBpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuTkdBTkg6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZ2FuaFBpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuS0hPOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0S2hvUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5USElFVEJJOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGhpZXRCaVBpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuQ0xBU1M6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzc1BpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuRE9OX1ZJOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RG9uVmlQaWNrZXJUZW1wbGF0ZShjb250cm9sKTtcclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuT1JHQU5JWkFUSU9OOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGJPcmdhbml6YXRpb25QaWNrZXJUZW1wbGF0ZShjb250cm9sKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgRW51bUNvbnRyb2xQaWNrZXJUeXBlLkhPQ1BIQU5fUkFOR0JVT0M6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRIb2NQaGFuX1JhbmdCdW9jUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5IT1BET05HOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SG9wRG9uZ1BpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuVEVBQ0hFUkZVTEw6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUZWFjaGVyRnVsbFBpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuQ0FOQk86XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDYW5Cb1BpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250cm9sO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldENhbkJvUGlja2VyVGVtcGxhdGUoY29udHJvbDogQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIGPDoW4gYuG7mSc7XHJcbiAgICAgICAgY29udHJvbC5iYXNlU2VydmljZSA9IHRoaXMuX3VzZXJTZXJ2aWNlO1xyXG4gICAgICAgIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ03DoycsXHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnY29kZScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnSOG7jSB2w6AgdMOqbicsXHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnaG9WYVRlbicsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfDoHkgc2luaCcsXHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnbmdheVNpbmgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkYXRlJyxcclxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0dp4bubaSB0w61uaCcsXHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnZ2lvaVRpbmgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX21hc3RlckRhdGFTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZ3JvdXBDb2RlOiAnR0lPSV9USU5IJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFVzZXJQaWNrZXJUZW1wbGF0ZShjb250cm9sOiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgLy8gVE9ETzogVXBncmFkZSBsYXRlclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWxlY3RGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlbGVjdEZpZWxkID0gJ2lkJztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5kaXNwbGF5RmllbGQgPSAnZnVsbE5hbWVOZXcnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIG5nxrDhu51pIGTDuW5nJztcclxuICAgICAgICAvLyBjb250cm9sLmJhc2VTZXJ2aWNlID0gdGhpcy5fdXNlclNlcnZpY2U7XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdvcmdhbml6YXRpb25JZCcsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ8SQxqFuIHbhu4snLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fb3JnYW5pemF0aW9uU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNUcmVlOiB0cnVlLFxyXG4gICAgICAgIC8vICAgICAgICAgZmllbGRUcmVlOiAncGFyZW50SWQnLFxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVQYXJlbnRSb290OiAtMSxcclxuICAgICAgICAvLyAgICAgICAgIGRpc2FibGVkOiB0cnVlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdwb3NpdGlvbkNvZGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdDaOG7qWMgduG7pScsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9tYXN0ZXJEYXRhU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIGdyb3VwQ29kZTogJ0NWJyxcclxuICAgICAgICAvLyAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdmdWxsTmFtZU5ldycsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4gbmfGsOG7nWkgZMO5bmcnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW5cclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyBdO1xyXG4gICAgICAgIC8vIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0VGhpZXRCaVBpY2tlclRlbXBsYXRlKGNvbnRyb2wpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnaWQnO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb250cm9sLmRpc3BsYXlGaWVsZCA9ICdtYVZhVGVuJztcclxuICAgICAgICAvLyBjb250cm9sLnRpdGxlID0gJ0No4buNbiB0aGnhur90IGLhu4snO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl90YmxfVHNfVGFpU2FuQ29EaW5oU2VydmljZTtcclxuICAgICAgICAvLyBjb250cm9sLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ21hJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTcOjIHRoaeG6v3QgYuG7iycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICd0ZW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdUw6puIHRoaeG6v3QgYuG7iycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdzb0x1b25nJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnU+G7kSBsxrDhu6NuZycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogJ2luJyxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJ1xyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIF07XHJcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXREb25WaVBpY2tlclRlbXBsYXRlKGNvbnRyb2wpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnZFZfSUQnO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb250cm9sLmRpc3BsYXlGaWVsZCA9ICdkVl9UZW4nO1xyXG4gICAgICAgIC8vIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIMSRxqFuIHbhu4snO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl90YmxfRE1fQ2h1bmdfRG9uVmlTZXJ2aWNlO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnZFZfSUQnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdNw6MgxJHGoW4gduG7iycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICB3aWR0aDogJzEwZW0nXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdkVl9UZW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdUw6puIMSRxqFuIHbhu4snLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdkVl9QYXJlbnRJRCcsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0tob2EvVmnhu4duJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiAnaW4nLC8vdMOsbSBraeG6v20gbmhp4buBdSB0aMOsIHBo4bqjaSBjaHV54buDbiBzYW5nIGluIGtvIMSRxrDhu6NjIGTDuW5nIGVxXHJcbiAgICAgICAgLy8gICAgICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgLy8gICAgICAgICAvLyBO4bq/dSBraMO0bmcgdGjhuqV5IGThu68gbGnhu4d1IHRow6wgeGVtIHRyb25nIGRhdGFiYXNlXHJcbiAgICAgICAgLy8gICAgICAgICAvLyAgICAgIFRyxrDhu51uZyBkVl9QYXJlbnRJRCBj4bunYSBuaOG7r25nIGLhuqNuIGdoaSByb290IGPDsyBwaOG6o2kgYuG7iyBudWxsIGtow7RuZywgbuG6v3UgbnVsbCB0aMOsIHBo4bqjaSBzZXQgduG7gSAtMVxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVQYXJlbnRSb290OiAtMSxcclxuICAgICAgICAvLyAgICAgICAgIGZpZWxkVHJlZTogJ2RWX1BhcmVudElEJyxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fQ2h1bmdfRG9uVmlTZXJ2aWNlLFxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgZGlzcGxheUZpZWxkOiAnZFZfVGVuJyxcclxuICAgICAgICAvLyAgICAgICAgIC8vIGZpZWxkUGx1czogJ2xEVl9JRCcsXHJcbiAgICAgICAgLy8gICAgICAgICBmdW5jR2V0TGFiZWw6IGl0ZW0gPT4gKHtcclxuICAgICAgICAvLyAgICAgICAgICAgICB2YWx1ZTogaXRlbS5jb2RlLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGxhYmVsOiBpdGVtLmRWX1RlblxyXG4gICAgICAgIC8vICAgICAgICAgfSksXHJcbiAgICAgICAgLy8gICAgICAgICBkZWZhdWx0RmlsdGVyczogW1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgZmllbGQ6ICdsRFZfSUQnLCBvcGVyYXRvcjogJ2luJywgdmFsdWU6ICcyMCw2MCcgfVxyXG4gICAgICAgIC8vICAgICAgICAgXSxcclxuICAgICAgICAvLyAgICAgICAgIG11bHRpcGxlOiB0cnVlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vIF07XHJcblxyXG4gICAgICAgIC8vIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RGJPcmdhbml6YXRpb25QaWNrZXJUZW1wbGF0ZShjb250cm9sKSB7XHJcbiAgICAgICAgLy8gVE9ETzogVXBncmFkZSBsYXRlclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWxlY3RGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlbGVjdEZpZWxkID0gJ2NvZGUnO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb250cm9sLmRpc3BsYXlGaWVsZCA9ICduYW1lJztcclxuICAgICAgICAvLyBjb250cm9sLnRpdGxlID0gJ0No4buNbiDEkcahbiB24buLJztcclxuICAgICAgICAvLyBjb250cm9sLmJhc2VTZXJ2aWNlID0gdGhpcy5fb3JnYW5pemF0aW9uU2VydmljZTtcclxuICAgICAgICAvLyBjb250cm9sLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2NvZGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdNw6MgxJHGoW4gduG7iycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICduYW1lJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnVMOqbiDEkcahbiB24buLJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyBdO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldENsYXNzUGlja2VyVGVtcGxhdGUoY29udHJvbCkge1xyXG4gICAgICAgIC8vIFRPRE86IFVwZ3JhZGUgbGF0ZXJcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuc2VsZWN0RmllbGQpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5zZWxlY3RGaWVsZCA9ICdpZCc7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ3Rlbic7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9ICdDaOG7jW4gbOG7m3AgaMOgbmggY2jDrW5oJztcclxuICAgICAgICAvLyBjb250cm9sLmJhc2VTZXJ2aWNlID0gdGhpcy5fdGJsX0RhbmhTYWNoX0xvcEhhbmhDaGluaFNlcnZpY2U7XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZCcsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0lkIGzhu5twIGjDoG5oIGNow61uaCcsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNEaXNwbGF5OiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWRLaG9hSG9jJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnS2jDs2EnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0tob2FIb2NTZXJ2aWNlLFxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZEtob2EnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdLaG9hL1Zp4buHbicsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fQ2h1bmdfRG9uVmlTZXJ2aWNlLFxyXG4gICAgICAgIC8vICAgICAgICAgZGlzcGxheUZpZWxkOiAnZFZfVGVuJyxcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlRmllbGQ6ICdkVl9JRCcsXHJcbiAgICAgICAgLy8gICAgICAgICBmaWVsZFBsdXM6ICdpZCcsXHJcbiAgICAgICAgLy8gICAgICAgICBmdW5jR2V0TGFiZWw6IGl0ZW0gPT4gKHtcclxuICAgICAgICAvLyAgICAgICAgICAgICB2YWx1ZTogaXRlbVsnZFZfSUQnXSxcclxuICAgICAgICAvLyAgICAgICAgICAgICBsYWJlbDogaXRlbVsnZFZfVGVuJ10sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgaWQ6IGl0ZW0uaWRcclxuICAgICAgICAvLyAgICAgICAgIH0pXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZE5nYW5oJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTmfDoG5oIMSRw6BvIHThuqFvJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9OZ3VvaUhvY19OZ2FuaFNlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IDAsXHJcbiAgICAgICAgLy8gICAgICAgICBkaXNwbGF5RmllbGQ6ICduR0FOSF9UZW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVGaWVsZDogJ25HQU5IX01hJyxcclxuICAgICAgICAvLyAgICAgICAgIC8vIHBhcmVudENvbHVtbjogJ2lkS2hvYScsXHJcbiAgICAgICAgLy8gICAgICAgICBwYXJlbnRGaWVsZDogJ2RWX0lEJyxcclxuICAgICAgICAvLyAgICAgICAgIGZpZWxkVmFsdWVQYXJlbnQ6ICdpZCdcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2NvZGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdNw6MgbOG7m3AnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW5cclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ3RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4gbOG7m3AnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW5cclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyBdO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEtob1BpY2tlclRlbXBsYXRlKGNvbnRyb2wpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnY29kZSc7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ3Rlbic7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9ICdDaOG7jW4ga2hvJztcclxuICAgICAgICAvLyBjb250cm9sLmJhc2VTZXJ2aWNlID0gdGhpcy5fdGJsX0RNX0tob1NlcnZpY2U7XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTcOjIGtobycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICd0ZW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdUw6puIGtobycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgIH0pXHJcbiAgICAgICAgLy8gXTtcclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXROZ2FuaFBpY2tlclRlbXBsYXRlKGNvbnRyb2w6IFdyYXBQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlRmllbGQpIHtcclxuICAgICAgICAgICAgY29udHJvbC52YWx1ZUZpZWxkID0gJ2lkJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjb250cm9sLnNlYXJjaEZpZWxkKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wuc2VhcmNoRmllbGQgPSBbJ2NvZGUnXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjb250cm9sLmZpZWxkUGx1cykge1xyXG4gICAgICAgICAgICBjb250cm9sLmZpZWxkUGx1cyA9ICdjb2RlJztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYCwke2NvbnRyb2wuZmllbGRQbHVzfSxgLmluZGV4T2YoJyxjb2RlLCcpID09IC0xKSB7XHJcbiAgICAgICAgICAgIGlmICghY29udHJvbC5maWVsZFBsdXMuZW5kc1dpdGgoJywnKSkge1xyXG4gICAgICAgICAgICAgICAgY29udHJvbC5maWVsZFBsdXMgKz0gJywnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRyb2wuZmllbGRQbHVzICs9ICdjb2RlJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjb250cm9sLmZ1bmNHZXRMYWJlbCkge1xyXG4gICAgICAgICAgICBjb250cm9sLmZ1bmNHZXRMYWJlbCA9IGl0ZW0gPT4gYCR7aXRlbS50ZW59ICgke2l0ZW0uY29kZX0pYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udHJvbC5kaXNwbGF5RmllbGQgPSAndGVuJztcclxuICAgICAgICBjb250cm9sLnRpdGxlID0gJ0No4buNbiBuZ8OgbmgnO1xyXG4gICAgICAgIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl90YmxfQ2h1b25nVHJpbmhEYW9UYW9TZXJ2aWNlO1xyXG4gICAgICAgIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnY29kZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ03DoyBuZ8OgbmgnLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAndGVuJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVMOqbiBuZ8OgbmgnLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnaWRIZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu4cgxJHDoG8gdOG6oW8nLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX05ndW9pSG9jX0hlRGFvVGFvU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgY29kZTogJ2lkS2hvYUhvYycsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0tow7NhIGjhu41jJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9LaG9hSG9jU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgY29kZTogJ2lkRG9uVmlQaHVUcmFjaCcsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ8SQxqFuIHbhu4sgcGjhu6UgdHLDoWNoJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9DaHVuZ19Eb25WaVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyczogW1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5ldyBGaWx0ZXIoeyBmaWVsZDogJ2xEVl9JRCcsIG9wZXJhdG9yOiAnaW4nLCB2YWx1ZTogJzIwLDYwJyB9KVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIC8vIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAvLyAgICAgY29kZTogJ2lkTmdhbmgnLFxyXG4gICAgICAgICAgICAvLyAgICAgbGFiZWw6ICdOZ8OgbmggZ+G7kWMnLFxyXG4gICAgICAgICAgICAvLyAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgICAgIC8vICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX05ndW9pSG9jX05nYW5oU2VydmljZSxcclxuICAgICAgICAgICAgLy8gICAgIGRpc3BsYXlGaWVsZDogJ25nYW5IX1RlbicsXHJcbiAgICAgICAgICAgIC8vICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgIC8vIH0pLFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Tmd1b2lUaHVlUGlja2VyVGVtcGxhdGUoY29udHJvbCkge1xyXG4gICAgICAgIC8vIFRPRE86IFVwZ3JhZGUgbGF0ZXJcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuc2VsZWN0RmllbGQpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5zZWxlY3RGaWVsZCA9ICdpZCc7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ2hvVmFUZW4nO1xyXG4gICAgICAgIC8vIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIG5nxrDhu51pIHRodcOqJztcclxuICAgICAgICAvLyBjb250cm9sLmJhc2VTZXJ2aWNlID0gdGhpcy5fdGJsX0t0eF9OZ3VvaVRodWVTZXJ2aWNlO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWQnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdJZCBuZ8aw4budaSB0aHXDqicsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNEaXNwbGF5OiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWRETV9Mb2FpRG9pVHVvbmcnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdMb+G6oWkgxJHhu5FpIHTGsOG7o25nJyxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9LeVR1Y1hhX0xvYWlEb2lUdW9uZ1NlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICBkaXNwbGF5RmllbGQ6ICdsRFRfVGVuJ1xyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ03DoyBuZ8aw4budaSB0aHXDqicsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpblxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaG9WYVRlbicsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4gbmfGsOG7nWkgdGh1w6onLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW5cclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyBdO1xyXG4gICAgICAgIC8vIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Um9vbVBpY2tlclRlbXBsYXRlKGNvbnRyb2wpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnaWQnO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBsZXQgcGhvbmdOYW1lID0gJ3Bow7JuZyBo4buNYyc7XHJcbiAgICAgICAgLy8gaWYgKGNvbnRyb2wuZGF0YUluaXQgJiYgY29udHJvbC5kYXRhSW5pdC5zb3VyY2UgPT0gMikge1xyXG4gICAgICAgIC8vICAgICBwaG9uZ05hbWUgPSAncGjDsm5nIGvDvSB0w7pjIHjDoSc7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ3Rlbic7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9IGBDaOG7jW4gJHtwaG9uZ05hbWV9YDtcclxuICAgICAgICAvLyBjb250cm9sLmJhc2VTZXJ2aWNlID0gdGhpcy5fdGJsX0RNX1Bob25nSG9jU2VydmljZTtcclxuICAgICAgICAvLyBsZXQgdGV4dENTRFQgPSAnQ8ahIHPhu58gxJHDoG8gdOG6oW8nLCBzb3VyY2UgPSAxO1xyXG4gICAgICAgIC8vIGlmIChjb250cm9sLmRhdGFJbml0ICYmIGNvbnRyb2wuZGF0YUluaXQuc291cmNlID09IDIpIHtcclxuICAgICAgICAvLyAgICAgdGV4dENTRFQgPSAnS2h1IHbhu7FjJztcclxuICAgICAgICAvLyAgICAgY29udHJvbC50aXRsZSA9IGBDaOG7jW4gJHtwaG9uZ05hbWV9YDtcclxuICAgICAgICAvLyAgICAgc291cmNlID0gMjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLmRlZmF1bHRGaWx0ZXJzKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuZGVmYXVsdEZpbHRlcnMgPSBbXTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSBpZiAodHlwZW9mIGNvbnRyb2wuZGVmYXVsdEZpbHRlcnMgIT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLmRlZmF1bHRGaWx0ZXJzLnNwbGljZSgwLCAwLFxyXG4gICAgICAgIC8vICAgICAgICAgeyBmaWVsZDogJ3NvdXJjZScsIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCwgdmFsdWU6IHNvdXJjZS50b1N0cmluZygpIH1cclxuICAgICAgICAvLyAgICAgKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZCcsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogYElkICR7cGhvbmdOYW1lfWAsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNEaXNwbGF5OiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgLy8gbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgIC8vICAgICBjb2RlOiAnc291cmNlJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGxhYmVsOiAnTG/huqFpJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGF0YVNvdXJjZTogW1xyXG4gICAgICAgIC8vICAgICAvLyAgICAgICAgIHsgdmFsdWU6IDEsIGxhYmVsOiAnQ8ahIHPhu58gxJHDoG8gdOG6oW8nIH0sXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAgICAgeyB2YWx1ZTogMiwgbGFiZWw6ICdLaHUgduG7sWMnIH1cclxuICAgICAgICAvLyAgICAgLy8gICAgIF1cclxuICAgICAgICAvLyAgICAgLy8gfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkRE1fQ29Tb0Rhb1RhbycsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogdGV4dENTRFQsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fQ29Tb0Rhb1Rhb1NlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICBkZWZhdWx0RmlsdGVyczogW1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgZmllbGQ6ICdzb3VyY2UnLCBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsIHZhbHVlOiBzb3VyY2UudG9TdHJpbmcoKSB9XHJcbiAgICAgICAgLy8gICAgICAgICBdXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZERNX1RvYU5oYScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDsmEgbmjDoCcsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fVG9hTmhhU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIC8vIHBhcmVudENvbHVtbjogJ2lkRE1fQ29Tb0Rhb1RhbycsXHJcbiAgICAgICAgLy8gICAgICAgICBwYXJlbnRGaWVsZDogJ2lkRE1fQ29Tb0Rhb1RhbydcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkRE1fVGFuZycsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1ThuqduZycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fVGFuZ1NlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICAvLyBwYXJlbnRDb2x1bW46ICdpZERNX1RvYU5oYScsXHJcbiAgICAgICAgLy8gICAgICAgICBwYXJlbnRGaWVsZDogJ2lkRE1fVG9hTmhhJ1xyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogYE3DoyAke3Bob25nTmFtZX1gLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW5cclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ3RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogYFTDqm4gJHtwaG9uZ05hbWV9YCxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluXHJcbiAgICAgICAgLy8gICAgIH0pXHJcbiAgICAgICAgLy8gXTtcclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRTdHVkZW50UGlja2VyVGVtcGxhdGUoY29udHJvbCkge1xyXG4gICAgICAgIC8vIFRPRE86IFVwZ3JhZGUgbGF0ZXJcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuc2VsZWN0RmllbGQpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5zZWxlY3RGaWVsZCA9ICdpZCc7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWFyY2hGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlYXJjaEZpZWxkID0gWydjb2RlJ107XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5mdW5jR2V0TGFiZWwpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5mdW5jR2V0TGFiZWwgPSBpdGVtID0+ICh7XHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZTogaXRlbVtjb250cm9sLnNlbGVjdEZpZWxkXSxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiBgJHtpdGVtLmZ1bGxOYW1lfSAoJHtpdGVtLmNvZGV9KWBcclxuICAgICAgICAvLyAgICAgfSk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ2Z1bGxOYW1lJztcclxuICAgICAgICAvLyBjb250cm9sLnRpdGxlID0gJ0No4buNbiBo4buNYyBzaW5oJztcclxuICAgICAgICAvLyBjb250cm9sLmJhc2VTZXJ2aWNlID0gdGhpcy5fdGJsX05ndW9pSG9jX0hvU29TZXJ2aWNlO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWQnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdJZCBuZ8aw4budaSBo4buNYycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNEaXNwbGF5OiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnZnVsbE5hbWUnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdUw6puIG5nxrDhu51pIGjhu41jJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTcOjIG5nxrDhu51pIGjhu41jJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZEtob2FIb2MnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdLaMOzYScsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fS2hvYUhvY1NlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgICAgICBmaWVsZFBsdXM6ICdpZCdcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkS2hvYScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0tob2EvVmnhu4duJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9DaHVuZ19Eb25WaVNlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICBkaXNwbGF5RmllbGQ6ICdkVl9UZW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgZGVmYXVsdEZpbHRlcnM6IFtcclxuICAgICAgICAvLyAgICAgICAgICAgICAvLyBEdXlEdlxyXG4gICAgICAgIC8vICAgICAgICAgICAgIG5ldyBGaWx0ZXIoeyBmaWVsZDogJ2xEVl9JRCcsIG9wZXJhdG9yOiAnaW4nLCB2YWx1ZTogJzIwLDYwJyB9KSxcclxuICAgICAgICAvLyAgICAgICAgIF0sXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZENodW9uZ1RyaW5oRGFvVGFvJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTmfDoG5oIMSRw6BvIHThuqFvJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9DaHVvbmdUcmluaERhb1Rhb1NlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZUZpZWxkOiAnc29DaHVvbmdUcmluaERhb1RhbycsXHJcbiAgICAgICAgLy8gICAgICAgICAvLyBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgLy8gICAgICAgICAvLyBmaWVsZFRyZWU6ICduR0FOSF9JRF9DaGEnLFxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVQYXJlbnRSb290OiAwLFxyXG4gICAgICAgIC8vICAgICAgICAgZGlzcGxheUZpZWxkOiAndGVuJyxcclxuICAgICAgICAvLyAgICAgICAgIC8vIHBhcmVudENvbHVtbjogW1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIG5ldyAvLyBwYXJlbnRDb2x1bW5JbmZvKHsgY29sdW1uOiAnaWRLaG9hSG9jJywgZm9yZWlnbktleTogJ2lkS2hvYUhvYycsIGZpZWxkVmFsdWVQYXJlbnQ6ICdpZCcgfSksXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbmV3IC8vIHBhcmVudENvbHVtbkluZm8oeyBjb2x1bW46ICdpZEtob2FWaWVuJywgZm9yZWlnbktleTogJ2lkRG9uVmlQaHVUcmFjaCcsIH0pXHJcblxyXG4gICAgICAgIC8vICAgICAgICAgXSxcclxuICAgICAgICAvLyAgICAgICAgIGZ1bmNHZXRMYWJlbDogaXRlbSA9PiAoe1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnNvQ2h1b25nVHJpbmhEYW9UYW8sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbGFiZWw6IGAke2l0ZW0uc29DaHVvbmdUcmluaERhb1Rhb30tJHtpdGVtLnRlbn1gXHJcbiAgICAgICAgLy8gICAgICAgICB9KVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWRMb3BIYW5oQ2hpbmgnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdM4bubcCBow6BuaCBjaMOtbmgnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RhbmhTYWNoX0xvcEhhbmhDaGluaFNlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICAvLyBwYXJlbnRDb2x1bW46IFtcclxuICAgICAgICAvLyAgICAgICAgICAgICBuZXcgLy8gcGFyZW50Q29sdW1uSW5mbyh7IGNvbHVtbjogJ2lkS2hvYUhvYycsIGZvcmVpZ25LZXk6ICdpZEtob2FIb2MnLCB9KSxcclxuICAgICAgICAvLyAgICAgICAgICAgICBuZXcgLy8gcGFyZW50Q29sdW1uSW5mbyh7IGNvbHVtbjogJ2lkS2hvYVZpZW4nLCBmb3JlaWduS2V5OiAnaWRLaG9hJywgfSksXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbmV3IC8vIHBhcmVudENvbHVtbkluZm8oeyBjb2x1bW46ICdpZENodW9uZ1RyaW5oRGFvVGFvJywgZm9yZWlnbktleTogJ2lkTmdhbmgnLCB9KVxyXG5cclxuICAgICAgICAvLyAgICAgICAgIF1cclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyBdO1xyXG4gICAgICAgIC8vIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0VGVhY2hlck5hbWUoaXRlbSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKGl0ZW0ubmdheVNpbmgpIHtcclxuICAgICAgICAgICAgY29uc3QgbmdheVNpbmggPSBuZXcgRGF0ZShpdGVtLm5nYXlTaW5oKTtcclxuICAgICAgICAgICAgcmV0dXJuIGAke2l0ZW0uaG9WYVRlbn0gKCR7bmdheVNpbmguZ2V0RnVsbFllYXIoKX0pYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtpdGVtLmhvVmFUZW59YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRUZWFjaGVyUGlja2VyVGVtcGxhdGUoY29udHJvbDogV3JhcFBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBpZiAoIWNvbnRyb2wudmFsdWVGaWVsZCkge1xyXG4gICAgICAgICAgICBjb250cm9sLnZhbHVlRmllbGQgPSAnaWQnO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBLaMO0bmcgc+G7rWEgY2jhu5cgbsOgeSB0aMOgbmggZmllbGQga2jDoWMsIHbDrCBjw7Mgbmhp4buBdSBjaOG7lyDEkWFuZyBz4butIGThu6VuZ1xyXG4gICAgICAgIGlmICghY29udHJvbC5zZWFyY2hGaWVsZCkge1xyXG4gICAgICAgICAgICBjb250cm9sLnNlYXJjaEZpZWxkID0gWydjb2RlJ107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghY29udHJvbC5mdW5jR2V0TGFiZWwpIHtcclxuICAgICAgICAgICAgY29udHJvbC5mdW5jR2V0TGFiZWwgPSBpdGVtID0+IHRoaXMuZ2V0VGVhY2hlck5hbWUoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ2hvVmFUZW4nO1xyXG4gICAgICAgIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIGdp4bqjbmcgdmnDqm4nO1xyXG4gICAgICAgIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl9jYW5Cb19Ib1NvU2VydmljZTtcclxuICAgICAgICBjb250cm9sLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgY29kZTogJ2NvZGUnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNw6MgZ2nhuqNuZyB2acOqbicsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMjBweCdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgY29kZTogJ2hvVmFUZW4nLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUw6puJyxcclxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGNvZGU6ICduZ2F5U2luaCcsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nw6B5IHNpbmgnLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkYXRlJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwcHgnLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgLy8gbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgIC8vICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAgICAgLy8gICAgIGNvZGU6ICdkVl9JRF9HaWFuZ0RheScsXHJcbiAgICAgICAgICAgIC8vICAgICBsYWJlbDogJ8SQxqFuIHbhu4sgZ2nhuqNuZyBk4bqheScsXHJcbiAgICAgICAgICAgIC8vICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgIC8vICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgICAgIC8vICAgICAvLyBO4bq/dSBraMO0bmcgdGjhuqV5IGThu68gbGnhu4d1IHRow6wgeGVtIHRyb25nIGRhdGFiYXNlXHJcbiAgICAgICAgICAgIC8vICAgICAvLyAgICAgIFRyxrDhu51uZyBkVl9QYXJlbnRJRCBj4bunYSBuaOG7r25nIGLhuqNuIGdoaSByb290IGPDsyBwaOG6o2kgYuG7iyBudWxsIGtow7RuZywgbuG6v3UgbnVsbCB0aMOsIHBo4bqjaSBzZXQgduG7gSAtMVxyXG4gICAgICAgICAgICAvLyAgICAgdmFsdWVQYXJlbnRSb290OiAtMSxcclxuICAgICAgICAgICAgLy8gICAgIGZpZWxkVHJlZTogJ2RWX1BhcmVudElEJyxcclxuICAgICAgICAgICAgLy8gICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fQ2h1bmdfRG9uVmlTZXJ2aWNlLFxyXG4gICAgICAgICAgICAvLyAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxyXG4gICAgICAgICAgICAvLyAgICAgZGlzcGxheUZpZWxkOiAnZFZfVGVuJ1xyXG4gICAgICAgICAgICAvLyB9KVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0VGVhY2hlclBsdXNQaWNrZXJUZW1wbGF0ZShjb250cm9sKSB7XHJcbiAgICAgICAgLy8gVE9ETzogVXBncmFkZSBsYXRlclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWxlY3RGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlbGVjdEZpZWxkID0gJ2NvZGUnO1xyXG4gICAgICAgIC8vIH0gLy8gS2jDtG5nIHPhu61hIGNo4buXIG7DoHkgdGjDoG5oIGZpZWxkIGtow6FjLCB2w6wgY8OzIG5oaeG7gXUgY2jhu5cgxJFhbmcgc+G7rSBk4bulbmdcclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuc2VhcmNoRmllbGQpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5zZWFyY2hGaWVsZCA9IFsnY29kZSddO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuZnVuY0dldExhYmVsKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuZnVuY0dldExhYmVsID0gaXRlbSA9PiAoe1xyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWU6IGl0ZW1bY29udHJvbC5zZWxlY3RGaWVsZF0sXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogdGhpcy5nZXRUZWFjaGVyTmFtZShpdGVtKVxyXG4gICAgICAgIC8vICAgICB9KTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5kaXNwbGF5RmllbGQgPSAnZnVsbE5hbWUnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIGdp4bqjbmcgdmnDqm4nO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl9jYW5Cb19Ib1NvU2VydmljZTtcclxuICAgICAgICAvLyBjb250cm9sLnBsdXNVcmwgPSAnQ3VzdG9tJztcclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuZGVmYXVsdEZpbHRlcnMpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5kZWZhdWx0RmlsdGVycyA9IFtdO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuZGVmYXVsdEZpbHRlcnMuc29tZShyID0+IHIuZmllbGQgPT09ICdsRFZfSUQnKSkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLmRlZmF1bHRGaWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7IGZpZWxkOiAnbERWX0lEJywgb3BlcmF0b3I6ICdpbicsIHZhbHVlOiAnMjAsNjAsMjEnIH0pKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTcOjIGdp4bqjbmcgdmnDqm4nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdmdWxsTmFtZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4gZ2nhuqNuZyB2acOqbicsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ25nYXlTaW5oJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTmfDoHkgc2luaCcsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2RhdGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2RWX0lEX0dpYW5nRGF5JyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnxJDGoW4gduG7iyBnaeG6o25nIGThuqF5JyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiAnaW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNUcmVlOiB0cnVlLFxyXG4gICAgICAgIC8vICAgICAgICAgLy8gTuG6v3Uga2jDtG5nIHRo4bqleSBk4buvIGxp4buHdSB0aMOsIHhlbSB0cm9uZyBkYXRhYmFzZVxyXG4gICAgICAgIC8vICAgICAgICAgLy8gICAgICBUcsaw4budbmcgZFZfUGFyZW50SUQgY+G7p2Egbmjhu69uZyBi4bqjbiBnaGkgcm9vdCBjw7MgcGjhuqNpIGLhu4sgbnVsbCBraMO0bmcsIG7hur91IG51bGwgdGjDrCBwaOG6o2kgc2V0IHbhu4EgLTFcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlUGFyZW50Um9vdDogLTEsXHJcbiAgICAgICAgLy8gICAgICAgICBmaWVsZFRyZWU6ICdkVl9QYXJlbnRJRCcsXHJcbiAgICAgICAgLy8gICAgICAgICBzZWxlY3RDaGlsZEl0ZW06IHRydWUsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0NodW5nX0RvblZpU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2RWX1RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICBtdWx0aXBsZTogdHJ1ZVxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vICAgICAvLyBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgY29kZTogJ21hS2hvYVZpZW4nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgbGFiZWw6ICdLaG9hL1Zp4buHbicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICB2YWx1ZVBhcmVudFJvb3Q6IC0xLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZmllbGRUcmVlOiAnZFZfUGFyZW50SUQnLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9DaHVuZ19Eb25WaVNlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBkaXNwbGF5RmllbGQ6ICdkVl9UZW4nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZmllbGRQbHVzOiAnbERWX0lEJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGZ1bmNHZXRMYWJlbDogaXRlbSA9PiAoe1xyXG4gICAgICAgIC8vICAgICAvLyAgICAgICAgIHZhbHVlOiBpdGVtLmNvZGUsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAgICAgbGFiZWw6IGl0ZW0uZFZfVGVuXHJcbiAgICAgICAgLy8gICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRlZmF1bHRGaWx0ZXJzOiBbXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAgICAgeyBmaWVsZDogJ2xEVl9JRCcsIG9wZXJhdG9yOiAnaW4nLCB2YWx1ZTogJzIwLDYwJyB9XHJcbiAgICAgICAgLy8gICAgIC8vICAgICBdLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgbXVsdGlwbGU6IHRydWVcclxuICAgICAgICAvLyAgICAgLy8gfSksXHJcbiAgICAgICAgLy8gICAgIC8vIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAvLyAgICAgY29kZTogJ21hQm9Nb24nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgbGFiZWw6ICdC4buZIG3DtG4nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0NodW5nX0RvblZpU2VydmljZSxcclxuICAgICAgICAvLyAgICAgLy8gICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRpc3BsYXlGaWVsZDogJ2RWX1RlbicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAvLyBwYXJlbnRDb2x1bW46ICdtYUtob2FWaWVuJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIHBhcmVudEZpZWxkOiAnZFZfUGFyZW50SUQnLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGVmYXVsdEZpbHRlcnM6IFtcclxuICAgICAgICAvLyAgICAgLy8gICAgICAgICB7IGZpZWxkOiAnbERWX0lEJywgb3BlcmF0b3I6ICdpbicsIHZhbHVlOiAnMjEnIH1cclxuICAgICAgICAvLyAgICAgLy8gICAgIF0sXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBtdWx0aXBsZTogdHJ1ZVxyXG4gICAgICAgIC8vICAgICAvLyB9KVxyXG4gICAgICAgIC8vIF07XHJcblxyXG4gICAgICAgIC8vIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0U3ViamVjdFBpY2tlclRlbXBsYXRlKGNvbnRyb2w6IFdyYXBQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlRmllbGQpIHtcclxuICAgICAgICAgICAgY29udHJvbC52YWx1ZUZpZWxkID0gJ2lkJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjb250cm9sLmRpc3BsYXlGaWVsZCkge1xyXG4gICAgICAgICAgICBjb250cm9sLmRpc3BsYXlGaWVsZCA9ICd0ZW4nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNvbnRyb2wuZmllbGRQbHVzKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wuZmllbGRQbHVzID0gJ2NvZGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChgLCR7Y29udHJvbC5maWVsZFBsdXN9LGAuaW5kZXhPZignLGNvZGUsJykgPT0gLTEpIHtcclxuICAgICAgICAgICAgaWYgKCFjb250cm9sLmZpZWxkUGx1cy5lbmRzV2l0aCgnLCcpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLmZpZWxkUGx1cyArPSAnLCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udHJvbC5maWVsZFBsdXMgKz0gJ2NvZGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250cm9sLmZ1bmNHZXRMYWJlbCA9IGl0ZW0gPT4gYCR7aXRlbVtjb250cm9sLmRpc3BsYXlGaWVsZF19ICgke2l0ZW0uY29kZX0pYDtcclxuICAgICAgICBjb250cm9sLnRpdGxlID0gJ0No4buNbiBtw7RuIGjhu41jJztcclxuICAgICAgICBjb250cm9sLmJhc2VTZXJ2aWNlID0gdGhpcy5fdGJsX0hvY1BoYW5TZXJ2aWNlO1xyXG4gICAgICAgIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnY29kZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ03DoyBtw7RuIGjhu41jJyxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwJSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgY29kZTogJ3RlbicsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1TDqm4gbcO0biBo4buNYycsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgICAgICAgICAgY29kZTogJ2lkSGUnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdI4buHIMSRw6BvIHThuqFvJyxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fTmd1b2lIb2NfSGVEYW9UYW9TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMCUnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgICAgICAgICAgY29kZTogJ25hbUFwRHVuZycsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ07Eg20gYuG6r3QgxJHhuqd1JyxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfSGVUaG9uZ19OYW1Ib2NTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ25hbScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwJSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIC8vIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAvLyAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgICAgIC8vICAgICBjb2RlOiAnaWRLaG9hJyxcclxuICAgICAgICAgICAgLy8gICAgIGxhYmVsOiAnS2hvYS9WaeG7h24nLFxyXG4gICAgICAgICAgICAvLyAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgICAgICAvLyAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9DaHVuZ19Eb25WaVNlcnZpY2UsXHJcbiAgICAgICAgICAgIC8vICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXHJcbiAgICAgICAgICAgIC8vICAgICBkaXNwbGF5RmllbGQ6ICdkVl9UZW4nLFxyXG4gICAgICAgICAgICAvLyAgICAgZmllbGRQbHVzOiAnaWQnLFxyXG4gICAgICAgICAgICAvLyAgICAgZGVmYXVsdEZpbHRlcnM6IFtcclxuICAgICAgICAgICAgLy8gICAgICAgICB0aGlzLm5ld0ZpbHRlcignRFZfVHJhbmdUaGFpJywgT3BlcmF0b3IuZXF1YWwsIDEpLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdMRFZfSUQnLCBPcGVyYXRvci5pbiwgW0VudW1Mb2FpRG9uVmkuS0hPQSwgRW51bUxvYWlEb25WaS5WSUVOXSksXHJcbiAgICAgICAgICAgIC8vICAgICBdLFxyXG4gICAgICAgICAgICAvLyB9KSxcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAndmVyc2lvbicsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1BoacOqbiBi4bqjbicsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2ludCcsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzclJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnY2h1b2lQaGFuVGlldE9iamVjdCcsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1Bow6JuIHRp4bq/dCcsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwJScsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEhvY1BoYW5fUmFuZ0J1b2NQaWNrZXJUZW1wbGF0ZShjb250cm9sKSB7XHJcbiAgICAgICAgLy8gVE9ETzogVXBncmFkZSBsYXRlclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWxlY3RGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlbGVjdEZpZWxkID0gJ2lkJztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5kaXNwbGF5RmllbGQgPSAndGVuSFAnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIGjhu41jIHBo4bqnbic7XHJcbiAgICAgICAgLy8gY29udHJvbC5iYXNlU2VydmljZSA9IHRoaXMuX3RibF9DaHVvbmdUcmluaERhb1Rhb19Ib2NQaGFuU2VydmljZTtcclxuICAgICAgICAvLyBjb250cm9sLnBsdXNVcmwgPSAnZ2V0RHNIb2NQaGFuUmFuZ0J1b2MnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAncScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ05o4bqtcCB04burIGtow7NhIHTDrG0ga2nhur9tJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNEaXNwbGF5OiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnbWFIUCcsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ03DoyBIUCcsXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICd0ZW5IUCcsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4gSFAnLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNTZWFyY2hhYmxlOiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnc29UaW5DaGknLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdT4buRIHTDrW4gY2jhu4knLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhU291cmNlOiBbXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogMSwgbGFiZWw6IDEgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiAyLCBsYWJlbDogMiB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDMsIGxhYmVsOiAzIH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogNCwgbGFiZWw6IDQgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiA1LCBsYWJlbDogNSB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDYsIGxhYmVsOiA2IH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogNywgbGFiZWw6IDcgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiA4LCBsYWJlbDogOCB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDksIGxhYmVsOiA5IH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogMTAsIGxhYmVsOiAxMCB9XHJcbiAgICAgICAgLy8gICAgICAgICBdLFxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnbG9haUhvY1BoYW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdMb+G6oWkgaOG7jWMgcGjhuqduJyxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2VcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkTG9haUhvY1BoYW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdMb+G6oWkgaOG7jWMgcGjhuqduJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9Mb2FpSG9jUGhhblNlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICBkaXNwbGF5RmllbGQ6ICd0ZW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVGaWVsZDogJ2lkJyxcclxuICAgICAgICAvLyAgICAgICAgIGlzRGlzcGxheTogZmFsc2UsXHJcbiAgICAgICAgLy8gICAgICAgICBmdW5jR2V0TGFiZWw6IGl0ZW0gPT4gKHtcclxuICAgICAgICAvLyAgICAgICAgICAgICB2YWx1ZTogaXRlbVsnaWQnXSxcclxuICAgICAgICAvLyAgICAgICAgICAgICBsYWJlbDogaXRlbVsndGVuJ10sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgaWQ6IGl0ZW0uaWRcclxuICAgICAgICAvLyAgICAgICAgIH0pXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdwaGFuS3knLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdQaMOibiBr4buzJyxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVNvdXJjZTogW1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDEsIGxhYmVsOiAxIH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogMiwgbGFiZWw6IDIgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiAzLCBsYWJlbDogMyB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDQsIGxhYmVsOiA0IH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogNSwgbGFiZWw6IDUgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiA2LCBsYWJlbDogNiB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDcsIGxhYmVsOiA3IH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogOCwgbGFiZWw6IDggfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiA5LCBsYWJlbDogOSB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDEwLCBsYWJlbDogMTAgfVxyXG4gICAgICAgIC8vICAgICAgICAgXSxcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ3Rlbktob2EnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdLaOG7kWkgS1QnLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNTZWFyY2hhYmxlOiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAndGVuS2hvYScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0tob2EgJyxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2VcclxuICAgICAgICAvLyAgICAgfSksXHJcblxyXG4gICAgICAgIC8vIF07XHJcblxyXG4gICAgICAgIC8vIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIGdldEhvcERvbmdQaWNrZXJUZW1wbGF0ZShjb250cm9sKSB7XHJcbiAgICAgICAgLy8gVE9ETzogVXBncmFkZSBsYXRlclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWxlY3RGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlbGVjdEZpZWxkID0gJ2NvZGUnOyAvLyBLaMO0bmcgc+G7rWEgY2jhu5cgbsOgeSB0aMOgbmggZmllbGQga2jDoWMsIHbDrCBjw7Mgbmhp4buBdSBjaOG7lyDEkWFuZyBz4butIGThu6VuZ1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlYXJjaEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VhcmNoRmllbGQgPSBbJ2NvZGUnXTtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ2NvZGUnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIGjhu6NwIMSR4buTbmcnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl90YmxfS3R4X05ndW9pVGh1ZV9Ib3BEb25nU2VydmljZTtcclxuICAgICAgICAvLyBjb250cm9sLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2NvZGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdNw6MgaOG7o3AgxJHhu5NuZycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkS3R4X05ndW9pVGh1ZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ05nxrDhu51pIHRodcOqJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9LdHhfTmd1b2lUaHVlU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2hvVmFUZW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNTZWFyY2hhYmxlOiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWRLdHhfUGhvbmcnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdQaMOybmcnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX1Bob25nSG9jU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2VcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkS3R4X0dpdW9uZycsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0dpxrDhu51uZycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfS3R4X0dpdW9uZ1NlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICAvLyBwYXJlbnRDb2x1bW46ICdpZEt0eF9QaG9uZycsXHJcbiAgICAgICAgLy8gICAgICAgICBwYXJlbnRGaWVsZDogJ2lkS3R4X1Bob25nJyxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2VcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2dpYVRyaUhvcERvbmcnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdHacOhIHRy4buLIGjhu6NwIMSR4buTbmcnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdudW1iZXInXHJcbiAgICAgICAgLy8gICAgIH0pXHJcbiAgICAgICAgLy8gXTtcclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RW50aXR5KHBhZ2VEYXRhOiBQYWdlT3B0aW9uQmFzZSwgbGltaXQ6IG51bWJlciwgZW5kcG9pbnQ6IHN0cmluZywgb3B0aW9uUGFyYW1ldGVyOiBzdHJpbmcgPSAnJywgaXNBbGw6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGlmICghcGFnZURhdGEua2V5KSBwYWdlRGF0YS5rZXkgPSAnJztcclxuICAgICAgICBsZXQgcXVlcnlTdHJpbmcgPSBgP2tleT0ke2VuY29kZVVSSShwYWdlRGF0YS5rZXkpfWA7XHJcblxyXG4gICAgICAgIGlmICghcGFnZURhdGEucGFnZSkge1xyXG4gICAgICAgICAgICBwYWdlRGF0YS5wYWdlID0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHF1ZXJ5U3RyaW5nICs9IGAmb2Zmc2V0PSR7KHBhZ2VEYXRhLnBhZ2UgLSAxKSAqIGxpbWl0fWA7XHJcblxyXG4gICAgICAgIGlmIChpc0FsbCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgaWYgKCFsaW1pdCkge1xyXG4gICAgICAgICAgICAgICAgbGltaXQgPSB0aGlzLkxJTUlUX0RFRkFVTFQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcXVlcnlTdHJpbmcgKz0gYCZsaW1pdD0ke2xpbWl0fWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBxdWVyeVN0cmluZyArPSBgJmxpbWl0PTEwMDAwMGA7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgaWYgKHBhZ2VEYXRhLnNvcnRGaWVsZCkge1xyXG4gICAgICAgICAgICBxdWVyeVN0cmluZyArPSBgJnNvcnRGaWVsZD0ke3BhZ2VEYXRhLnNvcnRGaWVsZH0maXNBc2M9JHtwYWdlRGF0YS5zb3J0RGlyZWN0aW9ufWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcHRpb25QYXJhbWV0ZXIgIT0gJycpIHtcclxuICAgICAgICAgICAgcXVlcnlTdHJpbmcgKz0gYCYke29wdGlvblBhcmFtZXRlcn1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHtlbmRwb2ludH0ke3F1ZXJ5U3RyaW5nfWA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYXBpVXJsKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGFnZWQoZ3JpZEluZm86IEdyaWRJbmZvLCBlbmRwb2ludDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihlbmRwb2ludCwgZ3JpZEluZm8pXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRUZWFjaGVyRnVsbFBpY2tlclRlbXBsYXRlKGNvbnRyb2wpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnY29kZSc7XHJcbiAgICAgICAgLy8gfSAvLyBLaMO0bmcgc+G7rWEgY2jhu5cgbsOgeSB0aMOgbmggZmllbGQga2jDoWMsIHbDrCBjw7Mgbmhp4buBdSBjaOG7lyDEkWFuZyBz4butIGThu6VuZ1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWFyY2hGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlYXJjaEZpZWxkID0gWydjb2RlJ107XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5mdW5jR2V0TGFiZWwpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5mdW5jR2V0TGFiZWwgPSBpdGVtID0+ICh7XHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZTogaXRlbVtjb250cm9sLnNlbGVjdEZpZWxkXSxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiB0aGlzLmdldFRlYWNoZXJOYW1lKGl0ZW0pXHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb250cm9sLmRpc3BsYXlGaWVsZCA9ICdmdWxsTmFtZSc7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9ICdDaOG7jW4gZ2nhuqNuZyB2acOqbic7XHJcbiAgICAgICAgLy8gY29udHJvbC5iYXNlU2VydmljZSA9IHRoaXMuX2NhbkJvX0hvU29TZXJ2aWNlO1xyXG4gICAgICAgIC8vIGNvbnRyb2wucGx1c1VybCA9ICdDdXN0b20nO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5kZWZhdWx0RmlsdGVycykge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLmRlZmF1bHRGaWx0ZXJzID0gW107XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIC8vVGjDqm0gZ2nDoSB0cuG7iyAxNTAwIMSR4buRaSB24bubaSB0csaw4budbmcgaOG7o3AgZGggaHXhur9cclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuZGVmYXVsdEZpbHRlcnMuc29tZShyID0+IHIuZmllbGQgPT09ICdsRFZfSUQnKSkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLmRlZmF1bHRGaWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7IGZpZWxkOiAnbERWX0lEJywgb3BlcmF0b3I6ICdpbicsIHZhbHVlOiAnMjAsNjAsMjEsMTUwMDAnIH0pKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTcOjIGdp4bqjbmcgdmnDqm4nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdmdWxsTmFtZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4gZ2nhuqNuZyB2acOqbicsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ25nYXlTaW5oJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTmfDoHkgc2luaCcsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2RhdGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2RWX0lEX0dpYW5nRGF5JyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnxJDGoW4gduG7iyBnaeG6o25nIGThuqF5JyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiAnaW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNUcmVlOiB0cnVlLFxyXG4gICAgICAgIC8vICAgICAgICAgLy8gTuG6v3Uga2jDtG5nIHRo4bqleSBk4buvIGxp4buHdSB0aMOsIHhlbSB0cm9uZyBkYXRhYmFzZVxyXG4gICAgICAgIC8vICAgICAgICAgLy8gICAgICBUcsaw4budbmcgZFZfUGFyZW50SUQgY+G7p2Egbmjhu69uZyBi4bqjbiBnaGkgcm9vdCBjw7MgcGjhuqNpIGLhu4sgbnVsbCBraMO0bmcsIG7hur91IG51bGwgdGjDrCBwaOG6o2kgc2V0IHbhu4EgLTFcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlUGFyZW50Um9vdDogLTEsXHJcbiAgICAgICAgLy8gICAgICAgICBmaWVsZFRyZWU6ICdkVl9QYXJlbnRJRCcsXHJcbiAgICAgICAgLy8gICAgICAgICBzZWxlY3RDaGlsZEl0ZW06IHRydWUsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0NodW5nX0RvblZpU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2RWX1RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICBtdWx0aXBsZTogdHJ1ZVxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vICAgICAvLyBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgY29kZTogJ21hS2hvYVZpZW4nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgbGFiZWw6ICdLaG9hL1Zp4buHbicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICB2YWx1ZVBhcmVudFJvb3Q6IC0xLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZmllbGRUcmVlOiAnZFZfUGFyZW50SUQnLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9DaHVuZ19Eb25WaVNlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBkaXNwbGF5RmllbGQ6ICdkVl9UZW4nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZmllbGRQbHVzOiAnbERWX0lEJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGZ1bmNHZXRMYWJlbDogaXRlbSA9PiAoe1xyXG4gICAgICAgIC8vICAgICAvLyAgICAgICAgIHZhbHVlOiBpdGVtLmNvZGUsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAgICAgbGFiZWw6IGl0ZW0uZFZfVGVuXHJcbiAgICAgICAgLy8gICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRlZmF1bHRGaWx0ZXJzOiBbXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAgICAgeyBmaWVsZDogJ2xEVl9JRCcsIG9wZXJhdG9yOiAnaW4nLCB2YWx1ZTogJzIwLDYwJyB9XHJcbiAgICAgICAgLy8gICAgIC8vICAgICBdLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgbXVsdGlwbGU6IHRydWVcclxuICAgICAgICAvLyAgICAgLy8gfSksXHJcbiAgICAgICAgLy8gICAgIC8vIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAvLyAgICAgY29kZTogJ21hQm9Nb24nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgbGFiZWw6ICdC4buZIG3DtG4nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0NodW5nX0RvblZpU2VydmljZSxcclxuICAgICAgICAvLyAgICAgLy8gICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRpc3BsYXlGaWVsZDogJ2RWX1RlbicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAvLyBwYXJlbnRDb2x1bW46ICdtYUtob2FWaWVuJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIHBhcmVudEZpZWxkOiAnZFZfUGFyZW50SUQnLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGVmYXVsdEZpbHRlcnM6IFtcclxuICAgICAgICAvLyAgICAgLy8gICAgICAgICB7IGZpZWxkOiAnbERWX0lEJywgb3BlcmF0b3I6ICdpbicsIHZhbHVlOiAnMjEnIH1cclxuICAgICAgICAvLyAgICAgLy8gICAgIF0sXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBtdWx0aXBsZTogdHJ1ZVxyXG4gICAgICAgIC8vICAgICAvLyB9KVxyXG4gICAgICAgIC8vIF07XHJcblxyXG4gICAgICAgIC8vIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
1151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXBpY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvc2VydmljZXMvZW50aXR5LXBpY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFtQyxrQkFBa0IsRUFBRSxRQUFRLEVBQTJCLE1BQU0sd0JBQXdCLENBQUM7QUFLaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBYzdDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUFXO0lBRWhELFlBQ0ksV0FBdUIsRUFDdkIsU0FBbUIsRUFDWCxZQUF5QixFQUN6QixrQkFBcUMsRUFDckMsb0JBQXlDLEVBQ3pDLGtCQUFxQyxFQUNyQyxtQkFBdUMsRUFDdkMsMEJBQThDLEVBQzlDLGdDQUFpRSxFQUNqRSwwQkFBcUQ7SUFDN0QsK0RBQStEO0lBQ3ZELHNCQUE2QyxFQUM3Qyw2QkFBMkQ7UUFpQm5FLEtBQUssQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBM0IxQixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBb0I7UUFDOUMs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QUN2QywyQkFBMkI7UUFDM0Isa0NBQWtDO1FBQ2xDLHVDQUF1QztRQUN2QywyREFBMkQ7UUFDM0QsaUNBQWlDO1FBQ2pDLHFDQUFxQztRQUNyQyxrQ0FBa0M7UUFDbEMsc0NBQXNDO1FBQ3RDLG1DQUFtQztRQUNuQyxvQ0FBb0M7UUFDcEMsaUJBQWlCO1FBQ2pCLCtCQUErQjtRQUMvQixxRUFBcUU7UUFDckUsZ0JBQWdCO1FBQ2hCLDRCQUE0QjtRQUM1QixhQUFhO1FBQ2Isa0NBQWtDO1FBQ2xDLDhCQUE4QjtRQUM5Qiw4QkFBOEI7UUFDOUIsbUNBQW1DO1FBQ25DLDJEQUEyRDtRQUMzRCxpQ0FBaUM7UUFDakMscUNBQXFDO1FBQ3JDLDRDQUE0QztRQUM1Qyx5Q0FBeUM7UUFDekMsK0JBQStCO1FBQy9CLGtFQUFrRTtRQUNsRSxnQkFBZ0I7UUFDaEIsNEJBQTRCO1FBQzVCLFlBQVk7UUFDWixLQUFLO1FBRUwsa0JBQWtCO0lBQ3RCLENBQUM7O2dIQW5yQ1EsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGaEIsTUFBTTsyRkFFVCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRW51bUNvbnRyb2xQaWNrZXJUeXBlIH0gZnJvbSAnLi4vY2xhc3Nlcy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hLCBFbnRpdHlQaWNrZXJDb2x1bW4sIE9wZXJhdG9yLCBXcmFwUGlja2VyQ29udHJvbFNjaGVtYSB9IGZyb20gJy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBDYW5Cb19Ib1NvU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvd29ya2Zsb3cvc2VydmljZXMvY2FuYm8taG9zby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgUGFnZU9wdGlvbkJhc2UgfSBmcm9tICcuLi9tb2RlbHMvcGFnZS1vcHRpb24nO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuL21hc3Rlci1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb0NhdVRvQ2h1Y1NlcnZpY2UgfSBmcm9tICcuL3VzbWFydC9jb2NhdXRvY2h1Yy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdGJsX0NodW9uZ1RyaW5oRGFvVGFvU2VydmljZSB9IGZyb20gJy4vdXNtYXJ0L3RibC1jaHVvbmd0cmluaGRhb3Rhby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdGJsX0RNX0tob2FIb2NTZXJ2aWNlIH0gZnJvbSAnLi91c21hcnQvdGJsLWRtLWtob2Fob2Muc2VydmljZSc7XHJcbmltcG9ydCB7IHRibF9ETV9OZ3VvaUhvY19IZURhb1Rhb1NlcnZpY2UgfSBmcm9tICcuL3VzbWFydC90YmwtZG0tbmd1b2lob2MtaGVkYW90YW8uc2VydmljZSc7XHJcbmltcG9ydCB7IHRibF9IZVRob25nX05hbUhvY1NlcnZpY2UgfSBmcm9tICcuL3VzbWFydC90YmwtaGV0aG9uZy1uYW1ob2Muc2VydmljZSc7XHJcbmltcG9ydCB7IHRibF9Ib2NQaGFuU2VydmljZSB9IGZyb20gJy4vdXNtYXJ0L3RibC1ob2NwaGFuLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlQaWNrZXJTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIF9odHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX21hc3RlckRhdGFTZXJ2aWNlOiBNYXN0ZXJEYXRhU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9vcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NhbkJvX0hvU29TZXJ2aWNlOiBDYW5Cb19Ib1NvU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF90YmxfSG9jUGhhblNlcnZpY2U6IHRibF9Ib2NQaGFuU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF90YmxfRE1fQ2h1bmdfRG9uVmlTZXJ2aWNlOiBDb0NhdVRvQ2h1Y1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdGJsX0RNX05ndW9pSG9jX0hlRGFvVGFvU2VydmljZTogdGJsX0RNX05ndW9pSG9jX0hlRGFvVGFvU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF90YmxfSGVUaG9uZ19OYW1Ib2NTZXJ2aWNlOiB0YmxfSGVUaG9uZ19OYW1Ib2NTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9OZ3VvaUhvY19Ib1NvU2VydmljZTogdGJsX05ndW9pSG9jX0hvU29TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RibF9ETV9LaG9hSG9jU2VydmljZTogdGJsX0RNX0tob2FIb2NTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RibF9DaHVvbmdUcmluaERhb1Rhb1NlcnZpY2U6IHRibF9DaHVvbmdUcmluaERhb1Rhb1NlcnZpY2UsXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBfdGJsX0RhbmhTYWNoX0xvcEhhbmhDaGluaFNlcnZpY2U6IHRibF9EYW5oU2FjaF9Mb3BIYW5oQ2hpbmhTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9ETV9QaG9uZ0hvY1NlcnZpY2U6IHRibF9ETV9QaG9uZ0hvY1NlcnZpY2UsXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBfdGJsX0RNX0NvU29EYW9UYW9TZXJ2aWNlOiB0YmxfRE1fQ29Tb0Rhb1Rhb1NlcnZpY2UsXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBfdGJsX0RNX1RvYU5oYVNlcnZpY2U6IHRibF9ETV9Ub2FOaGFTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9ETV9UYW5nU2VydmljZTogdGJsX0RNX1RhbmdTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9LdHhfTmd1b2lUaHVlU2VydmljZTogdGJsX0t0eF9OZ3VvaVRodWVTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9ETV9LeVR1Y1hhX0xvYWlEb2lUdW9uZ1NlcnZpY2U6IHRibF9ETV9LeVR1Y1hhX0xvYWlEb2lUdW9uZ1NlcnZpY2UsXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBfdGJsX0RNX05ndW9pSG9jX05nYW5oU2VydmljZTogdGJsX0RNX05ndW9pSG9jX05nYW5oU2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIF90YmxfRE1fS2hvU2VydmljZTogdGJsX0RNX0tob1NlcnZpY2UsXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBfdGJsX1RzX1RhaVNhbkNvRGluaFNlcnZpY2U6IHRibF9Uc19UYWlTYW5Db0RpbmhTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9ETV9Mb2FpSG9jUGhhblNlcnZpY2U6IHRibF9ETV9Mb2FpSG9jUGhhblNlcnZpY2UsXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBfZGJPcmdhbml6YXRpb25Pcmdhbml6YXRpb25TZXJ2aWNlOiBEYk9yZ2FuaXphdGlvbk9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBfdGJsX0NodW9uZ1RyaW5oRGFvVGFvX0hvY1BoYW5TZXJ2aWNlOiB0YmxfQ2h1b25nVHJpbmhEYW9UYW9fSG9jUGhhblNlcnZpY2UsXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBfdGJsX0t0eF9OZ3VvaVRodWVfSG9wRG9uZ1NlcnZpY2U6IHRibF9LdHhfTmd1b2lUaHVlX0hvcERvbmdTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHByaXZhdGUgX3RibF9LdHhfR2l1b25nU2VydmljZTogdGJsX0t0eF9HaXVvbmdTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaHR0cENsaWVudCwgX2luamVjdG9yLCAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V3JhcFBpY2tlclRlbXBsYXRlKGNvbnRyb2w6IFdyYXBQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3dpdGNoIChjb250cm9sLnBpY2tlclR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuVVNFUjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFVzZXJQaWNrZXJUZW1wbGF0ZShjb250cm9sKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgRW51bUNvbnRyb2xQaWNrZXJUeXBlLlNVQkpFQ1Q6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdWJqZWN0UGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5URUFDSEVSOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGVhY2hlclBpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuVEVBQ0hFUlBMVVM6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUZWFjaGVyUGx1c1BpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuU1RVREVOVDpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0dWRlbnRQaWNrZXJUZW1wbGF0ZShjb250cm9sKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgRW51bUNvbnRyb2xQaWNrZXJUeXBlLlJPT006XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSb29tUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5OR1VPSV9USFVFOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Tmd1b2lUaHVlUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5OR0FOSDpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5nYW5oUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5LSE86XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRLaG9QaWNrZXJUZW1wbGF0ZShjb250cm9sKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgRW51bUNvbnRyb2xQaWNrZXJUeXBlLlRISUVUQkk6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUaGlldEJpUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5DTEFTUzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5ET05fVkk6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREb25WaVBpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5PUkdBTklaQVRJT046XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYk9yZ2FuaXphdGlvblBpY2tlclRlbXBsYXRlKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBFbnVtQ29udHJvbFBpY2tlclR5cGUuSE9DUEhBTl9SQU5HQlVPQzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEhvY1BoYW5fUmFuZ0J1b2NQaWNrZXJUZW1wbGF0ZShjb250cm9sKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgRW51bUNvbnRyb2xQaWNrZXJUeXBlLkhPUERPTkc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRIb3BEb25nUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5URUFDSEVSRlVMTDpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRlYWNoZXJGdWxsUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEVudW1Db250cm9sUGlja2VyVHlwZS5DQU5CTzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldENhbkJvUGlja2VyVGVtcGxhdGUoY29udHJvbCk7XHJcblxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Q2FuQm9QaWNrZXJUZW1wbGF0ZShjb250cm9sOiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgY29udHJvbC50aXRsZSA9ICdDaOG7jW4gY8OhbiBi4buZJztcclxuICAgICAgICBjb250cm9sLmJhc2VTZXJ2aWNlID0gdGhpcy5fdXNlclNlcnZpY2U7XHJcbiAgICAgICAgY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTcOjJyxcclxuICAgICAgICAgICAgICAgIGNvZGU6ICdjb2RlJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdI4buNIHbDoCB0w6puJyxcclxuICAgICAgICAgICAgICAgIGNvZGU6ICdob1ZhVGVuJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBzaW5oJyxcclxuICAgICAgICAgICAgICAgIGNvZGU6ICduZ2F5U2luaCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2RhdGUnLFxyXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnR2nhu5tpIHTDrW5oJyxcclxuICAgICAgICAgICAgICAgIGNvZGU6ICdnaW9pVGluaCcsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fbWFzdGVyRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBncm91cENvZGU6ICdHSU9JX1RJTkgnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU6IHRydWVcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0VXNlclBpY2tlclRlbXBsYXRlKGNvbnRyb2w6IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnaWQnO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb250cm9sLmRpc3BsYXlGaWVsZCA9ICdmdWxsTmFtZU5ldyc7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9ICdDaOG7jW4gbmfGsOG7nWkgZMO5bmcnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl91c2VyU2VydmljZTtcclxuICAgICAgICAvLyBjb250cm9sLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ29yZ2FuaXphdGlvbklkJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnxJDGoW4gduG7iycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9vcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIC8vICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgLy8gICAgICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgLy8gICAgICAgICBmaWVsZFRyZWU6ICdwYXJlbnRJZCcsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IC0xLFxyXG4gICAgICAgIC8vICAgICAgICAgZGlzYWJsZWQ6IHRydWVcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ3Bvc2l0aW9uQ29kZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0No4bupYyB24bulJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX21hc3RlckRhdGFTZXJ2aWNlLFxyXG4gICAgICAgIC8vICAgICAgICAgZ3JvdXBDb2RlOiAnQ1YnLFxyXG4gICAgICAgIC8vICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZSdcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2Z1bGxOYW1lTmV3JyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnVMOqbiBuZ8aw4budaSBkw7luZycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpblxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIF07XHJcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRUaGlldEJpUGlja2VyVGVtcGxhdGUoY29udHJvbCkge1xyXG4gICAgICAgIC8vIFRPRE86IFVwZ3JhZGUgbGF0ZXJcclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuc2VsZWN0RmllbGQpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5zZWxlY3RGaWVsZCA9ICdpZCc7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ21hVmFUZW4nO1xyXG4gICAgICAgIC8vIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIHRoaeG6v3QgYuG7iyc7XHJcbiAgICAgICAgLy8gY29udHJvbC5iYXNlU2VydmljZSA9IHRoaXMuX3RibF9Uc19UYWlTYW5Db0RpbmhTZXJ2aWNlO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnbWEnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdNw6MgdGhp4bq/dCBi4buLJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ3RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4gdGhp4bq/dCBi4buLJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ3NvTHVvbmcnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdT4buRIGzGsOG7o25nJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiAnaW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdudW1iZXInXHJcbiAgICAgICAgLy8gICAgIH0pXHJcbiAgICAgICAgLy8gXTtcclxuICAgICAgICAvLyByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERvblZpUGlja2VyVGVtcGxhdGUoY29udHJvbCkge1xyXG4gICAgICAgIC8vIFRPRE86IFVwZ3JhZGUgbGF0ZXJcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuc2VsZWN0RmllbGQpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5zZWxlY3RGaWVsZCA9ICdkVl9JRCc7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ2RWX1Rlbic7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9ICdDaOG7jW4gxJHGoW4gduG7iyc7XHJcbiAgICAgICAgLy8gY29udHJvbC5iYXNlU2VydmljZSA9IHRoaXMuX3RibF9ETV9DaHVuZ19Eb25WaVNlcnZpY2U7XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdkVl9JRCcsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ03DoyDEkcahbiB24buLJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIHdpZHRoOiAnMTBlbSdcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2RWX1RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4gxJHGoW4gduG7iycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2RWX1BhcmVudElEJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnS2hvYS9WaeG7h24nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6ICdpbicsLy90w6xtIGtp4bq/bSBuaGnhu4F1IHRow6wgcGjhuqNpIGNodXnhu4NuIHNhbmcgaW4ga28gxJHGsOG7o2MgZMO5bmcgZXFcclxuICAgICAgICAvLyAgICAgICAgIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgICAgIC8vIE7hur91IGtow7RuZyB0aOG6pXkgZOG7ryBsaeG7h3UgdGjDrCB4ZW0gdHJvbmcgZGF0YWJhc2VcclxuICAgICAgICAvLyAgICAgICAgIC8vICAgICAgVHLGsOG7nW5nIGRWX1BhcmVudElEIGPhu6dhIG5o4buvbmcgYuG6o24gZ2hpIHJvb3QgY8OzIHBo4bqjaSBi4buLIG51bGwga2jDtG5nLCBu4bq/dSBudWxsIHRow6wgcGjhuqNpIHNldCB24buBIC0xXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IC0xLFxyXG4gICAgICAgIC8vICAgICAgICAgZmllbGRUcmVlOiAnZFZfUGFyZW50SUQnLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9DaHVuZ19Eb25WaVNlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgICAgICBkaXNwbGF5RmllbGQ6ICdkVl9UZW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgLy8gZmllbGRQbHVzOiAnbERWX0lEJyxcclxuICAgICAgICAvLyAgICAgICAgIGZ1bmNHZXRMYWJlbDogaXRlbSA9PiAoe1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHZhbHVlOiBpdGVtLmNvZGUsXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbGFiZWw6IGl0ZW0uZFZfVGVuXHJcbiAgICAgICAgLy8gICAgICAgICB9KSxcclxuICAgICAgICAvLyAgICAgICAgIGRlZmF1bHRGaWx0ZXJzOiBbXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyBmaWVsZDogJ2xEVl9JRCcsIG9wZXJhdG9yOiAnaW4nLCB2YWx1ZTogJzIwLDYwJyB9XHJcbiAgICAgICAgLy8gICAgICAgICBdLFxyXG4gICAgICAgIC8vICAgICAgICAgbXVsdGlwbGU6IHRydWVcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gXTtcclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXREYk9yZ2FuaXphdGlvblBpY2tlclRlbXBsYXRlKGNvbnRyb2wpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnY29kZSc7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ25hbWUnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIMSRxqFuIHbhu4snO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl9vcmdhbml6YXRpb25TZXJ2aWNlO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ03DoyDEkcahbiB24buLJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ25hbWUnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdUw6puIMSRxqFuIHbhu4snLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIF07XHJcblxyXG4gICAgICAgIC8vIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Q2xhc3NQaWNrZXJUZW1wbGF0ZShjb250cm9sKSB7XHJcbiAgICAgICAgLy8gVE9ETzogVXBncmFkZSBsYXRlclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWxlY3RGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlbGVjdEZpZWxkID0gJ2lkJztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5kaXNwbGF5RmllbGQgPSAndGVuJztcclxuICAgICAgICAvLyBjb250cm9sLnRpdGxlID0gJ0No4buNbiBs4bubcCBow6BuaCBjaMOtbmgnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl90YmxfRGFuaFNhY2hfTG9wSGFuaENoaW5oU2VydmljZTtcclxuICAgICAgICAvLyBjb250cm9sLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnSWQgbOG7m3AgaMOgbmggY2jDrW5oJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2UsXHJcbiAgICAgICAgLy8gICAgICAgICBpc0Rpc3BsYXk6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZEtob2FIb2MnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdLaMOzYScsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fS2hvYUhvY1NlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZSdcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkS2hvYScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0tob2EvVmnhu4duJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9DaHVuZ19Eb25WaVNlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgICAgICBkaXNwbGF5RmllbGQ6ICdkVl9UZW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVGaWVsZDogJ2RWX0lEJyxcclxuICAgICAgICAvLyAgICAgICAgIGZpZWxkUGx1czogJ2lkJyxcclxuICAgICAgICAvLyAgICAgICAgIGZ1bmNHZXRMYWJlbDogaXRlbSA9PiAoe1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHZhbHVlOiBpdGVtWydkVl9JRCddLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGxhYmVsOiBpdGVtWydkVl9UZW4nXSxcclxuICAgICAgICAvLyAgICAgICAgICAgICBpZDogaXRlbS5pZFxyXG4gICAgICAgIC8vICAgICAgICAgfSlcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkTmdhbmgnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdOZ8OgbmggxJHDoG8gdOG6oW8nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX05ndW9pSG9jX05nYW5oU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlUGFyZW50Um9vdDogMCxcclxuICAgICAgICAvLyAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25HQU5IX1RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZUZpZWxkOiAnbkdBTkhfTWEnLFxyXG4gICAgICAgIC8vICAgICAgICAgLy8gcGFyZW50Q29sdW1uOiAnaWRLaG9hJyxcclxuICAgICAgICAvLyAgICAgICAgIHBhcmVudEZpZWxkOiAnZFZfSUQnLFxyXG4gICAgICAgIC8vICAgICAgICAgZmllbGRWYWx1ZVBhcmVudDogJ2lkJ1xyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ03DoyBs4bubcCcsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpblxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAndGVuJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnVMOqbiBs4bubcCcsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpblxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIF07XHJcblxyXG4gICAgICAgIC8vIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0S2hvUGlja2VyVGVtcGxhdGUoY29udHJvbCkge1xyXG4gICAgICAgIC8vIFRPRE86IFVwZ3JhZGUgbGF0ZXJcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuc2VsZWN0RmllbGQpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5zZWxlY3RGaWVsZCA9ICdjb2RlJztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5kaXNwbGF5RmllbGQgPSAndGVuJztcclxuICAgICAgICAvLyBjb250cm9sLnRpdGxlID0gJ0No4buNbiBraG8nO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl90YmxfRE1fS2hvU2VydmljZTtcclxuICAgICAgICAvLyBjb250cm9sLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2NvZGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdNw6Mga2hvJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ3RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4ga2hvJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyBdO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldE5nYW5oUGlja2VyVGVtcGxhdGUoY29udHJvbDogV3JhcFBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBpZiAoIWNvbnRyb2wudmFsdWVGaWVsZCkge1xyXG4gICAgICAgICAgICBjb250cm9sLnZhbHVlRmllbGQgPSAnaWQnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNvbnRyb2wuc2VhcmNoRmllbGQpIHtcclxuICAgICAgICAgICAgY29udHJvbC5zZWFyY2hGaWVsZCA9IFsnY29kZSddO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNvbnRyb2wuZmllbGRQbHVzKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wuZmllbGRQbHVzID0gJ2NvZGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChgLCR7Y29udHJvbC5maWVsZFBsdXN9LGAuaW5kZXhPZignLGNvZGUsJykgPT0gLTEpIHtcclxuICAgICAgICAgICAgaWYgKCFjb250cm9sLmZpZWxkUGx1cy5lbmRzV2l0aCgnLCcpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLmZpZWxkUGx1cyArPSAnLCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udHJvbC5maWVsZFBsdXMgKz0gJ2NvZGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNvbnRyb2wuZnVuY0dldExhYmVsKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wuZnVuY0dldExhYmVsID0gaXRlbSA9PiBgJHtpdGVtLnRlbn0gKCR7aXRlbS5jb2RlfSlgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250cm9sLmRpc3BsYXlGaWVsZCA9ICd0ZW4nO1xyXG4gICAgICAgIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIG5nw6BuaCc7XHJcbiAgICAgICAgY29udHJvbC5iYXNlU2VydmljZSA9IHRoaXMuX3RibF9DaHVvbmdUcmluaERhb1Rhb1NlcnZpY2U7XHJcbiAgICAgICAgY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGNvZGU6ICdjb2RlJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTcOjIG5nw6BuaCcsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGNvZGU6ICd0ZW4nLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUw6puIG5nw6BuaCcsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGNvZGU6ICdpZEhlJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnSOG7hyDEkcOgbyB04bqhbycsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fTmd1b2lIb2NfSGVEYW9UYW9TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnaWRLaG9hSG9jJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnS2jDs2EgaOG7jWMnLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0tob2FIb2NTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnaWREb25WaVBodVRyYWNoJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnxJDGoW4gduG7iyBwaOG7pSB0csOhY2gnLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0NodW5nX0RvblZpU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbmV3IEZpbHRlcih7IGZpZWxkOiAnbERWX0lEJywgb3BlcmF0b3I6ICdpbicsIHZhbHVlOiAnMjAsNjAnIH0pXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgLy8gbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgIC8vICAgICBjb2RlOiAnaWROZ2FuaCcsXHJcbiAgICAgICAgICAgIC8vICAgICBsYWJlbDogJ05nw6BuaCBn4buRYycsXHJcbiAgICAgICAgICAgIC8vICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAgICAgLy8gICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fTmd1b2lIb2NfTmdhbmhTZXJ2aWNlLFxyXG4gICAgICAgICAgICAvLyAgICAgZGlzcGxheUZpZWxkOiAnbmdhbkhfVGVuJyxcclxuICAgICAgICAgICAgLy8gICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgLy8gfSksXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXROZ3VvaVRodWVQaWNrZXJUZW1wbGF0ZShjb250cm9sKSB7XHJcbiAgICAgICAgLy8gVE9ETzogVXBncmFkZSBsYXRlclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWxlY3RGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlbGVjdEZpZWxkID0gJ2lkJztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5kaXNwbGF5RmllbGQgPSAnaG9WYVRlbic7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9ICdDaOG7jW4gbmfGsOG7nWkgdGh1w6onO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl90YmxfS3R4X05ndW9pVGh1ZVNlcnZpY2U7XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZCcsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0lkIG5nxrDhu51pIHRodcOqJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2UsXHJcbiAgICAgICAgLy8gICAgICAgICBpc0Rpc3BsYXk6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZERNX0xvYWlEb2lUdW9uZycsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0xv4bqhaSDEkeG7kWkgdMaw4bujbmcnLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0t5VHVjWGFfTG9haURvaVR1b25nU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2xEVF9UZW4nXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTcOjIG5nxrDhu51pIHRodcOqJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdob1ZhVGVuJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnVMOqbiBuZ8aw4budaSB0aHXDqicsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpblxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIF07XHJcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRSb29tUGlja2VyVGVtcGxhdGUoY29udHJvbCkge1xyXG4gICAgICAgIC8vIFRPRE86IFVwZ3JhZGUgbGF0ZXJcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuc2VsZWN0RmllbGQpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5zZWxlY3RGaWVsZCA9ICdpZCc7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGxldCBwaG9uZ05hbWUgPSAncGjDsm5nIGjhu41jJztcclxuICAgICAgICAvLyBpZiAoY29udHJvbC5kYXRhSW5pdCAmJiBjb250cm9sLmRhdGFJbml0LnNvdXJjZSA9PSAyKSB7XHJcbiAgICAgICAgLy8gICAgIHBob25nTmFtZSA9ICdwaMOybmcga8O9IHTDumMgeMOhJztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5kaXNwbGF5RmllbGQgPSAndGVuJztcclxuICAgICAgICAvLyBjb250cm9sLnRpdGxlID0gYENo4buNbiAke3Bob25nTmFtZX1gO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl90YmxfRE1fUGhvbmdIb2NTZXJ2aWNlO1xyXG4gICAgICAgIC8vIGxldCB0ZXh0Q1NEVCA9ICdDxqEgc+G7nyDEkcOgbyB04bqhbycsIHNvdXJjZSA9IDE7XHJcbiAgICAgICAgLy8gaWYgKGNvbnRyb2wuZGF0YUluaXQgJiYgY29udHJvbC5kYXRhSW5pdC5zb3VyY2UgPT0gMikge1xyXG4gICAgICAgIC8vICAgICB0ZXh0Q1NEVCA9ICdLaHUgduG7sWMnO1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnRpdGxlID0gYENo4buNbiAke3Bob25nTmFtZX1gO1xyXG4gICAgICAgIC8vICAgICBzb3VyY2UgPSAyO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuZGVmYXVsdEZpbHRlcnMpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5kZWZhdWx0RmlsdGVycyA9IFtdO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBlbHNlIGlmICh0eXBlb2YgY29udHJvbC5kZWZhdWx0RmlsdGVycyAhPSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuZGVmYXVsdEZpbHRlcnMuc3BsaWNlKDAsIDAsXHJcbiAgICAgICAgLy8gICAgICAgICB7IGZpZWxkOiAnc291cmNlJywgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLCB2YWx1ZTogc291cmNlLnRvU3RyaW5nKCkgfVxyXG4gICAgICAgIC8vICAgICApO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb250cm9sLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiBgSWQgJHtwaG9uZ05hbWV9YCxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2UsXHJcbiAgICAgICAgLy8gICAgICAgICBpc0Rpc3BsYXk6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICAvLyBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgLy8gICAgIGNvZGU6ICdzb3VyY2UnLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgbGFiZWw6ICdMb+G6oWknLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBpc1NlYXJjaGFibGU6IHRydWUsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBkYXRhU291cmNlOiBbXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAgICAgeyB2YWx1ZTogMSwgbGFiZWw6ICdDxqEgc+G7nyDEkcOgbyB04bqhbycgfSxcclxuICAgICAgICAvLyAgICAgLy8gICAgICAgICB7IHZhbHVlOiAyLCBsYWJlbDogJ0todSB24buxYycgfVxyXG4gICAgICAgIC8vICAgICAvLyAgICAgXVxyXG4gICAgICAgIC8vICAgICAvLyB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWRETV9Db1NvRGFvVGFvJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiB0ZXh0Q1NEVCxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9Db1NvRGFvVGFvU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIGRlZmF1bHRGaWx0ZXJzOiBbXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyBmaWVsZDogJ3NvdXJjZScsIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCwgdmFsdWU6IHNvdXJjZS50b1N0cmluZygpIH1cclxuICAgICAgICAvLyAgICAgICAgIF1cclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkRE1fVG9hTmhhJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnVMOyYSBuaMOgJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9Ub2FOaGFTZXJ2aWNlLFxyXG4gICAgICAgIC8vICAgICAgICAgLy8gcGFyZW50Q29sdW1uOiAnaWRETV9Db1NvRGFvVGFvJyxcclxuICAgICAgICAvLyAgICAgICAgIHBhcmVudEZpZWxkOiAnaWRETV9Db1NvRGFvVGFvJ1xyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWRETV9UYW5nJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnVOG6p25nJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9UYW5nU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIC8vIHBhcmVudENvbHVtbjogJ2lkRE1fVG9hTmhhJyxcclxuICAgICAgICAvLyAgICAgICAgIHBhcmVudEZpZWxkOiAnaWRETV9Ub2FOaGEnXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiBgTcOjICR7cGhvbmdOYW1lfWAsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpblxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAndGVuJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiBgVMOqbiAke3Bob25nTmFtZX1gLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW5cclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyBdO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFN0dWRlbnRQaWNrZXJUZW1wbGF0ZShjb250cm9sKSB7XHJcbiAgICAgICAgLy8gVE9ETzogVXBncmFkZSBsYXRlclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWxlY3RGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlbGVjdEZpZWxkID0gJ2lkJztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlYXJjaEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VhcmNoRmllbGQgPSBbJ2NvZGUnXTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLmZ1bmNHZXRMYWJlbCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLmZ1bmNHZXRMYWJlbCA9IGl0ZW0gPT4gKHtcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlOiBpdGVtW2NvbnRyb2wuc2VsZWN0RmllbGRdLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6IGAke2l0ZW0uZnVsbE5hbWV9ICgke2l0ZW0uY29kZX0pYFxyXG4gICAgICAgIC8vICAgICB9KTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5kaXNwbGF5RmllbGQgPSAnZnVsbE5hbWUnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIGjhu41jIHNpbmgnO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl90YmxfTmd1b2lIb2NfSG9Tb1NlcnZpY2U7XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZCcsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0lkIG5nxrDhu51pIGjhu41jJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2UsXHJcbiAgICAgICAgLy8gICAgICAgICBpc0Rpc3BsYXk6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdmdWxsTmFtZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4gbmfGsOG7nWkgaOG7jWMnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW5cclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2NvZGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdNw6MgbmfGsOG7nWkgaOG7jWMnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW5cclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkS2hvYUhvYycsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0tow7NhJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9LaG9hSG9jU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGZpZWxkUGx1czogJ2lkJ1xyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWRLaG9hJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnS2hvYS9WaeG7h24nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0NodW5nX0RvblZpU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2RWX1RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgICAgICBkZWZhdWx0RmlsdGVyczogW1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIC8vIER1eUR2XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbmV3IEZpbHRlcih7IGZpZWxkOiAnbERWX0lEJywgb3BlcmF0b3I6ICdpbicsIHZhbHVlOiAnMjAsNjAnIH0pLFxyXG4gICAgICAgIC8vICAgICAgICAgXSxcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2lkQ2h1b25nVHJpbmhEYW9UYW8nLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdOZ8OgbmggxJHDoG8gdOG6oW8nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0NodW9uZ1RyaW5oRGFvVGFvU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlRmllbGQ6ICdzb0NodW9uZ1RyaW5oRGFvVGFvJyxcclxuICAgICAgICAvLyAgICAgICAgIC8vIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgICAgIC8vIGZpZWxkVHJlZTogJ25HQU5IX0lEX0NoYScsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IDAsXHJcbiAgICAgICAgLy8gICAgICAgICBkaXNwbGF5RmllbGQ6ICd0ZW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgLy8gcGFyZW50Q29sdW1uOiBbXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbmV3IC8vIHBhcmVudENvbHVtbkluZm8oeyBjb2x1bW46ICdpZEtob2FIb2MnLCBmb3JlaWduS2V5OiAnaWRLaG9hSG9jJywgZmllbGRWYWx1ZVBhcmVudDogJ2lkJyB9KSxcclxuICAgICAgICAvLyAgICAgICAgICAgICBuZXcgLy8gcGFyZW50Q29sdW1uSW5mbyh7IGNvbHVtbjogJ2lkS2hvYVZpZW4nLCBmb3JlaWduS2V5OiAnaWREb25WaVBodVRyYWNoJywgfSlcclxuXHJcbiAgICAgICAgLy8gICAgICAgICBdLFxyXG4gICAgICAgIC8vICAgICAgICAgZnVuY0dldExhYmVsOiBpdGVtID0+ICh7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdmFsdWU6IGl0ZW0uc29DaHVvbmdUcmluaERhb1RhbyxcclxuICAgICAgICAvLyAgICAgICAgICAgICBsYWJlbDogYCR7aXRlbS5zb0NodW9uZ1RyaW5oRGFvVGFvfS0ke2l0ZW0udGVufWBcclxuICAgICAgICAvLyAgICAgICAgIH0pXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZExvcEhhbmhDaGluaCcsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0zhu5twIGjDoG5oIGNow61uaCcsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRGFuaFNhY2hfTG9wSGFuaENoaW5oU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIC8vIHBhcmVudENvbHVtbjogW1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIG5ldyAvLyBwYXJlbnRDb2x1bW5JbmZvKHsgY29sdW1uOiAnaWRLaG9hSG9jJywgZm9yZWlnbktleTogJ2lkS2hvYUhvYycsIH0pLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIG5ldyAvLyBwYXJlbnRDb2x1bW5JbmZvKHsgY29sdW1uOiAnaWRLaG9hVmllbicsIGZvcmVpZ25LZXk6ICdpZEtob2EnLCB9KSxcclxuICAgICAgICAvLyAgICAgICAgICAgICBuZXcgLy8gcGFyZW50Q29sdW1uSW5mbyh7IGNvbHVtbjogJ2lkQ2h1b25nVHJpbmhEYW9UYW8nLCBmb3JlaWduS2V5OiAnaWROZ2FuaCcsIH0pXHJcblxyXG4gICAgICAgIC8vICAgICAgICAgXVxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIF07XHJcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRUZWFjaGVyTmFtZShpdGVtKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoaXRlbS5uZ2F5U2luaCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZ2F5U2luaCA9IG5ldyBEYXRlKGl0ZW0ubmdheVNpbmgpO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7aXRlbS5ob1ZhVGVufSAoJHtuZ2F5U2luaC5nZXRGdWxsWWVhcigpfSlgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGAke2l0ZW0uaG9WYVRlbn1gO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFRlYWNoZXJQaWNrZXJUZW1wbGF0ZShjb250cm9sOiBXcmFwUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIGlmICghY29udHJvbC52YWx1ZUZpZWxkKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudmFsdWVGaWVsZCA9ICdpZCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEtow7RuZyBz4butYSBjaOG7lyBuw6B5IHRow6BuaCBmaWVsZCBraMOhYywgdsOsIGPDsyBuaGnhu4F1IGNo4buXIMSRYW5nIHPhu60gZOG7pW5nXHJcbiAgICAgICAgaWYgKCFjb250cm9sLnNlYXJjaEZpZWxkKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wuc2VhcmNoRmllbGQgPSBbJ2NvZGUnXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjb250cm9sLmZ1bmNHZXRMYWJlbCkge1xyXG4gICAgICAgICAgICBjb250cm9sLmZ1bmNHZXRMYWJlbCA9IGl0ZW0gPT4gdGhpcy5nZXRUZWFjaGVyTmFtZShpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udHJvbC5kaXNwbGF5RmllbGQgPSAnaG9WYVRlbic7XHJcbiAgICAgICAgY29udHJvbC50aXRsZSA9ICdDaOG7jW4gZ2nhuqNuZyB2acOqbic7XHJcbiAgICAgICAgY29udHJvbC5iYXNlU2VydmljZSA9IHRoaXMuX2NhbkJvX0hvU29TZXJ2aWNlO1xyXG4gICAgICAgIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnY29kZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ03DoyBnaeG6o25nIHZpw6puJyxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyMHB4J1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnaG9WYVRlbicsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1TDqm4nLFxyXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgY29kZTogJ25nYXlTaW5oJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfDoHkgc2luaCcsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2RhdGUnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDBweCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAvLyBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgLy8gICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgICAgICAvLyAgICAgY29kZTogJ2RWX0lEX0dpYW5nRGF5JyxcclxuICAgICAgICAgICAgLy8gICAgIGxhYmVsOiAnxJDGoW4gduG7iyBnaeG6o25nIGThuqF5JyxcclxuICAgICAgICAgICAgLy8gICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgLy8gICAgIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAgICAgLy8gICAgIC8vIE7hur91IGtow7RuZyB0aOG6pXkgZOG7ryBsaeG7h3UgdGjDrCB4ZW0gdHJvbmcgZGF0YWJhc2VcclxuICAgICAgICAgICAgLy8gICAgIC8vICAgICAgVHLGsOG7nW5nIGRWX1BhcmVudElEIGPhu6dhIG5o4buvbmcgYuG6o24gZ2hpIHJvb3QgY8OzIHBo4bqjaSBi4buLIG51bGwga2jDtG5nLCBu4bq/dSBudWxsIHRow6wgcGjhuqNpIHNldCB24buBIC0xXHJcbiAgICAgICAgICAgIC8vICAgICB2YWx1ZVBhcmVudFJvb3Q6IC0xLFxyXG4gICAgICAgICAgICAvLyAgICAgZmllbGRUcmVlOiAnZFZfUGFyZW50SUQnLFxyXG4gICAgICAgICAgICAvLyAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9DaHVuZ19Eb25WaVNlcnZpY2UsXHJcbiAgICAgICAgICAgIC8vICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXHJcbiAgICAgICAgICAgIC8vICAgICBkaXNwbGF5RmllbGQ6ICdkVl9UZW4nXHJcbiAgICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRUZWFjaGVyUGx1c1BpY2tlclRlbXBsYXRlKGNvbnRyb2wpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnY29kZSc7XHJcbiAgICAgICAgLy8gfSAvLyBLaMO0bmcgc+G7rWEgY2jhu5cgbsOgeSB0aMOgbmggZmllbGQga2jDoWMsIHbDrCBjw7Mgbmhp4buBdSBjaOG7lyDEkWFuZyBz4butIGThu6VuZ1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWFyY2hGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlYXJjaEZpZWxkID0gWydjb2RlJ107XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5mdW5jR2V0TGFiZWwpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5mdW5jR2V0TGFiZWwgPSBpdGVtID0+ICh7XHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZTogaXRlbVtjb250cm9sLnNlbGVjdEZpZWxkXSxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiB0aGlzLmdldFRlYWNoZXJOYW1lKGl0ZW0pXHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb250cm9sLmRpc3BsYXlGaWVsZCA9ICdmdWxsTmFtZSc7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9ICdDaOG7jW4gZ2nhuqNuZyB2acOqbic7XHJcbiAgICAgICAgLy8gY29udHJvbC5iYXNlU2VydmljZSA9IHRoaXMuX2NhbkJvX0hvU29TZXJ2aWNlO1xyXG4gICAgICAgIC8vIGNvbnRyb2wucGx1c1VybCA9ICdDdXN0b20nO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5kZWZhdWx0RmlsdGVycykge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLmRlZmF1bHRGaWx0ZXJzID0gW107XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5kZWZhdWx0RmlsdGVycy5zb21lKHIgPT4gci5maWVsZCA9PT0gJ2xEVl9JRCcpKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuZGVmYXVsdEZpbHRlcnMucHVzaChuZXcgRmlsdGVyKHsgZmllbGQ6ICdsRFZfSUQnLCBvcGVyYXRvcjogJ2luJywgdmFsdWU6ICcyMCw2MCwyMScgfSkpO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb250cm9sLmNvbHVtbnMgPSBbXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2NvZGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdNw6MgZ2nhuqNuZyB2acOqbicsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2Z1bGxOYW1lJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnVMOqbiBnaeG6o25nIHZpw6puJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnbmdheVNpbmgnLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICdOZ8OgeSBzaW5oJyxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZGF0ZScsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2VcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnZFZfSURfR2lhbmdEYXknLFxyXG4gICAgICAgIC8vICAgICAgICAgbGFiZWw6ICfEkMahbiB24buLIGdp4bqjbmcgZOG6oXknLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6ICdpbicsXHJcbiAgICAgICAgLy8gICAgICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgLy8gICAgICAgICAvLyBO4bq/dSBraMO0bmcgdGjhuqV5IGThu68gbGnhu4d1IHRow6wgeGVtIHRyb25nIGRhdGFiYXNlXHJcbiAgICAgICAgLy8gICAgICAgICAvLyAgICAgIFRyxrDhu51uZyBkVl9QYXJlbnRJRCBj4bunYSBuaOG7r25nIGLhuqNuIGdoaSByb290IGPDsyBwaOG6o2kgYuG7iyBudWxsIGtow7RuZywgbuG6v3UgbnVsbCB0aMOsIHBo4bqjaSBzZXQgduG7gSAtMVxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVQYXJlbnRSb290OiAtMSxcclxuICAgICAgICAvLyAgICAgICAgIGZpZWxkVHJlZTogJ2RWX1BhcmVudElEJyxcclxuICAgICAgICAvLyAgICAgICAgIHNlbGVjdENoaWxkSXRlbTogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fQ2h1bmdfRG9uVmlTZXJ2aWNlLFxyXG4gICAgICAgIC8vICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgZGlzcGxheUZpZWxkOiAnZFZfVGVuJyxcclxuICAgICAgICAvLyAgICAgICAgIG11bHRpcGxlOiB0cnVlXHJcbiAgICAgICAgLy8gICAgIH0pXHJcbiAgICAgICAgLy8gICAgIC8vIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBjb2RlOiAnbWFLaG9hVmllbicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBsYWJlbDogJ0tob2EvVmnhu4duJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgLy8gICAgIHZhbHVlUGFyZW50Um9vdDogLTEsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBmaWVsZFRyZWU6ICdkVl9QYXJlbnRJRCcsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0NodW5nX0RvblZpU2VydmljZSxcclxuICAgICAgICAvLyAgICAgLy8gICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRpc3BsYXlGaWVsZDogJ2RWX1RlbicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBmaWVsZFBsdXM6ICdsRFZfSUQnLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZnVuY0dldExhYmVsOiBpdGVtID0+ICh7XHJcbiAgICAgICAgLy8gICAgIC8vICAgICAgICAgdmFsdWU6IGl0ZW0uY29kZSxcclxuICAgICAgICAvLyAgICAgLy8gICAgICAgICBsYWJlbDogaXRlbS5kVl9UZW5cclxuICAgICAgICAvLyAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGVmYXVsdEZpbHRlcnM6IFtcclxuICAgICAgICAvLyAgICAgLy8gICAgICAgICB7IGZpZWxkOiAnbERWX0lEJywgb3BlcmF0b3I6ICdpbicsIHZhbHVlOiAnMjAsNjAnIH1cclxuICAgICAgICAvLyAgICAgLy8gICAgIF0sXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBtdWx0aXBsZTogdHJ1ZVxyXG4gICAgICAgIC8vICAgICAvLyB9KSxcclxuICAgICAgICAvLyAgICAgLy8gbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgIC8vICAgICBjb2RlOiAnbWFCb01vbicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBsYWJlbDogJ0Lhu5kgbcO0bicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fQ2h1bmdfRG9uVmlTZXJ2aWNlLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGlzcGxheUZpZWxkOiAnZFZfVGVuJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIC8vIHBhcmVudENvbHVtbjogJ21hS2hvYVZpZW4nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgcGFyZW50RmllbGQ6ICdkVl9QYXJlbnRJRCcsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBkZWZhdWx0RmlsdGVyczogW1xyXG4gICAgICAgIC8vICAgICAvLyAgICAgICAgIHsgZmllbGQ6ICdsRFZfSUQnLCBvcGVyYXRvcjogJ2luJywgdmFsdWU6ICcyMScgfVxyXG4gICAgICAgIC8vICAgICAvLyAgICAgXSxcclxuICAgICAgICAvLyAgICAgLy8gICAgIG11bHRpcGxlOiB0cnVlXHJcbiAgICAgICAgLy8gICAgIC8vIH0pXHJcbiAgICAgICAgLy8gXTtcclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRTdWJqZWN0UGlja2VyVGVtcGxhdGUoY29udHJvbDogV3JhcFBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBpZiAoIWNvbnRyb2wudmFsdWVGaWVsZCkge1xyXG4gICAgICAgICAgICBjb250cm9sLnZhbHVlRmllbGQgPSAnaWQnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNvbnRyb2wuZGlzcGxheUZpZWxkKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wuZGlzcGxheUZpZWxkID0gJ3Rlbic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghY29udHJvbC5maWVsZFBsdXMpIHtcclxuICAgICAgICAgICAgY29udHJvbC5maWVsZFBsdXMgPSAnY29kZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGAsJHtjb250cm9sLmZpZWxkUGx1c30sYC5pbmRleE9mKCcsY29kZSwnKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBpZiAoIWNvbnRyb2wuZmllbGRQbHVzLmVuZHNXaXRoKCcsJykpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2wuZmllbGRQbHVzICs9ICcsJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250cm9sLmZpZWxkUGx1cyArPSAnY29kZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRyb2wuZnVuY0dldExhYmVsID0gaXRlbSA9PiBgJHtpdGVtW2NvbnRyb2wuZGlzcGxheUZpZWxkXX0gKCR7aXRlbS5jb2RlfSlgO1xyXG4gICAgICAgIGNvbnRyb2wudGl0bGUgPSAnQ2jhu41uIG3DtG4gaOG7jWMnO1xyXG4gICAgICAgIGNvbnRyb2wuYmFzZVNlcnZpY2UgPSB0aGlzLl90YmxfSG9jUGhhblNlcnZpY2U7XHJcbiAgICAgICAgY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGNvZGU6ICdjb2RlJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTcOjIG3DtG4gaOG7jWMnLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAlJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAndGVuJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVMOqbiBtw7RuIGjhu41jJyxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnaWRIZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu4cgxJHDoG8gdOG6oW8nLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9OZ3VvaUhvY19IZURhb1Rhb1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwJSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnbmFtQXBEdW5nJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTsSDbSBi4bqvdCDEkeG6p3UnLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9IZVRob25nX05hbUhvY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAnbmFtJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAlJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgLy8gbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgIC8vICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAgICAgLy8gICAgIGNvZGU6ICdpZEtob2EnLFxyXG4gICAgICAgICAgICAvLyAgICAgbGFiZWw6ICdLaG9hL1Zp4buHbicsXHJcbiAgICAgICAgICAgIC8vICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgIC8vICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0NodW5nX0RvblZpU2VydmljZSxcclxuICAgICAgICAgICAgLy8gICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAgICAgLy8gICAgIGRpc3BsYXlGaWVsZDogJ2RWX1RlbicsXHJcbiAgICAgICAgICAgIC8vICAgICBmaWVsZFBsdXM6ICdpZCcsXHJcbiAgICAgICAgICAgIC8vICAgICBkZWZhdWx0RmlsdGVyczogW1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdEVl9UcmFuZ1RoYWknLCBPcGVyYXRvci5lcXVhbCwgMSksXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ0xEVl9JRCcsIE9wZXJhdG9yLmluLCBbRW51bUxvYWlEb25WaS5LSE9BLCBFbnVtTG9haURvblZpLlZJRU5dKSxcclxuICAgICAgICAgICAgLy8gICAgIF0sXHJcbiAgICAgICAgICAgIC8vIH0pLFxyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGNvZGU6ICd2ZXJzaW9uJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnUGhpw6puIGLhuqNuJyxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaW50JyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnNyUnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgIGNvZGU6ICdjaHVvaVBoYW5UaWV0T2JqZWN0JyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnUGjDom4gdGnhur90JyxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAlJyxcclxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0SG9jUGhhbl9SYW5nQnVvY1BpY2tlclRlbXBsYXRlKGNvbnRyb2wpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnaWQnO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb250cm9sLmRpc3BsYXlGaWVsZCA9ICd0ZW5IUCc7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9ICdDaOG7jW4gaOG7jWMgcGjhuqduJztcclxuICAgICAgICAvLyBjb250cm9sLmJhc2VTZXJ2aWNlID0gdGhpcy5fdGJsX0NodW9uZ1RyaW5oRGFvVGFvX0hvY1BoYW5TZXJ2aWNlO1xyXG4gICAgICAgIC8vIGNvbnRyb2wucGx1c1VybCA9ICdnZXREc0hvY1BoYW5SYW5nQnVvYyc7XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdxJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTmjhuq1wIHThu6sga2jDs2EgdMOsbSBraeG6v20nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgLy8gICAgICAgICBpc0Rpc3BsYXk6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdtYUhQJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTcOjIEhQJyxcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2VcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ3RlbkhQJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnVMOqbiBIUCcsXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdzb1RpbkNoaScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1Phu5EgdMOtbiBjaOG7iScsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2Ryb3Bkb3duJyxcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFTb3VyY2U6IFtcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiAxLCBsYWJlbDogMSB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDIsIGxhYmVsOiAyIH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogMywgbGFiZWw6IDMgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiA0LCBsYWJlbDogNCB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDUsIGxhYmVsOiA1IH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogNiwgbGFiZWw6IDYgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiA3LCBsYWJlbDogNyB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDgsIGxhYmVsOiA4IH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogOSwgbGFiZWw6IDkgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiAxMCwgbGFiZWw6IDEwIH1cclxuICAgICAgICAvLyAgICAgICAgIF0sXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdsb2FpSG9jUGhhbicsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0xv4bqhaSBo4buNYyBwaOG6p24nLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNTZWFyY2hhYmxlOiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWRMb2FpSG9jUGhhbicsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0xv4bqhaSBo4buNYyBwaOG6p24nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0xvYWlIb2NQaGFuU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIGRpc3BsYXlGaWVsZDogJ3RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZUZpZWxkOiAnaWQnLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNEaXNwbGF5OiBmYWxzZSxcclxuICAgICAgICAvLyAgICAgICAgIGZ1bmNHZXRMYWJlbDogaXRlbSA9PiAoe1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHZhbHVlOiBpdGVtWydpZCddLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGxhYmVsOiBpdGVtWyd0ZW4nXSxcclxuICAgICAgICAvLyAgICAgICAgICAgICBpZDogaXRlbS5pZFxyXG4gICAgICAgIC8vICAgICAgICAgfSlcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ3BoYW5LeScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1Bow6JuIGvhu7MnLFxyXG4gICAgICAgIC8vICAgICAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhU291cmNlOiBbXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogMSwgbGFiZWw6IDEgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiAyLCBsYWJlbDogMiB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDMsIGxhYmVsOiAzIH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogNCwgbGFiZWw6IDQgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiA1LCBsYWJlbDogNSB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDYsIGxhYmVsOiA2IH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogNywgbGFiZWw6IDcgfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB7IHZhbHVlOiA4LCBsYWJlbDogOCB9LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHsgdmFsdWU6IDksIGxhYmVsOiA5IH0sXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgeyB2YWx1ZTogMTAsIGxhYmVsOiAxMCB9XHJcbiAgICAgICAgLy8gICAgICAgICBdLFxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAndGVuS2hvYScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0to4buRaSBLVCcsXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICd0ZW5LaG9hJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnS2hvYSAnLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNTZWFyY2hhYmxlOiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuXHJcbiAgICAgICAgLy8gXTtcclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgZ2V0SG9wRG9uZ1BpY2tlclRlbXBsYXRlKGNvbnRyb2wpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnY29kZSc7IC8vIEtow7RuZyBz4butYSBjaOG7lyBuw6B5IHRow6BuaCBmaWVsZCBraMOhYywgdsOsIGPDsyBuaGnhu4F1IGNo4buXIMSRYW5nIHPhu60gZOG7pW5nXHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuc2VhcmNoRmllbGQpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5zZWFyY2hGaWVsZCA9IFsnY29kZSddO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgLy8gY29udHJvbC5kaXNwbGF5RmllbGQgPSAnY29kZSc7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9ICdDaOG7jW4gaOG7o3AgxJHhu5NuZyc7XHJcbiAgICAgICAgLy8gY29udHJvbC5iYXNlU2VydmljZSA9IHRoaXMuX3RibF9LdHhfTmd1b2lUaHVlX0hvcERvbmdTZXJ2aWNlO1xyXG4gICAgICAgIC8vIGNvbnRyb2wuY29sdW1ucyA9IFtcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ03DoyBo4bujcCDEkeG7k25nJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWRLdHhfTmd1b2lUaHVlJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTmfGsOG7nWkgdGh1w6onLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0t0eF9OZ3VvaVRodWVTZXJ2aWNlLFxyXG4gICAgICAgIC8vICAgICAgICAgZGlzcGxheUZpZWxkOiAnaG9WYVRlbicsXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdpZEt0eF9QaG9uZycsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1Bow7JuZycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAvLyAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl90YmxfRE1fUGhvbmdIb2NTZXJ2aWNlLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNTZWFyY2hhYmxlOiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnaWRLdHhfR2l1b25nJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnR2nGsOG7nW5nJyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgIC8vICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9LdHhfR2l1b25nU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIC8vIHBhcmVudENvbHVtbjogJ2lkS3R4X1Bob25nJyxcclxuICAgICAgICAvLyAgICAgICAgIHBhcmVudEZpZWxkOiAnaWRLdHhfUGhvbmcnLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNTZWFyY2hhYmxlOiBmYWxzZVxyXG4gICAgICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgLy8gICAgICAgICBjb2RlOiAnZ2lhVHJpSG9wRG9uZycsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ0dpw6EgdHLhu4sgaOG7o3AgxJHhu5NuZycsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAvLyAgICAgICAgIGlzU2VhcmNoYWJsZTogZmFsc2UsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ251bWJlcidcclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyBdO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRFbnRpdHkocGFnZURhdGE6IFBhZ2VPcHRpb25CYXNlLCBsaW1pdDogbnVtYmVyLCBlbmRwb2ludDogc3RyaW5nLCBvcHRpb25QYXJhbWV0ZXI6IHN0cmluZyA9ICcnLCBpc0FsbDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKCFwYWdlRGF0YS5rZXkpIHBhZ2VEYXRhLmtleSA9ICcnO1xyXG4gICAgICAgIGxldCBxdWVyeVN0cmluZyA9IGA/a2V5PSR7ZW5jb2RlVVJJKHBhZ2VEYXRhLmtleSl9YDtcclxuXHJcbiAgICAgICAgaWYgKCFwYWdlRGF0YS5wYWdlKSB7XHJcbiAgICAgICAgICAgIHBhZ2VEYXRhLnBhZ2UgPSAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcXVlcnlTdHJpbmcgKz0gYCZvZmZzZXQ9JHsocGFnZURhdGEucGFnZSAtIDEpICogbGltaXR9YDtcclxuXHJcbiAgICAgICAgaWYgKGlzQWxsID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBpZiAoIWxpbWl0KSB7XHJcbiAgICAgICAgICAgICAgICBsaW1pdCA9IHRoaXMuTElNSVRfREVGQVVMVDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBxdWVyeVN0cmluZyArPSBgJmxpbWl0PSR7bGltaXR9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9IGAmbGltaXQ9MTAwMDAwYDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBpZiAocGFnZURhdGEuc29ydEZpZWxkKSB7XHJcbiAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9IGAmc29ydEZpZWxkPSR7cGFnZURhdGEuc29ydEZpZWxkfSZpc0FzYz0ke3BhZ2VEYXRhLnNvcnREaXJlY3Rpb259YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9wdGlvblBhcmFtZXRlciAhPSAnJykge1xyXG4gICAgICAgICAgICBxdWVyeVN0cmluZyArPSBgJiR7b3B0aW9uUGFyYW1ldGVyfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke2VuZHBvaW50fSR7cXVlcnlTdHJpbmd9YDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChhcGlVcmwpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXRQYWdlZChncmlkSW5mbzogR3JpZEluZm8sIGVuZHBvaW50OiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcblxyXG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KGVuZHBvaW50LCBncmlkSW5mbylcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcihlcnIgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRUZWFjaGVyRnVsbFBpY2tlclRlbXBsYXRlKGNvbnRyb2wpIHtcclxuICAgICAgICAvLyBUT0RPOiBVcGdyYWRlIGxhdGVyXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgLy8gaWYgKCFjb250cm9sLnNlbGVjdEZpZWxkKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnRyb2wuc2VsZWN0RmllbGQgPSAnY29kZSc7XHJcbiAgICAgICAgLy8gfSAvLyBLaMO0bmcgc+G7rWEgY2jhu5cgbsOgeSB0aMOgbmggZmllbGQga2jDoWMsIHbDrCBjw7Mgbmhp4buBdSBjaOG7lyDEkWFuZyBz4butIGThu6VuZ1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5zZWFyY2hGaWVsZCkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLnNlYXJjaEZpZWxkID0gWydjb2RlJ107XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5mdW5jR2V0TGFiZWwpIHtcclxuICAgICAgICAvLyAgICAgY29udHJvbC5mdW5jR2V0TGFiZWwgPSBpdGVtID0+ICh7XHJcbiAgICAgICAgLy8gICAgICAgICB2YWx1ZTogaXRlbVtjb250cm9sLnNlbGVjdEZpZWxkXSxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiB0aGlzLmdldFRlYWNoZXJOYW1lKGl0ZW0pXHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBjb250cm9sLmRpc3BsYXlGaWVsZCA9ICdmdWxsTmFtZSc7XHJcbiAgICAgICAgLy8gY29udHJvbC50aXRsZSA9ICdDaOG7jW4gZ2nhuqNuZyB2acOqbic7XHJcbiAgICAgICAgLy8gY29udHJvbC5iYXNlU2VydmljZSA9IHRoaXMuX2NhbkJvX0hvU29TZXJ2aWNlO1xyXG4gICAgICAgIC8vIGNvbnRyb2wucGx1c1VybCA9ICdDdXN0b20nO1xyXG4gICAgICAgIC8vIGlmICghY29udHJvbC5kZWZhdWx0RmlsdGVycykge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLmRlZmF1bHRGaWx0ZXJzID0gW107XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIC8vVGjDqm0gZ2nDoSB0cuG7iyAxNTAwIMSR4buRaSB24bubaSB0csaw4budbmcgaOG7o3AgZGggaHXhur9cclxuICAgICAgICAvLyBpZiAoIWNvbnRyb2wuZGVmYXVsdEZpbHRlcnMuc29tZShyID0+IHIuZmllbGQgPT09ICdsRFZfSUQnKSkge1xyXG4gICAgICAgIC8vICAgICBjb250cm9sLmRlZmF1bHRGaWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7IGZpZWxkOiAnbERWX0lEJywgb3BlcmF0b3I6ICdpbicsIHZhbHVlOiAnMjAsNjAsMjEsMTUwMDAnIH0pKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gY29udHJvbC5jb2x1bW5zID0gW1xyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTcOjIGdp4bqjbmcgdmnDqm4nLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGNvZGU6ICdmdWxsTmFtZScsXHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbDogJ1TDqm4gZ2nhuqNuZyB2acOqbicsXHJcbiAgICAgICAgLy8gICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAvLyAgICAgfSksXHJcbiAgICAgICAgLy8gICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ25nYXlTaW5oJyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnTmfDoHkgc2luaCcsXHJcbiAgICAgICAgLy8gICAgICAgICBkYXRhVHlwZTogJ2RhdGUnLFxyXG4gICAgICAgIC8vICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgLy8gICAgICAgICBpc1NlYXJjaGFibGU6IGZhbHNlXHJcbiAgICAgICAgLy8gICAgIH0pLFxyXG4gICAgICAgIC8vICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAgICAgY29kZTogJ2RWX0lEX0dpYW5nRGF5JyxcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsOiAnxJDGoW4gduG7iyBnaeG6o25nIGThuqF5JyxcclxuICAgICAgICAvLyAgICAgICAgIG9wZXJhdG9yOiAnaW4nLFxyXG4gICAgICAgIC8vICAgICAgICAgaXNUcmVlOiB0cnVlLFxyXG4gICAgICAgIC8vICAgICAgICAgLy8gTuG6v3Uga2jDtG5nIHRo4bqleSBk4buvIGxp4buHdSB0aMOsIHhlbSB0cm9uZyBkYXRhYmFzZVxyXG4gICAgICAgIC8vICAgICAgICAgLy8gICAgICBUcsaw4budbmcgZFZfUGFyZW50SUQgY+G7p2Egbmjhu69uZyBi4bqjbiBnaGkgcm9vdCBjw7MgcGjhuqNpIGLhu4sgbnVsbCBraMO0bmcsIG7hur91IG51bGwgdGjDrCBwaOG6o2kgc2V0IHbhu4EgLTFcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlUGFyZW50Um9vdDogLTEsXHJcbiAgICAgICAgLy8gICAgICAgICBmaWVsZFRyZWU6ICdkVl9QYXJlbnRJRCcsXHJcbiAgICAgICAgLy8gICAgICAgICBzZWxlY3RDaGlsZEl0ZW06IHRydWUsXHJcbiAgICAgICAgLy8gICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0NodW5nX0RvblZpU2VydmljZSxcclxuICAgICAgICAvLyAgICAgICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2RWX1RlbicsXHJcbiAgICAgICAgLy8gICAgICAgICBtdWx0aXBsZTogdHJ1ZVxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vICAgICAvLyBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRhdGFUeXBlOiAnZHJvcGRvd24nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgY29kZTogJ21hS2hvYVZpZW4nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgbGFiZWw6ICdLaG9hL1Zp4buHbicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICB2YWx1ZVBhcmVudFJvb3Q6IC0xLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZmllbGRUcmVlOiAnZFZfUGFyZW50SUQnLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3RibF9ETV9DaHVuZ19Eb25WaVNlcnZpY2UsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBkaXNwbGF5RmllbGQ6ICdkVl9UZW4nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZmllbGRQbHVzOiAnbERWX0lEJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGZ1bmNHZXRMYWJlbDogaXRlbSA9PiAoe1xyXG4gICAgICAgIC8vICAgICAvLyAgICAgICAgIHZhbHVlOiBpdGVtLmNvZGUsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAgICAgbGFiZWw6IGl0ZW0uZFZfVGVuXHJcbiAgICAgICAgLy8gICAgIC8vICAgICB9KSxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRlZmF1bHRGaWx0ZXJzOiBbXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAgICAgeyBmaWVsZDogJ2xEVl9JRCcsIG9wZXJhdG9yOiAnaW4nLCB2YWx1ZTogJzIwLDYwJyB9XHJcbiAgICAgICAgLy8gICAgIC8vICAgICBdLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgbXVsdGlwbGU6IHRydWVcclxuICAgICAgICAvLyAgICAgLy8gfSksXHJcbiAgICAgICAgLy8gICAgIC8vIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgIC8vICAgICAvLyAgICAgY29kZTogJ21hQm9Nb24nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgbGFiZWw6ICdC4buZIG3DtG4nLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGF0YVR5cGU6ICdkcm9wZG93bicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBiYXNlU2VydmljZTogdGhpcy5fdGJsX0RNX0NodW5nX0RvblZpU2VydmljZSxcclxuICAgICAgICAvLyAgICAgLy8gICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIGRpc3BsYXlGaWVsZDogJ2RWX1RlbicsXHJcbiAgICAgICAgLy8gICAgIC8vICAgICAvLyBwYXJlbnRDb2x1bW46ICdtYUtob2FWaWVuJyxcclxuICAgICAgICAvLyAgICAgLy8gICAgIHBhcmVudEZpZWxkOiAnZFZfUGFyZW50SUQnLFxyXG4gICAgICAgIC8vICAgICAvLyAgICAgZGVmYXVsdEZpbHRlcnM6IFtcclxuICAgICAgICAvLyAgICAgLy8gICAgICAgICB7IGZpZWxkOiAnbERWX0lEJywgb3BlcmF0b3I6ICdpbicsIHZhbHVlOiAnMjEnIH1cclxuICAgICAgICAvLyAgICAgLy8gICAgIF0sXHJcbiAgICAgICAgLy8gICAgIC8vICAgICBtdWx0aXBsZTogdHJ1ZVxyXG4gICAgICAgIC8vICAgICAvLyB9KVxyXG4gICAgICAgIC8vIF07XHJcblxyXG4gICAgICAgIC8vIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as FileSaver from 'file-saver';
|
|
3
|
+
import { firstValueFrom } from 'rxjs';
|
|
3
4
|
import { GenerateLinkDownloadDTO } from '../components/file-explorer/models/generate-link-download-dto';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "./environment.service";
|
|
@@ -29,8 +30,7 @@ export class FileV4Service {
|
|
|
29
30
|
}
|
|
30
31
|
generateLinkDownloadMultiple(model) {
|
|
31
32
|
const svUrl = `${this._serviceUri}/Download/GenerateDownloadMultipleLink`;
|
|
32
|
-
return this._http.post(svUrl, model)
|
|
33
|
-
.toPromise();
|
|
33
|
+
return firstValueFrom(this._http.post(svUrl, model));
|
|
34
34
|
}
|
|
35
35
|
getAnonymousDownloadUrl(hash) {
|
|
36
36
|
return `${this._serviceUri}/Download/${hash}`;
|
|
@@ -54,12 +54,10 @@ export class FileV4Service {
|
|
|
54
54
|
if (model.isFileVersion && !model.fileVersionId) {
|
|
55
55
|
model.fileVersionId = model.fileId;
|
|
56
56
|
}
|
|
57
|
-
return this._http.post(svUrl, model)
|
|
58
|
-
.toPromise();
|
|
57
|
+
return firstValueFrom(this._http.post(svUrl, model));
|
|
59
58
|
}
|
|
60
59
|
saveWithFileName(url, fileName) {
|
|
61
|
-
this._http.get(url, { responseType: 'blob' })
|
|
62
|
-
.toPromise()
|
|
60
|
+
firstValueFrom(this._http.get(url, { responseType: 'blob' }))
|
|
63
61
|
.then(rs => {
|
|
64
62
|
FileSaver.saveAs(rs, fileName);
|
|
65
63
|
})
|
|
@@ -76,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
76
74
|
providedIn: 'root'
|
|
77
75
|
}]
|
|
78
76
|
}], ctorParameters: function () { return [{ type: i1.EnvironmentService }, { type: i2.HttpClient }, { type: i3.PrintService }, { type: i4.FileExplorerService }, { type: i5.NotifierService }, { type: i6.CrudService }, { type: i7.CommonService }]; } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1vYmplY3QtdjQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2ZpbGUtb2JqZWN0LXY0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDOzs7Ozs7Ozs7QUFZeEcsTUFBTSxPQUFPLGFBQWE7SUFHdEIsWUFDSSxtQkFBdUMsRUFDL0IsS0FBaUIsRUFDakIsYUFBMkIsRUFDekIsWUFBaUMsRUFDakMsZ0JBQWlDLEVBQ2pDLFlBQXlCLEVBQ3pCLGNBQTZCO1FBTC9CLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDekIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFFdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDbEYsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQjtRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDNUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdkQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDRCQUE0QixDQUFDLEtBQWdDO1FBQ3pELE1BQU0sS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsd0NBQXdDLENBQUM7UUFFMUUsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWlCLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FDOUQsQ0FBQztJQUNWLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxJQUFZO1FBQ2hDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxhQUFhLElBQUksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYyxFQUFFLGdCQUF5QixLQUFLLEVBQUUsUUFBUztRQUNsRSxNQUFNLEtBQUssR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDNUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDdEIsS0FBSyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDcEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hFLElBQUksUUFBUSxFQUFFO2dCQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDaEQ7aUJBQ0k7Z0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM1QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQThCO1FBQy9DLE1BQU0sS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsZ0NBQWdDLENBQUM7UUFFbEUsSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUM3QyxLQUFLLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7U0FDdEM7UUFFRCxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBaUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUM5RCxDQUFDO0lBQ1YsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxRQUFRO1FBQzFCLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBTSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBZ0IsRUFBRSxDQUFDLENBQUM7YUFDdkUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ1AsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7OzBHQXJFUSxhQUFhOzhHQUFiLGFBQWEsY0FGVixNQUFNOzJGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPIH0gZnJvbSAnLi4vY29tcG9uZW50cy9maWxlLWV4cGxvcmVyL21vZGVscy9nZW5lcmF0ZS1saW5rLWRvd25sb2FkLWR0byc7XHJcbmltcG9ydCB7IEZpbGVFeHBsb3JlclNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1leHBsb3Jlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4vY29tbW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDcnVkU2VydmljZSB9IGZyb20gJy4vY3J1ZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJpbnRTZXJ2aWNlIH0gZnJvbSAnLi9wcmludC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZVY0U2VydmljZSB7XHJcbiAgICByZWFkb25seSBfc2VydmljZVVyaTogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIF9lbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgX3ByaW50U2VydmljZTogUHJpbnRTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZmlsZVNlcnZpY2U6IEZpbGVFeHBsb3JlclNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9ub3RpZmllclNlcnZpY2U6IE5vdGlmaWVyU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2NydWRTZXJ2aWNlOiBDcnVkU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuX3NlcnZpY2VVcmkgPSBgJHtfZW52aXJvbm1lbnRTZXJ2aWNlLmdldEh0dHBTZXJ2aWNlRW5kcG9pbnRPbGQoJ2ZpbGUnKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkRm9sZGVyKGZvbGRlcklkOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTygpO1xyXG4gICAgICAgIG1vZGVsLmZvbGRlcklkID0gZm9sZGVySWQ7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUxpbmtEb3dubG9hZE11bHRpcGxlKFttb2RlbF0pLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBkb3dubG9hZFVybCA9IHRoaXMuZ2V0QW5vbnltb3VzRG93bmxvYWRVcmwocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKGRvd25sb2FkVXJsKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUxpbmtEb3dubG9hZE11bHRpcGxlKG1vZGVsOiBHZW5lcmF0ZUxpbmtEb3dubG9hZERUT1tdKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRG93bmxvYWQvR2VuZXJhdGVEb3dubG9hZE11bHRpcGxlTGlua2A7XHJcblxyXG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBtb2RlbClcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbm9ueW1vdXNEb3dubG9hZFVybChoYXNoOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5fc2VydmljZVVyaX0vRG93bmxvYWQvJHtoYXNofWA7XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRGaWxlKGZpbGVJZDogc3RyaW5nLCBpc0ZpbGVWZXJzaW9uOiBib29sZWFuID0gZmFsc2UsIGZpbGVOYW1lPykge1xyXG4gICAgICAgIGNvbnN0IG1vZGVsID0gbmV3IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPKCk7XHJcbiAgICAgICAgbW9kZWwuZmlsZUlkID0gZmlsZUlkO1xyXG4gICAgICAgIG1vZGVsLmlzRmlsZVZlcnNpb24gPSBpc0ZpbGVWZXJzaW9uO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVMaW5rRG93bmxvYWQobW9kZWwpLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBkb3dubG9hZFVybCA9IHRoaXMuZ2V0QW5vbnltb3VzRG93bmxvYWRVcmwocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgIGlmIChmaWxlTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlV2l0aEZpbGVOYW1lKGRvd25sb2FkVXJsLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cub3Blbihkb3dubG9hZFVybCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUxpbmtEb3dubG9hZChtb2RlbDogR2VuZXJhdGVMaW5rRG93bmxvYWREVE8pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Eb3dubG9hZC9HZW5lcmF0ZURvd25sb2FkTGlua2A7XHJcblxyXG4gICAgICAgIGlmIChtb2RlbC5pc0ZpbGVWZXJzaW9uICYmICFtb2RlbC5maWxlVmVyc2lvbklkKSB7XHJcbiAgICAgICAgICAgIG1vZGVsLmZpbGVWZXJzaW9uSWQgPSBtb2RlbC5maWxlSWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgbW9kZWwpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZVdpdGhGaWxlTmFtZSh1cmwsIGZpbGVOYW1lKSB7XHJcbiAgICAgICAgZmlyc3RWYWx1ZUZyb20odGhpcy5faHR0cC5nZXQ8YW55Pih1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgYXMgJ2pzb24nIH0pKVxyXG4gICAgICAgICAgICAudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICBGaWxlU2F2ZXIuc2F2ZUFzKHJzLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdM4buXaSB04bqjaSBmaWxlJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { firstValueFrom } from 'rxjs';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "./signalr.service";
|
|
4
5
|
import * as i2 from "./common.service";
|
|
@@ -28,7 +29,7 @@ export class HighPerformanceService {
|
|
|
28
29
|
return new Promise(async (resolve) => {
|
|
29
30
|
const highPerformanceEndpoint = `${this.serviceUri}/HighPerformance/DoWork?returnSequenceNumber=${returnSequenceNumber}`;
|
|
30
31
|
try {
|
|
31
|
-
const rs = await this._httpClient.post(highPerformanceEndpoint, model)
|
|
32
|
+
const rs = await firstValueFrom(this._httpClient.post(highPerformanceEndpoint, model));
|
|
32
33
|
if (rs.success) {
|
|
33
34
|
resolve(rs.data);
|
|
34
35
|
}
|
|
@@ -41,7 +42,7 @@ export class HighPerformanceService {
|
|
|
41
42
|
async cancelProcess(queueName, uniqueKey) {
|
|
42
43
|
try {
|
|
43
44
|
const highPerformanceEndpoint = `${this.serviceUri}/HighPerformance/CancelWork?queueName=${queueName}&uniqueKey=${uniqueKey}`;
|
|
44
|
-
const rs = await this._httpClient.post(highPerformanceEndpoint, {})
|
|
45
|
+
const rs = await firstValueFrom(this._httpClient.post(highPerformanceEndpoint, {}));
|
|
45
46
|
if (rs.success) {
|
|
46
47
|
return rs.data;
|
|
47
48
|
}
|
|
@@ -59,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
59
60
|
providedIn: 'root'
|
|
60
61
|
}]
|
|
61
62
|
}], ctorParameters: function () { return [{ type: i1.SignalRService }, { type: i2.CommonService }, { type: i3.HttpClient }, { type: i4.EnvironmentService }]; } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaC1wZXJmb3JtYW5jZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvc2VydmljZXMvaGlnaC1wZXJmb3JtYW5jZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBVXRDLE1BQU0sT0FBTyxzQkFBc0I7SUFFL0IsWUFDWSxlQUErQixFQUMvQixjQUE2QixFQUM3QixXQUF1QixFQUN2QixtQkFBdUM7UUFIdkMsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFFL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUNBQWlDLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQWlCLEVBQUUsb0JBQXlCLElBQUksRUFBRSxPQUFZLElBQUksRUFBRSx1QkFBZ0MsS0FBSztRQUNuSCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFckQsTUFBTSxLQUFLLEdBQXlCO1lBQ2hDLFNBQVM7WUFDVCxJQUFJO1lBQ0osU0FBUyxFQUFFLGlCQUFpQjtTQUMvQixDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekQsSUFBSSxpQkFBaUIsRUFBRTtnQkFDbkIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDM0I7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDakMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLGdEQUFnRCxvQkFBb0IsRUFBRSxDQUFDO1lBQ3pILElBQUk7Z0JBQ0EsTUFBTSxFQUFFLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQWlCLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZHLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRTtvQkFDWixPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNwQjthQUNKO1lBQ0QsTUFBTTthQUVMO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFNBQVM7UUFDcEMsSUFBSTtZQUNBLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSx5Q0FBeUMsU0FBUyxjQUFjLFNBQVMsRUFBRSxDQUFDO1lBQzlILE1BQU0sRUFBRSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFpQix1QkFBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRTtnQkFDWixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7YUFDbEI7U0FDSjtRQUNELE1BQU07U0FFTDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7O21IQXREUSxzQkFBc0I7dUhBQXRCLHNCQUFzQixjQUZuQixNQUFNOzJGQUVULHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEhpZ2hQZXJmb3JtYW5jZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2hpZ2gtcGVyZm9ybWFuY2UtbW9kZWwnO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4vZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNpZ25hbFJTZXJ2aWNlIH0gZnJvbSAnLi9zaWduYWxyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaWdoUGVyZm9ybWFuY2VTZXJ2aWNlIHtcclxuICAgIHNlcnZpY2VVcmk6IHN0cmluZztcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX3NpZ25hbHJTZXJ2aWNlOiBTaWduYWxSU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2h0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBfZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZVVyaSA9IHRoaXMuX2Vudmlyb25tZW50U2VydmljZS5nZXRIdHRwU2VydmljZUVuZHBvaW50V2l0aFZlcnNpb24oJ2hpZ2hQZXJmb3JtYW5jZScpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVByb2Nlc3MocXVldWVOYW1lOiBzdHJpbmcsIGNhbGxCYWNrT25NZXNzYWdlOiBhbnkgPSBudWxsLCBkYXRhOiBhbnkgPSBudWxsLCByZXR1cm5TZXF1ZW5jZU51bWJlcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJuYWxDbGllbnRLZXkgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWQoKTtcclxuXHJcbiAgICAgICAgY29uc3QgbW9kZWw6IEhpZ2hQZXJmb3JtYW5jZU1vZGVsID0ge1xyXG4gICAgICAgICAgICBxdWV1ZU5hbWUsXHJcbiAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgIGNsaWVudEtleTogaW50ZXJuYWxDbGllbnRLZXlcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLl9zaWduYWxyU2VydmljZS5zdGFydChudWxsLCBpbnRlcm5hbENsaWVudEtleSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNhbGxCYWNrT25NZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsQmFja09uTWVzc2FnZShkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9zaWduYWxyU2VydmljZS51blN1YnNjcmliZVZpZXdDb2RlKG51bGwsIGludGVybmFsQ2xpZW50S2V5KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhpZ2hQZXJmb3JtYW5jZUVuZHBvaW50ID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9IaWdoUGVyZm9ybWFuY2UvRG9Xb3JrP3JldHVyblNlcXVlbmNlTnVtYmVyPSR7cmV0dXJuU2VxdWVuY2VOdW1iZXJ9YDtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5faHR0cENsaWVudC5wb3N0PFJlc3BvbnNlUmVzdWx0PihoaWdoUGVyZm9ybWFuY2VFbmRwb2ludCwgbW9kZWwpKTtcclxuICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShycy5kYXRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCB7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2FuY2VsUHJvY2VzcyhxdWV1ZU5hbWUsIHVuaXF1ZUtleSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhpZ2hQZXJmb3JtYW5jZUVuZHBvaW50ID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9IaWdoUGVyZm9ybWFuY2UvQ2FuY2VsV29yaz9xdWV1ZU5hbWU9JHtxdWV1ZU5hbWV9JnVuaXF1ZUtleT0ke3VuaXF1ZUtleX1gO1xyXG4gICAgICAgICAgICBjb25zdCBycyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2h0dHBDbGllbnQucG9zdDxSZXNwb25zZVJlc3VsdD4oaGlnaFBlcmZvcm1hbmNlRW5kcG9pbnQsIHt9KSk7XHJcbiAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcnMuZGF0YTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
|