@tiba-spark/client-shared-lib 26.2.0-142 → 26.2.0-161
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libraries/guards/sub-module-guard.mjs +2 -2
- package/esm2022/libraries/modules/smartparks/smartpark.state.mjs +15 -12
- package/esm2022/libraries/service-proxy/identity-service-proxies.mjs +1592 -11
- package/esm2022/libraries/services/smartpark.service.mjs +65 -7
- package/fesm2022/tiba-spark-client-shared-lib.mjs +1973 -332
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/modules/smartparks/smartpark.state.d.ts +4 -3
- package/libraries/modules/smartparks/smartpark.state.d.ts.map +1 -1
- package/libraries/service-proxy/identity-service-proxies.d.ts +132 -3
- package/libraries/service-proxy/identity-service-proxies.d.ts.map +1 -1
- package/libraries/services/smartpark.service.d.ts +9 -2
- package/libraries/services/smartpark.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -52,7 +52,7 @@ export class SubModuleGuard {
|
|
|
52
52
|
this.store.dispatch(new LoadSmartparksBasicAction(route.data.module, route.data.subModule));
|
|
53
53
|
}
|
|
54
54
|
else {
|
|
55
|
-
this.smartparkService.getSmartparkBasicAll(route.data.module).subscribe();
|
|
55
|
+
this.smartparkService.getSmartparkBasicAll(route.data.module, route.data.subModule).subscribe();
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -68,4 +68,4 @@ __decorate([
|
|
|
68
68
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SubModuleGuard, decorators: [{
|
|
69
69
|
type: Injectable
|
|
70
70
|
}], ctorParameters: () => [{ type: i1.AppConfigService }, { type: i2.Router }, { type: i3.Store }, { type: i4.SmartparkService }, { type: i5.Location }], propDecorators: { setSubModule: [], setAppModule: [] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLW1vZHVsZS1ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvZ3VhcmRzL3N1Yi1tb2R1bGUtZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFJcEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFHcEUsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFDVSxTQUEyQixFQUMzQixNQUFjLEVBQ2QsS0FBWSxFQUNaLGdCQUFrQyxFQUNsQyxRQUFrQjtRQUpsQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXdDaEIsaUJBQVksR0FBRyxDQUFDLFNBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEYsaUJBQVksR0FBRyxDQUFDLFNBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7SUF2QzVGLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxNQUFNLFVBQVUsR0FBZ0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNoSCxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25DLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8scUJBQXFCLENBQUMsS0FBMEI7UUFDdEQsTUFBTSxVQUFVLEdBQWUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xGLDZCQUE2QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQTZCO1FBQzFELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzlDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDOUUsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSw2QkFBNkIsRUFBRSxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUkseUJBQXlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzlGLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsRyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7K0dBN0NVLGNBQWM7bUhBQWQsY0FBYzs7QUErQ2I7SUFBWCxRQUFRLEVBQUU7b0RBQWlGO0FBQ2hGO0lBQVgsUUFBUSxFQUFFO29EQUFpRjs0RkFoRGpGLGNBQWM7a0JBRDFCLFVBQVU7b0xBZ0RHLFlBQVksTUFDWixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERpc3BhdGNoIH0gZnJvbSAnQG5neHMtbGFicy9kaXNwYXRjaC1kZWNvcmF0b3InO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBBcHBUeXBlIH0gZnJvbSAnLi4vZW51bXMvYXBwLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUZW5hbnRJbmZvIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL21vZGVsL3RlbmFudC1pbmZvLmludGVyZmFjZSc7XG5pbXBvcnQgeyBVc2VySW5mbyB9IGZyb20gJy4uL21vZHVsZXMvYXV0aC9tb2RlbC91c2VyLWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlc3Npb25TdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvYXV0aC9zZXNzaW9uLnN0YXRlJztcbmltcG9ydCB7IENsZWFyRmFjaWxpdHlEaWN0aW9uYXJ5QWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IE1lbnVBcHBNb2R1bGVMb2FkQWN0aW9uLCBNZW51U3ViTW9kdWxlTG9hZEFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvc2lkZW5hdi9zaWRlbmF2LmFjdGlvbnMnO1xuaW1wb3J0IHsgTG9hZFNtYXJ0cGFya3NCYXNpY0FjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmsuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBNb2R1bGUsIFN1Yk1vZHVsZSB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRwYXJrU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NtYXJ0cGFyay5zZXJ2aWNlJztcbmltcG9ydCB7IG5hdmlnYXRlVG9Gb3JiaWRkZW5BY2Nlc3NQYWdlIH0gZnJvbSAnLi4vdXRpbHMvcm91dGUudXRpbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdWJNb2R1bGVHdWFyZCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIHNtYXJ0cGFya1NlcnZpY2U6IFNtYXJ0cGFya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICkge1xuICB9XG5cbiAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgbGV0IGlzQWxsb3dlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHVzZXI6IFVzZXJJbmZvID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUudXNlckluZm8pO1xuICAgIGlmICh1c2VyKSB7XG4gICAgICBjb25zdCBzdWJNb2R1bGVzOiBTdWJNb2R1bGVbXSA9IHVzZXIucGVybWlzc2lvbkluZm8ubW9kdWxlcy5maW5kKG0gPT4gcm91dGUuZGF0YS5tb2R1bGUgPT09IG0ubW9kdWxlKS5zdWJNb2R1bGU7XG4gICAgICBpZiAoISFzdWJNb2R1bGVzICYmICFzdWJNb2R1bGVzLmluY2x1ZGVzKHJvdXRlLmRhdGEuc3ViTW9kdWxlKSkge1xuICAgICAgICB0aGlzLmhhbmRsZUZvcmJpZGRlbkFjY2VzcyhzdGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhhbmRsZVN1Yk1vZHVsZUxvYWRpbmcocm91dGUpO1xuICAgICAgICBpc0FsbG93ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc0FsbG93ZWQ7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZvcmJpZGRlbkFjY2VzcyhzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IHZvaWQge1xuICAgIGNvbnN0IHRlbmFudEluZm86IFRlbmFudEluZm8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS50ZW5hbnRJbmZvKTtcbiAgICBuYXZpZ2F0ZVRvRm9yYmlkZGVuQWNjZXNzUGFnZSh0aGlzLnJvdXRlciwgdGhpcy5sb2NhdGlvbiwgc3RhdGUsIHRlbmFudEluZm8pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdWJNb2R1bGVMb2FkaW5nKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogdm9pZCB7XG4gICAgdGhpcy5zZXRBcHBNb2R1bGUocm91dGUuZGF0YS5tb2R1bGUpO1xuICAgIHRoaXMuc2V0U3ViTW9kdWxlKHJvdXRlLmRhdGEuc3ViTW9kdWxlKTtcblxuICAgIGlmIChyb3V0ZS5kYXRhLmdldFNtYXJ0cGFya0Jhc2ljQWxsICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgaXNNb2JpbGVBcHBNb2RlID0gdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYXBwVHlwZSA9PT0gQXBwVHlwZS5Nb2JpbGU7XG4gICAgICBpZiAoaXNNb2JpbGVBcHBNb2RlKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IENsZWFyRmFjaWxpdHlEaWN0aW9uYXJ5QWN0aW9uKCkpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBMb2FkU21hcnRwYXJrc0Jhc2ljQWN0aW9uKHJvdXRlLmRhdGEubW9kdWxlLCByb3V0ZS5kYXRhLnN1Yk1vZHVsZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zbWFydHBhcmtTZXJ2aWNlLmdldFNtYXJ0cGFya0Jhc2ljQWxsKHJvdXRlLmRhdGEubW9kdWxlLCByb3V0ZS5kYXRhLnN1Yk1vZHVsZSkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQERpc3BhdGNoKCkgc2V0U3ViTW9kdWxlID0gKHN1Yk1vZHVsZTogU3ViTW9kdWxlKSA9PiBuZXcgTWVudVN1Yk1vZHVsZUxvYWRBY3Rpb24oc3ViTW9kdWxlKTtcbiAgQERpc3BhdGNoKCkgc2V0QXBwTW9kdWxlID0gKGFwcE1vZHVsZTogQXBwTW9kdWxlKSA9PiBuZXcgTWVudUFwcE1vZHVsZUxvYWRBY3Rpb24oYXBwTW9kdWxlKTtcbn1cbiJdfQ==
|
|
@@ -8,7 +8,7 @@ import { filter, switchMap, tap } from 'rxjs/operators';
|
|
|
8
8
|
import { MessageBarPosition } from '../../components/message-bar/message-bar-position.enum';
|
|
9
9
|
import { SmartParkStatusText } from '../../enums';
|
|
10
10
|
import { Localization } from '../../enums/localization.enum';
|
|
11
|
-
import {
|
|
11
|
+
import { SmartparkDto, SmartParkStatus, SmartParkType, UpdateSmartparkVarDto } from '../../service-proxy/cloud-service-proxies';
|
|
12
12
|
import { parseApiErrorMessage } from '../../utils/api-helper.util';
|
|
13
13
|
import { getDefaultDeviceStatus } from '../../utils/device.util';
|
|
14
14
|
import { markEntitiesAsChanged, RowOperation } from '../../utils/helper.util';
|
|
@@ -16,25 +16,26 @@ import { createMessageText } from '../../utils/message-bar.util';
|
|
|
16
16
|
import { lowerCaseFirstLetter } from '../../utils/text.util';
|
|
17
17
|
import { ClearSelectedFacilityAction, SetSmartparkBasicAllAction } from '../facility/facility.actions';
|
|
18
18
|
import { MenuSubModuleLoadAction } from '../sidenav/sidenav.actions';
|
|
19
|
+
import { SidenavState } from '../sidenav/sidenav.state';
|
|
19
20
|
import { ClearSelectedParkAction, ClearSelectedSmartparkAction, ClearSmartparksBasicAction, ClearSpAndSparkVersionsAction, DisconnectSmartParkAction, ExportPdfSmartparksTableAction, ExportSmartparkAction, LoadBackofficeSmartparksTableAction, LoadBackofficeSpAndSparkVersionsAction, LoadBackofficeVarByIdAction, LoadBackofficeVarsAction, LoadParkDevicesAction, LoadParksAction, LoadSmartparksAction, LoadSmartparksBasicAction, LoadSmartparksDropdownAction, LoadSmartparksTableAction, LoadSpAndSparkVersionsAction, LoadVarsAction, SelectParkAction, SelectSmartParkAction, SetSmartParkAction, SetSmartParkTableAction, SetSmartParkVersionsAction, SmartParkDeviceStatusChangedAction, SyncUsersAndRolesBySmartparkIdAction, UpdateSmartparkVarAction } from './smartpark.actions';
|
|
20
21
|
import * as i0 from "@angular/core";
|
|
21
22
|
import * as i1 from "@ngxs/store";
|
|
22
23
|
import * as i2 from "../../services/revenue.service";
|
|
23
|
-
import * as i3 from "../../
|
|
24
|
-
import * as i4 from "../../service-proxy/
|
|
25
|
-
import * as i5 from "../../service-proxy/
|
|
24
|
+
import * as i3 from "../../services/smartpark.service";
|
|
25
|
+
import * as i4 from "../../service-proxy/cloud-service-proxies";
|
|
26
|
+
import * as i5 from "../../service-proxy/rpc-service-proxies";
|
|
26
27
|
import * as i6 from "../../service-proxy";
|
|
27
28
|
import * as i7 from "../../components/message-bar/message-bar.service";
|
|
28
29
|
import * as i8 from "../../services/route.service";
|
|
29
30
|
import * as i9 from "@ngx-translate/core";
|
|
30
31
|
import * as i10 from "../../services/export-file.service";
|
|
31
32
|
let SmartparkState = class SmartparkState {
|
|
32
|
-
constructor(store, revenueService, smartparkCloudServiceProxy, facilityRpcServiceProxy,
|
|
33
|
+
constructor(store, revenueService, smartparkService, smartparkCloudServiceProxy, facilityRpcServiceProxy, deviceRpcServiceProxy, messageBarService, routeService, translateService, exportFileService, backofficeCloudServiceProxy, licenseCloudServiceProxy) {
|
|
33
34
|
this.store = store;
|
|
34
35
|
this.revenueService = revenueService;
|
|
36
|
+
this.smartparkService = smartparkService;
|
|
35
37
|
this.smartparkCloudServiceProxy = smartparkCloudServiceProxy;
|
|
36
38
|
this.facilityRpcServiceProxy = facilityRpcServiceProxy;
|
|
37
|
-
this.facilityIdentityServiceProxy = facilityIdentityServiceProxy;
|
|
38
39
|
this.deviceRpcServiceProxy = deviceRpcServiceProxy;
|
|
39
40
|
this.messageBarService = messageBarService;
|
|
40
41
|
this.routeService = routeService;
|
|
@@ -107,7 +108,7 @@ let SmartparkState = class SmartparkState {
|
|
|
107
108
|
}
|
|
108
109
|
onLoadSmartparksBasicAction(ctx, action) {
|
|
109
110
|
ctx.dispatch(new MenuSubModuleLoadAction(action.subModule));
|
|
110
|
-
const smartparks$ = this.
|
|
111
|
+
const smartparks$ = this.smartparkService.getSmartparkBasicAll(action.appModule, action.subModule);
|
|
111
112
|
return smartparks$.pipe(switchMap(smartparkBasic => {
|
|
112
113
|
ctx.patchState({
|
|
113
114
|
smartParkWrapper: smartparkBasic.data,
|
|
@@ -168,7 +169,9 @@ let SmartparkState = class SmartparkState {
|
|
|
168
169
|
}
|
|
169
170
|
onLoadParksAction(ctx) {
|
|
170
171
|
ctx.patchState({ selectedParkDetails: null, selectedParkId: null });
|
|
171
|
-
|
|
172
|
+
const appModule = this.store.selectSnapshot(SidenavState.appModule);
|
|
173
|
+
const subModule = this.store.selectSnapshot(SidenavState.subModule);
|
|
174
|
+
return this.smartparkService.getSmartparkBasicAll(appModule, subModule).pipe(tap(smartparkMap => {
|
|
172
175
|
const { guid, type } = ctx.getState().selectedSmartPark;
|
|
173
176
|
if (smartparkMap) {
|
|
174
177
|
let selectedParkId;
|
|
@@ -412,7 +415,7 @@ let SmartparkState = class SmartparkState {
|
|
|
412
415
|
};
|
|
413
416
|
return createMessageText(messageBarPayload);
|
|
414
417
|
}
|
|
415
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartparkState, deps: [{ token: i1.Store }, { token: i2.RevenueService }, { token: i3.
|
|
418
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartparkState, deps: [{ token: i1.Store }, { token: i2.RevenueService }, { token: i3.SmartparkService }, { token: i4.SmartparkCloudServiceProxy }, { token: i5.FacilityRpcServiceProxy }, { token: i6.Rpc.DeviceRpcServiceProxy }, { token: i7.MessageBarService }, { token: i8.RouteService }, { token: i9.TranslateService }, { token: i10.ExportFileService, optional: true }, { token: i4.BackofficeCloudServiceProxy }, { token: i4.LicenseCloudServiceProxy }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
416
419
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartparkState }); }
|
|
417
420
|
};
|
|
418
421
|
__decorate([
|
|
@@ -573,7 +576,7 @@ SmartparkState = __decorate([
|
|
|
573
576
|
export { SmartparkState };
|
|
574
577
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartparkState, decorators: [{
|
|
575
578
|
type: Injectable
|
|
576
|
-
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.RevenueService }, { type: i3.
|
|
579
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.RevenueService }, { type: i3.SmartparkService }, { type: i4.SmartparkCloudServiceProxy }, { type: i5.FacilityRpcServiceProxy }, { type: i6.Rpc.DeviceRpcServiceProxy }, { type: i7.MessageBarService }, { type: i8.RouteService }, { type: i9.TranslateService }, { type: i10.ExportFileService, decorators: [{
|
|
577
580
|
type: Optional
|
|
578
|
-
}] }, { type:
|
|
579
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwYXJrLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3NtYXJ0cGFya3Mvc21hcnRwYXJrLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFHNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUc3RCxPQUFPLEVBQ0wsU0FBUyxFQUNtQixZQUFZLEVBQ3hDLGVBQWUsRUFBRSxhQUFhLEVBQXlCLHFCQUFxQixFQUM3RSxNQUFNLDJDQUEyQyxDQUFDO0FBTW5ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQUUsNEJBQTRCLEVBQUUsMEJBQTBCLEVBQUUsNkJBQTZCLEVBQ2hILHlCQUF5QixFQUFFLDhCQUE4QixFQUFFLHFCQUFxQixFQUFFLG1DQUFtQyxFQUNySCxzQ0FBc0MsRUFBRSwyQkFBMkIsRUFBRSx3QkFBd0IsRUFDN0YscUJBQXFCLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLHlCQUF5QixFQUFFLDRCQUE0QixFQUFFLHlCQUF5QixFQUNoSiw0QkFBNEIsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQ3pHLHVCQUF1QixFQUFFLDBCQUEwQixFQUNuRCxrQ0FBa0MsRUFBRSxvQ0FBb0MsRUFDeEUsd0JBQXdCLEVBQ3pCLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7OztBQTJDdEIsSUFBTSxjQUFjLEdBQXBCLE1BQU0sY0FBYztJQUV6QixZQUFvQixLQUFZLEVBQ3RCLGNBQThCLEVBQzlCLDBCQUFzRCxFQUN0RCx1QkFBZ0QsRUFDaEQsNEJBQTBELEVBQzFELHFCQUFnRCxFQUNoRCxpQkFBb0MsRUFDcEMsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ3RCLGlCQUEyQyxFQUN2RCwyQkFBd0QsRUFDeEQsd0JBQWtEO1FBWHhDLFVBQUssR0FBTCxLQUFLLENBQU87UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxpQ0FBNEIsR0FBNUIsNEJBQTRCLENBQThCO1FBQzFELDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBMkI7UUFDaEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDdkQsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO0lBQzVELENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBMkI7UUFDN0MsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBMkI7UUFDdEQsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQzlCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUEyQjtRQUMzRCxPQUFPLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztJQUNuQyxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQTJCO1FBQ25ELE9BQU8sS0FBSyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQztJQUM1QyxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQTJCO1FBQzVDLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUM3QixDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQTJCO1FBQ2xELE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUMxQixDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQTJCO1FBQ2xELE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDO0lBQ2hDLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUEyQjtRQUMzRCxPQUFPLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztJQUNuQyxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBMkI7UUFDaEUsT0FBTyxLQUFLLENBQUMsaUJBQWlCLENBQUM7SUFDakMsQ0FBQztJQUdhLEFBQVAsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUEyQjtRQUN2RCxPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUdhLEFBQVAsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQTJCO1FBQ3hELE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDO0lBQ2hDLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBMkI7UUFDaEQsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ3hCLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxLQUEyQjtRQUM5RCxPQUFPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUNsQyxDQUFDO0lBR2EsQUFBUCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBMkI7UUFDeEQsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7SUFDaEMsQ0FBQztJQUdhLEFBQVAsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUEyQjtRQUM1QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUdhLEFBQVAsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQTJCO1FBQzNELE9BQU8sS0FBSyxDQUFDLG1CQUFtQixDQUFDO0lBQ25DLENBQUM7SUFHYSxBQUFQLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBMkI7UUFDcEQsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQzVCLENBQUM7SUFHRCxzQkFBc0IsQ0FBQyxHQUF1QyxFQUFFLE1BQTRCO1FBQzFGLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixVQUFVLEVBQUUsRUFBRTtZQUNkLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLGdCQUFnQixFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUM7U0FDcEQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkUsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN2QyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUdELDJCQUEyQixDQUFDLEdBQXVDLEVBQUUsTUFBaUM7UUFDcEcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDakQsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsSUFBSTthQUN0QyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksMEJBQTBCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUdELDRCQUE0QixDQUFDLEdBQXVDLEVBQUUsQ0FBNkI7UUFDakcsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLGdCQUFnQixFQUFFLElBQUk7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELDJCQUEyQixDQUFDLEdBQXVDLEVBQUUsRUFBRSxNQUFNLEVBQTZCO1FBQ3hHLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRixPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZDLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2IsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUMxQyxlQUFlLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPO2dCQUN4QyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVU7YUFDN0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCxxQ0FBcUMsQ0FBQyxHQUF1QyxFQUFFLEVBQUUsTUFBTSxFQUF1QztRQUM1SCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckYsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN2QyxHQUFHLENBQUMsVUFBVSxDQUFDO2dCQUNiLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDMUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDeEMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVO2FBQzdDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBSUQseUJBQXlCLENBQUMsR0FBdUMsRUFBRSxFQUFFLFVBQVUsRUFBMkI7UUFDeEcsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLFVBQVU7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QscUJBQXFCLENBQUMsR0FBdUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQXNCO1FBQ3ZHLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixVQUFVLEVBQUUsVUFBVSxJQUFJLEVBQUU7WUFDNUIsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQztZQUN4QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDO1NBQzVELENBQUMsQ0FBQztRQUVILElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDdkMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7SUFDSCxDQUFDO0lBR0QsdUJBQXVCLENBQUMsR0FBdUMsRUFBRSxNQUE2QjtRQUM1RixJQUFJLGlCQUFpQixDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM5QixpQkFBaUIsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUUsU0FBMEIsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pILEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztZQUMvRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBR0QsaUJBQWlCLENBQUMsR0FBdUM7UUFDdkQsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVwRSxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDakcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDeEQsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxjQUFzQixDQUFDO2dCQUMzQixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQzVELElBQUksSUFBSSxLQUFLLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDdkQsY0FBYyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuRCxDQUFDO2dCQUVELEdBQUcsQ0FBQyxVQUFVLENBQUM7b0JBQ2IsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFO29CQUNsQixjQUFjLEVBQUUsY0FBYyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQztvQkFDeEUsYUFBYSxFQUFFLElBQUk7aUJBQ3BCLENBQUMsQ0FBQztnQkFFSCxJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDbEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBR0QsaUJBQWlCLENBQUMsR0FBdUM7UUFDdkQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xHLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFFMUMsT0FBTyxhQUFhLENBQUM7WUFDbkIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEYsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7U0FDN0csQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUM1QyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuSSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzdHLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2IsbUJBQW1CLEVBQUU7b0JBQ25CLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSTtvQkFDdkIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNyQixPQUFPO2lCQUNSO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFJRCxrQkFBa0IsQ0FBQyxHQUF1QyxFQUFFLE1BQXdCO1FBQ2xGLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbEQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFHRCx5QkFBeUIsQ0FBQyxHQUF1QztRQUMvRCxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2IsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsOEJBQThCLENBQUMsR0FBdUM7UUFDcEUsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLG1CQUFtQixFQUFFLElBQUk7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELG9DQUFvQyxDQUFDLEdBQXVDLEVBQUUsTUFBMEM7UUFDdEgsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsbUJBQW1CLENBQUM7UUFDL0QsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUcsTUFBTSx1QkFBdUIsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDO1lBQ3hHLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQztZQUN0RSxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksdUJBQXVCLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztnQkFDaEUsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQztnQkFDNUYsR0FBRyxDQUFDLFVBQVUsQ0FBQztvQkFDYixtQkFBbUIsRUFBRSxTQUFTLENBQUMsbUJBQW1CLENBQUM7aUJBQ3BELENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUdELDJCQUEyQixDQUFDLEdBQXVDLEVBQUUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUE2QjtRQUN6SCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN2RixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3pCLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNWLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxDQUFDO2dCQUM3RixHQUFHLENBQUMsVUFBVSxDQUFDO29CQUNiLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGNBQWMsRUFBRSxJQUFJO29CQUNwQixVQUFVO29CQUNWLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUM7b0JBQ3hDLGdCQUFnQixFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUM7aUJBQzVELENBQUMsQ0FBQztnQkFDSCxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksMkJBQTJCLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakcsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzlHLENBQUM7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCw0QkFBNEIsQ0FBQyxHQUF1QyxFQUFFLE1BQWtDO1FBQ3RHLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDYixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELDhCQUE4QixDQUFDLEdBQXVDO1FBQ3BFLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLGtCQUFrQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQzlDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzFFLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ25DLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztJQUNILENBQUM7SUFHRCx3Q0FBd0MsQ0FBQyxHQUF1QztRQUM5RSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM5QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsK0JBQStCLEVBQUUsQ0FBQztZQUNyRixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNuQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBR0QsK0JBQStCLENBQUMsR0FBdUM7UUFDckUsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLGtCQUFrQixFQUFFLElBQUk7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELGdCQUFnQixDQUFDLEdBQXVDLEVBQUUsTUFBc0I7UUFDOUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFDeEgsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCwwQkFBMEIsQ0FBQyxHQUF1QyxFQUFFLE1BQWdDO1FBQ2xHLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFDbkksTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCw2QkFBNkIsQ0FBQyxHQUF1QyxFQUFFLE1BQW1DO1FBQ3hHLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNqQyxHQUFHLENBQUMsVUFBVSxDQUFDO2dCQUNiLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCxzQ0FBc0MsQ0FBQyxHQUF1QyxFQUFFLE1BQTRDO1FBQzFILE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUN0SCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyw2Q0FBNkMsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbEssS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMxRyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCx3QkFBd0IsQ0FBQyxHQUF1QyxFQUFFLE1BQTZCO1FBQzdGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckcsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUMxQixJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFBQyxPQUFPO2dCQUFDLENBQUM7Z0JBQ3hDLE1BQU0sU0FBUyxHQUFZLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxjQUFjLEdBQW1CLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNoRSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQ25DLFNBQVMsQ0FBQyxJQUFJLENBQUM7d0JBQ2IsU0FBUyxDQUFDLElBQUk7d0JBQ2QsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRTt3QkFDL0QsU0FBUyxDQUFDLFVBQVU7d0JBQ3BCLFNBQVMsQ0FBQyxPQUFPO3dCQUNqQixTQUFTLENBQUMsWUFBWTt3QkFDdEIsU0FBUyxDQUFDLFNBQVM7d0JBQ25CLFNBQVMsQ0FBQyxJQUFJO3dCQUNkLFNBQVMsQ0FBQyxPQUFPLElBQUksR0FBRzt3QkFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7cUJBQ3RGLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN6SSxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUMvRixDQUFDO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBR0QsZ0NBQWdDLENBQUMsR0FBdUMsRUFBRSxFQUFFLE1BQU0sRUFBa0M7UUFDbEgsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNiLG1CQUFtQixFQUFFLElBQUk7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdkMsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDYixtQkFBbUIsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVE7YUFDOUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCx5QkFBeUIsQ0FBQyxHQUF1QyxFQUFFLE1BQW9DO1FBQ3JHLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQ2hHLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUzSCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQzVDLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ2IsWUFBWSxFQUFFLGVBQWUsQ0FBQyxJQUFJO2FBQ25DLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBR0QsMEJBQTBCLENBQUMsR0FBdUMsRUFBRSxNQUFnQztRQUNsRyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUVoRixNQUFNLGtCQUFrQixHQUEwQixJQUFJLHFCQUFxQixDQUFDO1lBQzFFLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7U0FDeEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQzNHLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztnQkFFL0UsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDO2dCQUN0RCxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksWUFBWSxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFckgsSUFBSSxjQUFjLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7d0JBQ2hFLElBQUksS0FBSyxLQUFLLGNBQWMsSUFBSSxJQUFJLFlBQVksWUFBWSxFQUFFLENBQUM7NEJBQzdELE1BQU0sT0FBTyxHQUFHLElBQUksWUFBWSxDQUFDO2dDQUMvQixHQUFHLElBQUk7Z0NBQ1AsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQ0FDdkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSTs2QkFDNUIsQ0FBQyxDQUFDOzRCQUNILHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUN0RCxPQUFPLE9BQU8sQ0FBQzt3QkFDakIsQ0FBQzt3QkFDRCxPQUFPLElBQUksQ0FBQztvQkFDZCxDQUFDLENBQUMsQ0FBQztvQkFFSCxHQUFHLENBQUMsVUFBVSxDQUFDO3dCQUNiLFVBQVUsRUFBRSxpQkFBaUI7cUJBQzlCLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQzlFLENBQUM7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFJTyx3QkFBd0IsQ0FBQyxVQUFnRDtRQUMvRSxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUV6QixVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdCLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN6QixnQkFBZ0IsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUM5RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyxjQUFjLENBQUMsVUFBa0IsRUFBRSxVQUFrQixFQUFFLE1BQWM7UUFDM0UsTUFBTSxpQkFBaUIsR0FBc0I7WUFDM0MsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ2pELFVBQVU7WUFDVixNQUFNLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwRSxDQUFDO1FBRUYsT0FBTyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7K0dBN2VVLGNBQWM7bUhBQWQsY0FBYzs7QUFzR3pCO0lBREMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7NERBWXpEO0FBR0Q7SUFEQyxNQUFNLENBQUMseUJBQXlCLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztpRUFVOUQ7QUFHRDtJQURDLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO2tFQUsvRDtBQUdEO0lBREMsTUFBTSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7aUVBVTlEO0FBR0Q7SUFEQyxNQUFNLENBQUMsbUNBQW1DLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzsyRUFVeEU7QUFJRDtJQURDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQzsrREFLL0I7QUFHRDtJQURDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQzsyREFXMUI7QUFHRDtJQURDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQzs2REFXN0I7QUFHRDtJQURDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzt1REF5QnBEO0FBR0Q7SUFEQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzt1REFvQjFEO0FBSUQ7SUFEQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7d0RBSXhCO0FBR0Q7SUFEQyxNQUFNLENBQUMsdUJBQXVCLENBQUM7K0RBTS9CO0FBR0Q7SUFEQyxNQUFNLENBQUMsNEJBQTRCLENBQUM7b0VBS3BDO0FBR0Q7SUFEQyxNQUFNLENBQUMsa0NBQWtDLENBQUM7MEVBYzFDO0FBR0Q7SUFEQyxNQUFNLENBQUMseUJBQXlCLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztpRUFvQjlEO0FBR0Q7SUFEQyxNQUFNLENBQUMsMEJBQTBCLENBQUM7a0VBS2xDO0FBR0Q7SUFEQyxNQUFNLENBQUMsNEJBQTRCLENBQUM7b0VBUXBDO0FBR0Q7SUFEQyxNQUFNLENBQUMsc0NBQXNDLENBQUM7OEVBUTlDO0FBR0Q7SUFEQyxNQUFNLENBQUMsNkJBQTZCLENBQUM7cUVBS3JDO0FBR0Q7SUFEQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7c0RBU25EO0FBR0Q7SUFEQyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztnRUFTN0Q7QUFHRDtJQURDLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO21FQVFoRTtBQUdEO0lBREMsTUFBTSxDQUFDLG9DQUFvQyxDQUFDOzRFQU01QztBQUdEO0lBREMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7OERBMkIxRDtBQUdEO0lBREMsTUFBTSxDQUFDLDhCQUE4QixFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7c0VBV25FO0FBR0Q7SUFEQyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzsrREFVakU7QUFHRDtJQURDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztnRUF3Q2hDO0FBcGNhO0lBRGIsUUFBUSxFQUFFO2lDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7MENBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTsrQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO3VDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7Z0NBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtzQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO3NDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7K0NBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtvREFHVjtBQUdhO0lBRGIsUUFBUSxFQUFFOzJDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7NENBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtvQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO2tEQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7NENBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtnQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFOytDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7d0NBR1Y7QUFuR1UsY0FBYztJQXJCMUIsS0FBSyxDQUF1QjtRQUMzQixJQUFJLEVBQUUsV0FBVztRQUNqQixRQUFRLEVBQUU7WUFDUixVQUFVLEVBQUUsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLEtBQUssRUFBRSxJQUFJO1lBQ1gsY0FBYyxFQUFFLElBQUk7WUFDcEIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixhQUFhLEVBQUUsSUFBSTtZQUNuQixRQUFRLEVBQUUsRUFBRTtZQUNaLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixJQUFJLEVBQUUsRUFBRTtZQUNSLG1CQUFtQixFQUFFLElBQUk7WUFDekIsWUFBWSxFQUFFLEVBQUU7U0FDakI7S0FDRixDQUFDO0dBQ1csY0FBYyxDQThlMUI7OzRGQTllWSxjQUFjO2tCQXRCMUIsVUFBVTs7MEJBaUNOLFFBQVE7MEhBMkZYLHNCQUFzQixNQWN0QiwyQkFBMkIsTUFZM0IsNEJBQTRCLE1BTzVCLDJCQUEyQixNQVkzQixxQ0FBcUMsTUFhckMseUJBQXlCLE1BT3pCLHFCQUFxQixNQWFyQix1QkFBdUIsTUFhdkIsaUJBQWlCLE1BMkJqQixpQkFBaUIsTUF1QmpCLGtCQUFrQixNQU1sQix5QkFBeUIsTUFRekIsOEJBQThCLE1BTzlCLG9DQUFvQyxNQWdCcEMsMkJBQTJCLE1Bc0IzQiw0QkFBNEIsTUFPNUIsOEJBQThCLE1BVTlCLHdDQUF3QyxNQVV4QywrQkFBK0IsTUFPL0IsZ0JBQWdCLE1BV2hCLDBCQUEwQixNQVcxQiw2QkFBNkIsTUFVN0Isc0NBQXNDLE1BUXRDLHdCQUF3QixNQTZCeEIsZ0NBQWdDLE1BYWhDLHlCQUF5QixNQVl6QiwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGUgfSBmcm9tICdAbmd4cy9yb3V0ZXItcGx1Z2luJztcbmltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyUG9zaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLXBvc2l0aW9uLmVudW0nO1xuaW1wb3J0IHsgTWVzc2FnZUJhclBheWxvYWQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLXRleHQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IFNtYXJ0UGFya1N0YXR1c1RleHQgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBJUGFya0RldGFpbHMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BhcmstZGV0YWlscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUnBjIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eSc7XG5pbXBvcnQge1xuICBBcHBNb2R1bGUsIEJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eSwgRmFjaWxpdHlCYXNpY0R0bywgTGljZW5zZUNsb3VkU2VydmljZVByb3h5LCBPYmplY3RIdHRwUmVzcG9uc2VEYXRhLFxuICBTbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eSwgU21hcnRwYXJrRHRvLCBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG8sIFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSxcbiAgU21hcnRQYXJrU3RhdHVzLCBTbWFydFBhcmtUeXBlLCBTcEFuZFNwYXJrVmVyc2lvbnNEdG8sIFVwZGF0ZVNtYXJ0cGFya1ZhckR0bywgVmFyRHRvXG59IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHksIFNtYXJ0cGFya0Jhc2ljRHRvLCBTbWFydFBhcmtXcmFwcGVyRHRvIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9pZGVudGl0eS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgRmFjaWxpdHlScGNTZXJ2aWNlUHJveHksIElEZXZpY2VEdG8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L3JwYy1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgRXhwb3J0RmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBvcnQtZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJldmVudWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmV2ZW51ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JvdXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgcGFyc2VBcGlFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlscy9hcGktaGVscGVyLnV0aWwnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdERldmljZVN0YXR1cyB9IGZyb20gJy4uLy4uL3V0aWxzL2RldmljZS51dGlsJztcbmltcG9ydCB7IG1hcmtFbnRpdGllc0FzQ2hhbmdlZCwgUm93T3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVyLnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IGNyZWF0ZU1lc3NhZ2VUZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvbWVzc2FnZS1iYXIudXRpbCc7XG5pbXBvcnQgeyBsb3dlckNhc2VGaXJzdExldHRlciB9IGZyb20gJy4uLy4uL3V0aWxzL3RleHQudXRpbCc7XG5pbXBvcnQgeyBDbGVhclNlbGVjdGVkRmFjaWxpdHlBY3Rpb24sIFNldFNtYXJ0cGFya0Jhc2ljQWxsQWN0aW9uIH0gZnJvbSAnLi4vZmFjaWxpdHkvZmFjaWxpdHkuYWN0aW9ucyc7XG5pbXBvcnQgeyBNZW51U3ViTW9kdWxlTG9hZEFjdGlvbiB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi5hY3Rpb25zJztcbmltcG9ydCB7XG4gIENsZWFyU2VsZWN0ZWRQYXJrQWN0aW9uLCBDbGVhclNlbGVjdGVkU21hcnRwYXJrQWN0aW9uLCBDbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbiwgQ2xlYXJTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24sXG4gIERpc2Nvbm5lY3RTbWFydFBhcmtBY3Rpb24sIEV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbiwgRXhwb3J0U21hcnRwYXJrQWN0aW9uLCBMb2FkQmFja29mZmljZVNtYXJ0cGFya3NUYWJsZUFjdGlvbixcbiAgTG9hZEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24sIExvYWRCYWNrb2ZmaWNlVmFyQnlJZEFjdGlvbiwgTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uLFxuICBMb2FkUGFya0RldmljZXNBY3Rpb24sIExvYWRQYXJrc0FjdGlvbiwgTG9hZFNtYXJ0cGFya3NBY3Rpb24sIExvYWRTbWFydHBhcmtzQmFzaWNBY3Rpb24sIExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24sIExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24sXG4gIExvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24sIExvYWRWYXJzQWN0aW9uLCBTZWxlY3RQYXJrQWN0aW9uLCBTZWxlY3RTbWFydFBhcmtBY3Rpb24sIFNldFNtYXJ0UGFya0FjdGlvbixcbiAgU2V0U21hcnRQYXJrVGFibGVBY3Rpb24sIFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uLFxuICBTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uLCBTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24sXG4gIFVwZGF0ZVNtYXJ0cGFya1ZhckFjdGlvblxufSBmcm9tICcuL3NtYXJ0cGFyay5hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBTbWFydHBhcmtzU3RhdGVNb2RlbCB7XG4gIHNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXTtcbiAgbGF0ZXN0U21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdO1xuICBTcEFuZFNwYXJrVmVyc2lvbnM6IFNwQW5kU3BhcmtWZXJzaW9uc0R0bztcbiAgY291bnRTbWFydFBhcmtzOiBudW1iZXI7XG4gIGNvdW50UGFya2luZ0xvdHM6IG51bWJlcjtcbiAgc2VsZWN0ZWRTbWFydFBhcmtJZDogbnVtYmVyO1xuICBzZWxlY3RlZFNtYXJ0UGFyazogU21hcnRwYXJrRHRvO1xuICBwYXJrczogRmFjaWxpdHlCYXNpY0R0b1tdO1xuICBzZWxlY3RlZFBhcmtJZDogbnVtYmVyO1xuICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBJUGFya0RldGFpbHM7XG4gIHNtYXJ0cGFya0d1aWQ6IHN0cmluZztcbiAgdmVyc2lvbnM6IFN0cmluZ01hcDxzdHJpbmc+O1xuICBzbWFydFBhcmtXcmFwcGVyOiBTbWFydFBhcmtXcmFwcGVyRHRvO1xuICB2YXJzOiBWYXJEdG9bXTtcbiAgZXhwb3J0UGRmU21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdO1xuICBmYWNpbGl0eVRyZWU6IFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b1tdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5AU3RhdGU8U21hcnRwYXJrc1N0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ3NtYXJ0cGFyaycsXG4gIGRlZmF1bHRzOiB7XG4gICAgc21hcnRwYXJrczogbnVsbCxcbiAgICBsYXRlc3RTbWFydHBhcmtzOiBudWxsLFxuICAgIGNvdW50U21hcnRQYXJrczogMCxcbiAgICBjb3VudFBhcmtpbmdMb3RzOiAwLFxuICAgIHNlbGVjdGVkU21hcnRQYXJrSWQ6IG51bGwsXG4gICAgc2VsZWN0ZWRTbWFydFBhcms6IG51bGwsXG4gICAgcGFya3M6IG51bGwsXG4gICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgc2VsZWN0ZWRQYXJrRGV0YWlsczogbnVsbCxcbiAgICBzbWFydHBhcmtHdWlkOiBudWxsLFxuICAgIHZlcnNpb25zOiB7fSxcbiAgICBTcEFuZFNwYXJrVmVyc2lvbnM6IG51bGwsXG4gICAgc21hcnRQYXJrV3JhcHBlcjogbnVsbCxcbiAgICB2YXJzOiBbXSxcbiAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBudWxsLFxuICAgIGZhY2lsaXR5VHJlZTogW10sXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0cGFya1N0YXRlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIHJldmVudWVTZXJ2aWNlOiBSZXZlbnVlU2VydmljZSxcbiAgICBwcml2YXRlIHNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5OiBTbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGZhY2lsaXR5UnBjU2VydmljZVByb3h5OiBGYWNpbGl0eVJwY1NlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHk6IEZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBkZXZpY2VScGNTZXJ2aWNlUHJveHk6IFJwYy5EZXZpY2VScGNTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZVNlcnZpY2U6IFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBleHBvcnRGaWxlU2VydmljZTogRXhwb3J0RmlsZVNlcnZpY2UgfCBudWxsLFxuICAgIHByaXZhdGUgYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5OiBCYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBsaWNlbnNlQ2xvdWRTZXJ2aWNlUHJveHk6IExpY2Vuc2VDbG91ZFNlcnZpY2VQcm94eSkge1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBGYWNpbGl0eUJhc2ljRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5wYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRQYXJrSWQoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkUGFya0RldGFpbHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogSVBhcmtEZXRhaWxzIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrRGV0YWlscztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgcGFya0RldmljZXMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogSURldmljZUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrRGV0YWlscz8uZGV2aWNlcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZ3VpZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGF0ZS5zbWFydHBhcmtHdWlkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzbWFydHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxhdGVzdFBhZ2Uoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdIHtcbiAgICByZXR1cm4gc3RhdGUubGF0ZXN0U21hcnRwYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRTbWFydFBhcmtJZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFNtYXJ0UGFya0lkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFNtYXJ0UGFya0RldGFpbHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRwYXJrRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRTbWFydFBhcms7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50U21hcnRQYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5jb3VudFNtYXJ0UGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50UGFya2luZ0xvdHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuY291bnRQYXJraW5nTG90cztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdmVyc2lvbnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU3RyaW5nTWFwPHN0cmluZz4ge1xuICAgIHJldHVybiBzdGF0ZS52ZXJzaW9ucztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc21hcnRwYXJrU2VhcmNoT3B0aW9ucyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTcEFuZFNwYXJrVmVyc2lvbnNEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5TcEFuZFNwYXJrVmVyc2lvbnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNtYXJ0UGFya1dyYXBwZXIoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRQYXJrV3JhcHBlckR0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0UGFya1dyYXBwZXI7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHZhcnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogVmFyRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS52YXJzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBleHBvcnRQZGZTbWFydHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLmV4cG9ydFBkZlNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGZhY2lsaXR5VHJlZShzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmZhY2lsaXR5VHJlZTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNtYXJ0cGFya3NBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFNtYXJ0cGFya3NBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydHBhcmtzOiBbXSxcbiAgICAgIGNvdW50U21hcnRQYXJrczogMCxcbiAgICAgIGNvdW50UGFya2luZ0xvdHM6IHRoaXMuY291bnRTbWFydHBhcmtGYWNpbGl0aWVzKFtdKVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLnNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5LmdldEFsbFNtYXJ0UGFya3MoKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IFNldFNtYXJ0UGFya0FjdGlvbihzbWFydHBhcmtzLmRhdGEsIGFjdGlvbi5yZWxvYWQpKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTbWFydHBhcmtzQmFzaWNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc0Jhc2ljQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkU21hcnRwYXJrc0Jhc2ljQWN0aW9uKSB7XG4gICAgY3R4LmRpc3BhdGNoKG5ldyBNZW51U3ViTW9kdWxlTG9hZEFjdGlvbihhY3Rpb24uc3ViTW9kdWxlKSk7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGwoYWN0aW9uLmFwcE1vZHVsZSk7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUoc3dpdGNoTWFwKHNtYXJ0cGFya0Jhc2ljID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgc21hcnRQYXJrV3JhcHBlcjogc21hcnRwYXJrQmFzaWMuZGF0YSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNtYXJ0cGFya0Jhc2ljQWxsQWN0aW9uKHNtYXJ0cGFya0Jhc2ljKSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkNsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgXzogQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydFBhcmtXcmFwcGVyOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkU21hcnRwYXJrc1RhYmxlQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFNtYXJ0cGFya3NUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgZmlsdGVyIH06IExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24pIHtcbiAgICBjb25zdCBzbWFydHBhcmtzJCA9IHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VTbWFydHBhcmtzKGZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBsYXRlc3RTbWFydHBhcmtzOiBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXMsXG4gICAgICAgIGNvdW50U21hcnRQYXJrczogc21hcnRwYXJrcy5kYXRhLmNvdW50ZXIsXG4gICAgICAgIGNvdW50UGFya2luZ0xvdHM6IHNtYXJ0cGFya3MuZGF0YS5zdWJDb3VudGVyXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEJhY2tvZmZpY2VTbWFydHBhcmtzVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGZpbHRlciB9OiBMb2FkQmFja29mZmljZVNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoZmlsdGVyKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGxhdGVzdFNtYXJ0cGFya3M6IHNtYXJ0cGFya3MuZGF0YS5lbnRpdGllcyxcbiAgICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzLmRhdGEuY291bnRlcixcbiAgICAgICAgY291bnRQYXJraW5nTG90czogc21hcnRwYXJrcy5kYXRhLnN1YkNvdW50ZXJcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG5cbiAgQEFjdGlvbihTZXRTbWFydFBhcmtUYWJsZUFjdGlvbilcbiAgb25TZXRTbWFydFBhcmtUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgc21hcnRwYXJrcyB9OiBTZXRTbWFydFBhcmtUYWJsZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0cGFya3NcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0U21hcnRQYXJrQWN0aW9uKVxuICBvblNldFNtYXJ0UGFya3NBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IHNtYXJ0cGFya3MsIHJlbG9hZCB9OiBTZXRTbWFydFBhcmtBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydHBhcmtzOiBzbWFydHBhcmtzIHx8IFtdLFxuICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzPy5sZW5ndGggfHwgMCxcbiAgICAgIGNvdW50UGFya2luZ0xvdHM6IHRoaXMuY291bnRTbWFydHBhcmtGYWNpbGl0aWVzKHNtYXJ0cGFya3MpXG4gICAgfSk7XG5cbiAgICBpZiAoY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRTbWFydFBhcmtJZCkge1xuICAgICAgY3R4LmRpc3BhdGNoKG5ldyBTZWxlY3RTbWFydFBhcmtBY3Rpb24oY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRTbWFydFBhcmtJZCwgcmVsb2FkKSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihTZWxlY3RTbWFydFBhcmtBY3Rpb24pXG4gIG9uU2VsZWN0U21hcnRQYXJrQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZWxlY3RTbWFydFBhcmtBY3Rpb24pIHtcbiAgICBsZXQgc2VsZWN0ZWRTbWFydFBhcms7XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5jbGVhck1lc3NhZ2ViYXIoKTtcbiAgICBpZiAoY3R4LmdldFN0YXRlKCkuc21hcnRwYXJrcykge1xuICAgICAgc2VsZWN0ZWRTbWFydFBhcmsgPSBjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtzLmZpbmQoKHNtYXJ0cGFyaykgPT4gKHNtYXJ0cGFyayBhcyBTbWFydHBhcmtEdG8pLmlkID09PSBhY3Rpb24uc21hcnRQYXJrSWQpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoeyBzZWxlY3RlZFNtYXJ0UGFya0lkOiBhY3Rpb24uc21hcnRQYXJrSWQsIHNlbGVjdGVkU21hcnRQYXJrIH0pO1xuICAgICAgaWYgKGFjdGlvbi5yZWxvYWQpIHtcbiAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBMb2FkUGFya3NBY3Rpb24oKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihMb2FkUGFya3NBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkUGFya3NBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoeyBzZWxlY3RlZFBhcmtEZXRhaWxzOiBudWxsLCBzZWxlY3RlZFBhcmtJZDogbnVsbCB9KTtcblxuICAgIHJldHVybiB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGwoQXBwTW9kdWxlLk1hbmFnZW1lbnQpLnBpcGUodGFwKHNtYXJ0cGFya01hcCA9PiB7XG4gICAgICBjb25zdCB7IGd1aWQsIHR5cGUgfSA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkU21hcnRQYXJrO1xuICAgICAgaWYgKHNtYXJ0cGFya01hcCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRQYXJrSWQ6IG51bWJlcjtcbiAgICAgICAgY29uc3QgcGFya3MgPSBzbWFydHBhcmtNYXAuZGF0YS5zbWFydFBhcmtzW2d1aWRdLmZhY2lsaXRpZXM7XG4gICAgICAgIGlmICh0eXBlID09PSBTbWFydFBhcmtUeXBlLlN1cGVyUGFyaykge1xuICAgICAgICAgIGNvbnN0IG11bHRpUGFyayA9IHBhcmtzLmZpbmQocGFyayA9PiBwYXJrLmlzTXVsdGlQYXJrKTtcbiAgICAgICAgICBzZWxlY3RlZFBhcmtJZCA9IG11bHRpUGFyayA/IG11bHRpUGFyay5pZCA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgcGFya3M6IHBhcmtzIHx8IFtdLFxuICAgICAgICAgIHNlbGVjdGVkUGFya0lkOiBzZWxlY3RlZFBhcmtJZCA/PyAocGFya3M/Lmxlbmd0aCAmJiBwYXJrc1swXS5pZCB8fCBudWxsKSxcbiAgICAgICAgICBzbWFydHBhcmtHdWlkOiBndWlkLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocGFya3M/Lmxlbmd0aCkge1xuICAgICAgICAgIGN0eC5kaXNwYXRjaChMb2FkUGFya0RldmljZXNBY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkUGFya0RldmljZXNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkUGFya0RldmljZXMoY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgY29uc3QgcGFya0RldGFpbCA9IGN0eC5nZXRTdGF0ZSgpLnBhcmtzLmZpbmQoKHBhcmspID0+IHBhcmsuaWQgPT09IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkUGFya0lkKTtcbiAgICBjb25zdCBndWlkID0gY3R4LmdldFN0YXRlKCkuc21hcnRwYXJrR3VpZDtcblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZmFjaWxpdHlScGNTZXJ2aWNlUHJveHkuZ2V0RmFjaWxpdHkoZ3VpZCwgcGFya0RldGFpbC5pZCksXG4gICAgICB0aGlzLnJldmVudWVTZXJ2aWNlLmdldFJldmVudWUocGFya0RldGFpbC5pZCwgZ3VpZCkucGlwZShmaWx0ZXIocmV2ZW51ZSA9PiAhIXJldmVudWUpKSxcbiAgICAgIHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldFNtYXJ0cGFya3NEZXZpY2VzKGd1aWQsIHBhcmtEZXRhaWwuaWQsIG51bGwsIG51bGwsIG51bGwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSxcbiAgICBdKS5waXBlKHRhcCgoW2ZhY2lsaXR5LCByZXZlbnVlcywgZGV2aWNlc10pID0+IHtcbiAgICAgIGNvbnN0IHJldmVudWUgPSBwYXJrRGV0YWlsLmlzTXVsdGlQYXJrID09IDEgPyB0aGlzLnJldmVudWVTZXJ2aWNlLmNhbGN1bGF0ZVJldmVudWVGb3JNdWx0aVBhcmsocmV2ZW51ZXMpIDogcmV2ZW51ZXNbcGFya0RldGFpbC5pZF07XG4gICAgICBkZXZpY2VzPy5kYXRhLmZvckVhY2goZGV2aWNlID0+IGRldmljZS5kZXZpY2VTdGF0dXMgPSBkZXZpY2UuZGV2aWNlU3RhdHVzID8/IGdldERlZmF1bHREZXZpY2VTdGF0dXMoZGV2aWNlKSk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHNlbGVjdGVkUGFya0RldGFpbHM6IHtcbiAgICAgICAgICBmYWNpbGl0eTogZmFjaWxpdHkuZGF0YSxcbiAgICAgICAgICBkZXZpY2VzOiBkZXZpY2VzLmRhdGEsXG4gICAgICAgICAgcmV2ZW51ZVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuXG4gIEBBY3Rpb24oU2VsZWN0UGFya0FjdGlvbilcbiAgb25TZWxlY3RQYXJrQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZWxlY3RQYXJrQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoeyBzZWxlY3RlZFBhcmtJZDogYWN0aW9uLnBhcmtJZCB9KTtcbiAgICBjdHguZGlzcGF0Y2goTG9hZFBhcmtEZXZpY2VzQWN0aW9uKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTZWxlY3RlZFBhcmtBY3Rpb24pXG4gIG9uQ2xlYXJTZWxlY3RlZFBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VsZWN0ZWRQYXJrRGV0YWlsczogbnVsbCxcbiAgICAgIHNlbGVjdGVkUGFya0lkOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlbGVjdGVkU21hcnRwYXJrQWN0aW9uKVxuICBvbkNsZWFyU2VsZWN0ZWRzbWFydHBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VsZWN0ZWRTbWFydFBhcmtJZDogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oU21hcnRQYXJrRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbilcbiAgb25TbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRQYXJrRGV0YWlscyA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkUGFya0RldGFpbHM7XG4gICAgaWYgKHNlbGVjdGVkUGFya0RldGFpbHMpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gc2VsZWN0ZWRQYXJrRGV0YWlscz8uZGV2aWNlcz8uZmluZEluZGV4KGRldmljZSA9PiBkZXZpY2UuaWQgPT09IGFjdGlvbi5kZXZpY2VTdGF0dXMuZGV2aWNlSUQpO1xuICAgICAgY29uc3QgY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgPSBzZWxlY3RlZFBhcmtEZXRhaWxzLmRldmljZXNbaW5kZXhdLmRldmljZVN0YXR1cy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZTtcbiAgICAgIGNvbnN0IG5ld0NvbW1QZXJjZW50YWdlID0gYWN0aW9uLmRldmljZVN0YXR1cy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZTtcbiAgICAgIGlmIChpbmRleCA+PSAwICYmIGNvbW11bmljYXRpb25QZXJjZW50YWdlICE9PSBuZXdDb21tUGVyY2VudGFnZSkge1xuICAgICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzLmRldmljZXNbaW5kZXhdLmRldmljZVN0YXR1cy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZSA9IG5ld0NvbW1QZXJjZW50YWdlO1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgc2VsZWN0ZWRQYXJrRGV0YWlsczogY2xvbmVEZWVwKHNlbGVjdGVkUGFya0RldGFpbHMpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKERpc2Nvbm5lY3RTbWFydFBhcmtBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25EaXNjb25uZWN0U21hcnRwYXJrQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBzbWFydFBhcmtHdWlkLCBwYXNzd29yZCB9OiBEaXNjb25uZWN0U21hcnRQYXJrQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrJCA9IHRoaXMuc21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHkuZGlzY29ubmVjdChwYXNzd29yZCwgc21hcnRQYXJrR3VpZCk7XG4gICAgcmV0dXJuIHNtYXJ0cGFyayQucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKHYpID0+IHtcbiAgICAgICAgY29uc3Qgc21hcnRwYXJrcyA9IChjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtzIHx8IFtdKS5maWx0ZXIoc3AgPT4gc3AuZ3VpZCAhPT0gc21hcnRQYXJrR3VpZCk7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3RlZFNtYXJ0UGFyazogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZFBhcmtJZDogbnVsbCxcbiAgICAgICAgICBzbWFydHBhcmtzLFxuICAgICAgICAgIGNvdW50U21hcnRQYXJrczogc21hcnRwYXJrcz8ubGVuZ3RoIHx8IDAsXG4gICAgICAgICAgY291bnRQYXJraW5nTG90czogdGhpcy5jb3VudFNtYXJ0cGFya0ZhY2lsaXRpZXMoc21hcnRwYXJrcylcbiAgICAgICAgfSk7XG4gICAgICAgIGN0eC5kaXNwYXRjaChuZXcgQ2xlYXJTZWxlY3RlZEZhY2lsaXR5QWN0aW9uKCkpO1xuICAgICAgICBjdHguZGlzcGF0Y2gobmV3IE5hdmlnYXRlKHRoaXMucm91dGVTZXJ2aWNlLmdldE5hdmlnYXRpb25Sb3V0ZShbJ21hbmFnZW1lbnQnLCAnc21hcnRwYXJrcyddKSkpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHBhcnNlQXBpRXJyb3JNZXNzYWdlKGUpLCB7IHBvc2l0aW9uOiBNZXNzYWdlQmFyUG9zaXRpb24uU3RhdGljLCBpZDogJ21vZGFsJyB9KTtcbiAgICAgIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbilcbiAgb25TZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0U21hcnRQYXJrVmVyc2lvbnNBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICB2ZXJzaW9uczogYWN0aW9uLnZlcnNpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKVxuICBvbkxvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgaWYgKGN0eC5nZXRTdGF0ZSgpLlNwQW5kU3BhcmtWZXJzaW9ucyA9PSBudWxsKSB7XG4gICAgICBjb25zdCB2ZXJzaW9ucyQgPSB0aGlzLnNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5LmdldFNwQW5kU3BhcmtWZXJzaW9ucygpO1xuICAgICAgcmV0dXJuIHZlcnNpb25zJC5waXBlKHRhcCh2ZXJzaW9ucyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHsgU3BBbmRTcGFya1ZlcnNpb25zOiB2ZXJzaW9ucy5kYXRhIH0pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uTG9hZEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgaWYgKGN0eC5nZXRTdGF0ZSgpLlNwQW5kU3BhcmtWZXJzaW9ucyA9PSBudWxsKSB7XG4gICAgICBjb25zdCB2ZXJzaW9ucyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU3BBbmRTcGFya1ZlcnNpb25zKCk7XG4gICAgICByZXR1cm4gdmVyc2lvbnMkLnBpcGUodGFwKHZlcnNpb25zID0+IHtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoeyBTcEFuZFNwYXJrVmVyc2lvbnM6IHZlcnNpb25zLmRhdGEgfSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihDbGVhclNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbilcbiAgb25DbGVhclNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBTcEFuZFNwYXJrVmVyc2lvbnM6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFZhcnNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkVmFyc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFZhcnNBY3Rpb24pIHtcbiAgICBjb25zdCB2YXJzJCA9IHRoaXMuc21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0VmFycyhhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm1heFJlc3VsdHMsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5jb2x1bW4sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG4gICAgcmV0dXJuIHZhcnMkLnBpcGUodGFwKHZhcnMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICB2YXJzOiB2YXJzLmRhdGFcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkQmFja29mZmljZVZhcnNBY3Rpb24pIHtcbiAgICBjb25zdCB2YXJzJCA9IHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VWYXJzKGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ubWF4UmVzdWx0cywgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcbiAgICByZXR1cm4gdmFycyQucGlwZSh0YXAodmFycyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHZhcnM6IHZhcnMuZGF0YVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkQmFja29mZmljZVZhckJ5SWRBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQmFja29mZmljZVZhckJ5SWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRCYWNrb2ZmaWNlVmFyQnlJZEFjdGlvbikge1xuICAgIGNvbnN0IHZhciQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlVmFyQnlJZChhY3Rpb24udmFySWQpO1xuICAgIHJldHVybiB2YXIkLnBpcGUodGFwKHZhclJlc3BvbnNlID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgdmFyczogW3ZhclJlc3BvbnNlLmRhdGFdXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFN5bmNVc2Vyc0FuZFJvbGVzQnlTbWFydHBhcmtJZEFjdGlvbilcbiAgb25TeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFN5bmNVc2Vyc0FuZFJvbGVzQnlTbWFydHBhcmtJZEFjdGlvbik6IE9ic2VydmFibGU8T2JqZWN0SHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5zeW5jVXNlcnNCeVNtYXJ0cGFya0lkKGFjdGlvbi5zbWFydHBhcmsudGVuYW50SUQsIGFjdGlvbi5zbWFydHBhcmsuaWQpLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IF8gPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbi5zdWNjZXNzZnVsX3N5bmNfdXNlcnNfYW5kX3JvbGVzX2Zvcl9zbWFydHBhcmssIHsgbWVzc2FnZVBhcmFtczogeyBzbWFydHBhcmtOYW1lOiBhY3Rpb24uc21hcnRwYXJrLm5hbWUgfSB9KSxcbiAgICAgIGVycm9yOiBlID0+IHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IocGFyc2VBcGlFcnJvck1lc3NhZ2UoZSksIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5GbG9hdCB9KSxcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKEV4cG9ydFNtYXJ0cGFya0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkV4cG9ydFNtYXJ0cGFya3NBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IEV4cG9ydFNtYXJ0cGFya0FjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoYWN0aW9uLnNtYXJ0cGFya0ZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IHNtYXJ0cGFya3MgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZXhwb3J0RmlsZVNlcnZpY2UpIHsgcmV0dXJuOyB9XG4gICAgICAgIGNvbnN0IHRhYmxlUm93czogYW55W11bXSA9IFtdO1xuICAgICAgICBjb25zdCBzbWFydHBhcmtzTGlzdDogU21hcnRwYXJrRHRvW10gPSBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXM7XG4gICAgICAgIHNtYXJ0cGFya3NMaXN0LmZvckVhY2goKHNtYXJ0cGFyaykgPT4ge1xuICAgICAgICAgIHRhYmxlUm93cy5wdXNoKFtcbiAgICAgICAgICAgIHNtYXJ0cGFyay5uYW1lLFxuICAgICAgICAgICAgU21hcnRQYXJrVHlwZVtzbWFydHBhcmsudHlwZV0ucmVwbGFjZSgvKFtBLVpdKS9nLCAnICQxJykudHJpbSgpLFxuICAgICAgICAgICAgc21hcnRwYXJrLnRlbmFudE5hbWUsXG4gICAgICAgICAgICBzbWFydHBhcmsudmVyc2lvbixcbiAgICAgICAgICAgIHNtYXJ0cGFyay5zcGFya1ZlcnNpb24sXG4gICAgICAgICAgICBzbWFydHBhcmsuY3JlYXRlZEF0LFxuICAgICAgICAgICAgc21hcnRwYXJrLmd1aWQsXG4gICAgICAgICAgICBzbWFydHBhcmsudmFyTmFtZSB8fCAnLScsXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChTbWFydFBhcmtTdGF0dXNUZXh0W1NtYXJ0UGFya1N0YXR1c1tzbWFydHBhcmsuc3RhdHVzXV0pXG4gICAgICAgICAgXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4cG9ydEZpbGVTZXJ2aWNlLmV4cG9ydChhY3Rpb24uZmlsZVR5cGUsIHRhYmxlUm93cywgYWN0aW9uLmNvbHVtbnNIZWFkZXIsIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5zbWFydHBhcmspKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5mYWlsZWRfZXhwb3J0X2ZpbGUpKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKEV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgZmlsdGVyIH06IEV4cG9ydFBkZlNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGV4cG9ydFBkZlNtYXJ0cGFya3M6IG51bGwsXG4gICAgfSk7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU21hcnRwYXJrcyhmaWx0ZXIpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcChzbWFydHBhcmtzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZXhwb3J0UGRmU21hcnRwYXJrczogc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkU21hcnRwYXJrc0Ryb3Bkb3duQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEFsbFNtYXJ0cGFya3NBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24pOiBPYnNlcnZhYmxlPFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5saWNlbnNlQ2xvdWRTZXJ2aWNlUHJveHkuYmFzZVNtYXJ0cGFya3MoYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkuY29sdW1uLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuXG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKGZhY2lsaXR5VHJlZUR0byA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGZhY2lsaXR5VHJlZTogZmFjaWxpdHlUcmVlRHRvLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZVNtYXJ0cGFya1ZhckFjdGlvbilcbiAgb25VcGRhdGVTbWFydHBhcmtWYXJBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFVwZGF0ZVNtYXJ0cGFya1ZhckFjdGlvbikge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkID0gdGhpcy5nZXRNZXNzYWdlSW5mbyhhY3Rpb24uc21hcnRwYXJrLm5hbWUsIExvY2FsaXphdGlvbi5zbWFydHBhcmssIExvY2FsaXphdGlvbi51cGRhdGUpO1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBtZXNzYWdlQmFyUGF5bG9hZCk7XG5cbiAgICBjb25zdCB1cGRhdGVTbWFydHBhcmtWYXI6IFVwZGF0ZVNtYXJ0cGFya1ZhckR0byA9IG5ldyBVcGRhdGVTbWFydHBhcmtWYXJEdG8oe1xuICAgICAgdmFySWQ6IGFjdGlvbi52YXJEdG8uaWQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkudXBkYXRlU21hcnRwYXJrVmFyKGFjdGlvbi5zbWFydHBhcmsuaWQsIHVwZGF0ZVNtYXJ0cGFya1ZhcikucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZCA9IHRoaXMuZ2V0TWVzc2FnZUluZm8oYWN0aW9uLnNtYXJ0cGFyay5uYW1lLCBMb2NhbGl6YXRpb24uc21hcnRwYXJrLCBMb2NhbGl6YXRpb24udXBkYXRlZCk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3MsIG1lc3NhZ2VCYXJQYXlsb2FkKTtcblxuICAgICAgICBjb25zdCBkaXNwbGF5ZWRTbWFydHBhcmtzID0gY3R4LmdldFN0YXRlKCkuc21hcnRwYXJrcztcbiAgICAgICAgY29uc3Qgc21hcnRwYXJrSW5kZXggPSBkaXNwbGF5ZWRTbWFydHBhcmtzLmZpbmRJbmRleChlID0+IGUgaW5zdGFuY2VvZiBTbWFydHBhcmtEdG8gJiYgZS5pZCA9PT0gYWN0aW9uLnNtYXJ0cGFyay5pZCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoc21hcnRwYXJrSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZFNtYXJ0cGFya3MgPSBkaXNwbGF5ZWRTbWFydHBhcmtzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gc21hcnRwYXJrSW5kZXggJiYgaXRlbSBpbnN0YW5jZW9mIFNtYXJ0cGFya0R0bykge1xuICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkID0gbmV3IFNtYXJ0cGFya0R0byh7XG4gICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICB2YXJJZDogYWN0aW9uLnZhckR0by5pZCxcbiAgICAgICAgICAgICAgICB2YXJOYW1lOiBhY3Rpb24udmFyRHRvLm5hbWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW3VwZGF0ZWRdLCBSb3dPcGVyYXRpb24uVXBkYXRlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICAgIHNtYXJ0cGFya3M6IHVwZGF0ZWRTbWFydHBhcmtzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWQsIG1lc3NhZ2VCYXJQYXlsb2FkKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBjb3VudFNtYXJ0cGFya0ZhY2lsaXRpZXMoc21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnRQYXJraW5nTG90cyA9IDA7XG5cbiAgICBzbWFydHBhcmtzLmZvckVhY2goc21hcnRQYXJrID0+IHtcbiAgICAgIGlmIChzbWFydFBhcmsuZmFjaWxpdGllcykge1xuICAgICAgICBjb3VudFBhcmtpbmdMb3RzICs9IHNtYXJ0UGFyay5mYWNpbGl0aWVzLmZpbHRlcihmID0+ICFmLmlzTXVsdGlQYXJrKS5sZW5ndGg7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY291bnRQYXJraW5nTG90cztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWVzc2FnZUluZm8oZW50aXR5TmFtZTogc3RyaW5nLCBlbnRpdHlUeXBlOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nKSB7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkID0ge1xuICAgICAgZW50aXR5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChlbnRpdHlUeXBlKSxcbiAgICAgIGVudGl0eU5hbWUsXG4gICAgICBhY3Rpb246IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGFjdGlvbikpLFxuICAgIH07XG5cbiAgICByZXR1cm4gY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpO1xuICB9XG59XG4iXX0=
|
|
581
|
+
}] }, { type: i4.BackofficeCloudServiceProxy }, { type: i4.LicenseCloudServiceProxy }], propDecorators: { onLoadSmartparksAction: [], onLoadSmartparksBasicAction: [], onClearSmartparksBasicAction: [], onLoadSmartparksTableAction: [], onLoadBackofficeSmartparksTableAction: [], onSetSmartParkTableAction: [], onSetSmartParksAction: [], onSelectSmartParkAction: [], onLoadParksAction: [], onLoadParkDevices: [], onSelectParkAction: [], onClearSelectedParkAction: [], onClearSelectedsmartparkAction: [], onSmartParkDeviceStatusChangedAction: [], onDisconnectSmartparkAction: [], onSetSmartParkVersionsAction: [], onLoadSpAndSparkVersionsAction: [], onLoadBackofficeSpAndSparkVersionsAction: [], onClearSpAndSparkVersionsAction: [], onLoadVarsAction: [], onLoadBackofficeVarsAction: [], onLoadBackofficeVarByIdAction: [], onSyncUsersAndRolesBySmartparkIdAction: [], onExportSmartparksAction: [], onExportPdfSmartparksTableAction: [], onLoadAllSmartparksAction: [], onUpdateSmartparkVarAction: [] } });
|
|
582
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwYXJrLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3NtYXJ0cGFya3Mvc21hcnRwYXJrLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFHNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUc3RCxPQUFPLEVBRXVCLFlBQVksRUFDeEMsZUFBZSxFQUFFLGFBQWEsRUFBeUIscUJBQXFCLEVBQzdFLE1BQU0sMkNBQTJDLENBQUM7QUFPbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9B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SyxFQUFFLElBQUk7WUFDWCxjQUFjLEVBQUUsSUFBSTtZQUNwQixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFFBQVEsRUFBRSxFQUFFO1lBQ1osa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLElBQUksRUFBRSxFQUFFO1lBQ1IsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixZQUFZLEVBQUUsRUFBRTtTQUNqQjtLQUNGLENBQUM7R0FDVyxjQUFjLENBK2UxQjs7NEZBL2VZLGNBQWM7a0JBdEIxQixVQUFVOzswQkFpQ04sUUFBUTswSEEyRlgsc0JBQXNCLE1BY3RCLDJCQUEyQixNQVkzQiw0QkFBNEIsTUFPNUIsMkJBQTJCLE1BWTNCLHFDQUFxQyxNQWFyQyx5QkFBeUIsTUFPekIscUJBQXFCLE1BYXJCLHVCQUF1QixNQWF2QixpQkFBaUIsTUE0QmpCLGlCQUFpQixNQXVCakIsa0JBQWtCLE1BTWxCLHlCQUF5QixNQVF6Qiw4QkFBOEIsTUFPOUIsb0NBQW9DLE1BZ0JwQywyQkFBMkIsTUFzQjNCLDRCQUE0QixNQU81Qiw4QkFBOEIsTUFVOUIsd0NBQXdDLE1BVXhDLCtCQUErQixNQU8vQixnQkFBZ0IsTUFXaEIsMEJBQTBCLE1BVzFCLDZCQUE2QixNQVU3QixzQ0FBc0MsTUFRdEMsd0JBQXdCLE1BNkJ4QixnQ0FBZ0MsTUFhaEMseUJBQXlCLE1BWXpCLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0ZSB9IGZyb20gJ0BuZ3hzL3JvdXRlci1wbHVnaW4nO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXItcG9zaXRpb24uZW51bSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyUGF5bG9hZCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXItdGV4dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRQYXJrU3RhdHVzVGV4dCB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IExvY2FsaXphdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL2xvY2FsaXphdGlvbi5lbnVtJztcbmltcG9ydCB7IElQYXJrRGV0YWlscyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGFyay1kZXRhaWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBScGMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5JztcbmltcG9ydCB7XG4gIEJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eSwgRmFjaWxpdHlCYXNpY0R0bywgTGljZW5zZUNsb3VkU2VydmljZVByb3h5LCBPYmplY3RIdHRwUmVzcG9uc2VEYXRhLFxuICBTbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eSwgU21hcnRwYXJrRHRvLCBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG8sIFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSxcbiAgU21hcnRQYXJrU3RhdHVzLCBTbWFydFBhcmtUeXBlLCBTcEFuZFNwYXJrVmVyc2lvbnNEdG8sIFVwZGF0ZVNtYXJ0cGFya1ZhckR0bywgVmFyRHRvXG59IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IFNtYXJ0cGFya0Jhc2ljRHRvLCBTbWFydFBhcmtXcmFwcGVyRHRvIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9pZGVudGl0eS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgRmFjaWxpdHlScGNTZXJ2aWNlUHJveHksIElEZXZpY2VEdG8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L3JwYy1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgRXhwb3J0RmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBvcnQtZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJldmVudWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmV2ZW51ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JvdXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRwYXJrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NtYXJ0cGFyay5zZXJ2aWNlJztcbmltcG9ydCB7IHBhcnNlQXBpRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLWhlbHBlci51dGlsJztcbmltcG9ydCB7IGdldERlZmF1bHREZXZpY2VTdGF0dXMgfSBmcm9tICcuLi8uLi91dGlscy9kZXZpY2UudXRpbCc7XG5pbXBvcnQgeyBtYXJrRW50aXRpZXNBc0NoYW5nZWQsIFJvd09wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlci51dGlsJztcbmltcG9ydCB7IFN0cmluZ01hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVNZXNzYWdlVGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL21lc3NhZ2UtYmFyLnV0aWwnO1xuaW1wb3J0IHsgbG93ZXJDYXNlRmlyc3RMZXR0ZXIgfSBmcm9tICcuLi8uLi91dGlscy90ZXh0LnV0aWwnO1xuaW1wb3J0IHsgQ2xlYXJTZWxlY3RlZEZhY2lsaXR5QWN0aW9uLCBTZXRTbWFydHBhcmtCYXNpY0FsbEFjdGlvbiB9IGZyb20gJy4uL2ZhY2lsaXR5L2ZhY2lsaXR5LmFjdGlvbnMnO1xuaW1wb3J0IHsgTWVudVN1Yk1vZHVsZUxvYWRBY3Rpb24gfSBmcm9tICcuLi9zaWRlbmF2L3NpZGVuYXYuYWN0aW9ucyc7XG5pbXBvcnQgeyBTaWRlbmF2U3RhdGUgfSBmcm9tICcuLi9zaWRlbmF2L3NpZGVuYXYuc3RhdGUnO1xuaW1wb3J0IHtcbiAgQ2xlYXJTZWxlY3RlZFBhcmtBY3Rpb24sIENsZWFyU2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24sIENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCBDbGVhclNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbixcbiAgRGlzY29ubmVjdFNtYXJ0UGFya0FjdGlvbiwgRXhwb3J0UGRmU21hcnRwYXJrc1RhYmxlQWN0aW9uLCBFeHBvcnRTbWFydHBhcmtBY3Rpb24sIExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uLFxuICBMb2FkQmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbiwgTG9hZEJhY2tvZmZpY2VWYXJCeUlkQWN0aW9uLCBMb2FkQmFja29mZmljZVZhcnNBY3Rpb24sXG4gIExvYWRQYXJrRGV2aWNlc0FjdGlvbiwgTG9hZFBhcmtzQWN0aW9uLCBMb2FkU21hcnRwYXJrc0FjdGlvbiwgTG9hZFNtYXJ0cGFya3NCYXNpY0FjdGlvbiwgTG9hZFNtYXJ0cGFya3NEcm9wZG93bkFjdGlvbiwgTG9hZFNtYXJ0cGFya3NUYWJsZUFjdGlvbixcbiAgTG9hZFNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbiwgTG9hZFZhcnNBY3Rpb24sIFNlbGVjdFBhcmtBY3Rpb24sIFNlbGVjdFNtYXJ0UGFya0FjdGlvbiwgU2V0U21hcnRQYXJrQWN0aW9uLFxuICBTZXRTbWFydFBhcmtUYWJsZUFjdGlvbiwgU2V0U21hcnRQYXJrVmVyc2lvbnNBY3Rpb24sXG4gIFNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24sIFN5bmNVc2Vyc0FuZFJvbGVzQnlTbWFydHBhcmtJZEFjdGlvbixcbiAgVXBkYXRlU21hcnRwYXJrVmFyQWN0aW9uXG59IGZyb20gJy4vc21hcnRwYXJrLmFjdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0cGFya3NTdGF0ZU1vZGVsIHtcbiAgc21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdO1xuICBsYXRlc3RTbWFydHBhcmtzOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW107XG4gIFNwQW5kU3BhcmtWZXJzaW9uczogU3BBbmRTcGFya1ZlcnNpb25zRHRvO1xuICBjb3VudFNtYXJ0UGFya3M6IG51bWJlcjtcbiAgY291bnRQYXJraW5nTG90czogbnVtYmVyO1xuICBzZWxlY3RlZFNtYXJ0UGFya0lkOiBudW1iZXI7XG4gIHNlbGVjdGVkU21hcnRQYXJrOiBTbWFydHBhcmtEdG87XG4gIHBhcmtzOiBGYWNpbGl0eUJhc2ljRHRvW107XG4gIHNlbGVjdGVkUGFya0lkOiBudW1iZXI7XG4gIHNlbGVjdGVkUGFya0RldGFpbHM6IElQYXJrRGV0YWlscztcbiAgc21hcnRwYXJrR3VpZDogc3RyaW5nO1xuICB2ZXJzaW9uczogU3RyaW5nTWFwPHN0cmluZz47XG4gIHNtYXJ0UGFya1dyYXBwZXI6IFNtYXJ0UGFya1dyYXBwZXJEdG87XG4gIHZhcnM6IFZhckR0b1tdO1xuICBleHBvcnRQZGZTbWFydHBhcmtzOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW107XG4gIGZhY2lsaXR5VHJlZTogU21hcnRwYXJrRmlsdGVyT3B0aW9uRHRvW107XG59XG5cbkBJbmplY3RhYmxlKClcbkBTdGF0ZTxTbWFydHBhcmtzU3RhdGVNb2RlbD4oe1xuICBuYW1lOiAnc21hcnRwYXJrJyxcbiAgZGVmYXVsdHM6IHtcbiAgICBzbWFydHBhcmtzOiBudWxsLFxuICAgIGxhdGVzdFNtYXJ0cGFya3M6IG51bGwsXG4gICAgY291bnRTbWFydFBhcmtzOiAwLFxuICAgIGNvdW50UGFya2luZ0xvdHM6IDAsXG4gICAgc2VsZWN0ZWRTbWFydFBhcmtJZDogbnVsbCxcbiAgICBzZWxlY3RlZFNtYXJ0UGFyazogbnVsbCxcbiAgICBwYXJrczogbnVsbCxcbiAgICBzZWxlY3RlZFBhcmtJZDogbnVsbCxcbiAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBudWxsLFxuICAgIHNtYXJ0cGFya0d1aWQ6IG51bGwsXG4gICAgdmVyc2lvbnM6IHt9LFxuICAgIFNwQW5kU3BhcmtWZXJzaW9uczogbnVsbCxcbiAgICBzbWFydFBhcmtXcmFwcGVyOiBudWxsLFxuICAgIHZhcnM6IFtdLFxuICAgIGV4cG9ydFBkZlNtYXJ0cGFya3M6IG51bGwsXG4gICAgZmFjaWxpdHlUcmVlOiBbXSxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgU21hcnRwYXJrU3RhdGUge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgcmV2ZW51ZVNlcnZpY2U6IFJldmVudWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc21hcnRwYXJrU2VydmljZTogU21hcnRwYXJrU2VydmljZSxcbiAgICBwcml2YXRlIHNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5OiBTbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGZhY2lsaXR5UnBjU2VydmljZVByb3h5OiBGYWNpbGl0eVJwY1NlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGRldmljZVJwY1NlcnZpY2VQcm94eTogUnBjLkRldmljZVJwY1NlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIG1lc3NhZ2VCYXJTZXJ2aWNlOiBNZXNzYWdlQmFyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlU2VydmljZTogUm91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGV4cG9ydEZpbGVTZXJ2aWNlOiBFeHBvcnRGaWxlU2VydmljZSB8IG51bGwsXG4gICAgcHJpdmF0ZSBiYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHk6IEJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGxpY2Vuc2VDbG91ZFNlcnZpY2VQcm94eTogTGljZW5zZUNsb3VkU2VydmljZVByb3h5KSB7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IEZhY2lsaXR5QmFzaWNEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLnBhcmtzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFBhcmtJZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFBhcmtJZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRQYXJrRGV0YWlscyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBJUGFya0RldGFpbHMge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFBhcmtEZXRhaWxzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwYXJrRGV2aWNlcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBJRGV2aWNlRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFBhcmtEZXRhaWxzPy5kZXZpY2VzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBndWlkKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0cGFya0d1aWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNtYXJ0cGFya3Moc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdIHtcbiAgICByZXR1cm4gc3RhdGUuc21hcnRwYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgbGF0ZXN0UGFnZShzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW10ge1xuICAgIHJldHVybiBzdGF0ZS5sYXRlc3RTbWFydHBhcmtzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFNtYXJ0UGFya0lkKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkU21hcnRQYXJrSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkU21hcnRQYXJrRGV0YWlscyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTbWFydHBhcmtEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFNtYXJ0UGFyaztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgY291bnRTbWFydFBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLmNvdW50U21hcnRQYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgY291bnRQYXJraW5nTG90cyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5jb3VudFBhcmtpbmdMb3RzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyB2ZXJzaW9ucyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTdHJpbmdNYXA8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHN0YXRlLnZlcnNpb25zO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzbWFydHBhcmtTZWFyY2hPcHRpb25zKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IFNwQW5kU3BhcmtWZXJzaW9uc0R0byB7XG4gICAgcmV0dXJuIHN0YXRlLlNwQW5kU3BhcmtWZXJzaW9ucztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc21hcnRQYXJrV3JhcHBlcihzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTbWFydFBhcmtXcmFwcGVyRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuc21hcnRQYXJrV3JhcHBlcjtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdmFycyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBWYXJEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLnZhcnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGV4cG9ydFBkZlNtYXJ0cGFya3Moc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdIHtcbiAgICByZXR1cm4gc3RhdGUuZXhwb3J0UGRmU21hcnRwYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZmFjaWxpdHlUcmVlKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZmFjaWxpdHlUcmVlO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkU21hcnRwYXJrc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRTbWFydHBhcmtzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkU21hcnRwYXJrc0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0cGFya3M6IFtdLFxuICAgICAgY291bnRTbWFydFBhcmtzOiAwLFxuICAgICAgY291bnRQYXJraW5nTG90czogdGhpcy5jb3VudFNtYXJ0cGFya0ZhY2lsaXRpZXMoW10pXG4gICAgfSk7XG5cbiAgICBjb25zdCBzbWFydHBhcmtzJCA9IHRoaXMuc21hcnRwYXJrQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QWxsU21hcnRQYXJrcygpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcChzbWFydHBhcmtzID0+IHtcbiAgICAgIGN0eC5kaXNwYXRjaChuZXcgU2V0U21hcnRQYXJrQWN0aW9uKHNtYXJ0cGFya3MuZGF0YSwgYWN0aW9uLnJlbG9hZCkpO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNtYXJ0cGFya3NCYXNpY0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRTbWFydHBhcmtzQmFzaWNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRTbWFydHBhcmtzQmFzaWNBY3Rpb24pIHtcbiAgICBjdHguZGlzcGF0Y2gobmV3IE1lbnVTdWJNb2R1bGVMb2FkQWN0aW9uKGFjdGlvbi5zdWJNb2R1bGUpKTtcbiAgICBjb25zdCBzbWFydHBhcmtzJCA9IHRoaXMuc21hcnRwYXJrU2VydmljZS5nZXRTbWFydHBhcmtCYXNpY0FsbChhY3Rpb24uYXBwTW9kdWxlLCBhY3Rpb24uc3ViTW9kdWxlKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZShzd2l0Y2hNYXAoc21hcnRwYXJrQmFzaWMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzbWFydFBhcmtXcmFwcGVyOiBzbWFydHBhcmtCYXNpYy5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24oc21hcnRwYXJrQmFzaWMpKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBfOiBDbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0UGFya1dyYXBwZXI6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc1RhYmxlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBmaWx0ZXIgfTogTG9hZFNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoZmlsdGVyKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGxhdGVzdFNtYXJ0cGFya3M6IHNtYXJ0cGFya3MuZGF0YS5lbnRpdGllcyxcbiAgICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzLmRhdGEuY291bnRlcixcbiAgICAgICAgY291bnRQYXJraW5nTG90czogc21hcnRwYXJrcy5kYXRhLnN1YkNvdW50ZXJcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQmFja29mZmljZVNtYXJ0cGFya3NUYWJsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgZmlsdGVyIH06IExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlU21hcnRwYXJrcyhmaWx0ZXIpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcChzbWFydHBhcmtzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbGF0ZXN0U21hcnRwYXJrczogc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzLFxuICAgICAgICBjb3VudFNtYXJ0UGFya3M6IHNtYXJ0cGFya3MuZGF0YS5jb3VudGVyLFxuICAgICAgICBjb3VudFBhcmtpbmdMb3RzOiBzbWFydHBhcmtzLmRhdGEuc3ViQ291bnRlclxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cblxuICBAQWN0aW9uKFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKVxuICBvblNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBzbWFydHBhcmtzIH06IFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc21hcnRwYXJrc1xuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTZXRTbWFydFBhcmtBY3Rpb24pXG4gIG9uU2V0U21hcnRQYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgc21hcnRwYXJrcywgcmVsb2FkIH06IFNldFNtYXJ0UGFya0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNtYXJ0cGFya3M6IHNtYXJ0cGFya3MgfHwgW10sXG4gICAgICBjb3VudFNtYXJ0UGFya3M6IHNtYXJ0cGFya3M/Lmxlbmd0aCB8fCAwLFxuICAgICAgY291bnRQYXJraW5nTG90czogdGhpcy5jb3VudFNtYXJ0cGFya0ZhY2lsaXRpZXMoc21hcnRwYXJrcylcbiAgICB9KTtcblxuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFya0lkKSB7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IFNlbGVjdFNtYXJ0UGFya0FjdGlvbihjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFya0lkLCByZWxvYWQpKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKFNlbGVjdFNtYXJ0UGFya0FjdGlvbilcbiAgb25TZWxlY3RTbWFydFBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdFNtYXJ0UGFya0FjdGlvbikge1xuICAgIGxldCBzZWxlY3RlZFNtYXJ0UGFyaztcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmNsZWFyTWVzc2FnZWJhcigpO1xuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtzKSB7XG4gICAgICBzZWxlY3RlZFNtYXJ0UGFyayA9IGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya3MuZmluZCgoc21hcnRwYXJrKSA9PiAoc21hcnRwYXJrIGFzIFNtYXJ0cGFya0R0bykuaWQgPT09IGFjdGlvbi5zbWFydFBhcmtJZCk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkU21hcnRQYXJrSWQ6IGFjdGlvbi5zbWFydFBhcmtJZCwgc2VsZWN0ZWRTbWFydFBhcmsgfSk7XG4gICAgICBpZiAoYWN0aW9uLnJlbG9hZCkge1xuICAgICAgICBjdHguZGlzcGF0Y2gobmV3IExvYWRQYXJrc0FjdGlvbigpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWRQYXJrc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRQYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkUGFya0RldGFpbHM6IG51bGwsIHNlbGVjdGVkUGFya0lkOiBudWxsIH0pO1xuICAgIGNvbnN0IGFwcE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XG4gICAgY29uc3Qgc3ViTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuc3ViTW9kdWxlKTtcbiAgICByZXR1cm4gdGhpcy5zbWFydHBhcmtTZXJ2aWNlLmdldFNtYXJ0cGFya0Jhc2ljQWxsKGFwcE1vZHVsZSwgc3ViTW9kdWxlKS5waXBlKHRhcChzbWFydHBhcmtNYXAgPT4ge1xuICAgICAgY29uc3QgeyBndWlkLCB0eXBlIH0gPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFNtYXJ0UGFyaztcbiAgICAgIGlmIChzbWFydHBhcmtNYXApIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkUGFya0lkOiBudW1iZXI7XG4gICAgICAgIGNvbnN0IHBhcmtzID0gc21hcnRwYXJrTWFwLmRhdGEuc21hcnRQYXJrc1tndWlkXS5mYWNpbGl0aWVzO1xuICAgICAgICBpZiAodHlwZSA9PT0gU21hcnRQYXJrVHlwZS5TdXBlclBhcmspIHtcbiAgICAgICAgICBjb25zdCBtdWx0aVBhcmsgPSBwYXJrcy5maW5kKHBhcmsgPT4gcGFyay5pc011bHRpUGFyayk7XG4gICAgICAgICAgc2VsZWN0ZWRQYXJrSWQgPSBtdWx0aVBhcmsgPyBtdWx0aVBhcmsuaWQgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIHBhcmtzOiBwYXJrcyB8fCBbXSxcbiAgICAgICAgICBzZWxlY3RlZFBhcmtJZDogc2VsZWN0ZWRQYXJrSWQgPz8gKHBhcmtzPy5sZW5ndGggJiYgcGFya3NbMF0uaWQgfHwgbnVsbCksXG4gICAgICAgICAgc21hcnRwYXJrR3VpZDogZ3VpZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHBhcmtzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjdHguZGlzcGF0Y2goTG9hZFBhcmtEZXZpY2VzQWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFBhcmtEZXZpY2VzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFBhcmtEZXZpY2VzKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGNvbnN0IHBhcmtEZXRhaWwgPSBjdHguZ2V0U3RhdGUoKS5wYXJrcy5maW5kKChwYXJrKSA9PiBwYXJrLmlkID09PSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFBhcmtJZCk7XG4gICAgY29uc3QgZ3VpZCA9IGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya0d1aWQ7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZhY2lsaXR5UnBjU2VydmljZVByb3h5LmdldEZhY2lsaXR5KGd1aWQsIHBhcmtEZXRhaWwuaWQpLFxuICAgICAgdGhpcy5yZXZlbnVlU2VydmljZS5nZXRSZXZlbnVlKHBhcmtEZXRhaWwuaWQsIGd1aWQpLnBpcGUoZmlsdGVyKHJldmVudWUgPT4gISFyZXZlbnVlKSksXG4gICAgICB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXRTbWFydHBhcmtzRGV2aWNlcyhndWlkLCBwYXJrRGV0YWlsLmlkLCBudWxsLCBudWxsLCBudWxsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCksXG4gICAgXSkucGlwZSh0YXAoKFtmYWNpbGl0eSwgcmV2ZW51ZXMsIGRldmljZXNdKSA9PiB7XG4gICAgICBjb25zdCByZXZlbnVlID0gcGFya0RldGFpbC5pc011bHRpUGFyayA9PSAxID8gdGhpcy5yZXZlbnVlU2VydmljZS5jYWxjdWxhdGVSZXZlbnVlRm9yTXVsdGlQYXJrKHJldmVudWVzKSA6IHJldmVudWVzW3BhcmtEZXRhaWwuaWRdO1xuICAgICAgZGV2aWNlcz8uZGF0YS5mb3JFYWNoKGRldmljZSA9PiBkZXZpY2UuZGV2aWNlU3RhdHVzID0gZGV2aWNlLmRldmljZVN0YXR1cyA/PyBnZXREZWZhdWx0RGV2aWNlU3RhdHVzKGRldmljZSkpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiB7XG4gICAgICAgICAgZmFjaWxpdHk6IGZhY2lsaXR5LmRhdGEsXG4gICAgICAgICAgZGV2aWNlczogZGV2aWNlcy5kYXRhLFxuICAgICAgICAgIHJldmVudWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cblxuICBAQWN0aW9uKFNlbGVjdFBhcmtBY3Rpb24pXG4gIG9uU2VsZWN0UGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogU2VsZWN0UGFya0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VsZWN0ZWRQYXJrSWQ6IGFjdGlvbi5wYXJrSWQgfSk7XG4gICAgY3R4LmRpc3BhdGNoKExvYWRQYXJrRGV2aWNlc0FjdGlvbik7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU2VsZWN0ZWRQYXJrQWN0aW9uKVxuICBvbkNsZWFyU2VsZWN0ZWRQYXJrQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkUGFya0RldGFpbHM6IG51bGwsXG4gICAgICBzZWxlY3RlZFBhcmtJZDogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTZWxlY3RlZFNtYXJ0cGFya0FjdGlvbilcbiAgb25DbGVhclNlbGVjdGVkc21hcnRwYXJrQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkU21hcnRQYXJrSWQ6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pXG4gIG9uU21hcnRQYXJrRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogU21hcnRQYXJrRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGVkUGFya0RldGFpbHMgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZFBhcmtEZXRhaWxzO1xuICAgIGlmIChzZWxlY3RlZFBhcmtEZXRhaWxzKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHNlbGVjdGVkUGFya0RldGFpbHM/LmRldmljZXM/LmZpbmRJbmRleChkZXZpY2UgPT4gZGV2aWNlLmlkID09PSBhY3Rpb24uZGV2aWNlU3RhdHVzLmRldmljZUlEKTtcbiAgICAgIGNvbnN0IGNvbW11bmljYXRpb25QZXJjZW50YWdlID0gc2VsZWN0ZWRQYXJrRGV0YWlscy5kZXZpY2VzW2luZGV4XS5kZXZpY2VTdGF0dXMuY29tbXVuaWNhdGlvblBlcmNlbnRhZ2U7XG4gICAgICBjb25zdCBuZXdDb21tUGVyY2VudGFnZSA9IGFjdGlvbi5kZXZpY2VTdGF0dXMuY29tbXVuaWNhdGlvblBlcmNlbnRhZ2U7XG4gICAgICBpZiAoaW5kZXggPj0gMCAmJiBjb21tdW5pY2F0aW9uUGVyY2VudGFnZSAhPT0gbmV3Q29tbVBlcmNlbnRhZ2UpIHtcbiAgICAgICAgc2VsZWN0ZWRQYXJrRGV0YWlscy5kZXZpY2VzW2luZGV4XS5kZXZpY2VTdGF0dXMuY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgPSBuZXdDb21tUGVyY2VudGFnZTtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGVkUGFya0RldGFpbHM6IGNsb25lRGVlcChzZWxlY3RlZFBhcmtEZXRhaWxzKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihEaXNjb25uZWN0U21hcnRQYXJrQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uRGlzY29ubmVjdFNtYXJ0cGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIHsgc21hcnRQYXJrR3VpZCwgcGFzc3dvcmQgfTogRGlzY29ubmVjdFNtYXJ0UGFya0FjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFyayQgPSB0aGlzLnNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5LmRpc2Nvbm5lY3QocGFzc3dvcmQsIHNtYXJ0UGFya0d1aWQpO1xuICAgIHJldHVybiBzbWFydHBhcmskLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6ICh2KSA9PiB7XG4gICAgICAgIGNvbnN0IHNtYXJ0cGFya3MgPSAoY3R4LmdldFN0YXRlKCkuc21hcnRwYXJrcyB8fCBbXSkuZmlsdGVyKHNwID0+IHNwLmd1aWQgIT09IHNtYXJ0UGFya0d1aWQpO1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgc2VsZWN0ZWRTbWFydFBhcms6IG51bGwsXG4gICAgICAgICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgICAgICAgc21hcnRwYXJrcyxcbiAgICAgICAgICBjb3VudFNtYXJ0UGFya3M6IHNtYXJ0cGFya3M/Lmxlbmd0aCB8fCAwLFxuICAgICAgICAgIGNvdW50UGFya2luZ0xvdHM6IHRoaXMuY291bnRTbWFydHBhcmtGYWNpbGl0aWVzKHNtYXJ0cGFya3MpXG4gICAgICAgIH0pO1xuICAgICAgICBjdHguZGlzcGF0Y2gobmV3IENsZWFyU2VsZWN0ZWRGYWNpbGl0eUFjdGlvbigpKTtcbiAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBOYXZpZ2F0ZSh0aGlzLnJvdXRlU2VydmljZS5nZXROYXZpZ2F0aW9uUm91dGUoWydtYW5hZ2VtZW50JywgJ3NtYXJ0cGFya3MnXSkpKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihwYXJzZUFwaUVycm9yTWVzc2FnZShlKSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLlN0YXRpYywgaWQ6ICdtb2RhbCcgfSk7XG4gICAgICB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0U21hcnRQYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uU2V0U21hcnRQYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgdmVyc2lvbnM6IGFjdGlvbi52ZXJzaW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbilcbiAgb25Mb2FkU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5TcEFuZFNwYXJrVmVyc2lvbnMgPT0gbnVsbCkge1xuICAgICAgY29uc3QgdmVyc2lvbnMkID0gdGhpcy5zbWFydHBhcmtDbG91ZFNlcnZpY2VQcm94eS5nZXRTcEFuZFNwYXJrVmVyc2lvbnMoKTtcbiAgICAgIHJldHVybiB2ZXJzaW9ucyQucGlwZSh0YXAodmVyc2lvbnMgPT4ge1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7IFNwQW5kU3BhcmtWZXJzaW9uczogdmVyc2lvbnMuZGF0YSB9KTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKVxuICBvbkxvYWRCYWNrb2ZmaWNlU3BBbmRTcGFya1ZlcnNpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGlmIChjdHguZ2V0U3RhdGUoKS5TcEFuZFNwYXJrVmVyc2lvbnMgPT0gbnVsbCkge1xuICAgICAgY29uc3QgdmVyc2lvbnMkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9ucygpO1xuICAgICAgcmV0dXJuIHZlcnNpb25zJC5waXBlKHRhcCh2ZXJzaW9ucyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHsgU3BBbmRTcGFya1ZlcnNpb25zOiB2ZXJzaW9ucy5kYXRhIH0pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uQ2xlYXJTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgU3BBbmRTcGFya1ZlcnNpb25zOiBudWxsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRWYXJzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFZhcnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRWYXJzQWN0aW9uKSB7XG4gICAgY29uc3QgdmFycyQgPSB0aGlzLnNtYXJ0cGFya0Nsb3VkU2VydmljZVByb3h5LmdldFZhcnMoYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLnNlYXJjaFRlcm0sXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkuY29sdW1uLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuICAgIHJldHVybiB2YXJzJC5waXBlKHRhcCh2YXJzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgdmFyczogdmFycy5kYXRhXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uKSB7XG4gICAgY29uc3QgdmFycyQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlVmFycyhhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm1heFJlc3VsdHMsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5jb2x1bW4sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG4gICAgcmV0dXJuIHZhcnMkLnBpcGUodGFwKHZhcnMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICB2YXJzOiB2YXJzLmRhdGFcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VWYXJCeUlkQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEJhY2tvZmZpY2VWYXJCeUlkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkQmFja29mZmljZVZhckJ5SWRBY3Rpb24pIHtcbiAgICBjb25zdCB2YXIkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVZhckJ5SWQoYWN0aW9uLnZhcklkKTtcbiAgICByZXR1cm4gdmFyJC5waXBlKHRhcCh2YXJSZXNwb25zZSA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHZhcnM6IFt2YXJSZXNwb25zZS5kYXRhXVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24pXG4gIG9uU3luY1VzZXJzQW5kUm9sZXNCeVNtYXJ0cGFya0lkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24pOiBPYnNlcnZhYmxlPE9iamVjdEh0dHBSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuc3luY1VzZXJzQnlTbWFydHBhcmtJZChhY3Rpb24uc21hcnRwYXJrLnRlbmFudElELCBhY3Rpb24uc21hcnRwYXJrLmlkKS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiBfID0+IHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhMb2NhbGl6YXRpb24uc3VjY2Vzc2Z1bF9zeW5jX3VzZXJzX2FuZF9yb2xlc19mb3Jfc21hcnRwYXJrLCB7IG1lc3NhZ2VQYXJhbXM6IHsgc21hcnRwYXJrTmFtZTogYWN0aW9uLnNtYXJ0cGFyay5uYW1lIH0gfSksXG4gICAgICBlcnJvcjogZSA9PiB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHBhcnNlQXBpRXJyb3JNZXNzYWdlKGUpLCB7IHBvc2l0aW9uOiBNZXNzYWdlQmFyUG9zaXRpb24uRmxvYXQgfSksXG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihFeHBvcnRTbWFydHBhcmtBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25FeHBvcnRTbWFydHBhcmtzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBFeHBvcnRTbWFydHBhcmtBY3Rpb24pIHtcbiAgICBjb25zdCBzbWFydHBhcmtzJCA9IHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VTbWFydHBhcmtzKGFjdGlvbi5zbWFydHBhcmtGaWx0ZXIpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcCh7XG4gICAgICBuZXh0OiBzbWFydHBhcmtzID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmV4cG9ydEZpbGVTZXJ2aWNlKSB7IHJldHVybjsgfVxuICAgICAgICBjb25zdCB0YWJsZVJvd3M6IGFueVtdW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc21hcnRwYXJrc0xpc3Q6IFNtYXJ0cGFya0R0b1tdID0gc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzO1xuICAgICAgICBzbWFydHBhcmtzTGlzdC5mb3JFYWNoKChzbWFydHBhcmspID0+IHtcbiAgICAgICAgICB0YWJsZVJvd3MucHVzaChbXG4gICAgICAgICAgICBzbWFydHBhcmsubmFtZSxcbiAgICAgICAgICAgIFNtYXJ0UGFya1R5cGVbc21hcnRwYXJrLnR5cGVdLnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpLnRyaW0oKSxcbiAgICAgICAgICAgIHNtYXJ0cGFyay50ZW5hbnROYW1lLFxuICAgICAgICAgICAgc21hcnRwYXJrLnZlcnNpb24sXG4gICAgICAgICAgICBzbWFydHBhcmsuc3BhcmtWZXJzaW9uLFxuICAgICAgICAgICAgc21hcnRwYXJrLmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIHNtYXJ0cGFyay5ndWlkLFxuICAgICAgICAgICAgc21hcnRwYXJrLnZhck5hbWUgfHwgJy0nLFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoU21hcnRQYXJrU3RhdHVzVGV4dFtTbWFydFBhcmtTdGF0dXNbc21hcnRwYXJrLnN0YXR1c11dKVxuICAgICAgICAgIF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnQoYWN0aW9uLmZpbGVUeXBlLCB0YWJsZVJvd3MsIGFjdGlvbi5jb2x1bW5zSGVhZGVyLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uc21hcnRwYXJrKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZmFpbGVkX2V4cG9ydF9maWxlKSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihFeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25FeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGZpbHRlciB9OiBFeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBudWxsLFxuICAgIH0pO1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoZmlsdGVyKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoc21hcnRwYXJrcyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGV4cG9ydFBkZlNtYXJ0cGFya3M6IHNtYXJ0cGFya3MuZGF0YS5lbnRpdGllcyxcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNtYXJ0cGFya3NEcm9wZG93bkFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRBbGxTbWFydHBhcmtzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkU21hcnRwYXJrc0Ryb3Bkb3duQWN0aW9uKTogT2JzZXJ2YWJsZTxTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBzbWFydHBhcmtzJCA9IHRoaXMubGljZW5zZUNsb3VkU2VydmljZVByb3h5LmJhc2VTbWFydHBhcmtzKGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ubWF4UmVzdWx0cyxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcblxuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHRhcChmYWNpbGl0eVRyZWVEdG8gPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBmYWNpbGl0eVRyZWU6IGZhY2lsaXR5VHJlZUR0by5kYXRhLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVTbWFydHBhcmtWYXJBY3Rpb24pXG4gIG9uVXBkYXRlU21hcnRwYXJrVmFyQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBVcGRhdGVTbWFydHBhcmtWYXJBY3Rpb24pIHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZCA9IHRoaXMuZ2V0TWVzc2FnZUluZm8oYWN0aW9uLnNtYXJ0cGFyay5uYW1lLCBMb2NhbGl6YXRpb24uc21hcnRwYXJrLCBMb2NhbGl6YXRpb24udXBkYXRlKTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgbWVzc2FnZUJhclBheWxvYWQpO1xuXG4gICAgY29uc3QgdXBkYXRlU21hcnRwYXJrVmFyOiBVcGRhdGVTbWFydHBhcmtWYXJEdG8gPSBuZXcgVXBkYXRlU21hcnRwYXJrVmFyRHRvKHtcbiAgICAgIHZhcklkOiBhY3Rpb24udmFyRHRvLmlkLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuYmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LnVwZGF0ZVNtYXJ0cGFya1ZhcihhY3Rpb24uc21hcnRwYXJrLmlkLCB1cGRhdGVTbWFydHBhcmtWYXIpLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQgPSB0aGlzLmdldE1lc3NhZ2VJbmZvKGFjdGlvbi5zbWFydHBhcmsubmFtZSwgTG9jYWxpemF0aW9uLnNtYXJ0cGFyaywgTG9jYWxpemF0aW9uLnVwZGF0ZWQpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzLCBtZXNzYWdlQmFyUGF5bG9hZCk7XG5cbiAgICAgICAgY29uc3QgZGlzcGxheWVkU21hcnRwYXJrcyA9IGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya3M7XG4gICAgICAgIGNvbnN0IHNtYXJ0cGFya0luZGV4ID0gZGlzcGxheWVkU21hcnRwYXJrcy5maW5kSW5kZXgoZSA9PiBlIGluc3RhbmNlb2YgU21hcnRwYXJrRHRvICYmIGUuaWQgPT09IGFjdGlvbi5zbWFydHBhcmsuaWQpO1xuICAgICAgICBcbiAgICAgICAgaWYgKHNtYXJ0cGFya0luZGV4ICE9PSAtMSkge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTbWFydHBhcmtzID0gZGlzcGxheWVkU21hcnRwYXJrcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHNtYXJ0cGFya0luZGV4ICYmIGl0ZW0gaW5zdGFuY2VvZiBTbWFydHBhcmtEdG8pIHtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZCA9IG5ldyBTbWFydHBhcmtEdG8oe1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgdmFySWQ6IGFjdGlvbi52YXJEdG8uaWQsXG4gICAgICAgICAgICAgICAgdmFyTmFtZTogYWN0aW9uLnZhckR0by5uYW1lLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbWFya0VudGl0aWVzQXNDaGFuZ2VkKFt1cGRhdGVkXSwgUm93T3BlcmF0aW9uLlVwZGF0ZSk7XG4gICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgICBzbWFydHBhcmtzOiB1cGRhdGVkU21hcnRwYXJrcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKExvY2FsaXphdGlvbi5lbnRpdHlfZmFpbGVkLCBtZXNzYWdlQmFyUGF5bG9hZCk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cblxuXG4gIHByaXZhdGUgY291bnRTbWFydHBhcmtGYWNpbGl0aWVzKHNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSk6IG51bWJlciB7XG4gICAgbGV0IGNvdW50UGFya2luZ0xvdHMgPSAwO1xuXG4gICAgc21hcnRwYXJrcy5mb3JFYWNoKHNtYXJ0UGFyayA9PiB7XG4gICAgICBpZiAoc21hcnRQYXJrLmZhY2lsaXRpZXMpIHtcbiAgICAgICAgY291bnRQYXJraW5nTG90cyArPSBzbWFydFBhcmsuZmFjaWxpdGllcy5maWx0ZXIoZiA9PiAhZi5pc011bHRpUGFyaykubGVuZ3RoO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvdW50UGFya2luZ0xvdHM7XG4gIH1cblxuICBwcml2YXRlIGdldE1lc3NhZ2VJbmZvKGVudGl0eU5hbWU6IHN0cmluZywgZW50aXR5VHlwZTogc3RyaW5nLCBhY3Rpb246IHN0cmluZykge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZW50aXR5VHlwZSksXG4gICAgICBlbnRpdHlOYW1lLFxuICAgICAgYWN0aW9uOiBsb3dlckNhc2VGaXJzdExldHRlcih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChhY3Rpb24pKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKTtcbiAgfVxufVxuIl19
|