tnx-shared 5.3.63 → 5.3.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/tnx-shared.umd.js +3 -3
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/esm2015/services/canbo-hoso.service.js +4 -4
- package/fesm2015/tnx-shared.js +3 -3
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
|
@@ -371,12 +371,12 @@ export class CanBoHoSoService extends BaseService {
|
|
|
371
371
|
}
|
|
372
372
|
generatePickerControlSchema(control) {
|
|
373
373
|
const result = new AutoCompletePickerControlSchema(Object.assign({ field: 'idCanBo', label: 'Cán bộ', title: 'Chọn cán bộ', multiple: false, baseService: this, plusUrl: 'WithChucDanhChucVu', displayField: 'hoVaTen', fieldPlus: 'code', funcGetLabel: (item) => {
|
|
374
|
-
let result =
|
|
374
|
+
let result = item.hoVaTen;
|
|
375
375
|
if (item.code) {
|
|
376
|
-
result = `${item.code}
|
|
376
|
+
result = `${item.code} - ${result} `;
|
|
377
377
|
}
|
|
378
378
|
if (item.tenDonVi) {
|
|
379
|
-
result
|
|
379
|
+
result += `- ${item.tenDonVi}`;
|
|
380
380
|
}
|
|
381
381
|
return result;
|
|
382
382
|
}, required: true, afterGetDataDropdown: (dataSource, element) => {
|
|
@@ -642,4 +642,4 @@ CanBoHoSoService.ctorParameters = () => [
|
|
|
642
642
|
{ type: HoSoDoiTacService },
|
|
643
643
|
{ type: CrudService }
|
|
644
644
|
];
|
|
645
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYm8taG9zby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2NhbmJvLWhvc28uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBSzdDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBUTdDLFlBQ0ks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SyxFQUFFLE9BQU87Z0JBQ2QsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsMkNBQTJDO2dCQUMzQyxXQUFXLEVBQUUsS0FBSztnQkFDbEIsV0FBVyxFQUFFLFVBQVU7YUFDMUIsQ0FBQztZQUNGLElBQUksa0JBQWtCLENBQUM7Z0JBQ25CLEtBQUssRUFBRSxPQUFPO2dCQUNkLElBQUksRUFBRSxPQUFPO2dCQUNiLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixLQUFLLEVBQUUsT0FBTzthQUNqQixDQUFDO1NBQ0wsQ0FBQztJQUNOLENBQUM7Ozs7WUFyc0JKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBakJRLFVBQVU7WUFDRSxRQUFRO1lBV3BCLG1CQUFtQjtZQUNuQixXQUFXO1lBTFgsNkJBQTZCO1lBSDdCLGtCQUFrQjtZQUtsQixpQkFBaUI7WUFEakIsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEVudW1Db250cm9sUGlja2VyVHlwZSB9IGZyb20gJy4uL2NsYXNzZXMvY29uc3RhbnRzJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEsIENvbHVtblNjaGVtYUJhc2UsIEVudGl0eVBpY2tlckNvbHVtbiwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yIH0gZnJvbSAnLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBDb0NhdVRvQ2h1Y1NlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvY2F1dG9jaHVjL3NlcnZpY2VzL2NvY2F1dG9jaHVjLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IENhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlIH0gZnJvbSAnLi9jYW5iby1ob3NvLWNvY2F1dG9jaHVjLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3J1ZFNlcnZpY2UgfSBmcm9tICcuL2NydWQuc2VydmljZSc7XG5pbXBvcnQgeyBIb1NvRG9pVGFjU2VydmljZSB9IGZyb20gJy4vaG9zb2RvaXRhYy5zZXJ2aWNlJztcbmltcG9ydCB7IE1hc3RlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDYW5Cb0hvU29TZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xuICAgIGVudmlyb25tZW50OiBhbnk7XG4gICAgdmVyc2lvbjogYW55O1xuICAgIGxzdEVudGl0eVBpY2tlckNvbHVtbjogRW50aXR5UGlja2VyQ29sdW1uW107XG4gICAgZGVmYXVsdEVudGl0eUNvbHVtbkRpY3QgPSB7XG4gICAgICAgIHYxOiB0aGlzLmdlbmVyYXRlTGlzdEVudGl0eUNvbHVtblYxKClcbiAgICB9O1xuICAgIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGh0dHA6IEh0dHBDbGllbnQsIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2FuQm9fSG9Tb19Db0NhdVRvQ2h1Y1NlcnZpY2U6IENhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jb0NhdVRvQ2h1Y1NlcnZpY2U6IENvQ2F1VG9DaHVjU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfaG9Tb0RvaVRhY1NlcnZpY2U6IEhvU29Eb2lUYWNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jcnVkU2VydmljZTogQ3J1ZFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaHR0cCwgaW5qZWN0b3IsIGAke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5jYW5ib0VuZHBvaW50fS8ke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaVZlcnNpb259L0NhbkJvX0hvU29gKTtcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5jYW5ib0VuZHBvaW50O1xuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSB0aGlzLmVudmlyb25tZW50LmFwaURvbWFpbi5jYW5ib0VuZHBvaW50O1xuICAgICAgICB0aGlzLnZlcnNpb24gPSB0aGlzLmVudmlyb25tZW50LmNhdUhpbmhOZ2hpZXBWdT8udmVyc2lvbkNvbHVtblBpY2tlckNhbkJvO1xuICAgICAgICBpZiAodGhpcy52ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbiA9IHRoaXMuZGVmYXVsdEVudGl0eUNvbHVtbkRpY3RbYHYke3RoaXMudmVyc2lvbn1gXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubHN0RW50aXR5UGlja2VyQ29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbiA9IHRoaXMuZ2VuZXJhdGVMaXN0RW50aXR5Q29sdW1uRGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgfVxuXG4gICAgZ2V0SWRzRG9uVmlIaWVuVGFpQ2FuQm8oaWRDYW5Cbzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRJZHNEb25WaUhpZW5UYWkvJHtpZENhbkJvfWApO1xuICAgIH1cblxuICAgIGdldENhbkJvQ2FwVHJlbih1c2VySWRMYXN0czogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRDYW5Cb0NhcFRyZW5gLCB7XG4gICAgICAgICAgICBsaXN0R3VpZFZhbHVlOiB1c2VySWRMYXN0c1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRMaXN0VHJlZURvblZpUXVhbkx5QnlVc2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0TGlzdFRyZWVEb25WaVF1YW5MeUJ5VXNlcmApO1xuICAgIH1cblxuICAgIGdldE1vZGVsU2NoZW1hcygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnTcOjJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ03DoycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdNw6MnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdpZCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZEhvY1ZpZW4nLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdpZCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdob1ZhVGVuJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdI4buNIHbDoCB0w6puJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ05nw6B5IHNpbmgnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmfDoHkgc2luaCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkaWVuVGhvYWlEaURvbmcnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdT4buRIMSRaeG7h24gdGhv4bqhaScsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdT4buRIMSRaeG7h24gdGhv4bqhaScsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdT4buRIMSRaeG7h24gdGhv4bqhaScsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0VtYWlsJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ0VtYWlsJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0VtYWlsJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpQ2h1Y1Z1U3RyJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnxJDGoW4gduG7iyAtIENo4bupYyB24bulJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ8SQxqFuIHbhu4sgLSBDaOG7qWMgduG7pScsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICfEkMahbiB24buLIC0gQ2jhu6ljIHbhu6UnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBnZXRDb2x1bW5TY2hlbWFCYXNlKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNTBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRIb2NWaWVuJyxcbiAgICAgICAgICAgICAgICBpbmNsdWRlU2VsZWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdob1ZhVGVuJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICduZ2F5U2luaCcsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkYXRlJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExMHB4J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkaWVuVGhvYWlEaURvbmcnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTEwcHgnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE4MHB4J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaUNodWNWdVN0cicsXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGluY2x1ZGVTZWxlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cbiAgICBnZXREYXRhRXhwb3J0MkMoZ3JpZEluZm8pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3RTaWduYWxSKFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREYXRhRXhwb3J0MkNgLFxuICAgICAgICAgICAgZ3JpZEluZm9cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpblNvWWV1THlMaWNoKGlkQ2FuQm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9JblNvWWV1THlMaWNoP2lkQ2FuQm89JHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QodXJsLCBpZENhbkJvLCB7XG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJyxcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluTHlMaWNoQm9pSG9hbihpZENhbkJvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vSW5MeUxpY2hCb2lIb2FuP2lkQ2FuQm89JHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QodXJsLCBpZENhbkJvLCB7XG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJyxcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluTHlMaWNoQm9OaGllbShpZENhbkJvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vSW5MeUxpY2hCb05oaWVtP2lkQ2FuQm89JHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QodXJsLCBpZENhbkJvLCB7XG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJyxcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRhb1RhaUtob2FuKGlkQ2FuQm86IGFueSkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L1Rhb1RhaUtob2FuLyR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIHt9KTtcbiAgICB9XG5cbiAgICBnZXRDYW5Cb0luZm8oaWRDYW5Cbzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q2FuQm9JbmZvLyR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgZ2V0RGV0YWlsV2l0aENodWNEYW5oQ2h1Y1Z1KGlkQ2FuQm86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREZXRhaWxXaXRoQ2h1Y0RhbmhDaHVjVnUvJHtpZENhbkJvfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXAgbmhhdCB0cmFuZyB0aGFpIGNhbmJvX2hvc28gdGhlbyBpZCBjYW5Cb1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZENhbkJvXG4gICAgICogQHBhcmFtIHthbnl9IGlkVHJhbmdUaGFpXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxSZXNwb25zZVJlc3VsdD59XG4gICAgICovXG4gICAgdXBkYXRlVHJhbmdUaGFpQ2FuQm9Ib1NvKGlkQ2FuQm86IHN0cmluZywgaWRUcmFuZ1RoYWk6IGFueSkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L1VwZGF0ZVRyYW5nVGhhaUNhbkJvSG9Tbz9pZENhbkJvPSR7aWRDYW5Cb30mJmlkVHJhbmdUaGFpPSR7aWRUcmFuZ1RoYWl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCB7fSk7XG4gICAgfVxuXG4gICAgR2V0VGhvbmdUaW5DYW5Cb0lkKGlkQ2FuQm86IGFueSkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldFRob25nVGluQ2FuQm9JZC8ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGNoZWNrQ2FuQm9JblBob25nRG9pTmdvYWkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYCR7dGhpcy5zZXJ2aWNlVXJpfS9DaGVja0NhbkJvSW5QaG9uZ0RvaU5nb2FpYCk7XG4gICAgfVxuXG4gICAgR2V0RGFuaFNhY2hDYW5Cb1RoZW9Eb25WaShsc3RJZE9yZ1JlcSwgZ3JpZEluZm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREYW5oU2FjaENhbkJvVGhlb0RvblZpLyR7bHN0SWRPcmdSZXF9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBncmlkSW5mbyk7XG4gICAgfVxuXG4gICAgZ2V0RGF0YUV4cG9ydEtldFF1YURhbmhHaWEoZ3JpZEluZm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREYXRhRXhwb3J0S2V0UXVhRGFuaEdpYWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZ3JpZEluZm8pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEzhuqV5IGRhbmggc8OhY2ggY8OhbiBi4buZIHbDoCBj4bqlcCBkxrDhu5tpIGhv4bq3YyBsw6AgbmjDom4gdmnDqm4gbmfGsOG7nWkgZMO5bmcgcXXhuqNuIGzDvSB0cuG7sWMgdGnhur9wXG4gICAgICogTuG6v3UgdHJvbmcgY8O5bmcgMSDEkcahbiB24buLIHRow6wgbmfGsOG7nWkgY8OzIGNo4bupYyB24bulIGPhuqVwIHRyxrDhu59uZyBz4bq9IGPDsyBj4bqlcCBkxrDhu5tpIGzDoCB0b8OgbiBi4buZIG5ow6JuIHZpw6puXG4gICAgICogQ8OybiBuZ8aw4budaSBjw7MgY2jhu6ljIHbhu6UgY+G6pXAgcGjDsyB0aMOsIGPDsyBj4bqlcCBkxrDhu5tpIGzDoCB0b8OgbiBi4buZIG5ow6JuIHZpw6puIHRy4burIGPhuqVwIHRyxrDhu59uZywgLi4uXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxSZXNwb25zZVJlc3VsdD59XG4gICAgICovXG4gICAgZ2V0Q2FuQm9DYXBEdW9pKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q2FuQm9DYXBEdW9pYCk7XG4gICAgfVxuXG4gICAgY2hlY2tJc0NhbkJvUGhvbmdUY2NiKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vQ2hlY2tJc0NhbkJvUGhvbmdUY2NiYCk7XG4gICAgfVxuXG4gICAgZ2V0SWRzRG9uVmlEdW9jUGhlcFF1YW5MeShpZERvblZpKSB7XG4gICAgICAgIGxldCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldElkc0RvblZpRHVvY1BoZXBRdWFuTHlgO1xuICAgICAgICBpZiAoaWREb25WaSkge1xuICAgICAgICAgICAgdXJsICs9IGA/aWREb25WaT0ke2lkRG9uVml9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgZ2V0UGhhbVZpRG9uVmlRdWFuTHkoaXNHZXRUcmVlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRQaGFtVmlEb25WaVF1YW5MeT9pc0dldFRyZWU9JHtpc0dldFRyZWV9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cbiAgICBnZXRJZHNEb25WaVF1YW5MeShhbGxDaGlsZCA9IHRydWUpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRJZHNEb25WaVF1YW5MeT9hbGxDaGlsZD0ke2FsbENoaWxkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRJZHNDYW5Cb0N1bmdEb25WaSgpIHtcbiAgICAgICAgY29uc3QgcHJvZmlsZUluZm8gPSB0aGlzLl91c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgICBsZXQgaWRzQ2FuQm8gPSBbXTtcbiAgICAgICAgaWYgKHByb2ZpbGVJbmZvPy5pZENhbkJvKSB7XG4gICAgICAgICAgICBjb25zdCBjb21tb24gPSBbdGhpcy5uZXdGaWx0ZXIoJ2NvbkhpZXVMdWMnLCBPcGVyYXRvci5lcXVhbCwgdHJ1ZSldO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtcbiAgICAgICAgICAgICAgICAuLi5jb21tb24sXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkQ2FuQm8nLCBPcGVyYXRvci5lcXVhbCwgcHJvZmlsZUluZm8uaWRDYW5CbyksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgbGV0IGlkc0RvblZpQ2FuQm9Mb2dpbiA9IFtdO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fY2FuQm9fSG9Tb19Db0NhdVRvQ2h1Y1NlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0QWxsKGZpbHRlcnMpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZHNEb25WaUNhbkJvTG9naW4gPSBycy5kYXRhLm1hcCgoeCkgPT4geC5pZERvblZpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaWRzRG9uVmlDYW5Cb0xvZ2luLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaWRzRG9uVmkgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGNvQ2F1VG9DaHVjRmlsdGVycyA9IG5ldyBGaWx0ZXIoeyBsb2dpYzogJ29yJywgZmlsdGVyczogW10gfSk7XG4gICAgICAgICAgICBpZHNEb25WaUNhbkJvTG9naW4uZm9yRWFjaCgoaWREb25WaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvQ2F1VG9DaHVjRmlsdGVycy5maWx0ZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2lkRHVvbmdEYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGA7JHtpZERvblZpfTtgXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9jb0NhdVRvQ2h1Y1NlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0QWxsKFtjb0NhdVRvQ2h1Y0ZpbHRlcnNdLCAnaWQnKVxuICAgICAgICAgICAgICAgIC50aGVuKChycykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRzRG9uVmkgPSBycy5kYXRhLm1hcCgoeCkgPT4geC5pZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGlkc0RvblZpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBuZXdmaWx0ZXJzID0gW1xuICAgICAgICAgICAgICAgIC4uLmNvbW1vbixcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWREb25WaScsIE9wZXJhdG9yLmluLCBpZHNEb25WaSksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fY2FuQm9fSG9Tb19Db0NhdVRvQ2h1Y1NlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0QWxsKG5ld2ZpbHRlcnMsICdpZENhbkJvJylcbiAgICAgICAgICAgICAgICAudGhlbigocnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkc0NhbkJvID0gcnMuZGF0YS5tYXAoKHgpID0+IHguaWRDYW5Cbyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpZHNDYW5CbztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVDb2x1bW5Eb25WaSgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpQ2FwMnMnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZG9uVmlUaGVvQ2FwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLaG9hIHZp4buHbi8gxJHGoW4gduG7iycpLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjIwcHgnLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlDYXAzcycsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkb25WaVRoZW9DYXAnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Lhu5kgbcO0bi8gdsSDbiBwaMOybmcga2hvYScpLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjIwcHgnLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGdldEluZm9DYW5Cb1dpdGhEb25WaUNodWNWdShsc3RJZENhbkJvOiBzdHJpbmdbXSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW3RoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCBsc3RJZENhbkJvKV07XG4gICAgICAgIHJldHVybiB0aGlzLmdldERhdGFDdXN0b21Sb3V0ZShcbiAgICAgICAgICAgIGBGaWx0ZXJCeU9yZy8ke3RoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZEVtcHR5KCl9YCxcbiAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgMTAwMDAwXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0VGhvbmdUaW5Eb25WaUNhbkJvKGl0ZW1DYW5CbzogYW55LCBsc3RDYW5Cb0RvblZpOiBhbnlbXSkge1xuICAgICAgICBjb25zdCBob1NvRG9uVmkgPSBsc3RDYW5Cb0RvblZpLmZpbmQoKHgpID0+IHguaWQgPT0gaXRlbUNhbkJvLmlkQ2FuQm8pO1xuICAgICAgICBpZiAoaG9Tb0RvblZpKSB7XG4gICAgICAgICAgICBpdGVtQ2FuQm8uZG9uVmlDYXAycyA9IGhvU29Eb25WaS5kb25WaUNhcDJzO1xuICAgICAgICAgICAgaXRlbUNhbkJvLmRvblZpQ2FwM3MgPSBob1NvRG9uVmkuZG9uVmlDYXAzcztcbiAgICAgICAgICAgIGl0ZW1DYW5Cby5kb25WaUNodWNWdXMgPSBob1NvRG9uVmkuZG9uVmlDaHVjVnVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RG9uVmlGdWxsc0J5Q2FuQm9BcGkoaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERvblZpRnVsbHNCeUNhbkJvQXBpP2lkQ2FuQm89JHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRJbmZvQWZ0ZXJHZXREYXRhKGRhdGFTb3VyY2UpIHtcbiAgICAgICAgY29uc3QgZ3VpZEVtcHR5ID0gdGhpcy5fY29tbW9uU2VydmljZS5ndWlkRW1wdHkoKTtcbiAgICAgICAgY29uc3QgaWRzQ2FuQm8gPSB0aGlzLl9jb21tb25TZXJ2aWNlLmRpc3RpbmN0QXJyYXkoXG4gICAgICAgICAgICBkYXRhU291cmNlXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5pZENhbkJvICE9IGd1aWRFbXB0eSlcbiAgICAgICAgICAgICAgICAubWFwKCh4KSA9PiB4LmlkQ2FuQm8pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGxzdENhbkJvID0gKFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRBbGwoXG4gICAgICAgICAgICAgICAgW3RoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCBpZHNDYW5CbyldLFxuICAgICAgICAgICAgICAgICdpZCxjb2RlLGhvVmFUZW4sbmdheVNpbmgsZ2lvaVRpbmgnXG4gICAgICAgICAgICApXG4gICAgICAgICkuZGF0YTtcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5pZENhbkJvICE9IGd1aWRFbXB0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbkJvID0gbHN0Q2FuQm8uZmluZCgoeCkgPT4geC5pZCA9PSBlbGVtZW50LmlkQ2FuQm8pO1xuICAgICAgICAgICAgICAgIGlmIChjYW5Cbykge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1hQ2FuQm8gPSBjYW5Cby5jb2RlO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmhvVmFUZW4gPSBjYW5Cby5ob1ZhVGVuO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnRlbkNhbkJvID0gY2FuQm8uaG9WYVRlbjtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5uZ2F5U2luaCA9IGNhbkJvLm5nYXlTaW5oO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lmdpb2lUaW5oID0gY2FuQm8uZ2lvaVRpbmg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRJZFVzZXJCeURvblZpKGxzdElkRG9uVmk6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vZ2V0SWRVc2VyQnlEb25WaWAsIHtcbiAgICAgICAgICAgIGxpc3RHdWlkVmFsdWU6IGxzdElkRG9uVmksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldElkQ2FuQm9CeURvblZpKGxzdElkRG9uVmk6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vZ2V0SWRDYW5Cb0J5RG9uVmlgLCB7XG4gICAgICAgICAgICBsaXN0R3VpZFZhbHVlOiBsc3RJZERvblZpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaV9CeVVzZXJJZCh1c2VySWQpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaV9CeVVzZXJJZC8ke3VzZXJJZH1gO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgR2V0Q29DYXVUb0NodWNSb290RG9uVmlfQnlMaXN0VXNlcklkKGxzdFVzZXJJZCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldENvQ2F1VG9DaHVjUm9vdERvblZpX0J5TGlzdFVzZXJJZGA7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlZmF1bHRQb3N0KHVybCwgbHN0VXNlcklkKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaShncmlkSW5mbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEFsbEJ5RmlsdGVyL0dldENvQ2F1VG9DaHVjUm9vdERvblZpYDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVmYXVsdFBvc3QodXJsLCBncmlkSW5mbyk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVQaWNrZXJDb250cm9sU2NoZW1hKGNvbnRyb2w6IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgZmllbGQ6ICdpZENhbkJvJyxcbiAgICAgICAgICAgIGxhYmVsOiAnQ8OhbiBi4buZJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQ2jhu41uIGPDoW4gYuG7mScsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcyxcbiAgICAgICAgICAgIHBsdXNVcmw6ICdXaXRoQ2h1Y0RhbmhDaHVjVnUnLFxuICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnaG9WYVRlbicsXG4gICAgICAgICAgICBmaWVsZFBsdXM6ICdjb2RlJyxcbiAgICAgICAgICAgIGZ1bmNHZXRMYWJlbDogKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYCR7aXRlbS5ob1ZhVGVufWA7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY29kZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBgJHtpdGVtLmNvZGV9LSR7cmVzdWx0fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnRlbkRvblZpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGAgLSAke2l0ZW0udGVuRG9uVml9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGFmdGVyR2V0RGF0YURyb3Bkb3duOiAoZGF0YVNvdXJjZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGVuRG9uVmkoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhUGlja2VkOiBhc3luYyAoZGF0YVNvdXJjZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0RGF0YVBsdXMoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhVW5QaWNrZWQ6IGFzeW5jIChkYXRhU291cmNlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXREYXRhUGx1cyhkYXRhU291cmNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbixcbiAgICAgICAgICAgIC4uLmNvbnRyb2wsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoY29udHJvbC5kYXRhVHlwZSA9PSBFbnVtQ29udHJvbFBpY2tlclR5cGUuRE9JVEFDICYmICF0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbi5zb21lKGl0ZW0gPT4gaXRlbS5jb2RlID09ICdpZERvaVRhYycpKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbi5wdXNoKFxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ8SQ4buRaSB0w6FjJyxcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ2lkRG9pVGFjJyxcbiAgICAgICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2hvU29Eb2lUYWNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGlzQXJyYXlGaWVsZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcyMDBweCcsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQuZmllbGRQbHVzKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcmVzdWx0LmZpZWxkUGx1c1xuICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChxKSA9PiBxLnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgLmluZGV4T2YoJ2lkTmdhY2hWaWVuQ2h1YycpID09IC0xXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuZmllbGRQbHVzICs9ICcsaWROZ2FjaFZpZW5DaHVjJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5maWVsZFBsdXMgPSAnaWROZ2FjaFZpZW5DaHVjJztcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQuZmllbGRQbHVzICs9ICcsbmdheVNpbmgsbmdheVNpbmgyLGNodWNEYW5ocyxpZEhvY0hhbSxpZEhvY1ZpLGRpZW5UaG9haURpRG9uZyxjb2RlJztcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGVuRG9uVmkoZGF0YVNvdXJjZTogYW55W10pIHtcbiAgICAgICAgaWYgKCFkYXRhU291cmNlPy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIC8vIELhu5Ugc3VuZyBt4buZdCBz4buRIHRow7RuZyB0aW4gxJHhu4MgaGnhu4NuIHRo4buLIGxhYmVsIHRyw6puIGF1dG9jb21wbGV0ZSBwaWNrZXIgZOG6oW5nIGRyb3Bkb3duXG4gICAgICAgICAgICBpZiAoaXRlbS5kb25WaUNodWNWdXMgJiYgaXRlbS5kb25WaUNodWNWdXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBpdGVtRG9uVmlDaGluaCA9IGl0ZW0uZG9uVmlDaHVjVnVzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChxKSA9PiBxLmlzRG9uVmlDaGluaFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtRG9uVmlDaGluaCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtRG9uVmlDaGluaCA9IGl0ZW0uZG9uVmlDaHVjVnVzWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVtLnRlbkRvblZpID0gaXRlbURvblZpQ2hpbmguY2h1Y1Z1XG4gICAgICAgICAgICAgICAgICAgID8gYCR7aXRlbURvblZpQ2hpbmguY2h1Y1Z1fSAke2l0ZW1Eb25WaUNoaW5oLmRvblZpfWBcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtRG9uVmlDaGluaC5kb25WaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGdldERhdGFQbHVzKGRhdGFTb3VyY2U6IGFueSkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgaWYgKGl0ZW0uY2h1Y0RhbmhzKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5zdHJDaHVjRGFuaHMgPSBpdGVtLmNodWNEYW5ocy50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbS5zdHJDaHVjRGFuaHMgPSAnJztcbiAgICAgICAgICAgIGlmIChpdGVtLmNodWNEYW5ocykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBpdGVtLmNodWNEYW5ocykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaS5jaHVjRGFuaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdHJDaHVjRGFuaHMgKz0gaS5jaHVjRGFuaDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW0uc3RyRG9uVmlDaHVjVnVzID0gJyc7XG4gICAgICAgICAgICBpZiAoaXRlbS5kb25WaUNodWNWdXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBpdGVtLmRvblZpQ2h1Y1Z1cykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaS5jaHVjVnUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RyRG9uVmlDaHVjVnVzICs9IGA8cD4ke2kuY2h1Y1Z1fSAtICR7aS5kb25WaX08L3A+YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RyRG9uVmlDaHVjVnVzICs9IGA8cD4ke2kuZG9uVml9PC9wPmA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5uZ2F5U2luaCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uc3RyTmdheVNpbmggPSB0aGlzLl9jcnVkU2VydmljZS5yZW5kZXJEYXRlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLm5nYXlTaW5oLFxuICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtLnN0ck5nYXlTaW5oID0gaXRlbS5uZ2F5U2luaDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtLmhvY0hhbUhvY1ZpXG4gICAgICAgICAgICAgICAgPSBpdGVtLmlkSG9jSGFtICYmIGl0ZW0uaWRIb2NWaVxuICAgICAgICAgICAgICAgICAgICA/IGAke2l0ZW0uaWRIb2NIYW19LiAke2l0ZW0uaWRIb2NWaX1gXG4gICAgICAgICAgICAgICAgICAgIDogaXRlbS5pZEhvY0hhbSB8fCBpdGVtLmlkSG9jVmk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVDYW5Cb1RvR2lhbmdWaWVuKG1vZGVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVDYW5Cb1RvR2lhbmdWaWVuYCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY3JlYXRlR2lhbmdWaWVuRG9pVGFjKG1vZGVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9DcmVhdGVHaWFuZ1ZpZW5Eb2lUYWNgLFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlR2lhbmdWaWVuTm9pQm8obW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFB1dChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vVXBkYXRlR2lhbmdWaWVuTm9pQm8vJHttb2RlbC5pZH1gLFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVHaWFuZ1ZpZW5Eb2lUYWMobW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFB1dChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vVXBkYXRlR2lhbmdWaWVuRG9pVGFjLyR7bW9kZWwuaWR9YCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICk7XG4gICAgfVxuICAgIGFzeW5jIGdldEx5TGljaEtob2FIb2NDYW5CbyhpZCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEx5TGljaEtob2FIb2NDYW5Cby8ke2lkfWA7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUxpc3RFbnRpdHlDb2x1bW5EZWZhdWx0KCkge1xuICAgICAgICBjb25zdCBfbWFzdGVyRGF0YVNlcnZpY2UgPSB0aGlzLl9pbmplY3Rvci5nZXQoTWFzdGVyRGF0YVNlcnZpY2UpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNw6MnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc4MHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdI4buNYyBow6BtLCBo4buNYyB24buLJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnaG9jSGFtSG9jVmknLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNTBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgY29kZTogJ2hvVmFUZW4nLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyTmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyMHB4JyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IDEsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnR2nhu5tpIHTDrW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnZ2lvaVRpbmgnLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiBfbWFzdGVyRGF0YVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZ3JvdXBDb2RlOiAnR0lPSV9USU5IJyxcbiAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOTBweCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAxLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyBkYW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyQ2h1Y0RhbmhzJyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1MHB4JyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2jhu6ljIHbhu6UgLSDEkMahbiB24buLJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyRG9uVmlDaHVjVnVzJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2h0bWwnLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjIwcHgnLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIC8vIHRlbXBsYXRlRmlsdGVyOiB0ZW1wbGF0ZS5maWx0ZXJEb25WaVJlZixcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmllbGRGaWx0ZXI6ICdpZERvblZpcycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnRW1haWwnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNzBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnxJDhu5FpIHTDoWMnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdpZERvaVRhYycsXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNBcnJheUZpZWxkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9ob1NvRG9pVGFjU2VydmljZSxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVMaXN0RW50aXR5Q29sdW1uVjEoKSB7XG4gICAgICAgIGNvbnN0IF9tYXN0ZXJEYXRhU2VydmljZSA9IHRoaXMuX2luamVjdG9yLmdldChNYXN0ZXJEYXRhU2VydmljZSk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ03DoycsXG4gICAgICAgICAgICAgICAgY29kZTogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzgwcHgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdob1ZhVGVuJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMDBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfDoHkgc2luaCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ3N0ck5nYXlTaW5oJyxcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMjBweCcsXG4gICAgICAgICAgICAgICAgbm90SW5GaWVsZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAxLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0dp4bubaSB0w61uaCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ2dpb2lUaW5oJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogX21hc3RlckRhdGFTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGdyb3VwQ29kZTogJ0dJT0lfVElOSCcsXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzkwcHgnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogMSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDaOG7qWMgduG7pSAtIMSQxqFuIHbhu4snLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdzdHJEb25WaUNodWNWdXMnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaHRtbCcsXG4gICAgICAgICAgICAgICAgbm90SW5GaWVsZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMjBweCcsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgLy8gdGVtcGxhdGVGaWx0ZXI6IHRlbXBsYXRlLmZpbHRlckRvblZpUmVmLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmaWVsZEZpbHRlcjogJ2lkRG9uVmlzJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdFbWFpbCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE3MHB4JyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxufVxuXG4iXX0=
|
|
645
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYm8taG9zby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2NhbmJvLWhvc28uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBSzdDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBUTdDLFlBQ0ksSUFBZ0IsRUFBRSxRQUFrQixFQUNwQyxvQkFBeUMsRUFDakMsWUFBeUIsRUFDekIsOEJBQTZELEVBQzdELG1CQUF1QyxFQUN2QyxrQkFBcUMsRUFDckMsWUFBeUI7O1FBRWpDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxhQUFhLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsYUFBYSxDQUFDLENBQUM7UUFOL0osaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsbUNBQThCLEdBQTlCLDhCQUE4QixDQUErQjtRQUM3RCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsaUJBQVksR0FBWixZQUFZLENBQWE7UUFYckMsNEJBQXVCLEdBQUc7WUFDdEIsRUFBRSxFQUFFLElBQUksQ0FBQywwQkFBMEIsRUFBRTtTQUN4QyxDQUFDO1FBWUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztRQUNyRixJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUNoRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztRQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLDBDQUFFLHdCQUF3QixDQUFDO1FBQzFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNqRjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1NBQ3ZFO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsT0FBZTtRQUNuQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSx1QkFBdUIsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsZUFBZSxDQUFDLFdBQXFCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLGtCQUFrQixFQUFFO1lBQzFELGFBQWEsRUFBRSxXQUFXO1NBQzdCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCw0QkFBNEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsK0JBQStCLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsZUFBZTtRQUNYLE9BQU87WUFDSCxJQUFJLFdBQVcsQ0FBQztnQkFDWixLQUFLLEVBQUUsTUFBTTtnQkFDYixJQUFJLEVBQUUsSUFBSTtnQkFDVixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQUUsSUFBSTthQUNwQixDQUFDO1lBQ0YsSUFBSSxXQUFXLENBQUM7Z0JBQ1osS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsV0FBVyxFQUFFLElBQUk7YUFDcEIsQ0FBQztZQUNGLElBQUksV0FBVyxDQUFDO2dCQUNaLEtBQUssRUFBRSxXQUFXO2dCQUNsQixJQUFJLEVBQUUsSUFBSTtnQkFDVixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQUUsSUFBSTthQUNwQixDQUFDO1lBQ0YsSUFBSSxXQUFXLENBQUM7Z0JBQ1osS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLElBQUksRUFBRSxXQUFXO2dCQUNqQixRQUFRLEVBQUUsV0FBVztnQkFDckIsV0FBVyxFQUFFLFdBQVc7YUFDM0IsQ0FBQztZQUNGLElBQUksV0FBVyxDQUFDO2dCQUNaLEtBQUssRUFBRSxVQUFVO2dCQUNqQixJQUFJLEVBQUUsV0FBVztnQkFDakIsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLFdBQVcsRUFBRSxXQUFXO2FBQzNCLENBQUM7WUFDRixJQUFJLFdBQVcsQ0FBQztnQkFDWixLQUFLLEVBQUUsaUJBQWlCO2dCQUN4QixJQUFJLEVBQUUsZUFBZTtnQkFDckIsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFdBQVcsRUFBRSxlQUFlO2FBQy9CLENBQUM7WUFDRixJQUFJLFdBQVcsQ0FBQztnQkFDWixLQUFLLEVBQUUsT0FBTztnQkFDZCxJQUFJLEVBQUUsT0FBTztnQkFDYixRQUFRLEVBQUUsT0FBTztnQkFDakIsV0FBVyxFQUFFLE9BQU87YUFDdkIsQ0FBQztZQUNGLElBQUksV0FBVyxDQUFDO2dCQUNaLEtBQUssRUFBRSxnQkFBZ0I7Z0JBQ3ZCLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFdBQVcsRUFBRSxrQkFBa0I7YUFDbEMsQ0FBQztTQUNMLENBQUM7SUFDTixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsT0FBTztZQUNILElBQUksZ0JBQWdCLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxPQUFPO2FBQ2pCLENBQUM7WUFDRixJQUFJLGdCQUFnQixDQUFDO2dCQUNqQixLQUFLLEVBQUUsV0FBVztnQkFDbEIsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLE9BQU8sRUFBRSxLQUFLO2FBQ2pCLENBQUM7WUFDRixJQUFJLGdCQUFnQixDQUFDO2dCQUNqQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQztZQUNGLElBQUksZ0JBQWdCLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxVQUFVO2dCQUNqQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQztZQUNGLElBQUksZ0JBQWdCLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLEtBQUssRUFBRSxPQUFPO2FBQ2pCLENBQUM7WUFDRixJQUFJLGdCQUFnQixDQUFDO2dCQUNqQixLQUFLLEVBQUUsT0FBTztnQkFDZCxLQUFLLEVBQUUsT0FBTzthQUNqQixDQUFDO1lBQ0YsSUFBSSxnQkFBZ0IsQ0FBQztnQkFDakIsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxLQUFLO2dCQUNYLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixLQUFLLEVBQUUsT0FBTzthQUNqQixDQUFDO1NBQ0wsQ0FBQztJQUNOLENBQUM7SUFDRCxlQUFlLENBQUMsUUFBUTtRQUNwQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FDMUIsR0FBRyxJQUFJLENBQUMsVUFBVSxrQkFBa0IsRUFDcEMsUUFBUSxDQUNYLENBQUM7SUFDTixDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQU87UUFDakIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSwwQkFBMEIsT0FBTyxFQUFFLENBQUM7UUFDbEUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFO1lBQ2pDLFlBQVksRUFBRSxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FDN0IsY0FBYyxFQUNkLGtCQUFrQixDQUNyQjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBTztRQUNuQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLDRCQUE0QixPQUFPLEVBQUUsQ0FBQztRQUNwRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUU7WUFDakMsWUFBWSxFQUFFLE1BQU07WUFDcEIsT0FBTyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUM3QixjQUFjLEVBQ2Qsa0JBQWtCLENBQ3JCO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFPO1FBQ25CLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsNEJBQTRCLE9BQU8sRUFBRSxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRTtZQUNqQyxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQzdCLGNBQWMsRUFDZCxrQkFBa0IsQ0FDckI7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVk7UUFDcEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxnQkFBZ0IsT0FBTyxFQUFFLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWU7UUFDeEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxpQkFBaUIsT0FBTyxFQUFFLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxPQUFlO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FDbEIsR0FBRyxJQUFJLENBQUMsVUFBVSxnQ0FBZ0MsT0FBTyxFQUFFLENBQzlELENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx3QkFBd0IsQ0FBQyxPQUFlLEVBQUUsV0FBZ0I7UUFDdEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxxQ0FBcUMsT0FBTyxpQkFBaUIsV0FBVyxFQUFFLENBQUM7UUFDekcsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBWTtRQUMzQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLHVCQUF1QixPQUFPLEVBQUUsQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELHlCQUF5QjtRQUNyQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSw0QkFBNEIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsUUFBUTtRQUMzQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLDhCQUE4QixXQUFXLEVBQUUsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxRQUFRO1FBQy9CLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsNkJBQTZCLENBQUM7UUFDNUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsa0JBQWtCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQscUJBQXFCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHdCQUF3QixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELHlCQUF5QixDQUFDLE9BQU87UUFDN0IsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSw0QkFBNEIsQ0FBQztRQUN6RCxJQUFJLE9BQU8sRUFBRTtZQUNULEdBQUcsSUFBSSxZQUFZLE9BQU8sRUFBRSxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsS0FBSztRQUNsQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLG1DQUFtQyxTQUFTLEVBQUUsQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJO1FBQzdCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsK0JBQStCLFFBQVEsRUFBRSxDQUFDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUssb0JBQW9COztZQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZELElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLEVBQUU7Z0JBQ3RCLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxNQUFNLE9BQU8sR0FBRztvQkFDWixHQUFHLE1BQU07b0JBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDO2lCQUNqRSxDQUFDO2dCQUNGLElBQUksa0JBQWtCLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixNQUFNLElBQUksQ0FBQyw4QkFBOEI7cUJBQ3BDLE1BQU0sQ0FBQyxPQUFPLENBQUM7cUJBQ2YsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFO3dCQUNaLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3REO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVQLElBQUksa0JBQWtCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtvQkFDaEMsT0FBTyxFQUFFLENBQUM7aUJBQ2I7Z0JBRUQsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixNQUFNLGtCQUFrQixHQUFHLElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDcEUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ25DLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzNCLElBQUksQ0FBQyxTQUFTLENBQ1YsWUFBWSxFQUNaLFFBQVEsQ0FBQyxPQUFPLEVBQ2hCLElBQUksT0FBTyxHQUFHLENBQ2pCLENBQ0osQ0FBQztnQkFDTixDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLElBQUksQ0FBQyxtQkFBbUI7cUJBQ3pCLE1BQU0sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxDQUFDO3FCQUNsQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQkFDVCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7d0JBQ1osUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ3ZDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVQLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7b0JBQ3RCLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2dCQUVELE1BQU0sVUFBVSxHQUFHO29CQUNmLEdBQUcsTUFBTTtvQkFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQztpQkFDbkQsQ0FBQztnQkFDRixNQUFNLElBQUksQ0FBQyw4QkFBOEI7cUJBQ3BDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDO3FCQUM3QixJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQkFDVCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7d0JBQ1osUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQzVDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNQLE9BQU8sUUFBUSxDQUFDO2FBQ25CO1lBQ0QsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO0tBQUE7SUFFRCxtQkFBbUI7UUFDZixPQUFPO1lBQ0gsSUFBSSxnQkFBZ0IsQ0FBQztnQkFDakIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztnQkFDMUQsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxLQUFLO2FBQ2QsQ0FBQztZQUNGLElBQUksZ0JBQWdCLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxZQUFZO2dCQUNuQixRQUFRLEVBQUUsY0FBYztnQkFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUM7Z0JBQy9ELEtBQUssRUFBRSxPQUFPO2dCQUNkLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixJQUFJLEVBQUUsS0FBSzthQUNkLENBQUM7U0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELDJCQUEyQixDQUFDLFVBQW9CO1FBQzVDLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUMxQixlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFDaEQsT0FBTyxFQUNQLEVBQUUsRUFDRixFQUFFLEVBQ0YsTUFBTSxDQUNULENBQUM7SUFDTixDQUFDO0lBRUQscUJBQXFCLENBQUMsU0FBYyxFQUFFLGFBQW9CO1FBQ3RELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksU0FBUyxFQUFFO1lBQ1gsU0FBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBQzVDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUM1QyxTQUFTLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7U0FDbkQ7SUFDTCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsT0FBTztRQUMzQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLG9DQUFvQyxPQUFPLEVBQUUsQ0FBQztRQUM1RSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVLLG1CQUFtQixDQUFDLFVBQVU7O1lBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQzlDLFVBQVU7aUJBQ0wsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQztpQkFDckMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQzdCLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRyxDQUNiLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FDYixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFDN0MsbUNBQW1DLENBQ3RDLENBQ0osQ0FBQyxJQUFJLENBQUM7WUFDUCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzNCLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7b0JBQzlCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM1RCxJQUFJLEtBQUssRUFBRTt3QkFDUCxPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQzdCLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQzt3QkFDaEMsT0FBTyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO3dCQUNqQyxPQUFPLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7d0JBQ2xDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztxQkFDckM7aUJBQ0o7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7S0FBQTtJQUVELGdCQUFnQixDQUFDLFVBQW9CO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLG1CQUFtQixFQUFFO1lBQzNELGFBQWEsRUFBRSxVQUFVO1NBQzVCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxVQUFvQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxvQkFBb0IsRUFBRTtZQUM1RCxhQUFhLEVBQUUsVUFBVTtTQUM1QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUssZ0NBQWdDLENBQUMsTUFBTTs7WUFDekMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxxQ0FBcUMsTUFBTSxFQUFFLENBQUM7WUFDNUUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQztLQUFBO0lBRUssb0NBQW9DLENBQUMsU0FBUzs7WUFDaEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSx1Q0FBdUMsQ0FBQztZQUN0RSxPQUFPLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbEQsQ0FBQztLQUFBO0lBRUssdUJBQXVCLENBQUMsUUFBUTs7WUFDbEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSx5Q0FBeUMsQ0FBQztZQUN4RSxPQUFPLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDakQsQ0FBQztLQUFBO0lBRUQsMkJBQTJCLENBQUMsT0FBd0M7UUFDaEUsTUFBTSxNQUFNLEdBQUcsSUFBSSwrQkFBK0IsaUJBQzlDLEtBQUssRUFBRSxTQUFTLEVBQ2hCLEtBQUssRUFBRSxRQUFRLEVBQ2YsS0FBSyxFQUFFLGFBQWEsRUFDcEIsUUFBUSxFQUFFLEtBQUssRUFDZixXQUFXLEVBQUUsSUFBSSxFQUNqQixPQUFPLEVBQUUsb0JBQW9CLEVBQzdCLFlBQVksRUFBRSxTQUFTLEVBQ3ZCLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNuQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUMxQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ1gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksTUFBTSxNQUFNLEdBQUcsQ0FBQztpQkFDeEM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNmLE1BQU0sSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDbEM7Z0JBQ0QsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQyxFQUNELFFBQVEsRUFBRSxJQUFJLEVBQ2Qsb0JBQW9CLEVBQUUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsQ0FBQyxFQUNELGtCQUFrQixFQUFFLENBQU8sVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUM5QyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFBLEVBQ0Qsb0JBQW9CLEVBQUUsQ0FBTyxVQUFVLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0JBQ2hELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUEsRUFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixJQUNoQyxPQUFPLEVBQ1osQ0FBQztRQUNILElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRTtZQUN2SCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUMzQixJQUFJLGtCQUFrQixDQUFDO2dCQUNuQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2dCQUNwQyxRQUFRLEVBQUUsSUFBSTtnQkFDZCxjQUFjLEVBQUUsSUFBSTtnQkFDcEIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPO2FBQ2pCLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFDSSxNQUFNLENBQUMsU0FBUztpQkFDWCxLQUFLLENBQUMsR0FBRyxDQUFDO2lCQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNwQixPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDdkM7Z0JBQ0UsTUFBTSxDQUFDLFNBQVMsSUFBSSxrQkFBa0IsQ0FBQzthQUMxQztTQUNKO2FBQ0k7WUFDRCxNQUFNLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDO1NBQ3hDO1FBQ0QsTUFBTSxDQUFDLFNBQVMsSUFBSSxxRUFBcUUsQ0FBQztRQUUxRixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8sV0FBVyxDQUFDLFVBQWlCO1FBQ2pDLElBQUksQ0FBQyxDQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxNQUFNLENBQUE7WUFBRSxPQUFPO1FBQ2hDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFO1lBQzNCLG9GQUFvRjtZQUNwRixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNuRCxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDdkMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQ3hCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDakIsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3pDO2dCQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLE1BQU07b0JBQ2pDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRTtvQkFDcEQsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7YUFDOUI7U0FDSjtJQUNMLENBQUM7SUFFSyxXQUFXLENBQUMsVUFBZTs7O1lBQzdCLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFO2dCQUMzQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDakQ7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDaEIsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO3dCQUM1QixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7NEJBQ1osSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDO3lCQUNuQztxQkFDSjtpQkFDSjtnQkFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLE1BQU0sRUFBRTtvQkFDM0IsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO3dCQUMvQixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7NEJBQ1YsSUFBSSxDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUMsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDO3lCQUM3RDs2QkFDSTs0QkFDRCxJQUFJLENBQUMsZUFBZSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDO3lCQUMvQztxQkFDSjtpQkFDSjtnQkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FDM0MsSUFBSSxDQUFDLFFBQVEsRUFDYixRQUFRLENBQ1gsQ0FBQztpQkFDTDtxQkFDSTtvQkFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7aUJBQ3JDO2dCQUNELElBQUksQ0FBQyxXQUFXO3NCQUNWLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU87d0JBQzNCLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTt3QkFDckMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUMzQzs7S0FDSjtJQUVELHNCQUFzQixDQUFDLEtBQUs7UUFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUNuQixHQUFHLElBQUksQ0FBQyxVQUFVLHlCQUF5QixFQUMzQyxLQUFLLENBQ1IsQ0FBQztJQUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFLO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FDbkIsR0FBRyxJQUFJLENBQUMsVUFBVSx3QkFBd0IsRUFDMUMsS0FBSyxDQUNSLENBQUM7SUFDTixDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsS0FBSztRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQ2xCLEdBQUcsSUFBSSxDQUFDLFVBQVUseUJBQXlCLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFDckQsS0FBSyxDQUNSLENBQUM7SUFDTixDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBSztRQUN2QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQ2xCLEdBQUcsSUFBSSxDQUFDLFVBQVUsMEJBQTBCLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFDdEQsS0FBSyxDQUNSLENBQUM7SUFDTixDQUFDO0lBQ0sscUJBQXFCLENBQUMsRUFBRTs7WUFDMUIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSwwQkFBMEIsRUFBRSxFQUFFLENBQUM7WUFDN0QsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQztLQUFBO0lBQ08sK0JBQStCO1FBQ25DLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxPQUFPO1lBQ0gsSUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLE1BQU07Z0JBQ1osUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDMUIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLEtBQUssRUFBRSxNQUFNO2FBQ2hCLENBQUM7WUFDRixJQUFJLGtCQUFrQixDQUFDO2dCQUNuQixLQUFLLEVBQUUsaUJBQWlCO2dCQUN4QixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQzFCLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsT0FBTzthQUNqQixDQUFDO1lBQ0YsSUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLElBQUksRUFBRSxTQUFTO2dCQUNmLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQzFCLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixLQUFLLEVBQUUsT0FBTzthQUNqQixDQUFDO1lBQ0YsSUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLElBQUksRUFBRSxhQUFhO2dCQUNuQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFNBQVMsRUFBRSxDQUFDO2FBQ2YsQ0FBQztZQUNGLElBQUksa0JBQWtCLENBQUM7Z0JBQ25CLEtBQUssRUFBRSxXQUFXO2dCQUNsQixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsV0FBVyxFQUFFLGtCQUFrQjtnQkFDL0IsU0FBUyxFQUFFLFdBQVc7Z0JBQ3RCLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixZQUFZLEVBQUUsTUFBTTtnQkFDcEIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLEtBQUssRUFBRSxNQUFNO2dCQUNiLFNBQVMsRUFBRSxDQUFDO2FBQ2YsQ0FBQztZQUNGLElBQUksa0JBQWtCLENBQUM7Z0JBQ25CLEtBQUssRUFBRSxXQUFXO2dCQUNsQixJQUFJLEVBQUUsY0FBYztnQkFDcEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLEtBQUssRUFBRSxPQUFPO2dCQUNkLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixJQUFJLEVBQUUsS0FBSzthQUNkLENBQUM7WUFDRixJQUFJLGtCQUFrQixDQUFDO2dCQUNuQixLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLEtBQUssRUFBRSxPQUFPO2dCQUNkLElBQUksRUFBRSxLQUFLO2dCQUNYLDJDQUEyQztnQkFDM0MsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLFdBQVcsRUFBRSxVQUFVO2FBQzFCLENBQUM7WUFDRixJQUFJLGtCQUFrQixDQUFDO2dCQUNuQixLQUFLLEVBQUUsT0FBTztnQkFDZCxJQUFJLEVBQUUsT0FBTztnQkFDYixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQztZQUNGLElBQUksa0JBQWtCLENBQUM7Z0JBQ25CLEtBQUssRUFBRSxTQUFTO2dCQUNoQixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2dCQUNwQyxjQUFjLEVBQUUsSUFBSTtnQkFDcEIsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQztTQUNMLENBQUM7SUFDTixDQUFDO0lBRU8sMEJBQTBCO1FBQzlCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxPQUFPO1lBQ0gsSUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLE1BQU07Z0JBQ1osUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDMUIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLEtBQUssRUFBRSxNQUFNO2FBQ2hCLENBQUM7WUFDRixJQUFJLGtCQUFrQixDQUFDO2dCQUNuQixLQUFLLEVBQUUsV0FBVztnQkFDbEIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDMUIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLEtBQUssRUFBRSxPQUFPO2FBQ2pCLENBQUM7WUFDRixJQUFJLGtCQUFrQixDQUFDO2dCQUNuQixLQUFLLEVBQUUsV0FBVztnQkFDbEIsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLFlBQVksRUFBRSxJQUFJO2dCQUNsQixLQUFLLEVBQUUsT0FBTztnQkFDZCxXQUFXLEVBQUUsSUFBSTtnQkFDakIsU0FBUyxFQUFFLENBQUM7YUFDZixDQUFDO1lBQ0YsSUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLElBQUksRUFBRSxVQUFVO2dCQUNoQixXQUFXLEVBQUUsa0JBQWtCO2dCQUMvQixTQUFTLEVBQUUsV0FBVztnQkFDdEIsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLFlBQVksRUFBRSxNQUFNO2dCQUNwQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsU0FBUyxFQUFFLENBQUM7YUFDZixDQUFDO1lBQ0YsSUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLGtCQUFrQjtnQkFDekIsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixLQUFLLEVBQUUsT0FBTztnQkFDZCxJQUFJLEVBQUUsS0FBSztnQkFDWCwyQ0FBMkM7Z0JBQzNDLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixXQUFXLEVBQUUsVUFBVTthQUMxQixDQUFDO1lBQ0YsSUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLEtBQUssRUFBRSxPQUFPO2FBQ2pCLENBQUM7U0FDTCxDQUFDO0lBQ04sQ0FBQzs7OztZQXJzQkosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFqQlEsVUFBVTtZQUNFLFFBQVE7WUFXcEIsbUJBQW1CO1lBQ25CLFdBQVc7WUFMWCw2QkFBNkI7WUFIN0Isa0JBQWtCO1lBS2xCLGlCQUFpQjtZQURqQixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRW51bUNvbnRyb2xQaWNrZXJUeXBlIH0gZnJvbSAnLi4vY2xhc3Nlcy9jb25zdGFudHMnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSwgQ29sdW1uU2NoZW1hQmFzZSwgRW50aXR5UGlja2VyQ29sdW1uLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IgfSBmcm9tICcuLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcbmltcG9ydCB7IENvQ2F1VG9DaHVjU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29jYXV0b2NodWMvc2VydmljZXMvY29jYXV0b2NodWMuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1pbmZvJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FuQm9fSG9Tb19Db0NhdVRvQ2h1Y1NlcnZpY2UgfSBmcm9tICcuL2NhbmJvLWhvc28tY29jYXV0b2NodWMuc2VydmljZSc7XG5pbXBvcnQgeyBDcnVkU2VydmljZSB9IGZyb20gJy4vY3J1ZC5zZXJ2aWNlJztcbmltcG9ydCB7IEhvU29Eb2lUYWNTZXJ2aWNlIH0gZnJvbSAnLi9ob3NvZG9pdGFjLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuL21hc3Rlci1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4vbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENhbkJvSG9Tb1NlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XG4gICAgZW52aXJvbm1lbnQ6IGFueTtcbiAgICB2ZXJzaW9uOiBhbnk7XG4gICAgbHN0RW50aXR5UGlja2VyQ29sdW1uOiBFbnRpdHlQaWNrZXJDb2x1bW5bXTtcbiAgICBkZWZhdWx0RW50aXR5Q29sdW1uRGljdCA9IHtcbiAgICAgICAgdjE6IHRoaXMuZ2VuZXJhdGVMaXN0RW50aXR5Q29sdW1uVjEoKVxuICAgIH07XG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaHR0cDogSHR0cENsaWVudCwgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jYW5Cb19Ib1NvX0NvQ2F1VG9DaHVjU2VydmljZTogQ2FuQm9fSG9Tb19Db0NhdVRvQ2h1Y1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NvQ2F1VG9DaHVjU2VydmljZTogQ29DYXVUb0NodWNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9ob1NvRG9pVGFjU2VydmljZTogSG9Tb0RvaVRhY1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NydWRTZXJ2aWNlOiBDcnVkU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmNhbmJvRW5kcG9pbnR9LyR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vQ2FuQm9fSG9Tb2ApO1xuICAgICAgICB0aGlzLmVuZFBvaW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmNhbmJvRW5kcG9pbnQ7XG4gICAgICAgIHRoaXMuZW52aXJvbm1lbnQgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudDtcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IHRoaXMuZW52aXJvbm1lbnQuYXBpRG9tYWluLmNhbmJvRW5kcG9pbnQ7XG4gICAgICAgIHRoaXMudmVyc2lvbiA9IHRoaXMuZW52aXJvbm1lbnQuY2F1SGluaE5naGllcFZ1Py52ZXJzaW9uQ29sdW1uUGlja2VyQ2FuQm87XG4gICAgICAgIGlmICh0aGlzLnZlcnNpb24pIHtcbiAgICAgICAgICAgIHRoaXMubHN0RW50aXR5UGlja2VyQ29sdW1uID0gdGhpcy5kZWZhdWx0RW50aXR5Q29sdW1uRGljdFtgdiR7dGhpcy52ZXJzaW9ufWBdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5sc3RFbnRpdHlQaWNrZXJDb2x1bW4pIHtcbiAgICAgICAgICAgIHRoaXMubHN0RW50aXR5UGlja2VyQ29sdW1uID0gdGhpcy5nZW5lcmF0ZUxpc3RFbnRpdHlDb2x1bW5EZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZSA9IGluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBnZXRJZHNEb25WaUhpZW5UYWlDYW5CbyhpZENhbkJvOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0dldElkc0RvblZpSGllblRhaS8ke2lkQ2FuQm99YCk7XG4gICAgfVxuXG4gICAgZ2V0Q2FuQm9DYXBUcmVuKHVzZXJJZExhc3RzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0dldENhbkJvQ2FwVHJlbmAsIHtcbiAgICAgICAgICAgIGxpc3RHdWlkVmFsdWU6IHVzZXJJZExhc3RzXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldExpc3RUcmVlRG9uVmlRdWFuTHlCeVVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRMaXN0VHJlZURvblZpUXVhbkx5QnlVc2VyYCk7XG4gICAgfVxuXG4gICAgZ2V0TW9kZWxTY2hlbWFzKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdNw6MnLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnTcOjJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ03DoycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ2lkJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ2lkJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkSG9jVmllbicsXG4gICAgICAgICAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ2lkJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ2lkJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2hvVmFUZW4nLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdI4buNIHbDoCB0w6puJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICduZ2F5U2luaCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ05nw6B5IHNpbmgnLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnTmfDoHkgc2luaCcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RpZW5UaG9haURpRG9uZycsXG4gICAgICAgICAgICAgICAgbmFtZTogJ1Phu5EgxJFp4buHbiB0aG/huqFpJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ1Phu5EgxJFp4buHbiB0aG/huqFpJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1Phu5EgxJFp4buHbiB0aG/huqFpJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnRW1haWwnLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnRW1haWwnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlDaHVjVnVTdHInLFxuICAgICAgICAgICAgICAgIG5hbWU6ICfEkMahbiB24buLIC0gQ2jhu6ljIHbhu6UnLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnxJDGoW4gduG7iyAtIENo4bupYyB24bulJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ8SQxqFuIHbhu4sgLSBDaOG7qWMgduG7pScsXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGdldENvbHVtblNjaGVtYUJhc2UoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1MHB4J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZEhvY1ZpZW4nLFxuICAgICAgICAgICAgICAgIGluY2x1ZGVTZWxlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2hvVmFUZW4nLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjAwcHgnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlTaW5oJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2RhdGUnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTEwcHgnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RpZW5UaG9haURpRG9uZycsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMTBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTgwcHgnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpQ2h1Y1Z1U3RyJyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaW5jbHVkZVNlbGVjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyNTBweCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuICAgIGdldERhdGFFeHBvcnQyQyhncmlkSW5mbykge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdFNpZ25hbFIoXG4gICAgICAgICAgICBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERhdGFFeHBvcnQyQ2AsXG4gICAgICAgICAgICBncmlkSW5mb1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGluU29ZZXVMeUxpY2goaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0luU29ZZXVMeUxpY2g/aWRDYW5Cbz0ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdCh1cmwsIGlkQ2FuQm8sIHtcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuYXBwZW5kKFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnLFxuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5MeUxpY2hCb2lIb2FuKGlkQ2FuQm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9Jbkx5TGljaEJvaUhvYW4/aWRDYW5Cbz0ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdCh1cmwsIGlkQ2FuQm8sIHtcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuYXBwZW5kKFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnLFxuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5MeUxpY2hCb05oaWVtKGlkQ2FuQm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9Jbkx5TGljaEJvTmhpZW0/aWRDYW5Cbz0ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdCh1cmwsIGlkQ2FuQm8sIHtcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuYXBwZW5kKFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnLFxuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGFvVGFpS2hvYW4oaWRDYW5CbzogYW55KSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vVGFvVGFpS2hvYW4vJHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwge30pO1xuICAgIH1cblxuICAgIGdldENhbkJvSW5mbyhpZENhbkJvOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRDYW5Cb0luZm8vJHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBnZXREZXRhaWxXaXRoQ2h1Y0RhbmhDaHVjVnUoaWRDYW5Cbzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoXG4gICAgICAgICAgICBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERldGFpbFdpdGhDaHVjRGFuaENodWNWdS8ke2lkQ2FuQm99YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhcCBuaGF0IHRyYW5nIHRoYWkgY2FuYm9faG9zbyB0aGVvIGlkIGNhbkJvXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGlkQ2FuQm9cbiAgICAgKiBAcGFyYW0ge2FueX0gaWRUcmFuZ1RoYWlcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlc3BvbnNlUmVzdWx0Pn1cbiAgICAgKi9cbiAgICB1cGRhdGVUcmFuZ1RoYWlDYW5Cb0hvU28oaWRDYW5Cbzogc3RyaW5nLCBpZFRyYW5nVGhhaTogYW55KSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vVXBkYXRlVHJhbmdUaGFpQ2FuQm9Ib1NvP2lkQ2FuQm89JHtpZENhbkJvfSYmaWRUcmFuZ1RoYWk9JHtpZFRyYW5nVGhhaX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIHt9KTtcbiAgICB9XG5cbiAgICBHZXRUaG9uZ1RpbkNhbkJvSWQoaWRDYW5CbzogYW55KSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0VGhvbmdUaW5DYW5Cb0lkLyR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgY2hlY2tDYW5Cb0luUGhvbmdEb2lOZ29haSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0NoZWNrQ2FuQm9JblBob25nRG9pTmdvYWlgKTtcbiAgICB9XG5cbiAgICBHZXREYW5oU2FjaENhbkJvVGhlb0RvblZpKGxzdElkT3JnUmVxLCBncmlkSW5mbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERhbmhTYWNoQ2FuQm9UaGVvRG9uVmkvJHtsc3RJZE9yZ1JlcX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGdyaWRJbmZvKTtcbiAgICB9XG5cbiAgICBnZXREYXRhRXhwb3J0S2V0UXVhRGFuaEdpYShncmlkSW5mbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERhdGFFeHBvcnRLZXRRdWFEYW5oR2lhYDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBncmlkSW5mbyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTOG6pXkgZGFuaCBzw6FjaCBjw6FuIGLhu5kgdsOgIGPhuqVwIGTGsOG7m2kgaG/hurdjIGzDoCBuaMOibiB2acOqbiBuZ8aw4budaSBkw7luZyBxdeG6o24gbMO9IHRy4buxYyB0aeG6v3BcbiAgICAgKiBO4bq/dSB0cm9uZyBjw7luZyAxIMSRxqFuIHbhu4sgdGjDrCBuZ8aw4budaSBjw7MgY2jhu6ljIHbhu6UgY+G6pXAgdHLGsOG7n25nIHPhur0gY8OzIGPhuqVwIGTGsOG7m2kgbMOgIHRvw6BuIGLhu5kgbmjDom4gdmnDqm5cbiAgICAgKiBDw7JuIG5nxrDhu51pIGPDsyBjaOG7qWMgduG7pSBj4bqlcCBwaMOzIHRow6wgY8OzIGPhuqVwIGTGsOG7m2kgbMOgIHRvw6BuIGLhu5kgbmjDom4gdmnDqm4gdHLhu6sgY+G6pXAgdHLGsOG7n25nLCAuLi5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlc3BvbnNlUmVzdWx0Pn1cbiAgICAgKi9cbiAgICBnZXRDYW5Cb0NhcER1b2koKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRDYW5Cb0NhcER1b2lgKTtcbiAgICB9XG5cbiAgICBjaGVja0lzQ2FuQm9QaG9uZ1RjY2IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYCR7dGhpcy5zZXJ2aWNlVXJpfS9DaGVja0lzQ2FuQm9QaG9uZ1RjY2JgKTtcbiAgICB9XG5cbiAgICBnZXRJZHNEb25WaUR1b2NQaGVwUXVhbkx5KGlkRG9uVmkpIHtcbiAgICAgICAgbGV0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0SWRzRG9uVmlEdW9jUGhlcFF1YW5MeWA7XG4gICAgICAgIGlmIChpZERvblZpKSB7XG4gICAgICAgICAgICB1cmwgKz0gYD9pZERvblZpPSR7aWREb25WaX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBnZXRQaGFtVmlEb25WaVF1YW5MeShpc0dldFRyZWUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldFBoYW1WaURvblZpUXVhbkx5P2lzR2V0VHJlZT0ke2lzR2V0VHJlZX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuICAgIGdldElkc0RvblZpUXVhbkx5KGFsbENoaWxkID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldElkc0RvblZpUXVhbkx5P2FsbENoaWxkPSR7YWxsQ2hpbGR9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldElkc0NhbkJvQ3VuZ0RvblZpKCkge1xuICAgICAgICBjb25zdCBwcm9maWxlSW5mbyA9IHRoaXMuX3VzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICAgIGxldCBpZHNDYW5CbyA9IFtdO1xuICAgICAgICBpZiAocHJvZmlsZUluZm8/LmlkQ2FuQm8pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbW1vbiA9IFt0aGlzLm5ld0ZpbHRlcignY29uSGlldUx1YycsIE9wZXJhdG9yLmVxdWFsLCB0cnVlKV07XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gW1xuICAgICAgICAgICAgICAgIC4uLmNvbW1vbixcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWRDYW5CbycsIE9wZXJhdG9yLmVxdWFsLCBwcm9maWxlSW5mby5pZENhbkJvKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBsZXQgaWRzRG9uVmlDYW5Cb0xvZ2luID0gW107XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9jYW5Cb19Ib1NvX0NvQ2F1VG9DaHVjU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRBbGwoZmlsdGVycylcbiAgICAgICAgICAgICAgICAudGhlbigocnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkc0RvblZpQ2FuQm9Mb2dpbiA9IHJzLmRhdGEubWFwKCh4KSA9PiB4LmlkRG9uVmkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChpZHNEb25WaUNhbkJvTG9naW4ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBpZHNEb25WaSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgY29DYXVUb0NodWNGaWx0ZXJzID0gbmV3IEZpbHRlcih7IGxvZ2ljOiAnb3InLCBmaWx0ZXJzOiBbXSB9KTtcbiAgICAgICAgICAgIGlkc0RvblZpQ2FuQm9Mb2dpbi5mb3JFYWNoKChpZERvblZpKSA9PiB7XG4gICAgICAgICAgICAgICAgY29DYXVUb0NodWNGaWx0ZXJzLmZpbHRlcnMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAnaWREdW9uZ0RhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBPcGVyYXRvci5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICAgICAgYDske2lkRG9uVml9O2BcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NvQ2F1VG9DaHVjU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRBbGwoW2NvQ2F1VG9DaHVjRmlsdGVyc10sICdpZCcpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZHNEb25WaSA9IHJzLmRhdGEubWFwKCh4KSA9PiB4LmlkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaWRzRG9uVmkubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld2ZpbHRlcnMgPSBbXG4gICAgICAgICAgICAgICAgLi4uY29tbW9uLFxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZERvblZpJywgT3BlcmF0b3IuaW4sIGlkc0RvblZpKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9jYW5Cb19Ib1NvX0NvQ2F1VG9DaHVjU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRBbGwobmV3ZmlsdGVycywgJ2lkQ2FuQm8nKVxuICAgICAgICAgICAgICAgIC50aGVuKChycykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRzQ2FuQm8gPSBycy5kYXRhLm1hcCgoeCkgPT4geC5pZENhbkJvKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGlkc0NhbkJvO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZUNvbHVtbkRvblZpKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlDYXAycycsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkb25WaVRoZW9DYXAnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0tob2Egdmnhu4duLyDEkcahbiB24buLJyksXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMjBweCcsXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaUNhcDNzJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2RvblZpVGhlb0NhcCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQuG7mSBtw7RuLyB2xINuIHBow7JuZyBraG9hJyksXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMjBweCcsXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZ2V0SW5mb0NhbkJvV2l0aERvblZpQ2h1Y1Z1KGxzdElkQ2FuQm86IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbdGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuaW4sIGxzdElkQ2FuQm8pXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YUN1c3RvbVJvdXRlKFxuICAgICAgICAgICAgYEZpbHRlckJ5T3JnLyR7dGhpcy5fY29tbW9uU2VydmljZS5ndWlkRW1wdHkoKX1gLFxuICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAxMDAwMDBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzZXRUaG9uZ1RpbkRvblZpQ2FuQm8oaXRlbUNhbkJvOiBhbnksIGxzdENhbkJvRG9uVmk6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IGhvU29Eb25WaSA9IGxzdENhbkJvRG9uVmkuZmluZCgoeCkgPT4geC5pZCA9PSBpdGVtQ2FuQm8uaWRDYW5Cbyk7XG4gICAgICAgIGlmIChob1NvRG9uVmkpIHtcbiAgICAgICAgICAgIGl0ZW1DYW5Cby5kb25WaUNhcDJzID0gaG9Tb0RvblZpLmRvblZpQ2FwMnM7XG4gICAgICAgICAgICBpdGVtQ2FuQm8uZG9uVmlDYXAzcyA9IGhvU29Eb25WaS5kb25WaUNhcDNzO1xuICAgICAgICAgICAgaXRlbUNhbkJvLmRvblZpQ2h1Y1Z1cyA9IGhvU29Eb25WaS5kb25WaUNodWNWdXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXREb25WaUZ1bGxzQnlDYW5Cb0FwaShpZENhbkJvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RG9uVmlGdWxsc0J5Q2FuQm9BcGk/aWRDYW5Cbz0ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEluZm9BZnRlckdldERhdGEoZGF0YVNvdXJjZSkge1xuICAgICAgICBjb25zdCBndWlkRW1wdHkgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWRFbXB0eSgpO1xuICAgICAgICBjb25zdCBpZHNDYW5CbyA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZGlzdGluY3RBcnJheShcbiAgICAgICAgICAgIGRhdGFTb3VyY2VcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LmlkQ2FuQm8gIT0gZ3VpZEVtcHR5KVxuICAgICAgICAgICAgICAgIC5tYXAoKHgpID0+IHguaWRDYW5CbylcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbHN0Q2FuQm8gPSAoXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmdldEFsbChcbiAgICAgICAgICAgICAgICBbdGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuaW4sIGlkc0NhbkJvKV0sXG4gICAgICAgICAgICAgICAgJ2lkLGNvZGUsaG9WYVRlbixuZ2F5U2luaCxnaW9pVGluaCdcbiAgICAgICAgICAgIClcbiAgICAgICAgKS5kYXRhO1xuICAgICAgICBkYXRhU291cmNlLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmlkQ2FuQm8gIT0gZ3VpZEVtcHR5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FuQm8gPSBsc3RDYW5Cby5maW5kKCh4KSA9PiB4LmlkID09IGVsZW1lbnQuaWRDYW5Cbyk7XG4gICAgICAgICAgICAgICAgaWYgKGNhbkJvKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWFDYW5CbyA9IGNhbkJvLmNvZGU7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaG9WYVRlbiA9IGNhbkJvLmhvVmFUZW47XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudGVuQ2FuQm8gPSBjYW5Cby5ob1ZhVGVuO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm5nYXlTaW5oID0gY2FuQm8ubmdheVNpbmg7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZ2lvaVRpbmggPSBjYW5Cby5naW9pVGluaDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldElkVXNlckJ5RG9uVmkobHN0SWREb25WaTogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9nZXRJZFVzZXJCeURvblZpYCwge1xuICAgICAgICAgICAgbGlzdEd1aWRWYWx1ZTogbHN0SWREb25WaSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SWRDYW5Cb0J5RG9uVmkobHN0SWREb25WaTogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9nZXRJZENhbkJvQnlEb25WaWAsIHtcbiAgICAgICAgICAgIGxpc3RHdWlkVmFsdWU6IGxzdElkRG9uVmksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGdldENvQ2F1VG9DaHVjUm9vdERvblZpX0J5VXNlcklkKHVzZXJJZCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldENvQ2F1VG9DaHVjUm9vdERvblZpX0J5VXNlcklkLyR7dXNlcklkfWA7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBhc3luYyBHZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaV9CeUxpc3RVc2VySWQobHN0VXNlcklkKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q29DYXVUb0NodWNSb290RG9uVmlfQnlMaXN0VXNlcklkYDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVmYXVsdFBvc3QodXJsLCBsc3RVc2VySWQpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldENvQ2F1VG9DaHVjUm9vdERvblZpKGdyaWRJbmZvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0QWxsQnlGaWx0ZXIvR2V0Q29DYXVUb0NodWNSb290RG9uVmlgO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGdyaWRJbmZvKTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZVBpY2tlckNvbnRyb2xTY2hlbWEoY29udHJvbDogQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSh7XG4gICAgICAgICAgICBmaWVsZDogJ2lkQ2FuQm8nLFxuICAgICAgICAgICAgbGFiZWw6ICdDw6FuIGLhu5knLFxuICAgICAgICAgICAgdGl0bGU6ICdDaOG7jW4gY8OhbiBi4buZJyxcbiAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLFxuICAgICAgICAgICAgcGx1c1VybDogJ1dpdGhDaHVjRGFuaENodWNWdScsXG4gICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdob1ZhVGVuJyxcbiAgICAgICAgICAgIGZpZWxkUGx1czogJ2NvZGUnLFxuICAgICAgICAgICAgZnVuY0dldExhYmVsOiAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBpdGVtLmhvVmFUZW47XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY29kZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBgJHtpdGVtLmNvZGV9IC0gJHtyZXN1bHR9IGA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnRlbkRvblZpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgLSAke2l0ZW0udGVuRG9uVml9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGFmdGVyR2V0RGF0YURyb3Bkb3duOiAoZGF0YVNvdXJjZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGVuRG9uVmkoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhUGlja2VkOiBhc3luYyAoZGF0YVNvdXJjZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0RGF0YVBsdXMoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhVW5QaWNrZWQ6IGFzeW5jIChkYXRhU291cmNlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXREYXRhUGx1cyhkYXRhU291cmNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbixcbiAgICAgICAgICAgIC4uLmNvbnRyb2wsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoY29udHJvbC5kYXRhVHlwZSA9PSBFbnVtQ29udHJvbFBpY2tlclR5cGUuRE9JVEFDICYmICF0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbi5zb21lKGl0ZW0gPT4gaXRlbS5jb2RlID09ICdpZERvaVRhYycpKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbi5wdXNoKFxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ8SQ4buRaSB0w6FjJyxcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ2lkRG9pVGFjJyxcbiAgICAgICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2hvU29Eb2lUYWNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGlzQXJyYXlGaWVsZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcyMDBweCcsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQuZmllbGRQbHVzKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcmVzdWx0LmZpZWxkUGx1c1xuICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChxKSA9PiBxLnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgLmluZGV4T2YoJ2lkTmdhY2hWaWVuQ2h1YycpID09IC0xXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuZmllbGRQbHVzICs9ICcsaWROZ2FjaFZpZW5DaHVjJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5maWVsZFBsdXMgPSAnaWROZ2FjaFZpZW5DaHVjJztcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQuZmllbGRQbHVzICs9ICcsbmdheVNpbmgsbmdheVNpbmgyLGNodWNEYW5ocyxpZEhvY0hhbSxpZEhvY1ZpLGRpZW5UaG9haURpRG9uZyxjb2RlJztcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGVuRG9uVmkoZGF0YVNvdXJjZTogYW55W10pIHtcbiAgICAgICAgaWYgKCFkYXRhU291cmNlPy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIC8vIELhu5Ugc3VuZyBt4buZdCBz4buRIHRow7RuZyB0aW4gxJHhu4MgaGnhu4NuIHRo4buLIGxhYmVsIHRyw6puIGF1dG9jb21wbGV0ZSBwaWNrZXIgZOG6oW5nIGRyb3Bkb3duXG4gICAgICAgICAgICBpZiAoaXRlbS5kb25WaUNodWNWdXMgJiYgaXRlbS5kb25WaUNodWNWdXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBpdGVtRG9uVmlDaGluaCA9IGl0ZW0uZG9uVmlDaHVjVnVzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChxKSA9PiBxLmlzRG9uVmlDaGluaFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtRG9uVmlDaGluaCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtRG9uVmlDaGluaCA9IGl0ZW0uZG9uVmlDaHVjVnVzWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVtLnRlbkRvblZpID0gaXRlbURvblZpQ2hpbmguY2h1Y1Z1XG4gICAgICAgICAgICAgICAgICAgID8gYCR7aXRlbURvblZpQ2hpbmguY2h1Y1Z1fSAke2l0ZW1Eb25WaUNoaW5oLmRvblZpfWBcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtRG9uVmlDaGluaC5kb25WaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGdldERhdGFQbHVzKGRhdGFTb3VyY2U6IGFueSkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgaWYgKGl0ZW0uY2h1Y0RhbmhzKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5zdHJDaHVjRGFuaHMgPSBpdGVtLmNodWNEYW5ocy50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbS5zdHJDaHVjRGFuaHMgPSAnJztcbiAgICAgICAgICAgIGlmIChpdGVtLmNodWNEYW5ocykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBpdGVtLmNodWNEYW5ocykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaS5jaHVjRGFuaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdHJDaHVjRGFuaHMgKz0gaS5jaHVjRGFuaDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW0uc3RyRG9uVmlDaHVjVnVzID0gJyc7XG4gICAgICAgICAgICBpZiAoaXRlbS5kb25WaUNodWNWdXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBpdGVtLmRvblZpQ2h1Y1Z1cykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaS5jaHVjVnUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RyRG9uVmlDaHVjVnVzICs9IGA8cD4ke2kuY2h1Y1Z1fSAtICR7aS5kb25WaX08L3A+YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RyRG9uVmlDaHVjVnVzICs9IGA8cD4ke2kuZG9uVml9PC9wPmA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5uZ2F5U2luaCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uc3RyTmdheVNpbmggPSB0aGlzLl9jcnVkU2VydmljZS5yZW5kZXJEYXRlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLm5nYXlTaW5oLFxuICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtLnN0ck5nYXlTaW5oID0gaXRlbS5uZ2F5U2luaDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtLmhvY0hhbUhvY1ZpXG4gICAgICAgICAgICAgICAgPSBpdGVtLmlkSG9jSGFtICYmIGl0ZW0uaWRIb2NWaVxuICAgICAgICAgICAgICAgICAgICA/IGAke2l0ZW0uaWRIb2NIYW19LiAke2l0ZW0uaWRIb2NWaX1gXG4gICAgICAgICAgICAgICAgICAgIDogaXRlbS5pZEhvY0hhbSB8fCBpdGVtLmlkSG9jVmk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVDYW5Cb1RvR2lhbmdWaWVuKG1vZGVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVDYW5Cb1RvR2lhbmdWaWVuYCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY3JlYXRlR2lhbmdWaWVuRG9pVGFjKG1vZGVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9DcmVhdGVHaWFuZ1ZpZW5Eb2lUYWNgLFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlR2lhbmdWaWVuTm9pQm8obW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFB1dChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vVXBkYXRlR2lhbmdWaWVuTm9pQm8vJHttb2RlbC5pZH1gLFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVHaWFuZ1ZpZW5Eb2lUYWMobW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFB1dChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vVXBkYXRlR2lhbmdWaWVuRG9pVGFjLyR7bW9kZWwuaWR9YCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICk7XG4gICAgfVxuICAgIGFzeW5jIGdldEx5TGljaEtob2FIb2NDYW5CbyhpZCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEx5TGljaEtob2FIb2NDYW5Cby8ke2lkfWA7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUxpc3RFbnRpdHlDb2x1bW5EZWZhdWx0KCkge1xuICAgICAgICBjb25zdCBfbWFzdGVyRGF0YVNlcnZpY2UgPSB0aGlzLl9pbmplY3Rvci5nZXQoTWFzdGVyRGF0YVNlcnZpY2UpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNw6MnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc4MHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdI4buNYyBow6BtLCBo4buNYyB24buLJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnaG9jSGFtSG9jVmknLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNTBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgY29kZTogJ2hvVmFUZW4nLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyTmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyMHB4JyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IDEsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnR2nhu5tpIHTDrW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnZ2lvaVRpbmgnLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiBfbWFzdGVyRGF0YVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZ3JvdXBDb2RlOiAnR0lPSV9USU5IJyxcbiAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOTBweCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAxLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyBkYW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyQ2h1Y0RhbmhzJyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1MHB4JyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2jhu6ljIHbhu6UgLSDEkMahbiB24buLJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyRG9uVmlDaHVjVnVzJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2h0bWwnLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjIwcHgnLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIC8vIHRlbXBsYXRlRmlsdGVyOiB0ZW1wbGF0ZS5maWx0ZXJEb25WaVJlZixcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmllbGRGaWx0ZXI6ICdpZERvblZpcycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnRW1haWwnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNzBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnxJDhu5FpIHTDoWMnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdpZERvaVRhYycsXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNBcnJheUZpZWxkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9ob1NvRG9pVGFjU2VydmljZSxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVMaXN0RW50aXR5Q29sdW1uVjEoKSB7XG4gICAgICAgIGNvbnN0IF9tYXN0ZXJEYXRhU2VydmljZSA9IHRoaXMuX2luamVjdG9yLmdldChNYXN0ZXJEYXRhU2VydmljZSk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ03DoycsXG4gICAgICAgICAgICAgICAgY29kZTogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzgwcHgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdob1ZhVGVuJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMDBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfDoHkgc2luaCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ3N0ck5nYXlTaW5oJyxcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMjBweCcsXG4gICAgICAgICAgICAgICAgbm90SW5GaWVsZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAxLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0dp4bubaSB0w61uaCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ2dpb2lUaW5oJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogX21hc3RlckRhdGFTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGdyb3VwQ29kZTogJ0dJT0lfVElOSCcsXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzkwcHgnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogMSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDaOG7qWMgduG7pSAtIMSQxqFuIHbhu4snLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdzdHJEb25WaUNodWNWdXMnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaHRtbCcsXG4gICAgICAgICAgICAgICAgbm90SW5GaWVsZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMjBweCcsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgLy8gdGVtcGxhdGVGaWx0ZXI6IHRlbXBsYXRlLmZpbHRlckRvblZpUmVmLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmaWVsZEZpbHRlcjogJ2lkRG9uVmlzJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdFbWFpbCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE3MHB4JyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxufVxuXG4iXX0=
|
package/fesm2015/tnx-shared.js
CHANGED
|
@@ -40181,12 +40181,12 @@ class CanBoHoSoService extends BaseService {
|
|
|
40181
40181
|
}
|
|
40182
40182
|
generatePickerControlSchema(control) {
|
|
40183
40183
|
const result = new AutoCompletePickerControlSchema(Object.assign({ field: 'idCanBo', label: 'Cán bộ', title: 'Chọn cán bộ', multiple: false, baseService: this, plusUrl: 'WithChucDanhChucVu', displayField: 'hoVaTen', fieldPlus: 'code', funcGetLabel: (item) => {
|
|
40184
|
-
let result =
|
|
40184
|
+
let result = item.hoVaTen;
|
|
40185
40185
|
if (item.code) {
|
|
40186
|
-
result = `${item.code}
|
|
40186
|
+
result = `${item.code} - ${result} `;
|
|
40187
40187
|
}
|
|
40188
40188
|
if (item.tenDonVi) {
|
|
40189
|
-
result
|
|
40189
|
+
result += `- ${item.tenDonVi}`;
|
|
40190
40190
|
}
|
|
40191
40191
|
return result;
|
|
40192
40192
|
}, required: true, afterGetDataDropdown: (dataSource, element) => {
|