tnx-shared 5.3.330 → 5.3.332
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 +27 -49
- 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/classes/base/list-component-base.d.ts +1 -0
- package/classes/base/list-component-base.d.ts.map +1 -1
- package/esm2015/classes/base/list-component-base.js +15 -40
- package/esm2015/services/canbo-hoso.service.js +11 -10
- package/fesm2015/tnx-shared.js +24 -48
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/services/canbo-hoso.service.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -404,14 +404,18 @@ export class CanBoHoSoService extends BaseService {
|
|
|
404
404
|
return result;
|
|
405
405
|
}, required: true, afterGetDataDropdown: (dataSource, element) => __awaiter(this, void 0, void 0, function* () {
|
|
406
406
|
var _b, _c;
|
|
407
|
+
if (!(dataSource === null || dataSource === void 0 ? void 0 : dataSource.length))
|
|
408
|
+
return;
|
|
407
409
|
const { selectedValue } = element;
|
|
408
410
|
if (!selectedValue) {
|
|
409
411
|
const lstIdDoiTac = this._commonService.distinct(dataSource.filter(item => !!item.idDoiTac).flatMap(item => item.idDoiTac.split(',')));
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
412
|
+
if (lstIdDoiTac.length) {
|
|
413
|
+
const lstDoiTac = (_c = (_b = (yield this._hoSoDoiTacService.getAllWithIgnore([this.newFilter('id', Operator.in, lstIdDoiTac.filter(id => !!id))], 'id,ten'))) === null || _b === void 0 ? void 0 : _b.data) !== null && _c !== void 0 ? _c : [];
|
|
414
|
+
if (lstDoiTac.length) {
|
|
415
|
+
dataSource.forEach(item => {
|
|
416
|
+
item.tenDoiTac = lstDoiTac.filter(x => item.idDoiTac.includes(x.id)).map(x => x.ten).join(', ');
|
|
417
|
+
});
|
|
418
|
+
}
|
|
415
419
|
}
|
|
416
420
|
}
|
|
417
421
|
else {
|
|
@@ -454,14 +458,11 @@ export class CanBoHoSoService extends BaseService {
|
|
|
454
458
|
result.fieldPlus += ',idNgachVienChuc';
|
|
455
459
|
}
|
|
456
460
|
}
|
|
457
|
-
|
|
461
|
+
if (!result.isOverrideColumns)
|
|
458
462
|
result.fieldPlus = 'idNgachVienChuc,ngaySinh,ngaySinh2,chucDanhs,idHocHam,idHocVi,dienThoaiDiDong,code';
|
|
459
|
-
}
|
|
460
463
|
return result;
|
|
461
464
|
}
|
|
462
465
|
getTenDonVi(dataSource) {
|
|
463
|
-
if (!(dataSource === null || dataSource === void 0 ? void 0 : dataSource.length))
|
|
464
|
-
return;
|
|
465
466
|
for (const item of dataSource) {
|
|
466
467
|
// Bổ sung một số thông tin để hiển thị label trên autocomplete picker dạng dropdown
|
|
467
468
|
if (item.donViChucVus && item.donViChucVus.length > 0) {
|
|
@@ -711,4 +712,4 @@ CanBoHoSoService.ctorParameters = () => [
|
|
|
711
712
|
{ type: HoSoDoiTacService },
|
|
712
713
|
{ type: CrudService }
|
|
713
714
|
];
|
|
714
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYm8taG9zby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2NhbmJvLWhvc28uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDNUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFD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QUssRUFBRSxPQUFPO2dCQUNkLElBQUksRUFBRSxLQUFLO2dCQUNYLDJDQUEyQztnQkFDM0MsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLFdBQVcsRUFBRSxVQUFVO2FBQzFCLENBQUM7WUFDRixJQUFJLGtCQUFrQixDQUFDO2dCQUNuQixLQUFLLEVBQUUsT0FBTztnQkFDZCxJQUFJLEVBQUUsT0FBTztnQkFDYixRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3hCLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLEtBQUssRUFBRSxPQUFPO2FBQ2pCLENBQUM7U0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELHdCQUF3QixDQUFDLE1BQWM7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsd0JBQXdCLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELHNCQUFzQixDQUFDLFFBQVE7UUFDM0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSx5QkFBeUIsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Ozs7WUF6d0JKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBbkJRLFVBQVU7WUFDRSxRQUFRO1lBYXBCLG1CQUFtQjtZQUNuQixXQUFXO1lBTFgsNkJBQTZCO1lBSjdCLGtCQUFrQjtZQU1sQixpQkFBaUI7WUFEakIsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEVudW1Db250cm9sUGlja2VyVHlwZSB9IGZyb20gJy4uL2NsYXNzZXMvY29uc3RhbnRzJztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi9jbGFzc2VzL2Vudmlyb25tZW50LXNjaGVtYSc7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hLCBDb2x1bW5TY2hlbWFCYXNlLCBEYXRhVHlwZSwgRW50aXR5UGlja2VyQ29sdW1uLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IgfSBmcm9tICcuLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcbmltcG9ydCB7IENvQ2F1VG9DaHVjU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29jYXV0b2NodWMvc2VydmljZXMvY29jYXV0b2NodWMuc2VydmljZSc7XG5pbXBvcnQgeyBFbnVtQ2FuQm8gfSBmcm9tICcuLi9lbnVtcy9jb21tb24nO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IENhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlIH0gZnJvbSAnLi9jYW5iby1ob3NvLWNvY2F1dG9jaHVjLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3J1ZFNlcnZpY2UgfSBmcm9tICcuL2NydWQuc2VydmljZSc7XG5pbXBvcnQgeyBIb1NvRG9pVGFjU2VydmljZSB9IGZyb20gJy4vaG9zb2RvaXRhYy5zZXJ2aWNlJztcbmltcG9ydCB7IE1hc3RlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDYW5Cb0hvU29TZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xuICAgIGVudmlyb25tZW50OiBhbnk7XG4gICAgdmVyc2lvbjogYW55O1xuICAgIGxzdEVudGl0eVBpY2tlckNvbHVtbjogRW50aXR5UGlja2VyQ29sdW1uW107XG4gICAgZGVmYXVsdEVudGl0eUNvbHVtbkRpY3QgPSB7XG4gICAgICAgIHYxOiB0aGlzLmdlbmVyYXRlTGlzdEVudGl0eUNvbHVtblYxKClcbiAgICB9O1xuICAgIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGh0dHA6IEh0dHBDbGllbnQsIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2FuQm9fSG9Tb19Db0NhdVRvQ2h1Y1NlcnZpY2U6IENhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jb0NhdVRvQ2h1Y1NlcnZpY2U6IENvQ2F1VG9DaHVjU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfaG9Tb0RvaVRhY1NlcnZpY2U6IEhvU29Eb2lUYWNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jcnVkU2VydmljZTogQ3J1ZFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaHR0cCwgaW5qZWN0b3IsIGAke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5jYW5ib0VuZHBvaW50fS8ke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaVZlcnNpb259L0NhbkJvX0hvU29gKTtcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5jYW5ib0VuZHBvaW50O1xuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSB0aGlzLmVudmlyb25tZW50LmFwaURvbWFpbi5jYW5ib0VuZHBvaW50O1xuICAgICAgICB0aGlzLnZlcnNpb24gPSB0aGlzLmVudmlyb25tZW50LmNhdUhpbmhOZ2hpZXBWdT8udmVyc2lvbkNvbHVtblBpY2tlckNhbkJvO1xuICAgICAgICBpZiAodGhpcy52ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbiA9IHRoaXMuZGVmYXVsdEVudGl0eUNvbHVtbkRpY3RbYHYke3RoaXMudmVyc2lvbn1gXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubHN0RW50aXR5UGlja2VyQ29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbiA9IHRoaXMuZ2VuZXJhdGVMaXN0RW50aXR5Q29sdW1uRGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgfVxuXG4gICAgZ2V0SWRzRG9uVmlIaWVuVGFpQ2FuQm8oaWRDYW5Cbzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRJZHNEb25WaUhpZW5UYWkvJHtpZENhbkJvfWApO1xuICAgIH1cblxuICAgIGdldENhbkJvQ2FwVHJlbih1c2VySWRMYXN0czogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRDYW5Cb0NhcFRyZW5gLCB7XG4gICAgICAgICAgICBsaXN0R3VpZFZhbHVlOiB1c2VySWRMYXN0c1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRMaXN0VHJlZURvblZpUXVhbkx5QnlVc2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0TGlzdFRyZWVEb25WaVF1YW5MeUJ5VXNlcmApO1xuICAgIH1cblxuICAgIGdldE1vZGVsU2NoZW1hcygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnTcOjJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ03DoycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdNw6MnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdpZCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZEhvY1ZpZW4nLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdpZCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdob1ZhVGVuJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdI4buNIHbDoCB0w6puJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ05nw6B5IHNpbmgnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmfDoHkgc2luaCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkaWVuVGhvYWlEaURvbmcnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdT4buRIMSRaeG7h24gdGhv4bqhaScsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdT4buRIMSRaeG7h24gdGhv4bqhaScsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdT4buRIMSRaeG7h24gdGhv4bqhaScsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0VtYWlsJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ0VtYWlsJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0VtYWlsJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpQ2h1Y1Z1U3RyJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnxJDGoW4gduG7iyAtIENo4bupYyB24bulJyxcbiAgICAgICAgICAgICAgICBmdWxsTmFtZTogJ8SQxqFuIHbhu4sgLSBDaOG7qWMgduG7pScsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICfEkMahbiB24buLIC0gQ2jhu6ljIHbhu6UnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBnZXRDb2x1bW5TY2hlbWFCYXNlKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNTBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRIb2NWaWVuJyxcbiAgICAgICAgICAgICAgICBpbmNsdWRlU2VsZWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdob1ZhVGVuJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICduZ2F5U2luaCcsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkYXRlJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExMHB4J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkaWVuVGhvYWlEaURvbmcnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTEwcHgnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXG4gICAgICAgICAgICAgICAgaXNPdmVycmlkZUZpbHRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE4MHB4J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaUNodWNWdVN0cicsXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGluY2x1ZGVTZWxlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cbiAgICBnZXREYXRhRXhwb3J0MkMoZ3JpZEluZm8pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3RTaWduYWxSKFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREYXRhRXhwb3J0MkNgLFxuICAgICAgICAgICAgZ3JpZEluZm9cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpblNvWWV1THlMaWNoKGlkQ2FuQm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9JblNvWWV1THlMaWNoP2lkQ2FuQm89JHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QodXJsLCBpZENhbkJvLCB7XG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJyxcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluTHlMaWNoQm9pSG9hbihpZENhbkJvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vSW5MeUxpY2hCb2lIb2FuP2lkQ2FuQm89JHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QodXJsLCBpZENhbkJvLCB7XG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJyxcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluTHlMaWNoQm9OaGllbShpZENhbkJvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vSW5MeUxpY2hCb05oaWVtP2lkQ2FuQm89JHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QodXJsLCBpZENhbkJvLCB7XG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJyxcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRhb1RhaUtob2FuKGlkQ2FuQm86IGFueSkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L1Rhb1RhaUtob2FuLyR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIHt9KTtcbiAgICB9XG5cbiAgICBnZXRDYW5Cb0luZm8oaWRDYW5Cbzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q2FuQm9JbmZvLyR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgZ2V0RGV0YWlsV2l0aENodWNEYW5oQ2h1Y1Z1KGlkQ2FuQm86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREZXRhaWxXaXRoQ2h1Y0RhbmhDaHVjVnUvJHtpZENhbkJvfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXAgbmhhdCB0cmFuZyB0aGFpIGNhbmJvX2hvc28gdGhlbyBpZCBjYW5Cb1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZENhbkJvXG4gICAgICogQHBhcmFtIHthbnl9IGlkVHJhbmdUaGFpXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxSZXNwb25zZVJlc3VsdD59XG4gICAgICovXG4gICAgdXBkYXRlVHJhbmdUaGFpQ2FuQm9Ib1NvKGlkQ2FuQm86IHN0cmluZywgaWRUcmFuZ1RoYWk6IGFueSkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L1VwZGF0ZVRyYW5nVGhhaUNhbkJvSG9Tbz9pZENhbkJvPSR7aWRDYW5Cb30mJmlkVHJhbmdUaGFpPSR7aWRUcmFuZ1RoYWl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCB7fSk7XG4gICAgfVxuXG4gICAgR2V0VGhvbmdUaW5DYW5Cb0lkKGlkQ2FuQm86IGFueSkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldFRob25nVGluQ2FuQm9JZC8ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGNoZWNrQ2FuQm9JblBob25nRG9pTmdvYWkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYCR7dGhpcy5zZXJ2aWNlVXJpfS9DaGVja0NhbkJvSW5QaG9uZ0RvaU5nb2FpYCk7XG4gICAgfVxuXG4gICAgR2V0RGFuaFNhY2hDYW5Cb1RoZW9Eb25WaShsc3RJZE9yZ1JlcSwgZ3JpZEluZm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREYW5oU2FjaENhbkJvVGhlb0RvblZpLyR7bHN0SWRPcmdSZXF9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBncmlkSW5mbyk7XG4gICAgfVxuXG4gICAgZ2V0RGF0YUV4cG9ydEtldFF1YURhbmhHaWEoZ3JpZEluZm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREYXRhRXhwb3J0S2V0UXVhRGFuaEdpYWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZ3JpZEluZm8pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEzhuqV5IGRhbmggc8OhY2ggY8OhbiBi4buZIHbDoCBj4bqlcCBkxrDhu5tpIGhv4bq3YyBsw6AgbmjDom4gdmnDqm4gbmfGsOG7nWkgZMO5bmcgcXXhuqNuIGzDvSB0cuG7sWMgdGnhur9wXG4gICAgICogTuG6v3UgdHJvbmcgY8O5bmcgMSDEkcahbiB24buLIHRow6wgbmfGsOG7nWkgY8OzIGNo4bupYyB24bulIGPhuqVwIHRyxrDhu59uZyBz4bq9IGPDsyBj4bqlcCBkxrDhu5tpIGzDoCB0b8OgbiBi4buZIG5ow6JuIHZpw6puXG4gICAgICogQ8OybiBuZ8aw4budaSBjw7MgY2jhu6ljIHbhu6UgY+G6pXAgcGjDsyB0aMOsIGPDsyBj4bqlcCBkxrDhu5tpIGzDoCB0b8OgbiBi4buZIG5ow6JuIHZpw6puIHRy4burIGPhuqVwIHRyxrDhu59uZywgLi4uXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxSZXNwb25zZVJlc3VsdD59XG4gICAgICovXG4gICAgZ2V0Q2FuQm9DYXBEdW9pKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q2FuQm9DYXBEdW9pYCk7XG4gICAgfVxuXG4gICAgY2hlY2tJc0NhbkJvUGhvbmdUY2NiKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vQ2hlY2tJc0NhbkJvUGhvbmdUY2NiYCk7XG4gICAgfVxuXG4gICAgZ2V0SWRzRG9uVmlEdW9jUGhlcFF1YW5MeShpZERvblZpKSB7XG4gICAgICAgIGxldCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldElkc0RvblZpRHVvY1BoZXBRdWFuTHlgO1xuICAgICAgICBpZiAoaWREb25WaSkge1xuICAgICAgICAgICAgdXJsICs9IGA/aWREb25WaT0ke2lkRG9uVml9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgZ2V0UGhhbVZpRG9uVmlRdWFuTHkoaXNHZXRUcmVlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRQaGFtVmlEb25WaVF1YW5MeT9pc0dldFRyZWU9JHtpc0dldFRyZWV9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cbiAgICBnZXRJZHNEb25WaVF1YW5MeShhbGxDaGlsZCA9IHRydWUpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRJZHNEb25WaVF1YW5MeT9hbGxDaGlsZD0ke2FsbENoaWxkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRJZHNDYW5Cb0N1bmdEb25WaSgpIHtcbiAgICAgICAgY29uc3QgcHJvZmlsZUluZm8gPSB0aGlzLl91c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgICBsZXQgaWRzQ2FuQm8gPSBbXTtcbiAgICAgICAgaWYgKHByb2ZpbGVJbmZvPy5pZENhbkJvKSB7XG4gICAgICAgICAgICBjb25zdCBjb21tb24gPSBbdGhpcy5uZXdGaWx0ZXIoJ2NvbkhpZXVMdWMnLCBPcGVyYXRvci5lcXVhbCwgdHJ1ZSldO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtcbiAgICAgICAgICAgICAgICAuLi5jb21tb24sXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkQ2FuQm8nLCBPcGVyYXRvci5lcXVhbCwgcHJvZmlsZUluZm8uaWRDYW5CbyksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgbGV0IGlkc0RvblZpQ2FuQm9Mb2dpbiA9IFtdO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fY2FuQm9fSG9Tb19Db0NhdVRvQ2h1Y1NlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0QWxsKGZpbHRlcnMpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZHNEb25WaUNhbkJvTG9naW4gPSBycy5kYXRhLm1hcCgoeCkgPT4geC5pZERvblZpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaWRzRG9uVmlDYW5Cb0xvZ2luLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaWRzRG9uVmkgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGNvQ2F1VG9DaHVjRmlsdGVycyA9IG5ldyBGaWx0ZXIoeyBsb2dpYzogJ29yJywgZmlsdGVyczogW10gfSk7XG4gICAgICAgICAgICBpZHNEb25WaUNhbkJvTG9naW4uZm9yRWFjaCgoaWREb25WaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvQ2F1VG9DaHVjRmlsdGVycy5maWx0ZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2lkRHVvbmdEYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGA7JHtpZERvblZpfTtgXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9jb0NhdVRvQ2h1Y1NlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0QWxsKFtjb0NhdVRvQ2h1Y0ZpbHRlcnNdLCAnaWQnKVxuICAgICAgICAgICAgICAgIC50aGVuKChycykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRzRG9uVmkgPSBycy5kYXRhLm1hcCgoeCkgPT4geC5pZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGlkc0RvblZpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBuZXdmaWx0ZXJzID0gW1xuICAgICAgICAgICAgICAgIC4uLmNvbW1vbixcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWREb25WaScsIE9wZXJhdG9yLmluLCBpZHNEb25WaSksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fY2FuQm9fSG9Tb19Db0NhdVRvQ2h1Y1NlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0QWxsKG5ld2ZpbHRlcnMsICdpZENhbkJvJylcbiAgICAgICAgICAgICAgICAudGhlbigocnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkc0NhbkJvID0gcnMuZGF0YS5tYXAoKHgpID0+IHguaWRDYW5Cbyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpZHNDYW5CbztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVDb2x1bW5Eb25WaSgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpQ2FwMnMnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZG9uVmlUaGVvQ2FwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLaG9hIHZp4buHbi8gxJHGoW4gduG7iycpLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjIwcHgnLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlDYXAzcycsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdkb25WaVRoZW9DYXAnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Lhu5kgbcO0bi8gdsSDbiBwaMOybmcga2hvYScpLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjIwcHgnLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGdldEluZm9DYW5Cb1dpdGhEb25WaUNodWNWdShsc3RJZENhbkJvOiBzdHJpbmdbXSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW3RoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCBsc3RJZENhbkJvKV07XG4gICAgICAgIHJldHVybiB0aGlzLmdldERhdGFDdXN0b21Sb3V0ZShcbiAgICAgICAgICAgIGBGaWx0ZXJCeU9yZy8ke3RoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZEVtcHR5KCl9YCxcbiAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgMTAwMDAwXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0VGhvbmdUaW5Eb25WaUNhbkJvKGl0ZW1DYW5CbzogYW55LCBsc3RDYW5Cb0RvblZpOiBhbnlbXSkge1xuICAgICAgICBjb25zdCBob1NvRG9uVmkgPSBsc3RDYW5Cb0RvblZpLmZpbmQoKHgpID0+IHguaWQgPT0gaXRlbUNhbkJvLmlkQ2FuQm8pO1xuICAgICAgICBpZiAoaG9Tb0RvblZpKSB7XG4gICAgICAgICAgICBpdGVtQ2FuQm8uZG9uVmlDYXAycyA9IGhvU29Eb25WaS5kb25WaUNhcDJzO1xuICAgICAgICAgICAgaXRlbUNhbkJvLmRvblZpQ2FwM3MgPSBob1NvRG9uVmkuZG9uVmlDYXAzcztcbiAgICAgICAgICAgIGl0ZW1DYW5Cby5kb25WaUNodWNWdXMgPSBob1NvRG9uVmkuZG9uVmlDaHVjVnVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RG9uVmlGdWxsc0J5Q2FuQm9BcGkoaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERvblZpRnVsbHNCeUNhbkJvQXBpP2lkQ2FuQm89JHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRJbmZvQWZ0ZXJHZXREYXRhKGRhdGFTb3VyY2UpIHtcbiAgICAgICAgY29uc3QgZ3VpZEVtcHR5ID0gdGhpcy5fY29tbW9uU2VydmljZS5ndWlkRW1wdHkoKTtcbiAgICAgICAgY29uc3QgaWRzQ2FuQm8gPSB0aGlzLl9jb21tb25TZXJ2aWNlLmRpc3RpbmN0QXJyYXkoXG4gICAgICAgICAgICBkYXRhU291cmNlXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5pZENhbkJvICE9IGd1aWRFbXB0eSlcbiAgICAgICAgICAgICAgICAubWFwKCh4KSA9PiB4LmlkQ2FuQm8pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGxzdENhbkJvID0gKFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRBbGwoXG4gICAgICAgICAgICAgICAgW3RoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCBpZHNDYW5CbyldLFxuICAgICAgICAgICAgICAgICdpZCxjb2RlLGhvVmFUZW4sbmdheVNpbmgsZ2lvaVRpbmgnXG4gICAgICAgICAgICApXG4gICAgICAgICkuZGF0YTtcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5pZENhbkJvICE9IGd1aWRFbXB0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbkJvID0gbHN0Q2FuQm8uZmluZCgoeCkgPT4geC5pZCA9PSBlbGVtZW50LmlkQ2FuQm8pO1xuICAgICAgICAgICAgICAgIGlmIChjYW5Cbykge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1hQ2FuQm8gPSBjYW5Cby5jb2RlO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmhvVmFUZW4gPSBjYW5Cby5ob1ZhVGVuO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnRlbkNhbkJvID0gY2FuQm8uaG9WYVRlbjtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5uZ2F5U2luaCA9IGNhbkJvLm5nYXlTaW5oO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lmdpb2lUaW5oID0gY2FuQm8uZ2lvaVRpbmg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRJZFVzZXJCeURvblZpKGxzdElkRG9uVmk6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vZ2V0SWRVc2VyQnlEb25WaWAsIHtcbiAgICAgICAgICAgIGxpc3RHdWlkVmFsdWU6IGxzdElkRG9uVmksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldElkQ2FuQm9CeURvblZpKGxzdElkRG9uVmk6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vZ2V0SWRDYW5Cb0J5RG9uVmlgLCB7XG4gICAgICAgICAgICBsaXN0R3VpZFZhbHVlOiBsc3RJZERvblZpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaV9CeVVzZXJJZCh1c2VySWQpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaV9CeVVzZXJJZC8ke3VzZXJJZH1gO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgR2V0Q29DYXVUb0NodWNSb290RG9uVmlfQnlMaXN0VXNlcklkKGxzdFVzZXJJZCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldENvQ2F1VG9DaHVjUm9vdERvblZpX0J5TGlzdFVzZXJJZGA7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlZmF1bHRQb3N0KHVybCwgbHN0VXNlcklkKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaShncmlkSW5mbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEFsbEJ5RmlsdGVyL0dldENvQ2F1VG9DaHVjUm9vdERvblZpYDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVmYXVsdFBvc3QodXJsLCBncmlkSW5mbyk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVQaWNrZXJDb250cm9sU2NoZW1hKGNvbnRyb2w6IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEsIGVudW1DYW5CbzogYW55ID0gRW51bUNhbkJvLlRST05HX0RPTl9WSSkge1xuICAgICAgICBsZXQgY29sdW1ucyA9IFsuLi50aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbl07XG4gICAgICAgIGlmKGNvbnRyb2wuaXNPdmVycmlkZUNvbHVtbnMpe1xuICAgICAgICAgICAgY29sdW1ucyA9IFsuLi5jb250cm9sLmNvbHVtbnNdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbnRyb2wuY29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKC4uLmNvbnRyb2wuY29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRyb2wuZGF0YVR5cGUgPT0gRW51bUNvbnRyb2xQaWNrZXJUeXBlLkRPSVRBQyAmJiAhY29sdW1ucy5zb21lKGl0ZW0gPT4gaXRlbS5jb2RlID09ICdpZERvaVRhYycpKSB7XG4gICAgICAgICAgICBjb2x1bW5zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnxJDhu5FpIHTDoWMnLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnaWREb2lUYWMnLFxuICAgICAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5faG9Tb0RvaVRhY1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNBcnJheUZpZWxkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgZmllbGQ6ICdpZENhbkJvJyxcbiAgICAgICAgICAgIGxhYmVsOiAnQ8OhbiBi4buZJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQ2jhu41uIGPDoW4gYuG7mScsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcyxcbiAgICAgICAgICAgIHBsdXNVcmw6ICdXaXRoQ2h1Y0RhbmhDaHVjVnUnLFxuICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnaG9WYVRlbicsXG4gICAgICAgICAgICBmaWVsZFBsdXM6ICdjb2RlJyxcbiAgICAgICAgICAgIGZpZWxkU2VhcmNoVGV4dDogWydlbWFpbCcsICdjb2RlJ10sXG4gICAgICAgICAgICBmdW5jR2V0TGFiZWw6IChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGl0ZW0uaG9WYVRlbjtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGAke2l0ZW0uY29kZX0gLSAke3Jlc3VsdH0gYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udGVuRG9uVmkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGAtICR7aXRlbS50ZW5Eb25WaX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhRHJvcGRvd246IGFzeW5jIChkYXRhU291cmNlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzZWxlY3RlZFZhbHVlIH0gPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmICghc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsc3RJZERvaVRhYyA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZGlzdGluY3QoZGF0YVNvdXJjZS5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0uaWREb2lUYWMpLmZsYXRNYXAoaXRlbSA9PiBpdGVtLmlkRG9pVGFjLnNwbGl0KCcsJykpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbHN0RG9pVGFjID0gKGF3YWl0IHRoaXMuX2hvU29Eb2lUYWNTZXJ2aWNlLmdldEFsbFdpdGhJZ25vcmUoW3RoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCBsc3RJZERvaVRhYyldLCAnaWQsdGVuJykpPy5kYXRhID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAobHN0RG9pVGFjLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGVuRG9pVGFjID0gbHN0RG9pVGFjLmZpbHRlcih4ID0+IGl0ZW0uaWREb2lUYWMuaW5jbHVkZXMoeC5pZCkpLm1hcCh4ID0+IHgudGVuKS5qb2luKCcsICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzZWxlY3RlZFZhbHVlID09ICdvYmplY3QnICYmIHguaWQgPT0gc2VsZWN0ZWRWYWx1ZT8uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnRlbkRvaVRhYyA9IHNlbGVjdGVkVmFsdWU/LnN0cmlkRG9pVGFjXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoc2VsZWN0ZWRWYWx1ZSkgJiYgc2VsZWN0ZWRWYWx1ZS5pbmNsdWRlcyh4LmlkKSkgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgudGVuRG9pVGFjID0gc2VsZWN0ZWRWYWx1ZS5maW5kKHkgPT4geS5pZCA9PSB4LmlkKT8uc3RyaWREb2lUYWNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRUZW5Eb25WaShkYXRhU291cmNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlckdldERhdGFQaWNrZWQ6IGFzeW5jIChkYXRhU291cmNlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXREYXRhUGx1cyhkYXRhU291cmNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlckdldERhdGFVblBpY2tlZDogYXN5bmMgKGRhdGFTb3VyY2UsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmdldERhdGFQbHVzKGRhdGFTb3VyY2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sLmlzQ2FjaGluZykge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lzQ2FjaGluZycsIE9wZXJhdG9yLmVxdWFsLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGVudW1DYW5Cbykge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1DYW5Cby5OR09BSV9ET05fVkk6XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lzTmdvYWlEb25WaScsIE9wZXJhdG9yLmVxdWFsLCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ2FuQm8uVFJPTkdfRE9OX1ZJOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpc05nb2FpRG9uVmknLCBPcGVyYXRvci5lcXVhbCwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLmNvbnRyb2wsXG4gICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLCAgICAgICAgICAgIFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzdWx0LmZpZWxkUGx1cykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlc3VsdC5maWVsZFBsdXNcbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgocSkgPT4gcS50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgIC5pbmRleE9mKCdpZE5nYWNoVmllbkNodWMnKSA9PSAtMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmZpZWxkUGx1cyArPSAnLGlkTmdhY2hWaWVuQ2h1Yyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQuZmllbGRQbHVzID0gJ2lkTmdhY2hWaWVuQ2h1YyxuZ2F5U2luaCxuZ2F5U2luaDIsY2h1Y0RhbmhzLGlkSG9jSGFtLGlkSG9jVmksZGllblRob2FpRGlEb25nLGNvZGUnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUZW5Eb25WaShkYXRhU291cmNlOiBhbnlbXSkge1xuICAgICAgICBpZiAoIWRhdGFTb3VyY2U/Lmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgLy8gQuG7lSBzdW5nIG3hu5l0IHPhu5EgdGjDtG5nIHRpbiDEkeG7gyBoaeG7g24gdGjhu4sgbGFiZWwgdHLDqm4gYXV0b2NvbXBsZXRlIHBpY2tlciBk4bqhbmcgZHJvcGRvd25cbiAgICAgICAgICAgIGlmIChpdGVtLmRvblZpQ2h1Y1Z1cyAmJiBpdGVtLmRvblZpQ2h1Y1Z1cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1Eb25WaUNoaW5oID0gaXRlbS5kb25WaUNodWNWdXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKHEpID0+IHEuaXNEb25WaUNoaW5oXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW1Eb25WaUNoaW5oKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Eb25WaUNoaW5oID0gaXRlbS5kb25WaUNodWNWdXNbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGl0ZW0udGVuRG9uVmkgPSBpdGVtRG9uVmlDaGluaC5jaHVjVnVcbiAgICAgICAgICAgICAgICAgICAgPyBgJHtpdGVtRG9uVmlDaGluaC5jaHVjVnV9ICR7aXRlbURvblZpQ2hpbmguZG9uVml9YFxuICAgICAgICAgICAgICAgICAgICA6IGl0ZW1Eb25WaUNoaW5oLmRvblZpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0RGF0YVBsdXMoZGF0YVNvdXJjZTogYW55KSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhU291cmNlKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaHVjRGFuaHMpIHtcbiAgICAgICAgICAgICAgICBpdGVtLnN0ckNodWNEYW5ocyA9IGl0ZW0uY2h1Y0RhbmhzLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtLnN0ckNodWNEYW5ocyA9ICcnO1xuICAgICAgICAgICAgaWYgKGl0ZW0uY2h1Y0RhbmhzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpIG9mIGl0ZW0uY2h1Y0RhbmhzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpLmNodWNEYW5oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN0ckNodWNEYW5ocyArPSBpLmNodWNEYW5oO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbS5zdHJEb25WaUNodWNWdXMgPSAnJztcbiAgICAgICAgICAgIGlmIChpdGVtLmRvblZpQ2h1Y1Z1cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpIG9mIGl0ZW0uZG9uVmlDaHVjVnVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpLmNodWNWdSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdHJEb25WaUNodWNWdXMgKz0gYDxwPiR7aS5jaHVjVnV9IC0gJHtpLmRvblZpfTwvcD5gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdHJEb25WaUNodWNWdXMgKz0gYDxwPiR7aS5kb25WaX08L3A+YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXRlbS5uZ2F5U2luaCAmJiBpdGVtLm5nYXlTaW5oMikge1xuICAgICAgICAgICAgICAgIGl0ZW0ubmdheVNpbmggPSBuZXcgRGF0ZShpdGVtLm5nYXlTaW5oMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtLmhvY0hhbUhvY1ZpXG4gICAgICAgICAgICAgICAgPSBpdGVtLmlkSG9jSGFtICYmIGl0ZW0uaWRIb2NWaVxuICAgICAgICAgICAgICAgICAgICA/IGAke2l0ZW0uaWRIb2NIYW19LiAke2l0ZW0uaWRIb2NWaX1gXG4gICAgICAgICAgICAgICAgICAgIDogaXRlbS5pZEhvY0hhbSB8fCBpdGVtLmlkSG9jVmk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVDYW5Cb1RvR2lhbmdWaWVuKG1vZGVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVDYW5Cb1RvR2lhbmdWaWVuYCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY3JlYXRlR2lhbmdWaWVuRG9pVGFjKG1vZGVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9DcmVhdGVHaWFuZ1ZpZW5Eb2lUYWNgLFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXREb25WaVBoYW5DYXBCeUlkcyhtb2RlbCwgaXNVc2VyID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREb25WaVBoYW5DYXBCeUlkcy8ke2lzVXNlcn1gLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgdXBkYXRlR2lhbmdWaWVuTm9pQm8obW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFB1dChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vVXBkYXRlR2lhbmdWaWVuTm9pQm8vJHttb2RlbC5pZH1gLFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVHaWFuZ1ZpZW5Eb2lUYWMobW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFB1dChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vVXBkYXRlR2lhbmdWaWVuRG9pVGFjLyR7bW9kZWwuaWR9YCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0THlMaWNoS2hvYUhvY0NhbkJvKGlkKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0THlMaWNoS2hvYUhvY0NhbkJvLyR7aWR9YDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGFzeW5jIEdldERvblZpQ2h1Y1Z1KGlkQ2FuQm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREb25WaUNodWNWdS8ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVMaXN0RW50aXR5Q29sdW1uRGVmYXVsdCgpIHtcbiAgICAgICAgY29uc3QgX21hc3RlckRhdGFTZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTcOjJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnY29kZScsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnODBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSOG7jWMgaMOgbSwgaOG7jWMgduG7iycsXG4gICAgICAgICAgICAgICAgY29kZTogJ2hvY0hhbUhvY1ZpJyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUwcHgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdob1ZhVGVuJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMDBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfDoHkgc2luaCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ25nYXlTaW5oJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogRGF0YVR5cGUuZGF0ZSxcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMjBweCcsXG4gICAgICAgICAgICAgICAgbm90SW5GaWVsZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAxLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0dp4bubaSB0w61uaCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ2dpb2lUaW5oJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogX21hc3RlckRhdGFTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGdyb3VwQ29kZTogJ0dJT0lfVElOSCcsXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzkwcHgnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogMSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDaOG7qWMgZGFuaCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ3N0ckNodWNEYW5ocycsXG4gICAgICAgICAgICAgICAgbm90SW5GaWVsZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNTBweCcsXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyB24bulIC0gxJDGoW4gduG7iycsXG4gICAgICAgICAgICAgICAgY29kZTogJ3N0ckRvblZpQ2h1Y1Z1cycsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdodG1sJyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIyMHB4JyxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAvLyB0ZW1wbGF0ZUZpbHRlcjogdGVtcGxhdGUuZmlsdGVyRG9uVmlSZWYsXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZpZWxkRmlsdGVyOiAnaWREb25WaXMnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0VtYWlsJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcbiAgICAgICAgICAgICAgICBpc092ZXJyaWRlRmlsdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTcwcHgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ8SQ4buRaSB0w6FjJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnaWREb2lUYWMnLFxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGlzQXJyYXlGaWVsZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5faG9Tb0RvaVRhY1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMDBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGhvbmdLZUNhbkJvKHBsdXNVcmw6IHN0cmluZykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9LyR7dGhpcy5hcGlHZXREYXRhfS8ke3BsdXNVcmx9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVMaXN0RW50aXR5Q29sdW1uVjEoKSB7XG4gICAgICAgIGNvbnN0IF9tYXN0ZXJEYXRhU2VydmljZSA9IHRoaXMuX2luamVjdG9yLmdldChNYXN0ZXJEYXRhU2VydmljZSk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ03DoycsXG4gICAgICAgICAgICAgICAgY29kZTogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzgwcHgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdob1ZhVGVuJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMDBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfDoHkgc2luaCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ25nYXlTaW5oJyxcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IERhdGFUeXBlLmRhdGUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMjBweCcsXG4gICAgICAgICAgICAgICAgbm90SW5GaWVsZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAxLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0dp4bubaSB0w61uaCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ2dpb2lUaW5oJyxcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogX21hc3RlckRhdGFTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGdyb3VwQ29kZTogJ0dJT0lfVElOSCcsXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzkwcHgnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogMSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDaOG7qWMgduG7pSAtIMSQxqFuIHbhu4snLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdzdHJEb25WaUNodWNWdXMnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaHRtbCcsXG4gICAgICAgICAgICAgICAgbm90SW5GaWVsZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMjBweCcsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgLy8gdGVtcGxhdGVGaWx0ZXI6IHRlbXBsYXRlLmZpbHRlckRvblZpUmVmLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmaWVsZEZpbHRlcjogJ2lkRG9uVmlzJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdFbWFpbCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXG4gICAgICAgICAgICAgICAgaXNPdmVycmlkZUZpbHRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE3MHB4JyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZ2V0UXVhbkx5Q2FwVHJlbkJ5VXNlcklkKGlkVXNlcjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQoYCR7dGhpcy5zZXJ2aWNlVXJpfS9DYW5Cb1F1YW5MeUJ5VXNlcklkLyR7aWRVc2VyfWApO1xuICAgIH1cblxuICAgIGdldERhbmhTYWNoVXNlckNhcFRyZW4oaWRzRG9uVmkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREYW5oU2FjaFVzZXJDYXBUcmVuYDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBpZHNEb25WaSk7XG4gICAgfVxuXG5cbn1cblxuIl19
|
|
715
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYm8taG9zby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2NhbmJvLWhvc28uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDNUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFD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SUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLGtCQUFrQjtnQkFDekIsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixLQUFLLEVBQUUsT0FBTztnQkFDZCxJQUFJLEVBQUUsS0FBSztnQkFDWCwyQ0FBMkM7Z0JBQzNDLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixXQUFXLEVBQUUsVUFBVTthQUMxQixDQUFDO1lBQ0YsSUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUN4QixnQkFBZ0IsRUFBRSxJQUFJO2dCQUN0QixLQUFLLEVBQUUsT0FBTzthQUNqQixDQUFDO1NBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxNQUFjO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHdCQUF3QixNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUFRO1FBQzNCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUseUJBQXlCLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDOzs7O1lBMXdCSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQW5CUSxVQUFVO1lBQ0UsUUFBUTtZQWFwQixtQkFBbUI7WUFDbkIsV0FBVztZQUxYLDZCQUE2QjtZQUo3QixrQkFBa0I7WUFNbEIsaUJBQWlCO1lBRGpCLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBFbnVtQ29udHJvbFBpY2tlclR5cGUgfSBmcm9tICcuLi9jbGFzc2VzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vY2xhc3Nlcy9lbnZpcm9ubWVudC1zY2hlbWEnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSwgQ29sdW1uU2NoZW1hQmFzZSwgRGF0YVR5cGUsIEVudGl0eVBpY2tlckNvbHVtbiwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yIH0gZnJvbSAnLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBDb0NhdVRvQ2h1Y1NlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvY2F1dG9jaHVjL3NlcnZpY2VzL2NvY2F1dG9jaHVjLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW51bUNhbkJvIH0gZnJvbSAnLi4vZW51bXMvY29tbW9uJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uL21vZGVscy9ncmlkLWluZm8nO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDYW5Cb19Ib1NvX0NvQ2F1VG9DaHVjU2VydmljZSB9IGZyb20gJy4vY2FuYm8taG9zby1jb2NhdXRvY2h1Yy5zZXJ2aWNlJztcbmltcG9ydCB7IENydWRTZXJ2aWNlIH0gZnJvbSAnLi9jcnVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgSG9Tb0RvaVRhY1NlcnZpY2UgfSBmcm9tICcuL2hvc29kb2l0YWMuc2VydmljZSc7XG5pbXBvcnQgeyBNYXN0ZXJEYXRhU2VydmljZSB9IGZyb20gJy4vbWFzdGVyLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FuQm9Ib1NvU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcbiAgICBlbnZpcm9ubWVudDogYW55O1xuICAgIHZlcnNpb246IGFueTtcbiAgICBsc3RFbnRpdHlQaWNrZXJDb2x1bW46IEVudGl0eVBpY2tlckNvbHVtbltdO1xuICAgIGRlZmF1bHRFbnRpdHlDb2x1bW5EaWN0ID0ge1xuICAgICAgICB2MTogdGhpcy5nZW5lcmF0ZUxpc3RFbnRpdHlDb2x1bW5WMSgpXG4gICAgfTtcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBodHRwOiBIdHRwQ2xpZW50LCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF91c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlOiBDYW5Cb19Ib1NvX0NvQ2F1VG9DaHVjU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY29DYXVUb0NodWNTZXJ2aWNlOiBDb0NhdVRvQ2h1Y1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2hvU29Eb2lUYWNTZXJ2aWNlOiBIb1NvRG9pVGFjU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uY2FuYm9FbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9DYW5Cb19Ib1NvYCk7XG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uY2FuYm9FbmRwb2ludDtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xuICAgICAgICB0aGlzLmVuZFBvaW50ID0gdGhpcy5lbnZpcm9ubWVudC5hcGlEb21haW4uY2FuYm9FbmRwb2ludDtcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdGhpcy5lbnZpcm9ubWVudC5jYXVIaW5oTmdoaWVwVnU/LnZlcnNpb25Db2x1bW5QaWNrZXJDYW5CbztcbiAgICAgICAgaWYgKHRoaXMudmVyc2lvbikge1xuICAgICAgICAgICAgdGhpcy5sc3RFbnRpdHlQaWNrZXJDb2x1bW4gPSB0aGlzLmRlZmF1bHRFbnRpdHlDb2x1bW5EaWN0W2B2JHt0aGlzLnZlcnNpb259YF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbikge1xuICAgICAgICAgICAgdGhpcy5sc3RFbnRpdHlQaWNrZXJDb2x1bW4gPSB0aGlzLmdlbmVyYXRlTGlzdEVudGl0eUNvbHVtbkRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIH1cblxuICAgIGdldElkc0RvblZpSGllblRhaUNhbkJvKGlkQ2FuQm86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0SWRzRG9uVmlIaWVuVGFpLyR7aWRDYW5Cb31gKTtcbiAgICB9XG5cbiAgICBnZXRDYW5Cb0NhcFRyZW4odXNlcklkTGFzdHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q2FuQm9DYXBUcmVuYCwge1xuICAgICAgICAgICAgbGlzdEd1aWRWYWx1ZTogdXNlcklkTGFzdHNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TGlzdFRyZWVEb25WaVF1YW5MeUJ5VXNlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0dldExpc3RUcmVlRG9uVmlRdWFuTHlCeVVzZXJgKTtcbiAgICB9XG5cbiAgICBnZXRNb2RlbFNjaGVtYXMoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgbmFtZTogJ03DoycsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdNw6MnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTcOjJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnaWQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRIb2NWaWVuJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnaWQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaG9WYVRlbicsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdI4buNIHbDoCB0w6puJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlTaW5oJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnTmfDoHkgc2luaCcsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05nw6B5IHNpbmgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZGllblRob2FpRGlEb25nJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnU+G7kSDEkWnhu4duIHRob+G6oWknLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnU+G7kSDEkWnhu4duIHRob+G6oWknLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU+G7kSDEkWnhu4duIHRob+G6oWknLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdFbWFpbCcsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdFbWFpbCcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdFbWFpbCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaUNodWNWdVN0cicsXG4gICAgICAgICAgICAgICAgbmFtZTogJ8SQxqFuIHbhu4sgLSBDaOG7qWMgduG7pScsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICfEkMahbiB24buLIC0gQ2jhu6ljIHbhu6UnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnxJDGoW4gduG7iyAtIENo4bupYyB24bulJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZ2V0Q29sdW1uU2NoZW1hQmFzZSgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUwcHgnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkSG9jVmllbicsXG4gICAgICAgICAgICAgICAgaW5jbHVkZVNlbGVjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaG9WYVRlbicsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMDBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZGF0ZScsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMTBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZGllblRob2FpRGlEb25nJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExMHB4J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxuICAgICAgICAgICAgICAgIGlzT3ZlcnJpZGVGaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxODBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlDaHVjVnVTdHInLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpbmNsdWRlU2VsZWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzI1MHB4J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZ2V0RGF0YUV4cG9ydDJDKGdyaWRJbmZvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0U2lnbmFsUihcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGF0YUV4cG9ydDJDYCxcbiAgICAgICAgICAgIGdyaWRJbmZvXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaW5Tb1lldUx5TGljaChpZENhbkJvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vSW5Tb1lldUx5TGljaD9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KHVybCwgaWRDYW5Cbywge1xuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScsXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICApLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbkx5TGljaEJvaUhvYW4oaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0luTHlMaWNoQm9pSG9hbj9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KHVybCwgaWRDYW5Cbywge1xuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScsXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICApLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbkx5TGljaEJvTmhpZW0oaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0luTHlMaWNoQm9OaGllbT9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KHVybCwgaWRDYW5Cbywge1xuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScsXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICApLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0YW9UYWlLaG9hbihpZENhbkJvOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9UYW9UYWlLaG9hbi8ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCB7fSk7XG4gICAgfVxuXG4gICAgZ2V0Q2FuQm9JbmZvKGlkQ2FuQm86IHN0cmluZykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldENhbkJvSW5mby8ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGdldERldGFpbFdpdGhDaHVjRGFuaENodWNWdShpZENhbkJvOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGV0YWlsV2l0aENodWNEYW5oQ2h1Y1Z1LyR7aWRDYW5Cb31gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FwIG5oYXQgdHJhbmcgdGhhaSBjYW5ib19ob3NvIHRoZW8gaWQgY2FuQm9cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWRDYW5Cb1xuICAgICAqIEBwYXJhbSB7YW55fSBpZFRyYW5nVGhhaVxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmVzcG9uc2VSZXN1bHQ+fVxuICAgICAqL1xuICAgIHVwZGF0ZVRyYW5nVGhhaUNhbkJvSG9TbyhpZENhbkJvOiBzdHJpbmcsIGlkVHJhbmdUaGFpOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVUcmFuZ1RoYWlDYW5Cb0hvU28/aWRDYW5Cbz0ke2lkQ2FuQm99JiZpZFRyYW5nVGhhaT0ke2lkVHJhbmdUaGFpfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwge30pO1xuICAgIH1cblxuICAgIEdldFRob25nVGluQ2FuQm9JZChpZENhbkJvOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRUaG9uZ1RpbkNhbkJvSWQvJHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBjaGVja0NhbkJvSW5QaG9uZ0RvaU5nb2FpKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vQ2hlY2tDYW5Cb0luUGhvbmdEb2lOZ29haWApO1xuICAgIH1cblxuICAgIEdldERhbmhTYWNoQ2FuQm9UaGVvRG9uVmkobHN0SWRPcmdSZXEsIGdyaWRJbmZvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGFuaFNhY2hDYW5Cb1RoZW9Eb25WaS8ke2xzdElkT3JnUmVxfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZ3JpZEluZm8pO1xuICAgIH1cblxuICAgIGdldERhdGFFeHBvcnRLZXRRdWFEYW5oR2lhKGdyaWRJbmZvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGF0YUV4cG9ydEtldFF1YURhbmhHaWFgO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGdyaWRJbmZvKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBM4bqleSBkYW5oIHPDoWNoIGPDoW4gYuG7mSB2w6AgY+G6pXAgZMaw4bubaSBob+G6t2MgbMOgIG5ow6JuIHZpw6puIG5nxrDhu51pIGTDuW5nIHF14bqjbiBsw70gdHLhu7FjIHRp4bq/cFxuICAgICAqIE7hur91IHRyb25nIGPDuW5nIDEgxJHGoW4gduG7iyB0aMOsIG5nxrDhu51pIGPDsyBjaOG7qWMgduG7pSBj4bqlcCB0csaw4bufbmcgc+G6vSBjw7MgY+G6pXAgZMaw4bubaSBsw6AgdG/DoG4gYuG7mSBuaMOibiB2acOqblxuICAgICAqIEPDsm4gbmfGsOG7nWkgY8OzIGNo4bupYyB24bulIGPhuqVwIHBow7MgdGjDrCBjw7MgY+G6pXAgZMaw4bubaSBsw6AgdG/DoG4gYuG7mSBuaMOibiB2acOqbiB0cuG7qyBj4bqlcCB0csaw4bufbmcsIC4uLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmVzcG9uc2VSZXN1bHQ+fVxuICAgICAqL1xuICAgIGdldENhbkJvQ2FwRHVvaSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0dldENhbkJvQ2FwRHVvaWApO1xuICAgIH1cblxuICAgIGNoZWNrSXNDYW5Cb1Bob25nVGNjYigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0NoZWNrSXNDYW5Cb1Bob25nVGNjYmApO1xuICAgIH1cblxuICAgIGdldElkc0RvblZpRHVvY1BoZXBRdWFuTHkoaWREb25WaSkge1xuICAgICAgICBsZXQgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRJZHNEb25WaUR1b2NQaGVwUXVhbkx5YDtcbiAgICAgICAgaWYgKGlkRG9uVmkpIHtcbiAgICAgICAgICAgIHVybCArPSBgP2lkRG9uVmk9JHtpZERvblZpfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGdldFBoYW1WaURvblZpUXVhbkx5KGlzR2V0VHJlZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0UGhhbVZpRG9uVmlRdWFuTHk/aXNHZXRUcmVlPSR7aXNHZXRUcmVlfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG4gICAgZ2V0SWRzRG9uVmlRdWFuTHkoYWxsQ2hpbGQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0SWRzRG9uVmlRdWFuTHk/YWxsQ2hpbGQ9JHthbGxDaGlsZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0SWRzQ2FuQm9DdW5nRG9uVmkoKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVJbmZvID0gdGhpcy5fdXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgICAgbGV0IGlkc0NhbkJvID0gW107XG4gICAgICAgIGlmIChwcm9maWxlSW5mbz8uaWRDYW5Cbykge1xuICAgICAgICAgICAgY29uc3QgY29tbW9uID0gW3RoaXMubmV3RmlsdGVyKCdjb25IaWV1THVjJywgT3BlcmF0b3IuZXF1YWwsIHRydWUpXTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXG4gICAgICAgICAgICAgICAgLi4uY29tbW9uLFxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENhbkJvJywgT3BlcmF0b3IuZXF1YWwsIHByb2ZpbGVJbmZvLmlkQ2FuQm8pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGxldCBpZHNEb25WaUNhbkJvTG9naW4gPSBbXTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEFsbChmaWx0ZXJzKVxuICAgICAgICAgICAgICAgIC50aGVuKChycykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRzRG9uVmlDYW5Cb0xvZ2luID0gcnMuZGF0YS5tYXAoKHgpID0+IHguaWREb25WaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGlkc0RvblZpQ2FuQm9Mb2dpbi5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGlkc0RvblZpID0gW107XG4gICAgICAgICAgICBjb25zdCBjb0NhdVRvQ2h1Y0ZpbHRlcnMgPSBuZXcgRmlsdGVyKHsgbG9naWM6ICdvcicsIGZpbHRlcnM6IFtdIH0pO1xuICAgICAgICAgICAgaWRzRG9uVmlDYW5Cb0xvZ2luLmZvckVhY2goKGlkRG9uVmkpID0+IHtcbiAgICAgICAgICAgICAgICBjb0NhdVRvQ2h1Y0ZpbHRlcnMuZmlsdGVycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZER1b25nRGFuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBgOyR7aWREb25WaX07YFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fY29DYXVUb0NodWNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEFsbChbY29DYXVUb0NodWNGaWx0ZXJzXSwgJ2lkJylcbiAgICAgICAgICAgICAgICAudGhlbigocnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkc0RvblZpID0gcnMuZGF0YS5tYXAoKHgpID0+IHguaWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChpZHNEb25WaS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbmV3ZmlsdGVycyA9IFtcbiAgICAgICAgICAgICAgICAuLi5jb21tb24sXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkRG9uVmknLCBPcGVyYXRvci5pbiwgaWRzRG9uVmkpLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEFsbChuZXdmaWx0ZXJzLCAnaWRDYW5CbycpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZHNDYW5CbyA9IHJzLmRhdGEubWFwKCh4KSA9PiB4LmlkQ2FuQm8pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaWRzQ2FuQm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGdlbmVyYXRlQ29sdW1uRG9uVmkoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaUNhcDJzJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2RvblZpVGhlb0NhcCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnS2hvYSB2aeG7h24vIMSRxqFuIHbhu4snKSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIyMHB4JyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpQ2FwM3MnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZG9uVmlUaGVvQ2FwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdC4buZIG3DtG4vIHbEg24gcGjDsm5nIGtob2EnKSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIyMHB4JyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBnZXRJbmZvQ2FuQm9XaXRoRG9uVmlDaHVjVnUobHN0SWRDYW5Cbzogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IFt0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5pbiwgbHN0SWRDYW5CbyldO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhQ3VzdG9tUm91dGUoXG4gICAgICAgICAgICBgRmlsdGVyQnlPcmcvJHt0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWRFbXB0eSgpfWAsXG4gICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIDEwMDAwMFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldFRob25nVGluRG9uVmlDYW5CbyhpdGVtQ2FuQm86IGFueSwgbHN0Q2FuQm9Eb25WaTogYW55W10pIHtcbiAgICAgICAgY29uc3QgaG9Tb0RvblZpID0gbHN0Q2FuQm9Eb25WaS5maW5kKCh4KSA9PiB4LmlkID09IGl0ZW1DYW5Cby5pZENhbkJvKTtcbiAgICAgICAgaWYgKGhvU29Eb25WaSkge1xuICAgICAgICAgICAgaXRlbUNhbkJvLmRvblZpQ2FwMnMgPSBob1NvRG9uVmkuZG9uVmlDYXAycztcbiAgICAgICAgICAgIGl0ZW1DYW5Cby5kb25WaUNhcDNzID0gaG9Tb0RvblZpLmRvblZpQ2FwM3M7XG4gICAgICAgICAgICBpdGVtQ2FuQm8uZG9uVmlDaHVjVnVzID0gaG9Tb0RvblZpLmRvblZpQ2h1Y1Z1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldERvblZpRnVsbHNCeUNhbkJvQXBpKGlkQ2FuQm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREb25WaUZ1bGxzQnlDYW5Cb0FwaT9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0SW5mb0FmdGVyR2V0RGF0YShkYXRhU291cmNlKSB7XG4gICAgICAgIGNvbnN0IGd1aWRFbXB0eSA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZEVtcHR5KCk7XG4gICAgICAgIGNvbnN0IGlkc0NhbkJvID0gdGhpcy5fY29tbW9uU2VydmljZS5kaXN0aW5jdEFycmF5KFxuICAgICAgICAgICAgZGF0YVNvdXJjZVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHguaWRDYW5CbyAhPSBndWlkRW1wdHkpXG4gICAgICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5pZENhbkJvKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBsc3RDYW5CbyA9IChcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0QWxsKFxuICAgICAgICAgICAgICAgIFt0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5pbiwgaWRzQ2FuQm8pXSxcbiAgICAgICAgICAgICAgICAnaWQsY29kZSxob1ZhVGVuLG5nYXlTaW5oLGdpb2lUaW5oJ1xuICAgICAgICAgICAgKVxuICAgICAgICApLmRhdGE7XG4gICAgICAgIGRhdGFTb3VyY2UuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuaWRDYW5CbyAhPSBndWlkRW1wdHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYW5CbyA9IGxzdENhbkJvLmZpbmQoKHgpID0+IHguaWQgPT0gZWxlbWVudC5pZENhbkJvKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FuQm8pIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tYUNhbkJvID0gY2FuQm8uY29kZTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5ob1ZhVGVuID0gY2FuQm8uaG9WYVRlbjtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50ZW5DYW5CbyA9IGNhbkJvLmhvVmFUZW47XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubmdheVNpbmggPSBjYW5Cby5uZ2F5U2luaDtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5naW9pVGluaCA9IGNhbkJvLmdpb2lUaW5oO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SWRVc2VyQnlEb25WaShsc3RJZERvblZpOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L2dldElkVXNlckJ5RG9uVmlgLCB7XG4gICAgICAgICAgICBsaXN0R3VpZFZhbHVlOiBsc3RJZERvblZpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRJZENhbkJvQnlEb25WaShsc3RJZERvblZpOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L2dldElkQ2FuQm9CeURvblZpYCwge1xuICAgICAgICAgICAgbGlzdEd1aWRWYWx1ZTogbHN0SWREb25WaSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Q29DYXVUb0NodWNSb290RG9uVmlfQnlVc2VySWQodXNlcklkKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q29DYXVUb0NodWNSb290RG9uVmlfQnlVc2VySWQvJHt1c2VySWR9YDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGFzeW5jIEdldENvQ2F1VG9DaHVjUm9vdERvblZpX0J5TGlzdFVzZXJJZChsc3RVc2VySWQpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaV9CeUxpc3RVc2VySWRgO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGxzdFVzZXJJZCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Q29DYXVUb0NodWNSb290RG9uVmkoZ3JpZEluZm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRBbGxCeUZpbHRlci9HZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaWA7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZ3JpZEluZm8pO1xuICAgIH1cblxuICAgIGdlbmVyYXRlUGlja2VyQ29udHJvbFNjaGVtYShjb250cm9sOiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hLCBlbnVtQ2FuQm86IGFueSA9IEVudW1DYW5Cby5UUk9OR19ET05fVkkpIHtcbiAgICAgICAgbGV0IGNvbHVtbnMgPSBbLi4udGhpcy5sc3RFbnRpdHlQaWNrZXJDb2x1bW5dO1xuICAgICAgICBpZiAoY29udHJvbC5pc092ZXJyaWRlQ29sdW1ucykge1xuICAgICAgICAgICAgY29sdW1ucyA9IFsuLi5jb250cm9sLmNvbHVtbnNdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbnRyb2wuY29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKC4uLmNvbnRyb2wuY29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRyb2wuZGF0YVR5cGUgPT0gRW51bUNvbnRyb2xQaWNrZXJUeXBlLkRPSVRBQyAmJiAhY29sdW1ucy5zb21lKGl0ZW0gPT4gaXRlbS5jb2RlID09ICdpZERvaVRhYycpKSB7XG4gICAgICAgICAgICBjb2x1bW5zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnxJDhu5FpIHTDoWMnLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnaWREb2lUYWMnLFxuICAgICAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5faG9Tb0RvaVRhY1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNBcnJheUZpZWxkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgZmllbGQ6ICdpZENhbkJvJyxcbiAgICAgICAgICAgIGxhYmVsOiAnQ8OhbiBi4buZJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQ2jhu41uIGPDoW4gYuG7mScsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcyxcbiAgICAgICAgICAgIHBsdXNVcmw6ICdXaXRoQ2h1Y0RhbmhDaHVjVnUnLFxuICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnaG9WYVRlbicsXG4gICAgICAgICAgICBmaWVsZFBsdXM6ICdjb2RlJyxcbiAgICAgICAgICAgIGZpZWxkU2VhcmNoVGV4dDogWydlbWFpbCcsICdjb2RlJ10sXG4gICAgICAgICAgICBmdW5jR2V0TGFiZWw6IChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGl0ZW0uaG9WYVRlbjtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGAke2l0ZW0uY29kZX0gLSAke3Jlc3VsdH0gYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udGVuRG9uVmkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGAtICR7aXRlbS50ZW5Eb25WaX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhRHJvcGRvd246IGFzeW5jIChkYXRhU291cmNlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhU291cmNlPy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNlbGVjdGVkVmFsdWUgfSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxzdElkRG9pVGFjID0gdGhpcy5fY29tbW9uU2VydmljZS5kaXN0aW5jdChkYXRhU291cmNlLmZpbHRlcihpdGVtID0+ICEhaXRlbS5pZERvaVRhYykuZmxhdE1hcChpdGVtID0+IGl0ZW0uaWREb2lUYWMuc3BsaXQoJywnKSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobHN0SWREb2lUYWMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsc3REb2lUYWMgPSAoYXdhaXQgdGhpcy5faG9Tb0RvaVRhY1NlcnZpY2UuZ2V0QWxsV2l0aElnbm9yZShbdGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuaW4sIGxzdElkRG9pVGFjLmZpbHRlcihpZCA9PiAhIWlkKSldLCAnaWQsdGVuJykpPy5kYXRhID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxzdERvaVRhYy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGVuRG9pVGFjID0gbHN0RG9pVGFjLmZpbHRlcih4ID0+IGl0ZW0uaWREb2lUYWMuaW5jbHVkZXMoeC5pZCkpLm1hcCh4ID0+IHgudGVuKS5qb2luKCcsICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2VsZWN0ZWRWYWx1ZSA9PSAnb2JqZWN0JyAmJiB4LmlkID09IHNlbGVjdGVkVmFsdWU/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeC50ZW5Eb2lUYWMgPSBzZWxlY3RlZFZhbHVlPy5zdHJpZERvaVRhY1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KHNlbGVjdGVkVmFsdWUpICYmIHNlbGVjdGVkVmFsdWUuaW5jbHVkZXMoeC5pZCkpIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnRlbkRvaVRhYyA9IHNlbGVjdGVkVmFsdWUuZmluZCh5ID0+IHkuaWQgPT0geC5pZCk/LnN0cmlkRG9pVGFjXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGVuRG9uVmkoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhUGlja2VkOiBhc3luYyAoZGF0YVNvdXJjZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0RGF0YVBsdXMoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhVW5QaWNrZWQ6IGFzeW5jIChkYXRhU291cmNlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXREYXRhUGx1cyhkYXRhU291cmNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWZhdWx0RmlsdGVyczogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbC5pc0NhY2hpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpc0NhY2hpbmcnLCBPcGVyYXRvci5lcXVhbCwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3dpdGNoIChlbnVtQ2FuQm8pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ2FuQm8uTkdPQUlfRE9OX1ZJOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpc05nb2FpRG9uVmknLCBPcGVyYXRvci5lcXVhbCwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNhbkJvLlRST05HX0RPTl9WSTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaXNOZ29haURvblZpJywgT3BlcmF0b3IuZXF1YWwsIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVycztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5jb250cm9sLFxuICAgICAgICAgICAgY29sdW1uczogY29sdW1ucyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5maWVsZFBsdXMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICByZXN1bHQuZmllbGRQbHVzXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHEpID0+IHEudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZignaWROZ2FjaFZpZW5DaHVjJykgPT0gLTFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5maWVsZFBsdXMgKz0gJyxpZE5nYWNoVmllbkNodWMnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghcmVzdWx0LmlzT3ZlcnJpZGVDb2x1bW5zKVxuICAgICAgICAgICAgcmVzdWx0LmZpZWxkUGx1cyA9ICdpZE5nYWNoVmllbkNodWMsbmdheVNpbmgsbmdheVNpbmgyLGNodWNEYW5ocyxpZEhvY0hhbSxpZEhvY1ZpLGRpZW5UaG9haURpRG9uZyxjb2RlJztcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRlbkRvblZpKGRhdGFTb3VyY2U6IGFueVtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhU291cmNlKSB7XG4gICAgICAgICAgICAvLyBC4buVIHN1bmcgbeG7mXQgc+G7kSB0aMO0bmcgdGluIMSR4buDIGhp4buDbiB0aOG7iyBsYWJlbCB0csOqbiBhdXRvY29tcGxldGUgcGlja2VyIGThuqFuZyBkcm9wZG93blxuICAgICAgICAgICAgaWYgKGl0ZW0uZG9uVmlDaHVjVnVzICYmIGl0ZW0uZG9uVmlDaHVjVnVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgaXRlbURvblZpQ2hpbmggPSBpdGVtLmRvblZpQ2h1Y1Z1cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocSkgPT4gcS5pc0RvblZpQ2hpbmhcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICghaXRlbURvblZpQ2hpbmgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbURvblZpQ2hpbmggPSBpdGVtLmRvblZpQ2h1Y1Z1c1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXRlbS50ZW5Eb25WaSA9IGl0ZW1Eb25WaUNoaW5oLmNodWNWdVxuICAgICAgICAgICAgICAgICAgICA/IGAke2l0ZW1Eb25WaUNoaW5oLmNodWNWdX0gJHtpdGVtRG9uVmlDaGluaC5kb25WaX1gXG4gICAgICAgICAgICAgICAgICAgIDogaXRlbURvblZpQ2hpbmguZG9uVmk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBnZXREYXRhUGx1cyhkYXRhU291cmNlOiBhbnkpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmNodWNEYW5ocykge1xuICAgICAgICAgICAgICAgIGl0ZW0uc3RyQ2h1Y0RhbmhzID0gaXRlbS5jaHVjRGFuaHMudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW0uc3RyQ2h1Y0RhbmhzID0gJyc7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaHVjRGFuaHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaXRlbS5jaHVjRGFuaHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkuY2h1Y0RhbmgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RyQ2h1Y0RhbmhzICs9IGkuY2h1Y0Rhbmg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtLnN0ckRvblZpQ2h1Y1Z1cyA9ICcnO1xuICAgICAgICAgICAgaWYgKGl0ZW0uZG9uVmlDaHVjVnVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaXRlbS5kb25WaUNodWNWdXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkuY2h1Y1Z1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN0ckRvblZpQ2h1Y1Z1cyArPSBgPHA+JHtpLmNodWNWdX0gLSAke2kuZG9uVml9PC9wPmA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN0ckRvblZpQ2h1Y1Z1cyArPSBgPHA+JHtpLmRvblZpfTwvcD5gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpdGVtLm5nYXlTaW5oICYmIGl0ZW0ubmdheVNpbmgyKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5uZ2F5U2luaCA9IG5ldyBEYXRlKGl0ZW0ubmdheVNpbmgyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW0uaG9jSGFtSG9jVmlcbiAgICAgICAgICAgICAgICA9IGl0ZW0uaWRIb2NIYW0gJiYgaXRlbS5pZEhvY1ZpXG4gICAgICAgICAgICAgICAgICAgID8gYCR7aXRlbS5pZEhvY0hhbX0uICR7aXRlbS5pZEhvY1ZpfWBcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtLmlkSG9jSGFtIHx8IGl0ZW0uaWRIb2NWaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUNhbkJvVG9HaWFuZ1ZpZW4obW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoXG4gICAgICAgICAgICBgJHt0aGlzLnNlcnZpY2VVcml9L1VwZGF0ZUNhbkJvVG9HaWFuZ1ZpZW5gLFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjcmVhdGVHaWFuZ1ZpZW5Eb2lUYWMobW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoXG4gICAgICAgICAgICBgJHt0aGlzLnNlcnZpY2VVcml9L0NyZWF0ZUdpYW5nVmllbkRvaVRhY2AsXG4gICAgICAgICAgICBtb2RlbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldERvblZpUGhhbkNhcEJ5SWRzKG1vZGVsLCBpc1VzZXIgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0dldERvblZpUGhhbkNhcEJ5SWRzLyR7aXNVc2VyfWAsIG1vZGVsKTtcbiAgICB9XG5cbiAgICB1cGRhdGVHaWFuZ1ZpZW5Ob2lCbyhtb2RlbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UHV0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVHaWFuZ1ZpZW5Ob2lCby8ke21vZGVsLmlkfWAsXG4gICAgICAgICAgICBtb2RlbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVwZGF0ZUdpYW5nVmllbkRvaVRhYyhtb2RlbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UHV0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVHaWFuZ1ZpZW5Eb2lUYWMvJHttb2RlbC5pZH1gLFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRMeUxpY2hLaG9hSG9jQ2FuQm8oaWQpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRMeUxpY2hLaG9hSG9jQ2FuQm8vJHtpZH1gO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgR2V0RG9uVmlDaHVjVnUoaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERvblZpQ2h1Y1Z1LyR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUxpc3RFbnRpdHlDb2x1bW5EZWZhdWx0KCkge1xuICAgICAgICBjb25zdCBfbWFzdGVyRGF0YVNlcnZpY2UgPSB0aGlzLl9pbmplY3Rvci5nZXQoTWFzdGVyRGF0YVNlcnZpY2UpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNw6MnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc4MHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdI4buNYyBow6BtLCBo4buNYyB24buLJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnaG9jSGFtSG9jVmknLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNTBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgY29kZTogJ2hvVmFUZW4nLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnbmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBEYXRhVHlwZS5kYXRlLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyMHB4JyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IDEsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnR2nhu5tpIHTDrW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnZ2lvaVRpbmgnLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiBfbWFzdGVyRGF0YVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZ3JvdXBDb2RlOiAnR0lPSV9USU5IJyxcbiAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOTBweCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAxLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyBkYW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyQ2h1Y0RhbmhzJyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1MHB4JyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2jhu6ljIHbhu6UgLSDEkMahbiB24buLJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyRG9uVmlDaHVjVnVzJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2h0bWwnLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjIwcHgnLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIC8vIHRlbXBsYXRlRmlsdGVyOiB0ZW1wbGF0ZS5maWx0ZXJEb25WaVJlZixcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmllbGRGaWx0ZXI6ICdpZERvblZpcycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnRW1haWwnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxuICAgICAgICAgICAgICAgIGlzT3ZlcnJpZGVGaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNzBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnxJDhu5FpIHTDoWMnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdpZERvaVRhYycsXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNBcnJheUZpZWxkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9ob1NvRG9pVGFjU2VydmljZSxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUaG9uZ0tlQ2FuQm8ocGx1c1VybDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vJHt0aGlzLmFwaUdldERhdGF9LyR7cGx1c1VybH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUxpc3RFbnRpdHlDb2x1bW5WMSgpIHtcbiAgICAgICAgY29uc3QgX21hc3RlckRhdGFTZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTcOjJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnY29kZScsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnODBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgY29kZTogJ2hvVmFUZW4nLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnbmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogRGF0YVR5cGUuZGF0ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyMHB4JyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IDEsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnR2nhu5tpIHTDrW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnZ2lvaVRpbmgnLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiBfbWFzdGVyRGF0YVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZ3JvdXBDb2RlOiAnR0lPSV9USU5IJyxcbiAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOTBweCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAxLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyB24bulIC0gxJDGoW4gduG7iycsXG4gICAgICAgICAgICAgICAgY29kZTogJ3N0ckRvblZpQ2h1Y1Z1cycsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdodG1sJyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIyMHB4JyxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAvLyB0ZW1wbGF0ZUZpbHRlcjogdGVtcGxhdGUuZmlsdGVyRG9uVmlSZWYsXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZpZWxkRmlsdGVyOiAnaWREb25WaXMnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0VtYWlsJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcbiAgICAgICAgICAgICAgICBpc092ZXJyaWRlRmlsdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTcwcHgnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBnZXRRdWFuTHlDYXBUcmVuQnlVc2VySWQoaWRVc2VyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0NhbkJvUXVhbkx5QnlVc2VySWQvJHtpZFVzZXJ9YCk7XG4gICAgfVxuXG4gICAgZ2V0RGFuaFNhY2hVc2VyQ2FwVHJlbihpZHNEb25WaSkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERhbmhTYWNoVXNlckNhcFRyZW5gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGlkc0RvblZpKTtcbiAgICB9XG5cblxufVxuXG4iXX0=
|
package/fesm2015/tnx-shared.js
CHANGED
|
@@ -17677,14 +17677,18 @@ class CanBoHoSoService extends BaseService {
|
|
|
17677
17677
|
return result;
|
|
17678
17678
|
}, required: true, afterGetDataDropdown: (dataSource, element) => __awaiter(this, void 0, void 0, function* () {
|
|
17679
17679
|
var _b, _c;
|
|
17680
|
+
if (!(dataSource === null || dataSource === void 0 ? void 0 : dataSource.length))
|
|
17681
|
+
return;
|
|
17680
17682
|
const { selectedValue } = element;
|
|
17681
17683
|
if (!selectedValue) {
|
|
17682
17684
|
const lstIdDoiTac = this._commonService.distinct(dataSource.filter(item => !!item.idDoiTac).flatMap(item => item.idDoiTac.split(',')));
|
|
17683
|
-
|
|
17684
|
-
|
|
17685
|
-
|
|
17686
|
-
|
|
17687
|
-
|
|
17685
|
+
if (lstIdDoiTac.length) {
|
|
17686
|
+
const lstDoiTac = (_c = (_b = (yield this._hoSoDoiTacService.getAllWithIgnore([this.newFilter('id', Operator.in, lstIdDoiTac.filter(id => !!id))], 'id,ten'))) === null || _b === void 0 ? void 0 : _b.data) !== null && _c !== void 0 ? _c : [];
|
|
17687
|
+
if (lstDoiTac.length) {
|
|
17688
|
+
dataSource.forEach(item => {
|
|
17689
|
+
item.tenDoiTac = lstDoiTac.filter(x => item.idDoiTac.includes(x.id)).map(x => x.ten).join(', ');
|
|
17690
|
+
});
|
|
17691
|
+
}
|
|
17688
17692
|
}
|
|
17689
17693
|
}
|
|
17690
17694
|
else {
|
|
@@ -17727,14 +17731,11 @@ class CanBoHoSoService extends BaseService {
|
|
|
17727
17731
|
result.fieldPlus += ',idNgachVienChuc';
|
|
17728
17732
|
}
|
|
17729
17733
|
}
|
|
17730
|
-
|
|
17734
|
+
if (!result.isOverrideColumns)
|
|
17731
17735
|
result.fieldPlus = 'idNgachVienChuc,ngaySinh,ngaySinh2,chucDanhs,idHocHam,idHocVi,dienThoaiDiDong,code';
|
|
17732
|
-
}
|
|
17733
17736
|
return result;
|
|
17734
17737
|
}
|
|
17735
17738
|
getTenDonVi(dataSource) {
|
|
17736
|
-
if (!(dataSource === null || dataSource === void 0 ? void 0 : dataSource.length))
|
|
17737
|
-
return;
|
|
17738
17739
|
for (const item of dataSource) {
|
|
17739
17740
|
// Bổ sung một số thông tin để hiển thị label trên autocomplete picker dạng dropdown
|
|
17740
17741
|
if (item.donViChucVus && item.donViChucVus.length > 0) {
|
|
@@ -18982,6 +18983,7 @@ class ListComponentBase extends ComponentBase {
|
|
|
18982
18983
|
this.isSuperUser = false;
|
|
18983
18984
|
this.showFormWorkflow = false;
|
|
18984
18985
|
this.headerWorkflow = '';
|
|
18986
|
+
this.componentKey = '';
|
|
18985
18987
|
this.lstBtnAuthorizeMenu = [];
|
|
18986
18988
|
this.popupSizeWorkflow = new PopupSize({ width: 950, height: 540 });
|
|
18987
18989
|
this.showHistoryWorkflow = false;
|
|
@@ -19433,6 +19435,7 @@ class ListComponentBase extends ComponentBase {
|
|
|
19433
19435
|
}
|
|
19434
19436
|
}
|
|
19435
19437
|
initColumnSchema(cols) {
|
|
19438
|
+
var _a, _b, _c, _d;
|
|
19436
19439
|
if (!cols || !cols.length)
|
|
19437
19440
|
return;
|
|
19438
19441
|
let colFunction = null, colGroup = null, colHasToggleIcon = null;
|
|
@@ -19455,6 +19458,7 @@ class ListComponentBase extends ComponentBase {
|
|
|
19455
19458
|
colHasToggleIcon = this.setting.cols[0];
|
|
19456
19459
|
}
|
|
19457
19460
|
colHasToggleIcon.colHasToggleIcon = true;
|
|
19461
|
+
this.componentKey = `${location.pathname}/${((_d = (_c = (_b = (_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.closest('crud-list').parentNode) === null || _c === void 0 ? void 0 : _c.tagName) === null || _d === void 0 ? void 0 : _d.toLowerCase()) || ''}${this.setting.settingKey ? '/' + this.setting.settingKey : ''}`;
|
|
19458
19462
|
this.getColorSetting();
|
|
19459
19463
|
this.getColumnSetting(colGroup);
|
|
19460
19464
|
this.getPageSetting();
|
|
@@ -19642,14 +19646,10 @@ class ListComponentBase extends ComponentBase {
|
|
|
19642
19646
|
const dataSetting = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.COLUMN_SETTING);
|
|
19643
19647
|
const jsonData = this.tryParseJson(dataSetting);
|
|
19644
19648
|
if (dataSetting && jsonData.valid && jsonData.value.length > 0) {
|
|
19645
|
-
let pathName = location.pathname;
|
|
19646
|
-
if (this.setting.settingKey) {
|
|
19647
|
-
pathName += '/' + this.setting.settingKey;
|
|
19648
|
-
}
|
|
19649
19649
|
const settings = jsonData.value;
|
|
19650
19650
|
for (const element of settings) {
|
|
19651
19651
|
// const element = settings[i];
|
|
19652
|
-
if (element.pathname ===
|
|
19652
|
+
if (element.pathname === this.componentKey) {
|
|
19653
19653
|
this.setting.columnSetting.sortField = element.setting.sortField;
|
|
19654
19654
|
this.setting.columnSetting.sortDir = element.setting.sortDir ? element.setting.sortDir : 0;
|
|
19655
19655
|
if (this.setting.columnSetting.sortDir == 0) {
|
|
@@ -19679,16 +19679,12 @@ class ListComponentBase extends ComponentBase {
|
|
|
19679
19679
|
}
|
|
19680
19680
|
}
|
|
19681
19681
|
saveColumnSetting() {
|
|
19682
|
-
let pathName = location.pathname;
|
|
19683
|
-
if (this.setting.settingKey) {
|
|
19684
|
-
pathName += '/' + this.setting.settingKey;
|
|
19685
|
-
}
|
|
19686
19682
|
let columnSetting = [];
|
|
19687
19683
|
let checkExist = false;
|
|
19688
19684
|
const dataSetting = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.COLUMN_SETTING);
|
|
19689
19685
|
if (dataSetting) {
|
|
19690
19686
|
columnSetting = JSON.parse(dataSetting);
|
|
19691
|
-
const itemSetting = columnSetting.find(q => q.pathname ==
|
|
19687
|
+
const itemSetting = columnSetting.find(q => q.pathname == this.componentKey);
|
|
19692
19688
|
if (itemSetting) {
|
|
19693
19689
|
itemSetting.setting.sortField = this.setting.columnSetting.sortField;
|
|
19694
19690
|
itemSetting.setting.sortDir = this.setting.columnSetting.sortDir;
|
|
@@ -19699,20 +19695,16 @@ class ListComponentBase extends ComponentBase {
|
|
|
19699
19695
|
}
|
|
19700
19696
|
}
|
|
19701
19697
|
if (!checkExist) {
|
|
19702
|
-
columnSetting.push({ pathname:
|
|
19698
|
+
columnSetting.push({ pathname: this.componentKey, setting: this.setting.columnSetting });
|
|
19703
19699
|
}
|
|
19704
19700
|
localStorage.setItem(ComCtxConstants.LOCALSTORAGE_KEY.COLUMN_SETTING, JSON.stringify(columnSetting));
|
|
19705
19701
|
}
|
|
19706
19702
|
deleteColumnSetting() {
|
|
19707
|
-
let pathName = location.pathname;
|
|
19708
|
-
if (this.setting.settingKey) {
|
|
19709
|
-
pathName += '/' + this.setting.settingKey;
|
|
19710
|
-
}
|
|
19711
19703
|
let columnSetting = [];
|
|
19712
19704
|
const dataSetting = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.COLUMN_SETTING);
|
|
19713
19705
|
if (dataSetting) {
|
|
19714
19706
|
columnSetting = JSON.parse(dataSetting);
|
|
19715
|
-
const index = columnSetting.findIndex(q => q.pathname ==
|
|
19707
|
+
const index = columnSetting.findIndex(q => q.pathname == this.componentKey);
|
|
19716
19708
|
if (index > -1)
|
|
19717
19709
|
columnSetting.splice(index, 1);
|
|
19718
19710
|
}
|
|
@@ -19722,14 +19714,10 @@ class ListComponentBase extends ComponentBase {
|
|
|
19722
19714
|
getColorSetting() {
|
|
19723
19715
|
const dataPageSetting = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.COLOR_SETTING);
|
|
19724
19716
|
if (dataPageSetting) {
|
|
19725
|
-
let pathName = location.pathname;
|
|
19726
|
-
if (this.setting.settingKey) {
|
|
19727
|
-
pathName += '/' + this.setting.settingKey;
|
|
19728
|
-
}
|
|
19729
19717
|
const settings = JSON.parse(dataPageSetting);
|
|
19730
19718
|
for (let i = 0; i < settings.length; i++) {
|
|
19731
19719
|
const element = settings[i];
|
|
19732
|
-
if (element.pathname ===
|
|
19720
|
+
if (element.pathname === this.componentKey) {
|
|
19733
19721
|
this.setting.colorFilterField = element.colorFilterField;
|
|
19734
19722
|
this.setting.colorFilterTable = element.colorFilterTable;
|
|
19735
19723
|
break;
|
|
@@ -19753,17 +19741,13 @@ class ListComponentBase extends ComponentBase {
|
|
|
19753
19741
|
}
|
|
19754
19742
|
}
|
|
19755
19743
|
setColorSetting() {
|
|
19756
|
-
let pathName = location.pathname;
|
|
19757
|
-
if (this.setting.settingKey) {
|
|
19758
|
-
pathName += '/' + this.setting.settingKey;
|
|
19759
|
-
}
|
|
19760
19744
|
let colorSetting = [];
|
|
19761
19745
|
let checkExist = false;
|
|
19762
19746
|
const dataColorSetting = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.COLOR_SETTING);
|
|
19763
19747
|
if (dataColorSetting) {
|
|
19764
19748
|
colorSetting = JSON.parse(dataColorSetting);
|
|
19765
19749
|
colorSetting.forEach(element => {
|
|
19766
|
-
if (element.pathname ===
|
|
19750
|
+
if (element.pathname === this.componentKey) {
|
|
19767
19751
|
element.colorFilterField = this.setting.colorFilterField;
|
|
19768
19752
|
element.colorFilterTable = this.setting.colorFilterTable;
|
|
19769
19753
|
checkExist = true;
|
|
@@ -19772,7 +19756,7 @@ class ListComponentBase extends ComponentBase {
|
|
|
19772
19756
|
}
|
|
19773
19757
|
if (!checkExist) {
|
|
19774
19758
|
colorSetting.push({
|
|
19775
|
-
pathname:
|
|
19759
|
+
pathname: this.componentKey,
|
|
19776
19760
|
colorFilterField: this.setting.colorFilterField,
|
|
19777
19761
|
colorFilterTable: this.setting.colorFilterTable
|
|
19778
19762
|
});
|
|
@@ -19782,14 +19766,10 @@ class ListComponentBase extends ComponentBase {
|
|
|
19782
19766
|
getPageSetting() {
|
|
19783
19767
|
const dataPageSetting = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.PAGE_SETTING);
|
|
19784
19768
|
if (dataPageSetting) {
|
|
19785
|
-
let pathName = location.pathname;
|
|
19786
|
-
if (this.setting.settingKey) {
|
|
19787
|
-
pathName += '/' + this.setting.settingKey;
|
|
19788
|
-
}
|
|
19789
19769
|
const pageSettings = JSON.parse(dataPageSetting);
|
|
19790
19770
|
for (let i = 0; i < pageSettings.length; i++) {
|
|
19791
19771
|
const element = pageSettings[i];
|
|
19792
|
-
if (element.pathname ===
|
|
19772
|
+
if (element.pathname === this.componentKey) {
|
|
19793
19773
|
this.setting.pageSetting.pageSize = element.pageSize;
|
|
19794
19774
|
break;
|
|
19795
19775
|
}
|
|
@@ -19797,24 +19777,20 @@ class ListComponentBase extends ComponentBase {
|
|
|
19797
19777
|
}
|
|
19798
19778
|
}
|
|
19799
19779
|
savePageSetting() {
|
|
19800
|
-
let pathName = location.pathname;
|
|
19801
|
-
if (this.setting.settingKey) {
|
|
19802
|
-
pathName += '/' + this.setting.settingKey;
|
|
19803
|
-
}
|
|
19804
19780
|
let pageSetting = [];
|
|
19805
19781
|
let checkExist = false;
|
|
19806
19782
|
const dataPageSetting = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.PAGE_SETTING);
|
|
19807
19783
|
if (dataPageSetting) {
|
|
19808
19784
|
pageSetting = JSON.parse(dataPageSetting);
|
|
19809
19785
|
pageSetting.forEach(element => {
|
|
19810
|
-
if (element.pathname ===
|
|
19786
|
+
if (element.pathname === this.componentKey) {
|
|
19811
19787
|
element.pageSize = this.setting.pageSetting.pageSize;
|
|
19812
19788
|
checkExist = true;
|
|
19813
19789
|
}
|
|
19814
19790
|
});
|
|
19815
19791
|
}
|
|
19816
19792
|
if (!checkExist) {
|
|
19817
|
-
pageSetting.push({ pathname:
|
|
19793
|
+
pageSetting.push({ pathname: this.componentKey, pageSize: this.setting.pageSetting.pageSize });
|
|
19818
19794
|
}
|
|
19819
19795
|
localStorage.setItem(ComCtxConstants.LOCALSTORAGE_KEY.PAGE_SETTING, JSON.stringify(pageSetting));
|
|
19820
19796
|
}
|
|
@@ -20056,7 +20032,7 @@ class ListComponentBase extends ComponentBase {
|
|
|
20056
20032
|
}
|
|
20057
20033
|
}
|
|
20058
20034
|
}
|
|
20059
|
-
return transformed.map(row => row.map(cell => cell ||
|
|
20035
|
+
return transformed.map(row => row.map(cell => cell || ''));
|
|
20060
20036
|
}
|
|
20061
20037
|
getValueRow(rowData, index, value) {
|
|
20062
20038
|
if (rowData[index] != null) {
|