@tiba-spark/client-shared-lib 26.2.0-376 → 26.2.0-381
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/services/device-remote-commands.service.mjs +9 -2
- package/fesm2022/tiba-spark-client-shared-lib.mjs +8 -1
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/services/device-remote-commands.service.d.ts +1 -1
- package/libraries/services/device-remote-commands.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -26,7 +26,14 @@ export class DeviceRemoteCommandsService {
|
|
|
26
26
|
this.translateService = translateService;
|
|
27
27
|
this.withoutMc = (commId) => commId !== 0;
|
|
28
28
|
}
|
|
29
|
-
getRemoteCommandsOrdered(deviceType, commId) {
|
|
29
|
+
getRemoteCommandsOrdered(deviceType, commId, isVirtual = false) {
|
|
30
|
+
// Virtual (gateless) devices have no physical hardware to command — like MC,
|
|
31
|
+
// they only ever get the NoSupportedCommands placeholder
|
|
32
|
+
if (isVirtual) {
|
|
33
|
+
const virtualCommandsMenu = [this.setUnsupportedCommands()];
|
|
34
|
+
this.setCommandsTypeName(virtualCommandsMenu);
|
|
35
|
+
return virtualCommandsMenu;
|
|
36
|
+
}
|
|
30
37
|
const facility = this.store.selectSnapshot(FacilityState.selected);
|
|
31
38
|
const parkAllowedCommands = Object.values(facility.permissions || {}).filter(f => hasValue(f.command)).map(f => f.command);
|
|
32
39
|
const gateStateCommands = this.createCommand({
|
|
@@ -258,4 +265,4 @@ export class DeviceRemoteCommandsService {
|
|
|
258
265
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DeviceRemoteCommandsService, decorators: [{
|
|
259
266
|
type: Injectable
|
|
260
267
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.TranslateService }] });
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXJlbW90ZS1jb21tYW5kcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9kZXZpY2UtcmVtb3RlLWNvbW1hbmRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFFMUUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdB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QUkseUJBQXlCLENBQUM7WUFDbkMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxVQUFVO1lBQ2hDLFdBQVcsRUFBRSxlQUFlLENBQUMsV0FBVztZQUN4QyxJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUk7WUFDMUIsV0FBVyxFQUFFLGVBQWUsQ0FBQyxXQUFXO1lBQ3hDLFVBQVUsRUFBRSxlQUFlLENBQUMsVUFBVTtZQUN0QyxRQUFRLEVBQUUsSUFBSTtZQUNkLFNBQVMsRUFBRSxlQUFlLENBQUMsU0FBUztZQUNwQyxNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sSUFBSSxJQUFJO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFrQztRQUNuRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUMzRCx5QkFBeUI7UUFDM0IsQ0FBQzthQUFNLElBQUkseUJBQXlCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDbEUsMENBQTBDO1lBQzFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEIsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7K0dBN1FVLDJCQUEyQjttSEFBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSBcIkBuZ3hzL3N0b3JlXCI7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsS2V5Q2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgVkVSU0lPTl84XzFfMCwgVkVSU0lPTl84XzJfMCB9IGZyb20gXCIuLi9jb25zdGFudHMvdmVyc2lvbi1jb25zdGFudHNcIjtcbmltcG9ydCB7IERldmljZUFjdGl2aXR5TW9kZSB9IGZyb20gXCIuLi9lbnVtcy9kZXZpY2UtYWN0aXZpdHktbW9kZS5lbnVtXCI7XG5pbXBvcnQgeyBJY29uc0hlbHBlciB9IGZyb20gXCIuLi9lbnVtcy9pY29uLmVudW1cIjtcbmltcG9ydCB7IExvY2FsaXphdGlvbiB9IGZyb20gXCIuLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bVwiO1xuaW1wb3J0IHsgQ29tbWFuZHNMb2NhbGl6YXRpb25LZXkgfSBmcm9tIFwiLi4vZW51bXMvcmVtb3RlLWNvbW1hbmQuZW51bVwiO1xuaW1wb3J0IHsgTWVudUNvbW1hbmRJdGVtIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvbWVudS1jb21tYW5kLWl0ZW0uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSBcIi4uL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHkuc3RhdGVcIjtcbmltcG9ydCB7IFBhcmtNYW5hZ2VyU3RhdGUgfSBmcm9tIFwiLi4vbW9kdWxlcy9wYXJrLW1hbmFnZXIvcGFyay1tYW5hZ2VyLnN0YXRlXCI7XG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSwgUmVtb3RlQ29tbWFuZFR5cGVzIH0gZnJvbSBcIi4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzXCI7XG5pbXBvcnQgeyBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvLCBEZXZpY2VSZW1vdGVDb21tYW5kU3RhdHVzIH0gZnJvbSBcIi4uL3NlcnZpY2UtcHJveHkvcnBjLXNlcnZpY2UtcHJveGllc1wiO1xuaW1wb3J0IHsgaGFzVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMvbGFuZy51dGlsXCI7XG5pbXBvcnQgeyBpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsIH0gZnJvbSBcIi4uL3V0aWxzL3N1cHBvcnQtdmVyc2lvbi51dGlsXCI7XG5cbmV4cG9ydCBjb25zdCBSRUxBWV8yX1ZBTFVFID0gJzInO1xuZXhwb3J0IGNvbnN0IFJFTEFZXzNfVkFMVUUgPSAnMyc7XG5leHBvcnQgY29uc3QgUkVMQVlfNF9WQUxVRSA9ICc0JztcbmV4cG9ydCBjb25zdCBDQU5DRUxfQUxMX1JFTEFZX1ZBTFVFID0gJzAnO1xuZXhwb3J0IGNvbnN0IEFEVkFOQ0VEX09QVElPTlNfVkFMVUUgPSAnQWR2YW5jZWRPcHRpb25zJztcbmV4cG9ydCBjb25zdCBHQVRFX1NUQVRFX1ZBTFVFID0gXCJHYXRlU3RhdGVcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERldmljZVJlbW90ZUNvbW1hbmRzU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge1xuICB9XG5cbiAgZ2V0UmVtb3RlQ29tbWFuZHNPcmRlcmVkKGRldmljZVR5cGU6IG51bWJlciwgY29tbUlkOiBudW1iZXIpOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvW10ge1xuICAgIGNvbnN0IGZhY2lsaXR5ID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnNlbGVjdGVkKTtcbiAgICBjb25zdCBwYXJrQWxsb3dlZENvbW1hbmRzID0gT2JqZWN0LnZhbHVlcyhmYWNpbGl0eS5wZXJtaXNzaW9ucyB8fCB7fSkuZmlsdGVyKGYgPT4gaGFzVmFsdWUoZi5jb21tYW5kKSkubWFwKGYgPT4gZi5jb21tYW5kKTtcblxuICAgIGNvbnN0IGdhdGVTdGF0ZUNvbW1hbmRzOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvID0gdGhpcy5jcmVhdGVDb21tYW5kKHtcbiAgICAgIGNvbW1hbmRUeXBlOiBudWxsLCBpY29uSGVscGVyOiBJY29uc0hlbHBlci5nYXRlX3N0YXRlLCBuYW1lOiBHQVRFX1NUQVRFX1ZBTFVFLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5nYXRlX3N0YXRlKSwgZGV2aWNlVHlwZTogbnVsbCwgaXNFbmFibGVkOiB0cnVlXG4gICAgfSk7XG4gICAgY29uc3QgYWR2YW5jZWRPcHRpb25Db21tYW5kczogRGV2aWNlUmVtb3RlQ29tbWFuZFJlZkR0byA9IHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogbnVsbCwgaWNvbkhlbHBlcjogSWNvbnNIZWxwZXIuY29nLCBuYW1lOiBBRFZBTkNFRF9PUFRJT05TX1ZBTFVFLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5hZHZhbmNlZF9vcHRpb25zKSwgZGV2aWNlVHlwZTogbnVsbCwgaXNFbmFibGVkOiB0cnVlXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZXZpY2VSZW1vdGVDb21tYW5kcyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5zZWxlY3RlZFBhcmtEZXZpY2VSZW1vdGVDb21tYW5kcylcbiAgICAgIC5maWx0ZXIoY29tbWFuZCA9PiBjb21tYW5kLmRldmljZVR5cGUgPT09IGRldmljZVR5cGUpLm1hcChjb21tYW5kID0+IHtcbiAgICAgICAgY29tbWFuZC5kZXNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KENvbW1hbmRzTG9jYWxpemF0aW9uS2V5W1JlbW90ZUNvbW1hbmRUeXBlc1tjb21tYW5kLmNvbW1hbmRUeXBlXV0pO1xuICAgICAgICByZXR1cm4gY29tbWFuZDtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgdG9wTGV2ZWxDb21tYW5kczogbnVtYmVyW10gPSBbXG4gICAgICBSZW1vdGVDb21tYW5kVHlwZXMuVmVuZEdhdGUsIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZUdhdGUsIFJlbW90ZUNvbW1hbmRUeXBlcy5WYWxpZGF0ZSxcbiAgICAgIFJlbW90ZUNvbW1hbmRUeXBlcy5TZXRQcmljZSwgUmVtb3RlQ29tbWFuZFR5cGVzLlNldFJhdGUsIFJlbW90ZUNvbW1hbmRUeXBlcy5UcmlnZ2VyTFBSTW9kdWxlXG4gICAgXTtcbiAgICBjb25zdCBzZWNvbmRMZXZlbENvbW1hbmRzOiBudW1iZXJbXSA9IFtcbiAgICAgIFJlbW90ZUNvbW1hbmRUeXBlcy5FamVjdEphbW1lZFRpY2tldCwgUmVtb3RlQ29tbWFuZFR5cGVzLlN3YWxsb3dKYW1tZWRUaWNrZXQsXG4gICAgICBSZW1vdGVDb21tYW5kVHlwZXMuRGVsaXZlckJ1bmRsZUJpbGxzLCBSZW1vdGVDb21tYW5kVHlwZXMuQ2hhbmdlRGV2aWNlQWNjZXNzTW9kZSxcbiAgICAgIFJlbW90ZUNvbW1hbmRUeXBlcy5Ib2xkUmVsYXksIFJlbW90ZUNvbW1hbmRUeXBlcy5PcGVuUmVsYXksXG4gICAgICBSZW1vdGVDb21tYW5kVHlwZXMuT3BlbkdhdGVDb250aW51b3VzbHksIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZUdhdGVDb250aW51b3VzbHksXG4gICAgICBSZW1vdGVDb21tYW5kVHlwZXMuTG9ja0Nhc2hSZWdpc3RlciwgUmVtb3RlQ29tbWFuZFR5cGVzLlJlc2V0QmlsbERpc3BlbnNlcixcbiAgICAgIFJlbW90ZUNvbW1hbmRUeXBlcy5VbmxvY2tEb29yLCBSZW1vdGVDb21tYW5kVHlwZXMuQ2xvc2VUaWNrZXRGb3JJU0YsXG4gICAgICBSZW1vdGVDb21tYW5kVHlwZXMuQ2xvc2VQYXltZW50U2NyZWVuLCBSZW1vdGVDb21tYW5kVHlwZXMuUmVzdGFydERldmljZVxuICAgIF07XG5cbiAgICBjb25zdCBjb21tYW5kc01lbnU6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG9bXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMud2l0aG91dE1jKGNvbW1JZCkpIHtcbiAgICAgIHRvcExldmVsQ29tbWFuZHMuZm9yRWFjaCgoY29tbWFuZDogUmVtb3RlQ29tbWFuZFR5cGVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvdW5kQ29tbWFuZCA9IGRldmljZVJlbW90ZUNvbW1hbmRzLmZpbmQoZENvbW1hbmQgPT4gZENvbW1hbmQuY29tbWFuZFR5cGUgPT09IGNvbW1hbmQpO1xuICAgICAgICBpZiAoZm91bmRDb21tYW5kKSB7XG4gICAgICAgICAgZm91bmRDb21tYW5kLmlzRW5hYmxlZCA9IHBhcmtBbGxvd2VkQ29tbWFuZHMuaW5jbHVkZXMoZm91bmRDb21tYW5kLmNvbW1hbmRUeXBlKTtcbiAgICAgICAgICBjb21tYW5kc01lbnUucHVzaChmb3VuZENvbW1hbmQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhZHZhbmNlZE9wdGlvbkNvbW1hbmRzLmNoaWxkcmVuID0gW107XG4gICAgZ2F0ZVN0YXRlQ29tbWFuZHMuY2hpbGRyZW4gPSBbXTtcblxuICAgIHNlY29uZExldmVsQ29tbWFuZHMuZm9yRWFjaCgoY29tbWFuZDogUmVtb3RlQ29tbWFuZFR5cGVzKSA9PiB7XG4gICAgICBjb25zdCBmb3VuZENvbW1hbmQgPSBkZXZpY2VSZW1vdGVDb21tYW5kcy5maW5kKGRDb21tYW5kID0+IGRDb21tYW5kLmNvbW1hbmRUeXBlID09PSBjb21tYW5kKTtcblxuICAgICAgaWYgKGZvdW5kQ29tbWFuZCkge1xuXG4gICAgICAgIGZvdW5kQ29tbWFuZC5pc0VuYWJsZWQgPSBwYXJrQWxsb3dlZENvbW1hbmRzLmluY2x1ZGVzKGZvdW5kQ29tbWFuZC5jb21tYW5kVHlwZSk7XG5cbiAgICAgICAgc3dpdGNoIChmb3VuZENvbW1hbmQuY29tbWFuZFR5cGUpIHtcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5FamVjdEphbW1lZFRpY2tldDpcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5Td2FsbG93SmFtbWVkVGlja2V0OlxuICAgICAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkRlbGl2ZXJCdW5kbGVCaWxsczpcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5SZXNldEJpbGxEaXNwZW5zZXI6XG4gICAgICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuVW5sb2NrRG9vcjpcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZVRpY2tldEZvcklTRjpcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZVBheW1lbnRTY3JlZW46XG4gICAgICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuUmVzdGFydERldmljZTpcbiAgICAgICAgICAgIGFkdmFuY2VkT3B0aW9uQ29tbWFuZHMuY2hpbGRyZW4ucHVzaChmb3VuZENvbW1hbmQpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5Mb2NrQ2FzaFJlZ2lzdGVyOlxuICAgICAgICAgICAgLy8gRm9yIE1DIHdpdGggY29tbUlkIDAgLCB3ZSBkb24ndCBhZGQgdGhpcyBjb21tYW5kXG4gICAgICAgICAgICBpZiAoY29tbUlkID4gMCkge1xuICAgICAgICAgICAgICBhZHZhbmNlZE9wdGlvbkNvbW1hbmRzLmNoaWxkcmVuLnB1c2goZm91bmRDb21tYW5kKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuQ2hhbmdlRGV2aWNlQWNjZXNzTW9kZTpcbiAgICAgICAgICAgIGZvdW5kQ29tbWFuZC5jaGlsZHJlbiA9IHRoaXMuZ2V0RGV2aWNlQWNjZXNzTW9kZUNvbW1hbmRzKGZvdW5kQ29tbWFuZCk7XG4gICAgICAgICAgICBhZHZhbmNlZE9wdGlvbkNvbW1hbmRzLmNoaWxkcmVuLnB1c2goZm91bmRDb21tYW5kKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuSG9sZFJlbGF5OlxuICAgICAgICAgICAgZm91bmRDb21tYW5kLmNoaWxkcmVuID0gdGhpcy5nZXRIb2xkUmVsYXlDb21tYW5kcyhmb3VuZENvbW1hbmQpO1xuICAgICAgICAgICAgYWR2YW5jZWRPcHRpb25Db21tYW5kcy5jaGlsZHJlbi5wdXNoKGZvdW5kQ29tbWFuZCk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLk9wZW5SZWxheTpcbiAgICAgICAgICAgIGZvdW5kQ29tbWFuZC5jaGlsZHJlbiA9IHRoaXMuZ2V0T3BlblJlbGF5Q29tbWFuZHMoZm91bmRDb21tYW5kKTtcbiAgICAgICAgICAgIGFkdmFuY2VkT3B0aW9uQ29tbWFuZHMuY2hpbGRyZW4ucHVzaChmb3VuZENvbW1hbmQpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5PcGVuR2F0ZUNvbnRpbnVvdXNseTpcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZUdhdGVDb250aW51b3VzbHk6XG4gICAgICAgICAgICBpZiAoIWFkdmFuY2VkT3B0aW9uQ29tbWFuZHMuY2hpbGRyZW4uZmluZChjID0+IGMubmFtZSA9PT0gR0FURV9TVEFURV9WQUxVRSkpIHtcbiAgICAgICAgICAgICAgYWR2YW5jZWRPcHRpb25Db21tYW5kcy5jaGlsZHJlbi5wdXNoKGdhdGVTdGF0ZUNvbW1hbmRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ2F0ZVN0YXRlQ29tbWFuZHMuY2hpbGRyZW4ucHVzaChmb3VuZENvbW1hbmQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoYWR2YW5jZWRPcHRpb25Db21tYW5kcy5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBjb21tYW5kc01lbnUucHVzaChhZHZhbmNlZE9wdGlvbkNvbW1hbmRzKTtcblxuICAgICAgLy8gU2V0IHRoZSBSZWxheXMgYWN0dWFsIHN0YXR1c1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoUGFya01hbmFnZXJTdGF0ZS5ieUNvbW1JZCkucGlwZShcbiAgICAgICAgLy8gdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoZGV2aWNlcyA9PiBPYmplY3Qua2V5cyhkZXZpY2VzKS5sZW5ndGggPiAwKSxcbiAgICAgICAgbWFwKGRldmljZXMgPT4gZGV2aWNlc1tjb21tSWRdPy5kZXZpY2VTdGF0dXMpLFxuICAgICAgICBkaXN0aW5jdFVudGlsS2V5Q2hhbmdlZChcInJlbGF5c1wiKSxcbiAgICAgICAgZmlsdGVyKHJlcyA9PiAhIXJlcz8ucmVsYXlzKVxuICAgICAgKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgY29uc3Qgb3BlblJlbGF5Q29tbWFuZHMgPSBhZHZhbmNlZE9wdGlvbkNvbW1hbmRzLmNoaWxkcmVuLmZpbmQoZSA9PiBlLmNvbW1hbmRUeXBlID09PSBSZW1vdGVDb21tYW5kVHlwZXMuT3BlblJlbGF5KTtcbiAgICAgICAgY29uc3QgaG9sZFJlbGF5Q29tbWFuZHMgPSBhZHZhbmNlZE9wdGlvbkNvbW1hbmRzLmNoaWxkcmVuLmZpbmQoZSA9PiBlLmNvbW1hbmRUeXBlID09PSBSZW1vdGVDb21tYW5kVHlwZXMuSG9sZFJlbGF5KTtcbiAgICAgICAgaWYgKGhvbGRSZWxheUNvbW1hbmRzKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgICAgICAgICBob2xkUmVsYXlDb21tYW5kcy5jaGlsZHJlbltpXS5zdGF0dXMgPSByZXMucmVsYXlzW2ldID8gRGV2aWNlUmVtb3RlQ29tbWFuZFN0YXR1cy5PbiA6IERldmljZVJlbW90ZUNvbW1hbmRTdGF0dXMuT2ZmO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGlmIHJlbGF5IDIgaXMgb24gcmVsYXkgMyBpcyBkaXNhYmxlZFxuICAgICAgICAgIC8vIGlmIHJlbGF5IDMgaXMgb24gcmVsYXkgMiBpcyBkaXNhYmxlZFxuICAgICAgICAgIGhvbGRSZWxheUNvbW1hbmRzLmNoaWxkcmVuWzFdLmlzRW5hYmxlZCA9IG9wZW5SZWxheUNvbW1hbmRzLmNoaWxkcmVuWzFdLmlzRW5hYmxlZCAmJiAhcmVzLnJlbGF5c1syXTtcbiAgICAgICAgICBob2xkUmVsYXlDb21tYW5kcy5jaGlsZHJlblsyXS5pc0VuYWJsZWQgPSBvcGVuUmVsYXlDb21tYW5kcy5jaGlsZHJlblsyXS5pc0VuYWJsZWQgJiYgIXJlcy5yZWxheXNbMV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIWNvbW1hbmRzTWVudS5sZW5ndGgpIHtcbiAgICAgIGNvbW1hbmRzTWVudS5wdXNoKHRoaXMuc2V0VW5zdXBwb3J0ZWRDb21tYW5kcygpKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldENvbW1hbmRzVHlwZU5hbWUoY29tbWFuZHNNZW51KTtcblxuICAgIHJldHVybiBjb21tYW5kc01lbnU7XG4gIH1cblxuICB3aXRob3V0TWMgPSAoY29tbUlkOiBudW1iZXIpID0+IGNvbW1JZCAhPT0gMDtcblxuICBzZXRDb21tYW5kc1R5cGVOYW1lKGNvbW1hbmRzTWVudTogRGV2aWNlUmVtb3RlQ29tbWFuZFJlZkR0b1tdKSB7XG4gICAgZm9yIChjb25zdCBjb21tYW5kIG9mIGNvbW1hbmRzTWVudSkge1xuICAgICAgY29tbWFuZFsnY29tbWFuZFR5cGVOYW1lJ10gPSBDb21tYW5kc0xvY2FsaXphdGlvbktleVtSZW1vdGVDb21tYW5kVHlwZXNbY29tbWFuZC5jb21tYW5kVHlwZV1dO1xuICAgICAgaWYgKGNvbW1hbmQuY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZXRDb21tYW5kc1R5cGVOYW1lKGNvbW1hbmQuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFVuc3VwcG9ydGVkQ29tbWFuZHMoKTogRGV2aWNlUmVtb3RlQ29tbWFuZFJlZkR0byB7XG4gICAgY29uc3Qgbm9TdXBwb3J0Q29tbWFuZCA9IG5ldyBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvKCk7XG4gICAgbm9TdXBwb3J0Q29tbWFuZC5uYW1lID0gXCJOb1N1cHBvcnRlZENvbW1hbmRzXCI7XG4gICAgbm9TdXBwb3J0Q29tbWFuZC5pc0VuYWJsZWQgPSB0cnVlO1xuICAgIG5vU3VwcG9ydENvbW1hbmQuZGVzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24ubm9fc3VwcG9ydGVkX2NvbW1hbmQpO1xuICAgIG5vU3VwcG9ydENvbW1hbmQuc3RhdHVzID0gbnVsbDtcbiAgICBub1N1cHBvcnRDb21tYW5kLmljb24gPSBJY29uc0hlbHBlci5jbGVhcjtcbiAgICByZXR1cm4gbm9TdXBwb3J0Q29tbWFuZFxuICB9XG5cbiAgZ2V0RGV2aWNlQWNjZXNzTW9kZUNvbW1hbmRzKGNvbW1hbmQ6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8pOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvW10ge1xuICAgIGNvbnN0IGRldmljZUFjY2Vzc01vZGVDb21tYW5kcyA9IFtdO1xuXG4gICAgZGV2aWNlQWNjZXNzTW9kZUNvbW1hbmRzLnB1c2godGhpcy5jcmVhdGVDb21tYW5kKHtcbiAgICAgIGNvbW1hbmRUeXBlOiBjb21tYW5kPy5jb21tYW5kVHlwZSwgaWNvbkhlbHBlcjogSWNvbnNIZWxwZXIuYWNjZXNzX21vZGUsXG4gICAgICBuYW1lOiBEZXZpY2VBY3Rpdml0eU1vZGUuQWxsLnRvU3RyaW5nKCksIGRlc2NyaXB0aW9uOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjZXNzX21vZGVfYWxsKSxcbiAgICAgIGRldmljZVR5cGU6IGNvbW1hbmQ/LmRldmljZVR5cGUsIGlzRW5hYmxlZDogY29tbWFuZD8uaXNFbmFibGVkXG4gICAgfSkpO1xuICAgIGRldmljZUFjY2Vzc01vZGVDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLmFjY2Vzc19tb2RlLFxuICAgICAgbmFtZTogRGV2aWNlQWN0aXZpdHlNb2RlLk1vbnRobGllcy50b1N0cmluZygpLCBkZXNjcmlwdGlvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmFjY2Vzc19tb2RlX21vbnRobGllcyksXG4gICAgICBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZFxuICAgIH0pKTtcbiAgICBkZXZpY2VBY2Nlc3NNb2RlQ29tbWFuZHMucHVzaCh0aGlzLmNyZWF0ZUNvbW1hbmQoe1xuICAgICAgY29tbWFuZFR5cGU6IGNvbW1hbmQ/LmNvbW1hbmRUeXBlLCBpY29uSGVscGVyOiBJY29uc0hlbHBlci5hY2Nlc3NfbW9kZSxcbiAgICAgIG5hbWU6IERldmljZUFjdGl2aXR5TW9kZS5UcmFuc2llbnQudG9TdHJpbmcoKSwgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5hY2Nlc3NfbW9kZV90cmFuc2llbnQpLFxuICAgICAgZGV2aWNlVHlwZTogY29tbWFuZD8uZGV2aWNlVHlwZSwgaXNFbmFibGVkOiBjb21tYW5kPy5pc0VuYWJsZWRcbiAgICB9KSk7XG4gICAgZGV2aWNlQWNjZXNzTW9kZUNvbW1hbmRzLnB1c2godGhpcy5jcmVhdGVDb21tYW5kKHtcbiAgICAgIGNvbW1hbmRUeXBlOiBjb21tYW5kPy5jb21tYW5kVHlwZSwgaWNvbkhlbHBlcjogSWNvbnNIZWxwZXIuYWNjZXNzX21vZGUsXG4gICAgICBuYW1lOiBEZXZpY2VBY3Rpdml0eU1vZGUuTm9PbmUudG9TdHJpbmcoKSwgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5hY2Nlc3NfbW9kZV9ub3RfYWN0aXZlKSxcbiAgICAgIGRldmljZVR5cGU6IGNvbW1hbmQ/LmRldmljZVR5cGUsIGlzRW5hYmxlZDogY29tbWFuZD8uaXNFbmFibGVkXG4gICAgfSkpO1xuICAgIGNvbnN0IGZlYXR1cmVQZXJtaXNzaW9ucyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mZWF0dXJlUGVybWlzc2lvbnMpO1xuICAgIGNvbnN0IGZhY2lsaXR5ID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnNlbGVjdGVkKTtcbiAgICBjb25zdCBwYXJrQWxsb3dlZENvbW1hbmRzID0gT2JqZWN0LnZhbHVlcyhmYWNpbGl0eS5wZXJtaXNzaW9ucyB8fCB7fSkuZmlsdGVyKGYgPT4gaGFzVmFsdWUoZi5jb21tYW5kKSkubWFwKGYgPT4gZi5jb21tYW5kKTtcbiAgICBkZXZpY2VBY2Nlc3NNb2RlQ29tbWFuZHMucHVzaCh0aGlzLmNyZWF0ZUNvbW1hbmQoe1xuICAgICAgY29tbWFuZFR5cGU6IFJlbW90ZUNvbW1hbmRUeXBlcy5SZXNldERldmljZUFjY2Vzc01vZGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLmNhbmNlbCxcbiAgICAgIG5hbWU6IERldmljZUFjdGl2aXR5TW9kZS5SZXNldC50b1N0cmluZygpLCBkZXNjcmlwdGlvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmFjY2Vzc19tb2RlX3Jlc2V0KSxcbiAgICAgIGRldmljZVR5cGU6IGNvbW1hbmQ/LmRldmljZVR5cGUsIGlzRW5hYmxlZDogcGFya0FsbG93ZWRDb21tYW5kcy5pbmNsdWRlcyhSZW1vdGVDb21tYW5kVHlwZXMuQ2hhbmdlRGV2aWNlQWNjZXNzTW9kZSkgJiYgISFmZWF0dXJlUGVybWlzc2lvbnM/LmluY2x1ZGVzKFBlcm1pc3Npb25UeXBlLlJlc2V0RGV2aWNlQWNjZXNzTW9kZSlcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gZGV2aWNlQWNjZXNzTW9kZUNvbW1hbmRzO1xuICB9XG5cbiAgZ2V0SG9sZFJlbGF5Q29tbWFuZHMoY29tbWFuZDogRGV2aWNlUmVtb3RlQ29tbWFuZFJlZkR0byk6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG9bXSB7XG4gICAgY29uc3QgY2FuY2VsQWxsUmVhbHlzID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhbmNlbF9hbGxfcmVsYXlzKTtcbiAgICBjb25zdCByZWxheSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5yZWxheSk7XG4gICAgY29uc3QgaG9sZFJlbGF5Q29tbWFuZHMgPSBbXTtcbiAgICBjb21tYW5kLmlzRW5hYmxlZCA9IHRoaXMuaXNDb21tYW5kU3VwcG9ydGVkKGNvbW1hbmQpO1xuXG4gICAgaG9sZFJlbGF5Q29tbWFuZHMucHVzaCh0aGlzLmNyZWF0ZUNvbW1hbmQoe1xuICAgICAgY29tbWFuZFR5cGU6IGNvbW1hbmQ/LmNvbW1hbmRUeXBlLCBpY29uSGVscGVyOiBJY29uc0hlbHBlci5jYW5jZWwsIG5hbWU6IENBTkNFTF9BTExfUkVMQVlfVkFMVUUsXG4gICAgICBkZXNjcmlwdGlvbjogY2FuY2VsQWxsUmVhbHlzLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZFxuICAgIH0pKTtcbiAgICBob2xkUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5MiwgbmFtZTogUkVMQVlfMl9WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfMl9WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZCwgc3RhdHVzOiBEZXZpY2VSZW1vdGVDb21tYW5kU3RhdHVzLk9mZlxuICAgIH0pKTtcbiAgICBob2xkUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5MywgbmFtZTogUkVMQVlfM19WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfM19WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZCwgc3RhdHVzOiBEZXZpY2VSZW1vdGVDb21tYW5kU3RhdHVzLk9mZlxuICAgIH0pKTtcbiAgICBob2xkUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5NCwgbmFtZTogUkVMQVlfNF9WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfNF9WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZCwgc3RhdHVzOiBEZXZpY2VSZW1vdGVDb21tYW5kU3RhdHVzLk9mZlxuICAgIH0pKTtcblxuICAgIHJldHVybiBob2xkUmVsYXlDb21tYW5kcztcbiAgfVxuXG4gIGdldE9wZW5SZWxheUNvbW1hbmRzKGNvbW1hbmQ6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8pOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvW10ge1xuICAgIGNvbnN0IHJlbGF5ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnJlbGF5KTtcbiAgICBjb25zdCBvcGVuUmVsYXlDb21tYW5kcyA9IFtdO1xuICAgIGNvbW1hbmQuaXNFbmFibGVkID0gdGhpcy5pc0NvbW1hbmRTdXBwb3J0ZWQoY29tbWFuZCk7XG5cbiAgICBvcGVuUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5MiwgbmFtZTogUkVMQVlfMl9WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfMl9WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZFxuICAgIH0pKTtcbiAgICBvcGVuUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5MywgbmFtZTogUkVMQVlfM19WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfM19WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZFxuICAgIH0pKTtcbiAgICBvcGVuUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5NCwgbmFtZTogUkVMQVlfNF9WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfNF9WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZFxuICAgIH0pKTtcblxuICAgIHJldHVybiBvcGVuUmVsYXlDb21tYW5kcztcbiAgfVxuXG4gIGNyZWF0ZUNvbW1hbmQobWVudUNvbW1hbmRJdGVtOiBNZW51Q29tbWFuZEl0ZW0pOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvIHtcbiAgICByZXR1cm4gbmV3IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8oe1xuICAgICAgaWNvbjogbWVudUNvbW1hbmRJdGVtLmljb25IZWxwZXIsXG4gICAgICBjb21tYW5kVHlwZTogbWVudUNvbW1hbmRJdGVtLmNvbW1hbmRUeXBlLFxuICAgICAgbmFtZTogbWVudUNvbW1hbmRJdGVtLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogbWVudUNvbW1hbmRJdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgZGV2aWNlVHlwZTogbWVudUNvbW1hbmRJdGVtLmRldmljZVR5cGUsXG4gICAgICBjaGlsZHJlbjogbnVsbCxcbiAgICAgIGlzRW5hYmxlZDogbWVudUNvbW1hbmRJdGVtLmlzRW5hYmxlZCxcbiAgICAgIHN0YXR1czogbWVudUNvbW1hbmRJdGVtLnN0YXR1cyB8fCBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgaXNDb21tYW5kU3VwcG9ydGVkKGNvbW1hbmQ6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8pIHtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIGNvbnN0IHNwYXJrVmVyc2lvbiA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoKHsgc21hcnRwYXJrOiB7IHZlcnNpb25zIH0gfSkgPT4gdmVyc2lvbnNbZ3VpZF0pO1xuICAgIHZhciBpc0VuYWJsZWQgPSBjb21tYW5kLmlzRW5hYmxlZDtcbiAgICBpZiAoaXNWZXJzaW9uR3JlYXRlclRoYW5FcXVhbChzcGFya1ZlcnNpb24sIFZFUlNJT05fOF8yXzApKSB7XG4gICAgICAvLyBsb2dpYyBvY2N1cnMgb24gc2VydmVyXG4gICAgfSBlbHNlIGlmIChpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgVkVSU0lPTl84XzFfMCkpIHtcbiAgICAgIC8vIGxvZ2ljIGlzIGRldGVybWluZSBhY2NvcmRpbmcgdG8gdmVyc2lvblxuICAgICAgaXNFbmFibGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBpc0VuYWJsZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXJlbW90ZS1jb21tYW5kcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9kZXZpY2UtcmVtb3RlLWNvbW1hbmRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFFMUUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdB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QztZQUNsRSwwQ0FBMEM7WUFDMUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzsrR0FyUlUsMkJBQTJCO21IQUEzQiwyQkFBMkI7OzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tIFwiQG5neHMvc3RvcmVcIjtcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxLZXlDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBWRVJTSU9OXzhfMV8wLCBWRVJTSU9OXzhfMl8wIH0gZnJvbSBcIi4uL2NvbnN0YW50cy92ZXJzaW9uLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgRGV2aWNlQWN0aXZpdHlNb2RlIH0gZnJvbSBcIi4uL2VudW1zL2RldmljZS1hY3Rpdml0eS1tb2RlLmVudW1cIjtcbmltcG9ydCB7IEljb25zSGVscGVyIH0gZnJvbSBcIi4uL2VudW1zL2ljb24uZW51bVwiO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL2VudW1zL2xvY2FsaXphdGlvbi5lbnVtXCI7XG5pbXBvcnQgeyBDb21tYW5kc0xvY2FsaXphdGlvbktleSB9IGZyb20gXCIuLi9lbnVtcy9yZW1vdGUtY29tbWFuZC5lbnVtXCI7XG5pbXBvcnQgeyBNZW51Q29tbWFuZEl0ZW0gfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9tZW51LWNvbW1hbmQtaXRlbS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tIFwiLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZVwiO1xuaW1wb3J0IHsgUGFya01hbmFnZXJTdGF0ZSB9IGZyb20gXCIuLi9tb2R1bGVzL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGVcIjtcbmltcG9ydCB7IFBlcm1pc3Npb25UeXBlLCBSZW1vdGVDb21tYW5kVHlwZXMgfSBmcm9tIFwiLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXNcIjtcbmltcG9ydCB7IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8sIERldmljZVJlbW90ZUNvbW1hbmRTdGF0dXMgfSBmcm9tIFwiLi4vc2VydmljZS1wcm94eS9ycGMtc2VydmljZS1wcm94aWVzXCI7XG5pbXBvcnQgeyBoYXNWYWx1ZSB9IGZyb20gXCIuLi91dGlscy9sYW5nLnV0aWxcIjtcbmltcG9ydCB7IGlzVmVyc2lvbkdyZWF0ZXJUaGFuRXF1YWwgfSBmcm9tIFwiLi4vdXRpbHMvc3VwcG9ydC12ZXJzaW9uLnV0aWxcIjtcblxuZXhwb3J0IGNvbnN0IFJFTEFZXzJfVkFMVUUgPSAnMic7XG5leHBvcnQgY29uc3QgUkVMQVlfM19WQUxVRSA9ICczJztcbmV4cG9ydCBjb25zdCBSRUxBWV80X1ZBTFVFID0gJzQnO1xuZXhwb3J0IGNvbnN0IENBTkNFTF9BTExfUkVMQVlfVkFMVUUgPSAnMCc7XG5leHBvcnQgY29uc3QgQURWQU5DRURfT1BUSU9OU19WQUxVRSA9ICdBZHZhbmNlZE9wdGlvbnMnO1xuZXhwb3J0IGNvbnN0IEdBVEVfU1RBVEVfVkFMVUUgPSBcIkdhdGVTdGF0ZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGV2aWNlUmVtb3RlQ29tbWFuZHNTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gIH1cblxuICBnZXRSZW1vdGVDb21tYW5kc09yZGVyZWQoZGV2aWNlVHlwZTogbnVtYmVyLCBjb21tSWQ6IG51bWJlciwgaXNWaXJ0dWFsID0gZmFsc2UpOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvW10ge1xuICAgIC8vIFZpcnR1YWwgKGdhdGVsZXNzKSBkZXZpY2VzIGhhdmUgbm8gcGh5c2ljYWwgaGFyZHdhcmUgdG8gY29tbWFuZCDigJQgbGlrZSBNQyxcbiAgICAvLyB0aGV5IG9ubHkgZXZlciBnZXQgdGhlIE5vU3VwcG9ydGVkQ29tbWFuZHMgcGxhY2Vob2xkZXJcbiAgICBpZiAoaXNWaXJ0dWFsKSB7XG4gICAgICBjb25zdCB2aXJ0dWFsQ29tbWFuZHNNZW51ID0gW3RoaXMuc2V0VW5zdXBwb3J0ZWRDb21tYW5kcygpXTtcbiAgICAgIHRoaXMuc2V0Q29tbWFuZHNUeXBlTmFtZSh2aXJ0dWFsQ29tbWFuZHNNZW51KTtcbiAgICAgIHJldHVybiB2aXJ0dWFsQ29tbWFuZHNNZW51O1xuICAgIH1cblxuICAgIGNvbnN0IGZhY2lsaXR5ID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnNlbGVjdGVkKTtcbiAgICBjb25zdCBwYXJrQWxsb3dlZENvbW1hbmRzID0gT2JqZWN0LnZhbHVlcyhmYWNpbGl0eS5wZXJtaXNzaW9ucyB8fCB7fSkuZmlsdGVyKGYgPT4gaGFzVmFsdWUoZi5jb21tYW5kKSkubWFwKGYgPT4gZi5jb21tYW5kKTtcblxuICAgIGNvbnN0IGdhdGVTdGF0ZUNvbW1hbmRzOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvID0gdGhpcy5jcmVhdGVDb21tYW5kKHtcbiAgICAgIGNvbW1hbmRUeXBlOiBudWxsLCBpY29uSGVscGVyOiBJY29uc0hlbHBlci5nYXRlX3N0YXRlLCBuYW1lOiBHQVRFX1NUQVRFX1ZBTFVFLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5nYXRlX3N0YXRlKSwgZGV2aWNlVHlwZTogbnVsbCwgaXNFbmFibGVkOiB0cnVlXG4gICAgfSk7XG4gICAgY29uc3QgYWR2YW5jZWRPcHRpb25Db21tYW5kczogRGV2aWNlUmVtb3RlQ29tbWFuZFJlZkR0byA9IHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogbnVsbCwgaWNvbkhlbHBlcjogSWNvbnNIZWxwZXIuY29nLCBuYW1lOiBBRFZBTkNFRF9PUFRJT05TX1ZBTFVFLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5hZHZhbmNlZF9vcHRpb25zKSwgZGV2aWNlVHlwZTogbnVsbCwgaXNFbmFibGVkOiB0cnVlXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZXZpY2VSZW1vdGVDb21tYW5kcyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5zZWxlY3RlZFBhcmtEZXZpY2VSZW1vdGVDb21tYW5kcylcbiAgICAgIC5maWx0ZXIoY29tbWFuZCA9PiBjb21tYW5kLmRldmljZVR5cGUgPT09IGRldmljZVR5cGUpLm1hcChjb21tYW5kID0+IHtcbiAgICAgICAgY29tbWFuZC5kZXNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KENvbW1hbmRzTG9jYWxpemF0aW9uS2V5W1JlbW90ZUNvbW1hbmRUeXBlc1tjb21tYW5kLmNvbW1hbmRUeXBlXV0pO1xuICAgICAgICByZXR1cm4gY29tbWFuZDtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgdG9wTGV2ZWxDb21tYW5kczogbnVtYmVyW10gPSBbXG4gICAgICBSZW1vdGVDb21tYW5kVHlwZXMuVmVuZEdhdGUsIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZUdhdGUsIFJlbW90ZUNvbW1hbmRUeXBlcy5WYWxpZGF0ZSxcbiAgICAgIFJlbW90ZUNvbW1hbmRUeXBlcy5TZXRQcmljZSwgUmVtb3RlQ29tbWFuZFR5cGVzLlNldFJhdGUsIFJlbW90ZUNvbW1hbmRUeXBlcy5UcmlnZ2VyTFBSTW9kdWxlXG4gICAgXTtcbiAgICBjb25zdCBzZWNvbmRMZXZlbENvbW1hbmRzOiBudW1iZXJbXSA9IFtcbiAgICAgIFJlbW90ZUNvbW1hbmRUeXBlcy5FamVjdEphbW1lZFRpY2tldCwgUmVtb3RlQ29tbWFuZFR5cGVzLlN3YWxsb3dKYW1tZWRUaWNrZXQsXG4gICAgICBSZW1vdGVDb21tYW5kVHlwZXMuRGVsaXZlckJ1bmRsZUJpbGxzLCBSZW1vdGVDb21tYW5kVHlwZXMuQ2hhbmdlRGV2aWNlQWNjZXNzTW9kZSxcbiAgICAgIFJlbW90ZUNvbW1hbmRUeXBlcy5Ib2xkUmVsYXksIFJlbW90ZUNvbW1hbmRUeXBlcy5PcGVuUmVsYXksXG4gICAgICBSZW1vdGVDb21tYW5kVHlwZXMuT3BlbkdhdGVDb250aW51b3VzbHksIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZUdhdGVDb250aW51b3VzbHksXG4gICAgICBSZW1vdGVDb21tYW5kVHlwZXMuTG9ja0Nhc2hSZWdpc3RlciwgUmVtb3RlQ29tbWFuZFR5cGVzLlJlc2V0QmlsbERpc3BlbnNlcixcbiAgICAgIFJlbW90ZUNvbW1hbmRUeXBlcy5VbmxvY2tEb29yLCBSZW1vdGVDb21tYW5kVHlwZXMuQ2xvc2VUaWNrZXRGb3JJU0YsXG4gICAgICBSZW1vdGVDb21tYW5kVHlwZXMuQ2xvc2VQYXltZW50U2NyZWVuLCBSZW1vdGVDb21tYW5kVHlwZXMuUmVzdGFydERldmljZVxuICAgIF07XG5cbiAgICBjb25zdCBjb21tYW5kc01lbnU6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG9bXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMud2l0aG91dE1jKGNvbW1JZCkpIHtcbiAgICAgIHRvcExldmVsQ29tbWFuZHMuZm9yRWFjaCgoY29tbWFuZDogUmVtb3RlQ29tbWFuZFR5cGVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvdW5kQ29tbWFuZCA9IGRldmljZVJlbW90ZUNvbW1hbmRzLmZpbmQoZENvbW1hbmQgPT4gZENvbW1hbmQuY29tbWFuZFR5cGUgPT09IGNvbW1hbmQpO1xuICAgICAgICBpZiAoZm91bmRDb21tYW5kKSB7XG4gICAgICAgICAgZm91bmRDb21tYW5kLmlzRW5hYmxlZCA9IHBhcmtBbGxvd2VkQ29tbWFuZHMuaW5jbHVkZXMoZm91bmRDb21tYW5kLmNvbW1hbmRUeXBlKTtcbiAgICAgICAgICBjb21tYW5kc01lbnUucHVzaChmb3VuZENvbW1hbmQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhZHZhbmNlZE9wdGlvbkNvbW1hbmRzLmNoaWxkcmVuID0gW107XG4gICAgZ2F0ZVN0YXRlQ29tbWFuZHMuY2hpbGRyZW4gPSBbXTtcblxuICAgIHNlY29uZExldmVsQ29tbWFuZHMuZm9yRWFjaCgoY29tbWFuZDogUmVtb3RlQ29tbWFuZFR5cGVzKSA9PiB7XG4gICAgICBjb25zdCBmb3VuZENvbW1hbmQgPSBkZXZpY2VSZW1vdGVDb21tYW5kcy5maW5kKGRDb21tYW5kID0+IGRDb21tYW5kLmNvbW1hbmRUeXBlID09PSBjb21tYW5kKTtcblxuICAgICAgaWYgKGZvdW5kQ29tbWFuZCkge1xuXG4gICAgICAgIGZvdW5kQ29tbWFuZC5pc0VuYWJsZWQgPSBwYXJrQWxsb3dlZENvbW1hbmRzLmluY2x1ZGVzKGZvdW5kQ29tbWFuZC5jb21tYW5kVHlwZSk7XG5cbiAgICAgICAgc3dpdGNoIChmb3VuZENvbW1hbmQuY29tbWFuZFR5cGUpIHtcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5FamVjdEphbW1lZFRpY2tldDpcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5Td2FsbG93SmFtbWVkVGlja2V0OlxuICAgICAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLkRlbGl2ZXJCdW5kbGVCaWxsczpcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5SZXNldEJpbGxEaXNwZW5zZXI6XG4gICAgICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuVW5sb2NrRG9vcjpcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZVRpY2tldEZvcklTRjpcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZVBheW1lbnRTY3JlZW46XG4gICAgICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuUmVzdGFydERldmljZTpcbiAgICAgICAgICAgIGFkdmFuY2VkT3B0aW9uQ29tbWFuZHMuY2hpbGRyZW4ucHVzaChmb3VuZENvbW1hbmQpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5Mb2NrQ2FzaFJlZ2lzdGVyOlxuICAgICAgICAgICAgLy8gRm9yIE1DIHdpdGggY29tbUlkIDAgLCB3ZSBkb24ndCBhZGQgdGhpcyBjb21tYW5kXG4gICAgICAgICAgICBpZiAoY29tbUlkID4gMCkge1xuICAgICAgICAgICAgICBhZHZhbmNlZE9wdGlvbkNvbW1hbmRzLmNoaWxkcmVuLnB1c2goZm91bmRDb21tYW5kKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuQ2hhbmdlRGV2aWNlQWNjZXNzTW9kZTpcbiAgICAgICAgICAgIGZvdW5kQ29tbWFuZC5jaGlsZHJlbiA9IHRoaXMuZ2V0RGV2aWNlQWNjZXNzTW9kZUNvbW1hbmRzKGZvdW5kQ29tbWFuZCk7XG4gICAgICAgICAgICBhZHZhbmNlZE9wdGlvbkNvbW1hbmRzLmNoaWxkcmVuLnB1c2goZm91bmRDb21tYW5kKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBSZW1vdGVDb21tYW5kVHlwZXMuSG9sZFJlbGF5OlxuICAgICAgICAgICAgZm91bmRDb21tYW5kLmNoaWxkcmVuID0gdGhpcy5nZXRIb2xkUmVsYXlDb21tYW5kcyhmb3VuZENvbW1hbmQpO1xuICAgICAgICAgICAgYWR2YW5jZWRPcHRpb25Db21tYW5kcy5jaGlsZHJlbi5wdXNoKGZvdW5kQ29tbWFuZCk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgUmVtb3RlQ29tbWFuZFR5cGVzLk9wZW5SZWxheTpcbiAgICAgICAgICAgIGZvdW5kQ29tbWFuZC5jaGlsZHJlbiA9IHRoaXMuZ2V0T3BlblJlbGF5Q29tbWFuZHMoZm91bmRDb21tYW5kKTtcbiAgICAgICAgICAgIGFkdmFuY2VkT3B0aW9uQ29tbWFuZHMuY2hpbGRyZW4ucHVzaChmb3VuZENvbW1hbmQpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5PcGVuR2F0ZUNvbnRpbnVvdXNseTpcbiAgICAgICAgICBjYXNlIFJlbW90ZUNvbW1hbmRUeXBlcy5DbG9zZUdhdGVDb250aW51b3VzbHk6XG4gICAgICAgICAgICBpZiAoIWFkdmFuY2VkT3B0aW9uQ29tbWFuZHMuY2hpbGRyZW4uZmluZChjID0+IGMubmFtZSA9PT0gR0FURV9TVEFURV9WQUxVRSkpIHtcbiAgICAgICAgICAgICAgYWR2YW5jZWRPcHRpb25Db21tYW5kcy5jaGlsZHJlbi5wdXNoKGdhdGVTdGF0ZUNvbW1hbmRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ2F0ZVN0YXRlQ29tbWFuZHMuY2hpbGRyZW4ucHVzaChmb3VuZENvbW1hbmQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoYWR2YW5jZWRPcHRpb25Db21tYW5kcy5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBjb21tYW5kc01lbnUucHVzaChhZHZhbmNlZE9wdGlvbkNvbW1hbmRzKTtcblxuICAgICAgLy8gU2V0IHRoZSBSZWxheXMgYWN0dWFsIHN0YXR1c1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoUGFya01hbmFnZXJTdGF0ZS5ieUNvbW1JZCkucGlwZShcbiAgICAgICAgLy8gdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoZGV2aWNlcyA9PiBPYmplY3Qua2V5cyhkZXZpY2VzKS5sZW5ndGggPiAwKSxcbiAgICAgICAgbWFwKGRldmljZXMgPT4gZGV2aWNlc1tjb21tSWRdPy5kZXZpY2VTdGF0dXMpLFxuICAgICAgICBkaXN0aW5jdFVudGlsS2V5Q2hhbmdlZChcInJlbGF5c1wiKSxcbiAgICAgICAgZmlsdGVyKHJlcyA9PiAhIXJlcz8ucmVsYXlzKVxuICAgICAgKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgY29uc3Qgb3BlblJlbGF5Q29tbWFuZHMgPSBhZHZhbmNlZE9wdGlvbkNvbW1hbmRzLmNoaWxkcmVuLmZpbmQoZSA9PiBlLmNvbW1hbmRUeXBlID09PSBSZW1vdGVDb21tYW5kVHlwZXMuT3BlblJlbGF5KTtcbiAgICAgICAgY29uc3QgaG9sZFJlbGF5Q29tbWFuZHMgPSBhZHZhbmNlZE9wdGlvbkNvbW1hbmRzLmNoaWxkcmVuLmZpbmQoZSA9PiBlLmNvbW1hbmRUeXBlID09PSBSZW1vdGVDb21tYW5kVHlwZXMuSG9sZFJlbGF5KTtcbiAgICAgICAgaWYgKGhvbGRSZWxheUNvbW1hbmRzKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgICAgICAgICBob2xkUmVsYXlDb21tYW5kcy5jaGlsZHJlbltpXS5zdGF0dXMgPSByZXMucmVsYXlzW2ldID8gRGV2aWNlUmVtb3RlQ29tbWFuZFN0YXR1cy5PbiA6IERldmljZVJlbW90ZUNvbW1hbmRTdGF0dXMuT2ZmO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGlmIHJlbGF5IDIgaXMgb24gcmVsYXkgMyBpcyBkaXNhYmxlZFxuICAgICAgICAgIC8vIGlmIHJlbGF5IDMgaXMgb24gcmVsYXkgMiBpcyBkaXNhYmxlZFxuICAgICAgICAgIGhvbGRSZWxheUNvbW1hbmRzLmNoaWxkcmVuWzFdLmlzRW5hYmxlZCA9IG9wZW5SZWxheUNvbW1hbmRzLmNoaWxkcmVuWzFdLmlzRW5hYmxlZCAmJiAhcmVzLnJlbGF5c1syXTtcbiAgICAgICAgICBob2xkUmVsYXlDb21tYW5kcy5jaGlsZHJlblsyXS5pc0VuYWJsZWQgPSBvcGVuUmVsYXlDb21tYW5kcy5jaGlsZHJlblsyXS5pc0VuYWJsZWQgJiYgIXJlcy5yZWxheXNbMV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIWNvbW1hbmRzTWVudS5sZW5ndGgpIHtcbiAgICAgIGNvbW1hbmRzTWVudS5wdXNoKHRoaXMuc2V0VW5zdXBwb3J0ZWRDb21tYW5kcygpKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldENvbW1hbmRzVHlwZU5hbWUoY29tbWFuZHNNZW51KTtcblxuICAgIHJldHVybiBjb21tYW5kc01lbnU7XG4gIH1cblxuICB3aXRob3V0TWMgPSAoY29tbUlkOiBudW1iZXIpID0+IGNvbW1JZCAhPT0gMDtcblxuICBzZXRDb21tYW5kc1R5cGVOYW1lKGNvbW1hbmRzTWVudTogRGV2aWNlUmVtb3RlQ29tbWFuZFJlZkR0b1tdKSB7XG4gICAgZm9yIChjb25zdCBjb21tYW5kIG9mIGNvbW1hbmRzTWVudSkge1xuICAgICAgY29tbWFuZFsnY29tbWFuZFR5cGVOYW1lJ10gPSBDb21tYW5kc0xvY2FsaXphdGlvbktleVtSZW1vdGVDb21tYW5kVHlwZXNbY29tbWFuZC5jb21tYW5kVHlwZV1dO1xuICAgICAgaWYgKGNvbW1hbmQuY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZXRDb21tYW5kc1R5cGVOYW1lKGNvbW1hbmQuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFVuc3VwcG9ydGVkQ29tbWFuZHMoKTogRGV2aWNlUmVtb3RlQ29tbWFuZFJlZkR0byB7XG4gICAgY29uc3Qgbm9TdXBwb3J0Q29tbWFuZCA9IG5ldyBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvKCk7XG4gICAgbm9TdXBwb3J0Q29tbWFuZC5uYW1lID0gXCJOb1N1cHBvcnRlZENvbW1hbmRzXCI7XG4gICAgbm9TdXBwb3J0Q29tbWFuZC5pc0VuYWJsZWQgPSB0cnVlO1xuICAgIG5vU3VwcG9ydENvbW1hbmQuZGVzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24ubm9fc3VwcG9ydGVkX2NvbW1hbmQpO1xuICAgIG5vU3VwcG9ydENvbW1hbmQuc3RhdHVzID0gbnVsbDtcbiAgICBub1N1cHBvcnRDb21tYW5kLmljb24gPSBJY29uc0hlbHBlci5jbGVhcjtcbiAgICByZXR1cm4gbm9TdXBwb3J0Q29tbWFuZFxuICB9XG5cbiAgZ2V0RGV2aWNlQWNjZXNzTW9kZUNvbW1hbmRzKGNvbW1hbmQ6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8pOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvW10ge1xuICAgIGNvbnN0IGRldmljZUFjY2Vzc01vZGVDb21tYW5kcyA9IFtdO1xuXG4gICAgZGV2aWNlQWNjZXNzTW9kZUNvbW1hbmRzLnB1c2godGhpcy5jcmVhdGVDb21tYW5kKHtcbiAgICAgIGNvbW1hbmRUeXBlOiBjb21tYW5kPy5jb21tYW5kVHlwZSwgaWNvbkhlbHBlcjogSWNvbnNIZWxwZXIuYWNjZXNzX21vZGUsXG4gICAgICBuYW1lOiBEZXZpY2VBY3Rpdml0eU1vZGUuQWxsLnRvU3RyaW5nKCksIGRlc2NyaXB0aW9uOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uYWNjZXNzX21vZGVfYWxsKSxcbiAgICAgIGRldmljZVR5cGU6IGNvbW1hbmQ/LmRldmljZVR5cGUsIGlzRW5hYmxlZDogY29tbWFuZD8uaXNFbmFibGVkXG4gICAgfSkpO1xuICAgIGRldmljZUFjY2Vzc01vZGVDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLmFjY2Vzc19tb2RlLFxuICAgICAgbmFtZTogRGV2aWNlQWN0aXZpdHlNb2RlLk1vbnRobGllcy50b1N0cmluZygpLCBkZXNjcmlwdGlvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmFjY2Vzc19tb2RlX21vbnRobGllcyksXG4gICAgICBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZFxuICAgIH0pKTtcbiAgICBkZXZpY2VBY2Nlc3NNb2RlQ29tbWFuZHMucHVzaCh0aGlzLmNyZWF0ZUNvbW1hbmQoe1xuICAgICAgY29tbWFuZFR5cGU6IGNvbW1hbmQ/LmNvbW1hbmRUeXBlLCBpY29uSGVscGVyOiBJY29uc0hlbHBlci5hY2Nlc3NfbW9kZSxcbiAgICAgIG5hbWU6IERldmljZUFjdGl2aXR5TW9kZS5UcmFuc2llbnQudG9TdHJpbmcoKSwgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5hY2Nlc3NfbW9kZV90cmFuc2llbnQpLFxuICAgICAgZGV2aWNlVHlwZTogY29tbWFuZD8uZGV2aWNlVHlwZSwgaXNFbmFibGVkOiBjb21tYW5kPy5pc0VuYWJsZWRcbiAgICB9KSk7XG4gICAgZGV2aWNlQWNjZXNzTW9kZUNvbW1hbmRzLnB1c2godGhpcy5jcmVhdGVDb21tYW5kKHtcbiAgICAgIGNvbW1hbmRUeXBlOiBjb21tYW5kPy5jb21tYW5kVHlwZSwgaWNvbkhlbHBlcjogSWNvbnNIZWxwZXIuYWNjZXNzX21vZGUsXG4gICAgICBuYW1lOiBEZXZpY2VBY3Rpdml0eU1vZGUuTm9PbmUudG9TdHJpbmcoKSwgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5hY2Nlc3NfbW9kZV9ub3RfYWN0aXZlKSxcbiAgICAgIGRldmljZVR5cGU6IGNvbW1hbmQ/LmRldmljZVR5cGUsIGlzRW5hYmxlZDogY29tbWFuZD8uaXNFbmFibGVkXG4gICAgfSkpO1xuICAgIGNvbnN0IGZlYXR1cmVQZXJtaXNzaW9ucyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mZWF0dXJlUGVybWlzc2lvbnMpO1xuICAgIGNvbnN0IGZhY2lsaXR5ID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnNlbGVjdGVkKTtcbiAgICBjb25zdCBwYXJrQWxsb3dlZENvbW1hbmRzID0gT2JqZWN0LnZhbHVlcyhmYWNpbGl0eS5wZXJtaXNzaW9ucyB8fCB7fSkuZmlsdGVyKGYgPT4gaGFzVmFsdWUoZi5jb21tYW5kKSkubWFwKGYgPT4gZi5jb21tYW5kKTtcbiAgICBkZXZpY2VBY2Nlc3NNb2RlQ29tbWFuZHMucHVzaCh0aGlzLmNyZWF0ZUNvbW1hbmQoe1xuICAgICAgY29tbWFuZFR5cGU6IFJlbW90ZUNvbW1hbmRUeXBlcy5SZXNldERldmljZUFjY2Vzc01vZGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLmNhbmNlbCxcbiAgICAgIG5hbWU6IERldmljZUFjdGl2aXR5TW9kZS5SZXNldC50b1N0cmluZygpLCBkZXNjcmlwdGlvbjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmFjY2Vzc19tb2RlX3Jlc2V0KSxcbiAgICAgIGRldmljZVR5cGU6IGNvbW1hbmQ/LmRldmljZVR5cGUsIGlzRW5hYmxlZDogcGFya0FsbG93ZWRDb21tYW5kcy5pbmNsdWRlcyhSZW1vdGVDb21tYW5kVHlwZXMuQ2hhbmdlRGV2aWNlQWNjZXNzTW9kZSkgJiYgISFmZWF0dXJlUGVybWlzc2lvbnM/LmluY2x1ZGVzKFBlcm1pc3Npb25UeXBlLlJlc2V0RGV2aWNlQWNjZXNzTW9kZSlcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gZGV2aWNlQWNjZXNzTW9kZUNvbW1hbmRzO1xuICB9XG5cbiAgZ2V0SG9sZFJlbGF5Q29tbWFuZHMoY29tbWFuZDogRGV2aWNlUmVtb3RlQ29tbWFuZFJlZkR0byk6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG9bXSB7XG4gICAgY29uc3QgY2FuY2VsQWxsUmVhbHlzID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhbmNlbF9hbGxfcmVsYXlzKTtcbiAgICBjb25zdCByZWxheSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5yZWxheSk7XG4gICAgY29uc3QgaG9sZFJlbGF5Q29tbWFuZHMgPSBbXTtcbiAgICBjb21tYW5kLmlzRW5hYmxlZCA9IHRoaXMuaXNDb21tYW5kU3VwcG9ydGVkKGNvbW1hbmQpO1xuXG4gICAgaG9sZFJlbGF5Q29tbWFuZHMucHVzaCh0aGlzLmNyZWF0ZUNvbW1hbmQoe1xuICAgICAgY29tbWFuZFR5cGU6IGNvbW1hbmQ/LmNvbW1hbmRUeXBlLCBpY29uSGVscGVyOiBJY29uc0hlbHBlci5jYW5jZWwsIG5hbWU6IENBTkNFTF9BTExfUkVMQVlfVkFMVUUsXG4gICAgICBkZXNjcmlwdGlvbjogY2FuY2VsQWxsUmVhbHlzLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZFxuICAgIH0pKTtcbiAgICBob2xkUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5MiwgbmFtZTogUkVMQVlfMl9WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfMl9WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZCwgc3RhdHVzOiBEZXZpY2VSZW1vdGVDb21tYW5kU3RhdHVzLk9mZlxuICAgIH0pKTtcbiAgICBob2xkUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5MywgbmFtZTogUkVMQVlfM19WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfM19WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZCwgc3RhdHVzOiBEZXZpY2VSZW1vdGVDb21tYW5kU3RhdHVzLk9mZlxuICAgIH0pKTtcbiAgICBob2xkUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5NCwgbmFtZTogUkVMQVlfNF9WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfNF9WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZCwgc3RhdHVzOiBEZXZpY2VSZW1vdGVDb21tYW5kU3RhdHVzLk9mZlxuICAgIH0pKTtcblxuICAgIHJldHVybiBob2xkUmVsYXlDb21tYW5kcztcbiAgfVxuXG4gIGdldE9wZW5SZWxheUNvbW1hbmRzKGNvbW1hbmQ6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8pOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvW10ge1xuICAgIGNvbnN0IHJlbGF5ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnJlbGF5KTtcbiAgICBjb25zdCBvcGVuUmVsYXlDb21tYW5kcyA9IFtdO1xuICAgIGNvbW1hbmQuaXNFbmFibGVkID0gdGhpcy5pc0NvbW1hbmRTdXBwb3J0ZWQoY29tbWFuZCk7XG5cbiAgICBvcGVuUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5MiwgbmFtZTogUkVMQVlfMl9WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfMl9WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZFxuICAgIH0pKTtcbiAgICBvcGVuUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5MywgbmFtZTogUkVMQVlfM19WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfM19WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZFxuICAgIH0pKTtcbiAgICBvcGVuUmVsYXlDb21tYW5kcy5wdXNoKHRoaXMuY3JlYXRlQ29tbWFuZCh7XG4gICAgICBjb21tYW5kVHlwZTogY29tbWFuZD8uY29tbWFuZFR5cGUsIGljb25IZWxwZXI6IEljb25zSGVscGVyLnJlbGF5NCwgbmFtZTogUkVMQVlfNF9WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtyZWxheX0gIyR7UkVMQVlfNF9WQUxVRX1gLCBkZXZpY2VUeXBlOiBjb21tYW5kPy5kZXZpY2VUeXBlLCBpc0VuYWJsZWQ6IGNvbW1hbmQ/LmlzRW5hYmxlZFxuICAgIH0pKTtcblxuICAgIHJldHVybiBvcGVuUmVsYXlDb21tYW5kcztcbiAgfVxuXG4gIGNyZWF0ZUNvbW1hbmQobWVudUNvbW1hbmRJdGVtOiBNZW51Q29tbWFuZEl0ZW0pOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvIHtcbiAgICByZXR1cm4gbmV3IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8oe1xuICAgICAgaWNvbjogbWVudUNvbW1hbmRJdGVtLmljb25IZWxwZXIsXG4gICAgICBjb21tYW5kVHlwZTogbWVudUNvbW1hbmRJdGVtLmNvbW1hbmRUeXBlLFxuICAgICAgbmFtZTogbWVudUNvbW1hbmRJdGVtLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogbWVudUNvbW1hbmRJdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgZGV2aWNlVHlwZTogbWVudUNvbW1hbmRJdGVtLmRldmljZVR5cGUsXG4gICAgICBjaGlsZHJlbjogbnVsbCxcbiAgICAgIGlzRW5hYmxlZDogbWVudUNvbW1hbmRJdGVtLmlzRW5hYmxlZCxcbiAgICAgIHN0YXR1czogbWVudUNvbW1hbmRJdGVtLnN0YXR1cyB8fCBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgaXNDb21tYW5kU3VwcG9ydGVkKGNvbW1hbmQ6IERldmljZVJlbW90ZUNvbW1hbmRSZWZEdG8pIHtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIGNvbnN0IHNwYXJrVmVyc2lvbiA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoKHsgc21hcnRwYXJrOiB7IHZlcnNpb25zIH0gfSkgPT4gdmVyc2lvbnNbZ3VpZF0pO1xuICAgIHZhciBpc0VuYWJsZWQgPSBjb21tYW5kLmlzRW5hYmxlZDtcbiAgICBpZiAoaXNWZXJzaW9uR3JlYXRlclRoYW5FcXVhbChzcGFya1ZlcnNpb24sIFZFUlNJT05fOF8yXzApKSB7XG4gICAgICAvLyBsb2dpYyBvY2N1cnMgb24gc2VydmVyXG4gICAgfSBlbHNlIGlmIChpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsKHNwYXJrVmVyc2lvbiwgVkVSU0lPTl84XzFfMCkpIHtcbiAgICAgIC8vIGxvZ2ljIGlzIGRldGVybWluZSBhY2NvcmRpbmcgdG8gdmVyc2lvblxuICAgICAgaXNFbmFibGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBpc0VuYWJsZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -128575,7 +128575,14 @@ class DeviceRemoteCommandsService {
|
|
|
128575
128575
|
this.translateService = translateService;
|
|
128576
128576
|
this.withoutMc = (commId) => commId !== 0;
|
|
128577
128577
|
}
|
|
128578
|
-
getRemoteCommandsOrdered(deviceType, commId) {
|
|
128578
|
+
getRemoteCommandsOrdered(deviceType, commId, isVirtual = false) {
|
|
128579
|
+
// Virtual (gateless) devices have no physical hardware to command — like MC,
|
|
128580
|
+
// they only ever get the NoSupportedCommands placeholder
|
|
128581
|
+
if (isVirtual) {
|
|
128582
|
+
const virtualCommandsMenu = [this.setUnsupportedCommands()];
|
|
128583
|
+
this.setCommandsTypeName(virtualCommandsMenu);
|
|
128584
|
+
return virtualCommandsMenu;
|
|
128585
|
+
}
|
|
128579
128586
|
const facility = this.store.selectSnapshot(FacilityState.selected);
|
|
128580
128587
|
const parkAllowedCommands = Object.values(facility.permissions || {}).filter(f => hasValue(f.command)).map(f => f.command);
|
|
128581
128588
|
const gateStateCommands = this.createCommand({
|