@tuki-io/tuki-widgets 0.0.219-dev.60 → 0.0.219-dev.62
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/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +1 -1
- package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +6 -6
- package/esm2020/workspaces/src/services/workspaces.service.mjs +3 -1
- package/esm2020/workspaces/src/workspaces.component.mjs +21 -5
- package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +27 -10
- package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +27 -9
- package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
- package/package.json +1 -1
- package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +1 -1
- package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +2 -2
- package/workspaces/src/workspaces.component.d.ts +2 -1
|
@@ -93,6 +93,8 @@ function mergeCucmAndWebexWorkspaces(cucmWorkspaces, webexItems, webexWorkspaces
|
|
|
93
93
|
...cucmWorkspace,
|
|
94
94
|
...webexWorkspace,
|
|
95
95
|
displayName: cucmWorkspace.displayName,
|
|
96
|
+
location: webexWorkspace.location || cucmWorkspace.location,
|
|
97
|
+
siteId: webexWorkspace.siteId ?? cucmWorkspace.siteId,
|
|
96
98
|
device: {
|
|
97
99
|
...mergeDevices(cucmWorkspace.device, webexWorkspace.device),
|
|
98
100
|
name: cucmWorkspace.device.name,
|
|
@@ -147,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
147
149
|
providedIn: 'root'
|
|
148
150
|
}]
|
|
149
151
|
}], ctorParameters: function () { return [{ type: i1.APIService }]; } });
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL3NlcnZpY2VzL3dvcmtzcGFjZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUVyRCxTQUFTLGFBQWEsQ0FBQyxRQUFhO0lBQ2xDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDeEUsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLGtCQUFpQztJQUNqRCxJQUFJLENBQUMsa0JBQWtCLEVBQUU7UUFDdkIsT0FBTyxhQUFhLENBQUM7S0FDdEI7SUFDRCxPQUFPLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDL0UsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFBdUIsRUFBRSxLQUFhO0lBQ2hFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRTtRQUNqQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELEVBQUUsRUFBRSxlQUFlLENBQUMsUUFBUTtZQUM1QixJQUFJLEVBQUUsUUFBaUI7WUFDdkIsS0FBSyxFQUFFLGVBQWUsQ0FBQyxLQUFLLElBQUksZUFBZSxDQUFDLEdBQUc7WUFDbkQsS0FBSyxFQUFFLGVBQWUsQ0FBQyxLQUFLO1lBQzVCLEdBQUcsRUFBRSxlQUFlLENBQUMsR0FBRztTQUN6QixDQUFDLENBQUMsQ0FBQztLQUNMO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMzQixJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLGNBQWMsSUFBSSxTQUFTLENBQUM7SUFDdEUsT0FBTyxDQUFDO1lBQ04sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLFVBQVUsS0FBSyxFQUFFO1lBQ3ZFLElBQUksRUFBRSxRQUFpQjtZQUN2QixLQUFLLEVBQUUsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksZ0JBQWdCO1lBQy9DLEtBQUs7WUFDTCxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN4RSxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsSUFBdUIsRUFBRSxLQUFhLEVBQUUsTUFBZTtJQUMxRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzNCLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFFOUUsT0FBTztRQUNMLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLGFBQWEsS0FBSyxFQUFFO1FBQzlGLFdBQVcsRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksZ0JBQWdCO1FBQzlELFNBQVMsRUFBRSxNQUFNLENBQUMsY0FBYyxJQUFJLFNBQVM7UUFDN0MsUUFBUSxFQUFFLElBQUk7UUFDZCxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUU7UUFDckUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUk7UUFDN0IsT0FBTyxFQUFFLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7UUFDeEMsVUFBVSxFQUFFLFNBQVM7UUFDckIsY0FBYyxFQUFFLG9CQUFvQjtRQUNwQyxnQkFBZ0IsRUFBRSxhQUFhO1FBQy9CLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1FBQzNDLFdBQVcsRUFBRSxNQUFNLENBQUMsa0JBQWtCLElBQUksb0JBQW9CO1FBQzlELE1BQU07UUFDTixRQUFRLEVBQUUsS0FBSztRQUNmLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUN0RCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLENBQXNCLEVBQUUsQ0FBc0I7SUFDbEUsT0FBTztRQUNMLEdBQUcsQ0FBQztRQUNKLEdBQUcsQ0FBQztRQUNKLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNO1FBQzVCLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxTQUFTO0tBQ3RDLENBQUM7QUFDSixDQUFDO0FBR0QsU0FBUyxRQUFRLENBQUMsS0FBZ0M7SUFDaEQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbEUsQ0FBQztBQUVELFNBQVMsMkJBQTJCLENBQUMsY0FBMkIsRUFBRSxVQUErQixFQUFFLGVBQTRCO0lBQzdILE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUNqRCxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNuQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUNyRCxNQUFNLFVBQVUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7YUFDL0QsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVCLE9BQU87U0FDUjtRQUVELE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFFLENBQUM7UUFDbEQsY0FBYyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHO1lBQ2xCLEdBQUcsYUFBYTtZQUNoQixHQUFHLGNBQWM7WUFDakIsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXO1lBQ3RDLE1BQU0sRUFBRTtnQkFDTixHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUM7Z0JBQzVELElBQUksRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQy9CLE9BQU8sRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU87YUFDdEM7WUFDRCxRQUFRLEVBQUUsSUFBSTtZQUNkLGNBQWMsRUFBRSxhQUFhLENBQUMsY0FBYztTQUM3QyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBSzVCLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFJLENBQUM7SUFFL0MsZUFBZSxDQUFDLFVBQTJCO1FBQ3pDLE1BQU0sVUFBVSxHQUEyQjtZQUN6QyxJQUFJLEVBQUUsZUFBZTtZQUNyQixVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUNqQyxJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRTtZQUMvQixJQUFJLEVBQUUsR0FBRztTQUNWLENBQUM7UUFFRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUMxRCxHQUFHLFVBQVU7WUFDYixhQUFhLEVBQUUsS0FBSztZQUNwQixhQUFhLEVBQUUsTUFBTTtTQUN0QixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUMzRCxHQUFHLFVBQVU7WUFDYixhQUFhLEVBQUUsT0FBTztTQUN2QixDQUFDLENBQUM7UUFFSCxPQUFPLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsWUFBWSxDQUF1QixDQUFDO1lBQ3JFLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQXVCLENBQUM7WUFDdkUsTUFBTSxVQUFVLEdBQUcsV0FBVyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDL0MsTUFBTSxjQUFjLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekcsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDekYsTUFBTSxVQUFVLEdBQUcsMkJBQTJCLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUU1RixPQUFPO2dCQUNMLFVBQVU7Z0JBQ1YsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNO2FBQ3pCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7K0dBckNVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi9hcHAuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4vYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2UsIFdvcmtzcGFjZURldmljZSwgV29ya3NwYWNlTGlzdEl0ZW0sIFdvcmtzcGFjZXNQYWdlLCBXb3Jrc3BhY2VzUmVzcG9uc2UsIFdvcmtzcGFjZVN0YXR1cyB9IGZyb20gJy4uL3R5cGVzL3dvcmtzcGFjZSc7XHJcbmltcG9ydCB7IHdpdGhvdXRTZXAgfSBmcm9tICcuLi91dGlscy93b3Jrc3BhY2UtbmFtZSc7XHJcblxyXG5mdW5jdGlvbiBwYXJzZVJlc3BvbnNlKHJlc3BvbnNlOiBhbnkpOiBhbnkge1xyXG4gIHJldHVybiB0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShyZXNwb25zZSkgOiByZXNwb25zZTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9TdGF0dXMocHJvdmlzaW9uaW5nU3RhdHVzOiBzdHJpbmcgfCBudWxsKTogV29ya3NwYWNlU3RhdHVzIHtcclxuICBpZiAoIXByb3Zpc2lvbmluZ1N0YXR1cykge1xyXG4gICAgcmV0dXJuICd1bmF2YWlsYWJsZSc7XHJcbiAgfVxyXG4gIHJldHVybiBwcm92aXNpb25pbmdTdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ2FjdGl2ZScgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZSc7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvV29ya3NwYWNlRGV2aWNlcyhpdGVtOiBXb3Jrc3BhY2VMaXN0SXRlbSwgaW5kZXg6IG51bWJlcik6IFdvcmtzcGFjZURldmljZVtdIHtcclxuICBpZiAoaXRlbS53b3Jrc3BhY2VEZXZpY2VzPy5sZW5ndGgpIHtcclxuICAgIHJldHVybiBpdGVtLndvcmtzcGFjZURldmljZXMubWFwKHdvcmtzcGFjZURldmljZSA9PiAoe1xyXG4gICAgICBpZDogd29ya3NwYWNlRGV2aWNlLmRldmljZUlkLFxyXG4gICAgICBraW5kOiAnZGV2aWNlJyBhcyBjb25zdCxcclxuICAgICAgbGFiZWw6IHdvcmtzcGFjZURldmljZS5tb2RlbCB8fCB3b3Jrc3BhY2VEZXZpY2UubWFjLFxyXG4gICAgICBtb2RlbDogd29ya3NwYWNlRGV2aWNlLm1vZGVsLFxyXG4gICAgICBtYWM6IHdvcmtzcGFjZURldmljZS5tYWMsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBkZXZpY2UgPSBpdGVtLmRldmljZTtcclxuICBpZiAoIWRldmljZSkge1xyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgbW9kZWwgPSBkZXZpY2UuZGV2aWNlVHlwZSB8fCBkZXZpY2UudXNlckRldmljZVR5cGUgfHwgdW5kZWZpbmVkO1xyXG4gIHJldHVybiBbe1xyXG4gICAgaWQ6IGRldmljZS5wa2lkIHx8IGRldmljZS53ZWJleFVVSUQgfHwgZGV2aWNlLm5hbWUgfHwgYGRldmljZS0ke2luZGV4fWAsXHJcbiAgICBraW5kOiAnZGV2aWNlJyBhcyBjb25zdCxcclxuICAgIGxhYmVsOiBtb2RlbCB8fCBkZXZpY2UubmFtZSB8fCAnVW5uYW1lZCBkZXZpY2UnLFxyXG4gICAgbW9kZWwsXHJcbiAgICBtYWM6IC9eU0VQL2kudGVzdChkZXZpY2UubmFtZSB8fCAnJykgPyBkZXZpY2UubmFtZS5zbGljZSgzKSA6IHVuZGVmaW5lZCxcclxuICB9XTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9Xb3Jrc3BhY2UoaXRlbTogV29ya3NwYWNlTGlzdEl0ZW0sIGluZGV4OiBudW1iZXIsIGlzQ3VjbTogYm9vbGVhbik6IFdvcmtzcGFjZSB7XHJcbiAgY29uc3QgZGV2aWNlID0gaXRlbS5kZXZpY2U7XHJcbiAgY29uc3QgZmlyc3REaXJlY3RvcnlOdW1iZXIgPSBkZXZpY2UuYXNzb2NpYXRlZEROcz8uWzBdPy5kaXJlY3RvcnlOdW1iZXIgPz8gJyc7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBpZDogZGV2aWNlLnBraWQgfHwgaXRlbS53b3Jrc3BhY2VEZXZpY2VzPy5bMF0/LmRldmljZUlkIHx8IGRldmljZS5uYW1lIHx8IGB3b3Jrc3BhY2UtJHtpbmRleH1gLFxyXG4gICAgZGlzcGxheU5hbWU6IGRldmljZS5uZXdOYW1lIHx8IGRldmljZS5uYW1lIHx8ICdVbm5hbWVkIGRldmljZScsXHJcbiAgICB0eXBlTGFiZWw6IGRldmljZS51c2VyRGV2aWNlVHlwZSB8fCAnTm8gdHlwZScsXHJcbiAgICBjYXBhY2l0eTogbnVsbCxcclxuICAgIGxvY2F0aW9uOiBpdGVtLnNpdGU/Lm5hbWUgfHwgZGV2aWNlLnNpdGVOYW1lIHx8IGRldmljZS5sb2NhdGlvbiB8fCAnJyxcclxuICAgIHNpdGVJZDogaXRlbS5zaXRlPy5pZCA/PyBudWxsLFxyXG4gICAgZGV2aWNlczogdG9Xb3Jrc3BhY2VEZXZpY2VzKGl0ZW0sIGluZGV4KSxcclxuICAgIHNjaGVkdWxpbmc6ICdOb3Qgc2V0JyxcclxuICAgIGNhbGxpbmdMaWNlbnNlOiBmaXJzdERpcmVjdG9yeU51bWJlcixcclxuICAgIHByb3Zpc2lvbmluZ1R5cGU6ICdPbi1wcmVtaXNlcycsXHJcbiAgICBzdGF0dXM6IHRvU3RhdHVzKGRldmljZS5wcm92aXNpb25pbmdTdGF0dXMpLFxyXG4gICAgc3RhdHVzTGFiZWw6IGRldmljZS5wcm92aXNpb25pbmdTdGF0dXMgfHwgJ1N0YXR1cyB1bmF2YWlsYWJsZScsXHJcbiAgICBkZXZpY2UsXHJcbiAgICBpc0h5YnJpZDogZmFsc2UsXHJcbiAgICBjdWNtRGV2aWNlTmFtZTogaXNDdWNtID8gKGRldmljZS5uYW1lIHx8IG51bGwpIDogbnVsbCxcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXJnZURldmljZXMoYTogV29ya3NwYWNlWydkZXZpY2UnXSwgYjogV29ya3NwYWNlWydkZXZpY2UnXSk6IFdvcmtzcGFjZVsnZGV2aWNlJ10ge1xyXG4gIHJldHVybiB7XHJcbiAgICAuLi5hLFxyXG4gICAgLi4uYixcclxuICAgIGN1Y21JZDogYi5jdWNtSWQgPz8gYS5jdWNtSWQsXHJcbiAgICB3ZWJleFVVSUQ6IGIud2ViZXhVVUlEID8/IGEud2ViZXhVVUlELFxyXG4gIH07XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiB0b01hY0tleSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHZhbHVlID8gd2l0aG91dFNlcCh2YWx1ZSkucmVwbGFjZSgvW14wLTlBLUZdL2csICcnKSA6ICcnO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXJnZUN1Y21BbmRXZWJleFdvcmtzcGFjZXMoY3VjbVdvcmtzcGFjZXM6IFdvcmtzcGFjZVtdLCB3ZWJleEl0ZW1zOiBXb3Jrc3BhY2VMaXN0SXRlbVtdLCB3ZWJleFdvcmtzcGFjZXM6IFdvcmtzcGFjZVtdKTogV29ya3NwYWNlW10ge1xyXG4gIGNvbnN0IHJlc3VsdCA9IFsuLi5jdWNtV29ya3NwYWNlc107XHJcbiAgY29uc3QgY3VjbUluZGV4QnlNYWMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xyXG4gIGN1Y21Xb3Jrc3BhY2VzLmZvckVhY2goKHdvcmtzcGFjZSwgaW5kZXgpID0+IHtcclxuICAgIGNvbnN0IGtleSA9IHRvTWFjS2V5KHdvcmtzcGFjZS5kZXZpY2UubmFtZSk7XHJcbiAgICBpZiAoa2V5ICYmICFjdWNtSW5kZXhCeU1hYy5oYXMoa2V5KSkge1xyXG4gICAgICBjdWNtSW5kZXhCeU1hYy5zZXQoa2V5LCBpbmRleCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHdlYmV4V29ya3NwYWNlcy5mb3JFYWNoKCh3ZWJleFdvcmtzcGFjZSwgd2ViZXhJbmRleCkgPT4ge1xyXG4gICAgY29uc3QgbWF0Y2hlZE1hYyA9ICh3ZWJleEl0ZW1zW3dlYmV4SW5kZXhdLndvcmtzcGFjZURldmljZXMgfHwgW10pXHJcbiAgICAgIC5tYXAod29ya3NwYWNlRGV2aWNlID0+IHRvTWFjS2V5KHdvcmtzcGFjZURldmljZS5tYWMpKVxyXG4gICAgICAuZmluZChrZXkgPT4ga2V5ICYmIGN1Y21JbmRleEJ5TWFjLmhhcyhrZXkpKTtcclxuXHJcbiAgICBpZiAoIW1hdGNoZWRNYWMpIHtcclxuICAgICAgcmVzdWx0LnB1c2god2ViZXhXb3Jrc3BhY2UpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3VjbUluZGV4ID0gY3VjbUluZGV4QnlNYWMuZ2V0KG1hdGNoZWRNYWMpITtcclxuICAgIGN1Y21JbmRleEJ5TWFjLmRlbGV0ZShtYXRjaGVkTWFjKTtcclxuICAgIGNvbnN0IGN1Y21Xb3Jrc3BhY2UgPSByZXN1bHRbY3VjbUluZGV4XTtcclxuICAgIHJlc3VsdFtjdWNtSW5kZXhdID0ge1xyXG4gICAgICAuLi5jdWNtV29ya3NwYWNlLFxyXG4gICAgICAuLi53ZWJleFdvcmtzcGFjZSxcclxuICAgICAgZGlzcGxheU5hbWU6IGN1Y21Xb3Jrc3BhY2UuZGlzcGxheU5hbWUsXHJcbiAgICAgIGRldmljZToge1xyXG4gICAgICAgIC4uLm1lcmdlRGV2aWNlcyhjdWNtV29ya3NwYWNlLmRldmljZSwgd2ViZXhXb3Jrc3BhY2UuZGV2aWNlKSxcclxuICAgICAgICBuYW1lOiBjdWNtV29ya3NwYWNlLmRldmljZS5uYW1lLFxyXG4gICAgICAgIG5ld05hbWU6IGN1Y21Xb3Jrc3BhY2UuZGV2aWNlLm5ld05hbWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGlzSHlicmlkOiB0cnVlLFxyXG4gICAgICBjdWNtRGV2aWNlTmFtZTogY3VjbVdvcmtzcGFjZS5jdWNtRGV2aWNlTmFtZSxcclxuICAgIH07XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmNvbnN0IEZFVENIX0FMTF9TSVpFID0gOTk5OTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZXNTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UpIHsgfVxyXG5cclxuICBmZXRjaFdvcmtzcGFjZXMoY3VzdG9tZXJJZDogc3RyaW5nIHwgbnVtYmVyKTogT2JzZXJ2YWJsZTxXb3Jrc3BhY2VzUGFnZT4ge1xyXG4gICAgY29uc3QgYmFzZVBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgdHlwZTogJ09SUEhBTl9ERVZJQ0UnLFxyXG4gICAgICBjdXN0b21lcmlkOiBjdXN0b21lcklkLnRvU3RyaW5nKCksXHJcbiAgICAgIHNpemU6IEZFVENIX0FMTF9TSVpFLnRvU3RyaW5nKCksXHJcbiAgICAgIHBhZ2U6ICcwJyxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY3VjbSQgPSB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLldPUktTUEFDRVMuR0VUX0FMTCwge1xyXG4gICAgICAuLi5iYXNlUGFyYW1zLFxyXG4gICAgICAnZGV2aWNlLW5hbWUnOiAnU0VQJyxcclxuICAgICAgcHJvdmlzaW9uVHlwZTogJ0NVQ00nLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgd2ViZXgkID0gdGhpcy5hcGlTZXJ2aWNlLmZldGNoKEFQSS5XT1JLU1BBQ0VTLkdFVF9BTEwsIHtcclxuICAgICAgLi4uYmFzZVBhcmFtcyxcclxuICAgICAgcHJvdmlzaW9uVHlwZTogJ1dFQkVYJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JrSm9pbihbY3VjbSQsIHdlYmV4JF0pLnBpcGUoXHJcbiAgICAgIG1hcCgoW2N1Y21SZXNwb25zZSwgd2ViZXhSZXNwb25zZV0pID0+IHtcclxuICAgICAgICBjb25zdCBjdWNtUGFyc2VkID0gcGFyc2VSZXNwb25zZShjdWNtUmVzcG9uc2UpIGFzIFdvcmtzcGFjZXNSZXNwb25zZTtcclxuICAgICAgICBjb25zdCB3ZWJleFBhcnNlZCA9IHBhcnNlUmVzcG9uc2Uod2ViZXhSZXNwb25zZSkgYXMgV29ya3NwYWNlc1Jlc3BvbnNlO1xyXG4gICAgICAgIGNvbnN0IHdlYmV4SXRlbXMgPSB3ZWJleFBhcnNlZD8ucGFnZURhdGEgfHwgW107XHJcbiAgICAgICAgY29uc3QgY3VjbVdvcmtzcGFjZXMgPSAoY3VjbVBhcnNlZD8ucGFnZURhdGEgfHwgW10pLm1hcCgoaXRlbSwgaW5kZXgpID0+IHRvV29ya3NwYWNlKGl0ZW0sIGluZGV4LCB0cnVlKSk7XHJcbiAgICAgICAgY29uc3Qgd2ViZXhXb3Jrc3BhY2VzID0gd2ViZXhJdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB0b1dvcmtzcGFjZShpdGVtLCBpbmRleCwgZmFsc2UpKTtcclxuICAgICAgICBjb25zdCB3b3Jrc3BhY2VzID0gbWVyZ2VDdWNtQW5kV2ViZXhXb3Jrc3BhY2VzKGN1Y21Xb3Jrc3BhY2VzLCB3ZWJleEl0ZW1zLCB3ZWJleFdvcmtzcGFjZXMpO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgd29ya3NwYWNlcyxcclxuICAgICAgICAgIHRvdGFsOiB3b3Jrc3BhY2VzLmxlbmd0aCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL3NlcnZpY2VzL3dvcmtzcGFjZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUVyRCxTQUFTLGFBQWEsQ0FBQyxRQUFhO0lBQ2xDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDeEUsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLGtCQUFpQztJQUNqRCxJQUFJLENBQUMsa0JBQWtCLEVBQUU7UUFDdkIsT0FBTyxhQUFhLENBQUM7S0FDdEI7SUFDRCxPQUFPLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDL0UsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFBdUIsRUFBRSxLQUFhO0lBQ2hFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRTtRQUNqQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELEVBQUUsRUFBRSxlQUFlLENBQUMsUUFBUTtZQUM1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RixPQUFPO2dCQUNMLFVBQVU7Z0JBQ1YsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNO2FBQ3pCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7K0dBckNVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi9hcHAuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4vYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2UsIFdvcmtzcGFjZURldmljZSwgV29ya3NwYWNlTGlzdEl0ZW0sIFdvcmtzcGFjZXNQYWdlLCBXb3Jrc3BhY2VzUmVzcG9uc2UsIFdvcmtzcGFjZVN0YXR1cyB9IGZyb20gJy4uL3R5cGVzL3dvcmtzcGFjZSc7XHJcbmltcG9ydCB7IHdpdGhvdXRTZXAgfSBmcm9tICcuLi91dGlscy93b3Jrc3BhY2UtbmFtZSc7XHJcblxyXG5mdW5jdGlvbiBwYXJzZVJlc3BvbnNlKHJlc3BvbnNlOiBhbnkpOiBhbnkge1xyXG4gIHJldHVybiB0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShyZXNwb25zZSkgOiByZXNwb25zZTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9TdGF0dXMocHJvdmlzaW9uaW5nU3RhdHVzOiBzdHJpbmcgfCBudWxsKTogV29ya3NwYWNlU3RhdHVzIHtcclxuICBpZiAoIXByb3Zpc2lvbmluZ1N0YXR1cykge1xyXG4gICAgcmV0dXJuICd1bmF2YWlsYWJsZSc7XHJcbiAgfVxyXG4gIHJldHVybiBwcm92aXNpb25pbmdTdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ2FjdGl2ZScgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZSc7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvV29ya3NwYWNlRGV2aWNlcyhpdGVtOiBXb3Jrc3BhY2VMaXN0SXRlbSwgaW5kZXg6IG51bWJlcik6IFdvcmtzcGFjZURldmljZVtdIHtcclxuICBpZiAoaXRlbS53b3Jrc3BhY2VEZXZpY2VzPy5sZW5ndGgpIHtcclxuICAgIHJldHVybiBpdGVtLndvcmtzcGFjZURldmljZXMubWFwKHdvcmtzcGFjZURldmljZSA9PiAoe1xyXG4gICAgICBpZDogd29ya3NwYWNlRGV2aWNlLmRldmljZUlkLFxyXG4gICAgICBraW5kOiAnZGV2aWNlJyBhcyBjb25zdCxcclxuICAgICAgbGFiZWw6IHdvcmtzcGFjZURldmljZS5tb2RlbCB8fCB3b3Jrc3BhY2VEZXZpY2UubWFjLFxyXG4gICAgICBtb2RlbDogd29ya3NwYWNlRGV2aWNlLm1vZGVsLFxyXG4gICAgICBtYWM6IHdvcmtzcGFjZURldmljZS5tYWMsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBkZXZpY2UgPSBpdGVtLmRldmljZTtcclxuICBpZiAoIWRldmljZSkge1xyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgbW9kZWwgPSBkZXZpY2UuZGV2aWNlVHlwZSB8fCBkZXZpY2UudXNlckRldmljZVR5cGUgfHwgdW5kZWZpbmVkO1xyXG4gIHJldHVybiBbe1xyXG4gICAgaWQ6IGRldmljZS5wa2lkIHx8IGRldmljZS53ZWJleFVVSUQgfHwgZGV2aWNlLm5hbWUgfHwgYGRldmljZS0ke2luZGV4fWAsXHJcbiAgICBraW5kOiAnZGV2aWNlJyBhcyBjb25zdCxcclxuICAgIGxhYmVsOiBtb2RlbCB8fCBkZXZpY2UubmFtZSB8fCAnVW5uYW1lZCBkZXZpY2UnLFxyXG4gICAgbW9kZWwsXHJcbiAgICBtYWM6IC9eU0VQL2kudGVzdChkZXZpY2UubmFtZSB8fCAnJykgPyBkZXZpY2UubmFtZS5zbGljZSgzKSA6IHVuZGVmaW5lZCxcclxuICB9XTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9Xb3Jrc3BhY2UoaXRlbTogV29ya3NwYWNlTGlzdEl0ZW0sIGluZGV4OiBudW1iZXIsIGlzQ3VjbTogYm9vbGVhbik6IFdvcmtzcGFjZSB7XHJcbiAgY29uc3QgZGV2aWNlID0gaXRlbS5kZXZpY2U7XHJcbiAgY29uc3QgZmlyc3REaXJlY3RvcnlOdW1iZXIgPSBkZXZpY2UuYXNzb2NpYXRlZEROcz8uWzBdPy5kaXJlY3RvcnlOdW1iZXIgPz8gJyc7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBpZDogZGV2aWNlLnBraWQgfHwgaXRlbS53b3Jrc3BhY2VEZXZpY2VzPy5bMF0/LmRldmljZUlkIHx8IGRldmljZS5uYW1lIHx8IGB3b3Jrc3BhY2UtJHtpbmRleH1gLFxyXG4gICAgZGlzcGxheU5hbWU6IGRldmljZS5uZXdOYW1lIHx8IGRldmljZS5uYW1lIHx8ICdVbm5hbWVkIGRldmljZScsXHJcbiAgICB0eXBlTGFiZWw6IGRldmljZS51c2VyRGV2aWNlVHlwZSB8fCAnTm8gdHlwZScsXHJcbiAgICBjYXBhY2l0eTogbnVsbCxcclxuICAgIGxvY2F0aW9uOiBpdGVtLnNpdGU/Lm5hbWUgfHwgZGV2aWNlLnNpdGVOYW1lIHx8IGRldmljZS5sb2NhdGlvbiB8fCAnJyxcclxuICAgIHNpdGVJZDogaXRlbS5zaXRlPy5pZCA/PyBudWxsLFxyXG4gICAgZGV2aWNlczogdG9Xb3Jrc3BhY2VEZXZpY2VzKGl0ZW0sIGluZGV4KSxcclxuICAgIHNjaGVkdWxpbmc6ICdOb3Qgc2V0JyxcclxuICAgIGNhbGxpbmdMaWNlbnNlOiBmaXJzdERpcmVjdG9yeU51bWJlcixcclxuICAgIHByb3Zpc2lvbmluZ1R5cGU6ICdPbi1wcmVtaXNlcycsXHJcbiAgICBzdGF0dXM6IHRvU3RhdHVzKGRldmljZS5wcm92aXNpb25pbmdTdGF0dXMpLFxyXG4gICAgc3RhdHVzTGFiZWw6IGRldmljZS5wcm92aXNpb25pbmdTdGF0dXMgfHwgJ1N0YXR1cyB1bmF2YWlsYWJsZScsXHJcbiAgICBkZXZpY2UsXHJcbiAgICBpc0h5YnJpZDogZmFsc2UsXHJcbiAgICBjdWNtRGV2aWNlTmFtZTogaXNDdWNtID8gKGRldmljZS5uYW1lIHx8IG51bGwpIDogbnVsbCxcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXJnZURldmljZXMoYTogV29ya3NwYWNlWydkZXZpY2UnXSwgYjogV29ya3NwYWNlWydkZXZpY2UnXSk6IFdvcmtzcGFjZVsnZGV2aWNlJ10ge1xyXG4gIHJldHVybiB7XHJcbiAgICAuLi5hLFxyXG4gICAgLi4uYixcclxuICAgIGN1Y21JZDogYi5jdWNtSWQgPz8gYS5jdWNtSWQsXHJcbiAgICB3ZWJleFVVSUQ6IGIud2ViZXhVVUlEID8/IGEud2ViZXhVVUlELFxyXG4gIH07XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiB0b01hY0tleSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHZhbHVlID8gd2l0aG91dFNlcCh2YWx1ZSkucmVwbGFjZSgvW14wLTlBLUZdL2csICcnKSA6ICcnO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXJnZUN1Y21BbmRXZWJleFdvcmtzcGFjZXMoY3VjbVdvcmtzcGFjZXM6IFdvcmtzcGFjZVtdLCB3ZWJleEl0ZW1zOiBXb3Jrc3BhY2VMaXN0SXRlbVtdLCB3ZWJleFdvcmtzcGFjZXM6IFdvcmtzcGFjZVtdKTogV29ya3NwYWNlW10ge1xyXG4gIGNvbnN0IHJlc3VsdCA9IFsuLi5jdWNtV29ya3NwYWNlc107XHJcbiAgY29uc3QgY3VjbUluZGV4QnlNYWMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xyXG4gIGN1Y21Xb3Jrc3BhY2VzLmZvckVhY2goKHdvcmtzcGFjZSwgaW5kZXgpID0+IHtcclxuICAgIGNvbnN0IGtleSA9IHRvTWFjS2V5KHdvcmtzcGFjZS5kZXZpY2UubmFtZSk7XHJcbiAgICBpZiAoa2V5ICYmICFjdWNtSW5kZXhCeU1hYy5oYXMoa2V5KSkge1xyXG4gICAgICBjdWNtSW5kZXhCeU1hYy5zZXQoa2V5LCBpbmRleCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHdlYmV4V29ya3NwYWNlcy5mb3JFYWNoKCh3ZWJleFdvcmtzcGFjZSwgd2ViZXhJbmRleCkgPT4ge1xyXG4gICAgY29uc3QgbWF0Y2hlZE1hYyA9ICh3ZWJleEl0ZW1zW3dlYmV4SW5kZXhdLndvcmtzcGFjZURldmljZXMgfHwgW10pXHJcbiAgICAgIC5tYXAod29ya3NwYWNlRGV2aWNlID0+IHRvTWFjS2V5KHdvcmtzcGFjZURldmljZS5tYWMpKVxyXG4gICAgICAuZmluZChrZXkgPT4ga2V5ICYmIGN1Y21JbmRleEJ5TWFjLmhhcyhrZXkpKTtcclxuXHJcbiAgICBpZiAoIW1hdGNoZWRNYWMpIHtcclxuICAgICAgcmVzdWx0LnB1c2god2ViZXhXb3Jrc3BhY2UpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3VjbUluZGV4ID0gY3VjbUluZGV4QnlNYWMuZ2V0KG1hdGNoZWRNYWMpITtcclxuICAgIGN1Y21JbmRleEJ5TWFjLmRlbGV0ZShtYXRjaGVkTWFjKTtcclxuICAgIGNvbnN0IGN1Y21Xb3Jrc3BhY2UgPSByZXN1bHRbY3VjbUluZGV4XTtcclxuICAgIHJlc3VsdFtjdWNtSW5kZXhdID0ge1xyXG4gICAgICAuLi5jdWNtV29ya3NwYWNlLFxyXG4gICAgICAuLi53ZWJleFdvcmtzcGFjZSxcclxuICAgICAgZGlzcGxheU5hbWU6IGN1Y21Xb3Jrc3BhY2UuZGlzcGxheU5hbWUsXHJcbiAgICAgIGxvY2F0aW9uOiB3ZWJleFdvcmtzcGFjZS5sb2NhdGlvbiB8fCBjdWNtV29ya3NwYWNlLmxvY2F0aW9uLFxyXG4gICAgICBzaXRlSWQ6IHdlYmV4V29ya3NwYWNlLnNpdGVJZCA/PyBjdWNtV29ya3NwYWNlLnNpdGVJZCxcclxuICAgICAgZGV2aWNlOiB7XHJcbiAgICAgICAgLi4ubWVyZ2VEZXZpY2VzKGN1Y21Xb3Jrc3BhY2UuZGV2aWNlLCB3ZWJleFdvcmtzcGFjZS5kZXZpY2UpLFxyXG4gICAgICAgIG5hbWU6IGN1Y21Xb3Jrc3BhY2UuZGV2aWNlLm5hbWUsXHJcbiAgICAgICAgbmV3TmFtZTogY3VjbVdvcmtzcGFjZS5kZXZpY2UubmV3TmFtZSxcclxuICAgICAgfSxcclxuICAgICAgaXNIeWJyaWQ6IHRydWUsXHJcbiAgICAgIGN1Y21EZXZpY2VOYW1lOiBjdWNtV29ya3NwYWNlLmN1Y21EZXZpY2VOYW1lLFxyXG4gICAgfTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuY29uc3QgRkVUQ0hfQUxMX1NJWkUgPSA5OTk5O1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlc1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpU2VydmljZTogQVBJU2VydmljZSkgeyB9XHJcblxyXG4gIGZldGNoV29ya3NwYWNlcyhjdXN0b21lcklkOiBzdHJpbmcgfCBudW1iZXIpOiBPYnNlcnZhYmxlPFdvcmtzcGFjZXNQYWdlPiB7XHJcbiAgICBjb25zdCBiYXNlUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICB0eXBlOiAnT1JQSEFOX0RFVklDRScsXHJcbiAgICAgIGN1c3RvbWVyaWQ6IGN1c3RvbWVySWQudG9TdHJpbmcoKSxcclxuICAgICAgc2l6ZTogRkVUQ0hfQUxMX1NJWkUudG9TdHJpbmcoKSxcclxuICAgICAgcGFnZTogJzAnLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjdWNtJCA9IHRoaXMuYXBpU2VydmljZS5mZXRjaChBUEkuV09SS1NQQUNFUy5HRVRfQUxMLCB7XHJcbiAgICAgIC4uLmJhc2VQYXJhbXMsXHJcbiAgICAgICdkZXZpY2UtbmFtZSc6ICdTRVAnLFxyXG4gICAgICBwcm92aXNpb25UeXBlOiAnQ1VDTScsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB3ZWJleCQgPSB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLldPUktTUEFDRVMuR0VUX0FMTCwge1xyXG4gICAgICAuLi5iYXNlUGFyYW1zLFxyXG4gICAgICBwcm92aXNpb25UeXBlOiAnV0VCRVgnLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGZvcmtKb2luKFtjdWNtJCwgd2ViZXgkXSkucGlwZShcclxuICAgICAgbWFwKChbY3VjbVJlc3BvbnNlLCB3ZWJleFJlc3BvbnNlXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGN1Y21QYXJzZWQgPSBwYXJzZVJlc3BvbnNlKGN1Y21SZXNwb25zZSkgYXMgV29ya3NwYWNlc1Jlc3BvbnNlO1xyXG4gICAgICAgIGNvbnN0IHdlYmV4UGFyc2VkID0gcGFyc2VSZXNwb25zZSh3ZWJleFJlc3BvbnNlKSBhcyBXb3Jrc3BhY2VzUmVzcG9uc2U7XHJcbiAgICAgICAgY29uc3Qgd2ViZXhJdGVtcyA9IHdlYmV4UGFyc2VkPy5wYWdlRGF0YSB8fCBbXTtcclxuICAgICAgICBjb25zdCBjdWNtV29ya3NwYWNlcyA9IChjdWNtUGFyc2VkPy5wYWdlRGF0YSB8fCBbXSkubWFwKChpdGVtLCBpbmRleCkgPT4gdG9Xb3Jrc3BhY2UoaXRlbSwgaW5kZXgsIHRydWUpKTtcclxuICAgICAgICBjb25zdCB3ZWJleFdvcmtzcGFjZXMgPSB3ZWJleEl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHRvV29ya3NwYWNlKGl0ZW0sIGluZGV4LCBmYWxzZSkpO1xyXG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZXMgPSBtZXJnZUN1Y21BbmRXZWJleFdvcmtzcGFjZXMoY3VjbVdvcmtzcGFjZXMsIHdlYmV4SXRlbXMsIHdlYmV4V29ya3NwYWNlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB3b3Jrc3BhY2VzLFxyXG4gICAgICAgICAgdG90YWw6IHdvcmtzcGFjZXMubGVuZ3RoLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -12,6 +12,11 @@ import * as i7 from "./components/workspaces-filters/workspaces-filters.componen
|
|
|
12
12
|
import * as i8 from "./components/workspaces-table/workspaces-table.component";
|
|
13
13
|
import * as i9 from "./components/workspace-detail/workspace-detail.component";
|
|
14
14
|
import * as i10 from "./utils/app-loader/app-loader";
|
|
15
|
+
const NO_LOCATION_OPTION = 'No location';
|
|
16
|
+
function hasNoLocation(location) {
|
|
17
|
+
const value = location?.trim().toLowerCase();
|
|
18
|
+
return !value || value === NO_LOCATION_OPTION.toLowerCase();
|
|
19
|
+
}
|
|
15
20
|
export class WorkspacesComponent {
|
|
16
21
|
constructor(apiService, apiWebexService, workspacesService, migrationService, dialog, location) {
|
|
17
22
|
this.apiService = apiService;
|
|
@@ -58,13 +63,24 @@ export class WorkspacesComponent {
|
|
|
58
63
|
return [...new Set(this.workspaces.map(workspace => workspace.typeLabel).filter(Boolean))];
|
|
59
64
|
}
|
|
60
65
|
get locationOptions() {
|
|
61
|
-
|
|
66
|
+
const locations = [...new Set(this.workspaces.map(workspace => workspace.location).filter(location => !hasNoLocation(location)))];
|
|
67
|
+
return this.workspaces.some(workspace => hasNoLocation(workspace.location))
|
|
68
|
+
? [NO_LOCATION_OPTION, ...locations]
|
|
69
|
+
: locations;
|
|
62
70
|
}
|
|
63
71
|
get filteredWorkspacesAll() {
|
|
64
72
|
const term = this.searchTerm.trim().toLowerCase();
|
|
65
73
|
return this.workspaces.filter(workspace => (!term || workspace.displayName.toLowerCase().includes(term) || workspace.location.toLowerCase().includes(term)) &&
|
|
66
74
|
(!this.typeFilter || workspace.typeLabel === this.typeFilter) &&
|
|
67
|
-
|
|
75
|
+
this.matchesLocationFilter(workspace));
|
|
76
|
+
}
|
|
77
|
+
matchesLocationFilter(workspace) {
|
|
78
|
+
if (!this.locationFilter) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
return this.locationFilter === NO_LOCATION_OPTION
|
|
82
|
+
? hasNoLocation(workspace.location)
|
|
83
|
+
: workspace.location === this.locationFilter;
|
|
68
84
|
}
|
|
69
85
|
get filteredWorkspaces() {
|
|
70
86
|
const start = this.pageIndex * this.pageSize;
|
|
@@ -286,10 +302,10 @@ export class WorkspacesComponent {
|
|
|
286
302
|
}
|
|
287
303
|
}
|
|
288
304
|
WorkspacesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, deps: [{ token: i1.APIService }, { token: i2.ApiWebexService }, { token: i3.WorkspacesService }, { token: i4.WorkspacesMigrationService }, { token: i5.MatDialog }, { token: i6.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
289
|
-
WorkspacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesComponent, selector: "tk-workspaces", inputs: { host: "host", token: "token", customerId: "customerId" }, outputs: { addWorkspace: "addWorkspace", openWorkspace: "openWorkspace", addDevice: "addDevice" }, ngImport: i0, template: "<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n <app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"filteredTotal\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n
|
|
305
|
+
WorkspacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesComponent, selector: "tk-workspaces", inputs: { host: "host", token: "token", customerId: "customerId" }, outputs: { addWorkspace: "addWorkspace", openWorkspace: "openWorkspace", addDevice: "addDevice" }, ngImport: i0, template: "<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n <app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"filteredTotal\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n [isLoading]=\"isLoading\"\r\n (openWorkspace)=\"onOpenWorkspace($event)\"\r\n (migrateToMT)=\"onMoveToMT($event)\"\r\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\r\n (migrateToUCM)=\"onMigrateToUCM($event)\"\r\n (addDevice)=\"addDevice.emit($event)\"\r\n (pageChange)=\"onPageChange($event)\">\r\n </tk-workspaces-table>\r\n </ng-container>\r\n\r\n <ng-template #placeholder>\r\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #detailView>\r\n <tk-workspace-detail\r\n *ngIf=\"selectedWorkspace\"\r\n [workspace]=\"selectedWorkspace\"\r\n [connectionType]=\"selectedConnectionType\"\r\n [customerId]=\"customerId\"\r\n (back)=\"onBackToList()\">\r\n </tk-workspace-detail>\r\n </ng-template>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.WorkspacesFiltersComponent, selector: "tk-workspaces-filters", inputs: ["resultCount", "typeOptions", "locationOptions"], outputs: ["searchChange", "typeChange", "locationChange", "addWorkspace"] }, { kind: "component", type: i8.WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: ["workspaces", "total", "pageIndex", "pageSize", "pageSizeOptions", "pendingWorkspaceIds", "isLoading"], outputs: ["openWorkspace", "migrateToMT", "enableWebexCalling", "migrateToUCM", "addDevice", "pageChange"] }, { kind: "component", type: i9.WorkspaceDetailComponent, selector: "tk-workspace-detail", inputs: ["workspace", "connectionType", "customerId"], outputs: ["back"] }, { kind: "component", type: i10.AppLoaderComponent, selector: "app-loader" }] });
|
|
290
306
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, decorators: [{
|
|
291
307
|
type: Component,
|
|
292
|
-
args: [{ selector: 'tk-workspaces', template: "<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n <app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"filteredTotal\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n
|
|
308
|
+
args: [{ selector: 'tk-workspaces', template: "<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n <app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"filteredTotal\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n [isLoading]=\"isLoading\"\r\n (openWorkspace)=\"onOpenWorkspace($event)\"\r\n (migrateToMT)=\"onMoveToMT($event)\"\r\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\r\n (migrateToUCM)=\"onMigrateToUCM($event)\"\r\n (addDevice)=\"addDevice.emit($event)\"\r\n (pageChange)=\"onPageChange($event)\">\r\n </tk-workspaces-table>\r\n </ng-container>\r\n\r\n <ng-template #placeholder>\r\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #detailView>\r\n <tk-workspace-detail\r\n *ngIf=\"selectedWorkspace\"\r\n [workspace]=\"selectedWorkspace\"\r\n [connectionType]=\"selectedConnectionType\"\r\n [customerId]=\"customerId\"\r\n (back)=\"onBackToList()\">\r\n </tk-workspace-detail>\r\n </ng-template>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"] }]
|
|
293
309
|
}], ctorParameters: function () { return [{ type: i1.APIService }, { type: i2.ApiWebexService }, { type: i3.WorkspacesService }, { type: i4.WorkspacesMigrationService }, { type: i5.MatDialog }, { type: i6.Location }]; }, propDecorators: { host: [{
|
|
294
310
|
type: Input
|
|
295
311
|
}], token: [{
|
|
@@ -303,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
303
319
|
}], addDevice: [{
|
|
304
320
|
type: Output
|
|
305
321
|
}] } });
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsR0FBRyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU10RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBaUIzSCxNQUFNLE9BQU8sbUJBQW1CO0lBcUM5QixZQUNVLFVBQXNCLEVBQ3RCLGVBQWdDLEVBQ2hDLGlCQUFvQyxFQUNwQyxnQkFBNEMsRUFDNUMsTUFBaUIsRUFDakIsUUFBa0I7UUFMbEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTRCO1FBQzVDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXRDbEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV4QyxTQUFJLEdBQThCO1lBQ3pDLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVB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ZUFBZTtRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDaEUsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQTlUVSxtQkFBbUI7cUdBQW5CLG1CQUFtQiw0TkMxQmhDLHcxRUE4REE7NEZEcENhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxlQUFlO3VQQUtoQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBtYXAsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwLCB0YWtlV2hpbGUsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFQSVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpV2ViZXhTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGktd2ViZXguc2VydmljZSc7XHJcbmltcG9ydCB7IEZpcm13YXJlRGV2aWNlTWFwLCBXb3Jrc3BhY2VzTWlncmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd29ya3NwYWNlcy1taWdyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy93b3Jrc3BhY2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2UsIFdvcmtzcGFjZUNvbm5lY3Rpb25UeXBlLCBXb3Jrc3BhY2VEZXZpY2VSZWNvcmQsIFdvcmtzcGFjZU9wZW5FdmVudCB9IGZyb20gJy4vdHlwZXMvd29ya3NwYWNlJztcclxuaW1wb3J0IHsgV29ya3NwYWNlQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy93b3Jrc3BhY2UtY29uZmlybS1kaWFsb2cvd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG50eXBlIFdvcmtzcGFjZXNWaWV3ID0gJ2xpc3QnIHwgJ2RldGFpbCc7XHJcblxyXG50eXBlIFdvcmtzcGFjZXNUYWIgPSAnd29ya3NwYWNlcycgfCAnaW5zaWdodHMnIHwgJ2ludGVncmF0aW9ucycgfCAnc2V0dGluZ3MnO1xyXG5cclxuaW50ZXJmYWNlIFdvcmtzcGFjZXNUYWJEZWZpbml0aW9uIHtcclxuICBpZDogV29ya3NwYWNlc1RhYjtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0ay13b3Jrc3BhY2VzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya3NwYWNlcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya3NwYWNlcy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBob3N0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGN1c3RvbWVySWQhOiBzdHJpbmc7XHJcblxyXG4gIEBPdXRwdXQoKSBhZGRXb3Jrc3BhY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9wZW5Xb3Jrc3BhY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgYWRkRGV2aWNlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIHJlYWRvbmx5IHRhYnM6IFdvcmtzcGFjZXNUYWJEZWZpbml0aW9uW10gPSBbXHJcbiAgICB7IGlkOiAnd29ya3NwYWNlcycsIGxhYmVsOiAnV29ya3NwYWNlcycsIGljb246ICdhc3NldHMvaWNvbnMvZGV2aWNlLWluLXJvb20tcmVndWxhci5zdmcnIH0sXHJcbiAgICB7IGlkOiAnaW5zaWdodHMnLCBsYWJlbDogJ0luc2lnaHRzJywgaWNvbjogJ2Fzc2V0cy9pY29ucy9hbmFseXNpcy1yZWd1bGFyLnN2ZycgfSxcclxuICAgIHsgaWQ6ICdpbnRlZ3JhdGlvbnMnLCBsYWJlbDogJ0ludGVncmF0aW9ucycsIGljb246ICdhc3NldHMvaWNvbnMvaW50ZWdyYXRpb25zLXJlZ3VsYXIuc3ZnJyB9LFxyXG4gICAgeyBpZDogJ3NldHRpbmdzJywgbGFiZWw6ICdTZXR0aW5ncycsIGljb246ICdhc3NldHMvaWNvbnMvdG9vbHMtcmVndWxhci5zdmcnIH0sXHJcbiAgXTtcclxuXHJcbiAgYWN0aXZlVGFiOiBXb3Jrc3BhY2VzVGFiID0gJ3dvcmtzcGFjZXMnO1xyXG5cclxuICB2aWV3OiBXb3Jrc3BhY2VzVmlldyA9ICdsaXN0JztcclxuICBzZWxlY3RlZFdvcmtzcGFjZTogV29ya3NwYWNlIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRDb25uZWN0aW9uVHlwZTogV29ya3NwYWNlQ29ubmVjdGlvblR5cGUgPSAnZGknO1xyXG5cclxuICB3b3Jrc3BhY2VzOiBXb3Jrc3BhY2VbXSA9IFtdO1xyXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwYWdlSW5kZXggPSAwO1xyXG4gIHBhZ2VTaXplID0gMTA7XHJcbiAgdG90YWwgPSAwO1xyXG5cclxuICBzZWFyY2hUZXJtID0gJyc7XHJcbiAgdHlwZUZpbHRlciA9ICcnO1xyXG4gIGxvY2F0aW9uRmlsdGVyID0gJyc7XHJcblxyXG4gIHBlbmRpbmdXb3Jrc3BhY2VJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQVBJU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBpV2ViZXhTZXJ2aWNlOiBBcGlXZWJleFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdvcmtzcGFjZXNTZXJ2aWNlOiBXb3Jrc3BhY2VzU2VydmljZSxcclxuICAgIHByaXZhdGUgbWlncmF0aW9uU2VydmljZTogV29ya3NwYWNlc01pZ3JhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UudG9rZW4gPSB0aGlzLnRva2VuO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmFwaVVybCA9IHRoaXMuaG9zdCArICcvZGNwJztcclxuICAgIHRoaXMuYXBpV2ViZXhTZXJ2aWNlLnRva2VuID0gdGhpcy50b2tlbjtcclxuICAgIHRoaXMuYXBpV2ViZXhTZXJ2aWNlLmFwaVVybCA9IHRoaXMuaG9zdCArICcvd2ViZXgnO1xyXG4gICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIGdldCB0eXBlT3B0aW9ucygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gWy4uLm5ldyBTZXQodGhpcy53b3Jrc3BhY2VzLm1hcCh3b3Jrc3BhY2UgPT4gd29ya3NwYWNlLnR5cGVMYWJlbCkuZmlsdGVyKEJvb2xlYW4pKV07XHJcbiAgfVxyXG5cclxuICBnZXQgbG9jYXRpb25PcHRpb25zKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbLi4ubmV3IFNldCh0aGlzLndvcmtzcGFjZXMubWFwKHdvcmtzcGFjZSA9PiB3b3Jrc3BhY2UubG9jYXRpb24pLmZpbHRlcihCb29sZWFuKSldO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZmlsdGVyZWRXb3Jrc3BhY2VzQWxsKCk6IFdvcmtzcGFjZVtdIHtcclxuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VzLmZpbHRlcih3b3Jrc3BhY2UgPT5cclxuICAgICAgKCF0ZXJtIHx8IHdvcmtzcGFjZS5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8IHdvcmtzcGFjZS5sb2NhdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKSAmJlxyXG4gICAgICAoIXRoaXMudHlwZUZpbHRlciB8fCB3b3Jrc3BhY2UudHlwZUxhYmVsID09PSB0aGlzLnR5cGVGaWx0ZXIpICYmXHJcbiAgICAgICghdGhpcy5sb2NhdGlvbkZpbHRlciB8fCB3b3Jrc3BhY2UubG9jYXRpb24gPT09IHRoaXMubG9jYXRpb25GaWx0ZXIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbHRlcmVkV29ya3NwYWNlcygpOiBXb3Jrc3BhY2VbXSB7XHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucGFnZUluZGV4ICogdGhpcy5wYWdlU2l6ZTtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkV29ya3NwYWNlc0FsbC5zbGljZShzdGFydCwgc3RhcnQgKyB0aGlzLnBhZ2VTaXplKTtcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJlZFRvdGFsKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFdvcmtzcGFjZXNBbGwubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VGFiKHRhYjogV29ya3NwYWNlc1RhYik6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5Xb3Jrc3BhY2UoeyBpZCwgY29ubmVjdGlvblR5cGUgfTogV29ya3NwYWNlT3BlbkV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB3b3Jrc3BhY2UgPSB0aGlzLndvcmtzcGFjZXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGlkKSA/PyBudWxsO1xyXG4gICAgdGhpcy5vcGVuV29ya3NwYWNlLmVtaXQoaWQpO1xyXG5cclxuICAgIGlmICghd29ya3NwYWNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkV29ya3NwYWNlID0gd29ya3NwYWNlO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbm5lY3Rpb25UeXBlID0gY29ubmVjdGlvblR5cGU7XHJcbiAgICB0aGlzLnZpZXcgPSAnZGV0YWlsJztcclxuICB9XHJcblxyXG4gIG9uQmFja1RvTGlzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmlldyA9ICdsaXN0JztcclxuICAgIHRoaXMuc2VsZWN0ZWRXb3Jrc3BhY2UgPSBudWxsO1xyXG4gICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoJy93b3Jrc3BhY2VzJyk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaENoYW5nZSh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoVGVybSA9IHRlcm07XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XHJcbiAgfVxyXG5cclxuICBvblR5cGVGaWx0ZXJDaGFuZ2UodHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnR5cGVGaWx0ZXIgPSB0eXBlO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgb25Mb2NhdGlvbkZpbHRlckNoYW5nZShsb2NhdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvY2F0aW9uRmlsdGVyID0gbG9jYXRpb247XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UoeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH06IHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfSk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSBwYWdlSW5kZXg7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgfVxyXG5cclxuICBvbk1vdmVUb01UKHdvcmtzcGFjZTogV29ya3NwYWNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFdvcmtzcGFjZUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRpdGxlOiBgVXBncmFkZSB3b3Jrc3BhY2UgJHt3b3Jrc3BhY2UuZGlzcGxheU5hbWV9IHRvIFdlYmV4IENhbGxpbmc/YCxcclxuICAgICAgICBtZXNzYWdlOiBgPHA+VXBncmFkaW5nIHRoaXMgd29ya3NwYWNlIHdpbGwgcHJlcGFyZSBpdCBmb3IgbWlncmF0aW9uIHRvIFdlYmV4IENhbGxpbmcuPC9wPlxyXG4gICAgICAgICAgPHA+RHVyaW5nIHRoaXMgcHJvY2VzcywgdGhlIHdvcmtzcGFjZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY29waWVkIHRvIHRoZSBXZWJleCBDYWxsaW5nIGVudmlyb25tZW50LlxyXG4gICAgICAgICAgVGhlIHdvcmtzcGFjZSB3aWxsIHJlbWFpbiBhY3RpdmUgb24gdGhlIGN1cnJlbnQgc3lzdGVtIHVudGlsIHRoZSBBY3RpdmF0ZSBzdGVwIGlzIGNvbXBsZXRlZC48L3A+XHJcbiAgICAgICAgICA8cD5EbyB5b3Ugd2FudCB0byBjb250aW51ZT88L3A+YCxcclxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ1llcywgdXBncmFkZScsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmFkZCh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLm1pZ3JhdGlvblNlcnZpY2UubW92ZVRvTVQodGhpcy5jdXN0b21lcklkLCB3b3Jrc3BhY2UuZGV2aWNlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChmb3JtSWQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm1JZCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvbGxNaWdyYXRpb25Gb3JtU3RhdHVzKE51bWJlcihmb3JtSWQpLCB3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRW5hYmxlV2ViZXhDYWxsaW5nKHdvcmtzcGFjZTogV29ya3NwYWNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZXZpY2UgPSB3b3Jrc3BhY2UuZGV2aWNlO1xyXG4gICAgaWYgKCFkZXZpY2Uud2ViZXhVVUlEIHx8IHdvcmtzcGFjZS5zdGF0dXMgIT09ICdpbmFjdGl2ZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oV29ya3NwYWNlQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdGl0bGU6IGBBY3RpdmF0ZSB3b3Jrc3BhY2UgJHt3b3Jrc3BhY2UuZGlzcGxheU5hbWV9IG9uIE11bHRpIFRlbmFudD9gLFxyXG4gICAgICAgIG1lc3NhZ2U6IGA8cD5BY3RpdmF0aW5nIHRoaXMgd29ya3NwYWNlIHdpbGwgcGVyZm9ybSB0aGUgY3V0b3ZlciB0byBNdWx0aSBUZW5hbnQgYW5kIGNvbXBsZXRlIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICAgICAgICA8cD5BZnRlciBhY3RpdmF0aW9uLCB0aGUgd29ya3NwYWNlIHdpbGwgYmVjb21lIGFjdGl2ZSBvbiBNdWx0aSBUZW5hbnQgYW5kIHRoZSBvcmlnaW5hbCB3b3Jrc3BhY2Ugd2lsbCBiZWNvbWUgaW5hY3RpdmUuPC9wPlxyXG4gICAgICAgICAgPHA+RG8geW91IHdhbnQgdG8gY29udGludWU/PC9wPmAsXHJcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdBY3RpdmF0ZScsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmFkZCh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLm1pZ3JhdGlvblNlcnZpY2VcclxuICAgICAgICAuZ2V0TWlncmF0ZWRNaWdyYXRpb25Gb3JtRW50aXRpZXModGhpcy5jdXN0b21lcklkLCBkZXZpY2Uud2ViZXhVVUlEIGFzIHN0cmluZywgJ09SUEhBTkVEX0RFVklDRScpXHJcbiAgICAgICAgLnBpcGUobWFwKChlbnRpdGllczogYW55W10pID0+IChBcnJheS5pc0FycmF5KGVudGl0aWVzKSA/IGVudGl0aWVzWzBdIDogZW50aXRpZXMgfHwgbnVsbCkpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1JZCA9IGVudGl0eT8ubWlncmF0aW9uRm9ybUlkID8/IGVudGl0eT8uaWQgPz8gbnVsbDtcclxuICAgICAgICAgICAgaWYgKCFmb3JtSWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRldmljZU1hcCA9IHRoaXMuYnVpbGRGaXJtd2FyZURldmljZU1hcChlbnRpdHksIGRldmljZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVwZ3JhZGVTdWJzY3JpcHRpb24gPSB0aGlzLm1pZ3JhdGlvblNlcnZpY2VcclxuICAgICAgICAgICAgICAudHJpZ2dlckZpcm13YXJlVXBncmFkZSh0aGlzLmN1c3RvbWVySWQsIE51bWJlcihmb3JtSWQpLCBkZXZpY2VNYXApXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvbGxNaWdyYXRpb25Gb3JtU3RhdHVzKE51bWJlcihmb3JtSWQpLCB3b3Jrc3BhY2UuaWQsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWlncmF0aW9uU2VydmljZS5yZW1vdmVVY21MaWNlbnNlKHRoaXMuY3VzdG9tZXJJZCwgTnVtYmVyKGZvcm1JZCkpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9LCAxMDAwMCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godXBncmFkZVN1YnNjcmlwdGlvbik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25NaWdyYXRlVG9VQ00od29ya3NwYWNlOiBXb3Jrc3BhY2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRldmljZSA9IHdvcmtzcGFjZS5kZXZpY2U7XHJcbiAgICBpZiAoIWRldmljZS53ZWJleFVVSUQgfHwgd29ya3NwYWNlLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5hZGQod29ya3NwYWNlLmlkKTtcclxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMubWlncmF0aW9uU2VydmljZVxyXG4gICAgICAucmV2ZXJ0TWlncmF0aW9uKHRoaXMuY3VzdG9tZXJJZCwgZGV2aWNlLndlYmV4VVVJRClcclxuICAgICAgLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRpbWVyKDIwMDApKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9sbE1pZ3JhdGlvbkZvcm1TdGF0dXMoZm9ybUlkOiBudW1iZXIsIHdvcmtzcGFjZUlkOiBzdHJpbmcsIG9uQ29tcGxldGVkPzogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGltZXIoMCwgMTAwMDApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLm1pZ3JhdGlvblNlcnZpY2UuZ2V0TWlncmF0aW9uRm9ybVN0YXR1cyh0aGlzLmN1c3RvbWVySWQsIGZvcm1JZCkpLFxyXG4gICAgICAgIHRha2VXaGlsZSgocmVzcG9uc2U6IGFueSkgPT4gIXRoaXMuaXNUZXJtaW5hbE1pZ3JhdGlvblN0YXR1cyhyZXNwb25zZT8uc3RhdHVzKSwgdHJ1ZSksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMubm9ybWFsaXplTWlncmF0aW9uU3RhdHVzKHJlc3BvbnNlPy5zdGF0dXMpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmlzVGVybWluYWxNaWdyYXRpb25TdGF0dXMoc3RhdHVzKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZUlkKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgICAgICBvbkNvbXBsZXRlZD8uKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2VJZCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRGaXJtd2FyZURldmljZU1hcChlbnRpdHk6IGFueSwgZGV2aWNlOiBXb3Jrc3BhY2VEZXZpY2VSZWNvcmQpOiBGaXJtd2FyZURldmljZU1hcCB7XHJcbiAgICBjb25zdCBkZXZpY2VNYXA6IEZpcm13YXJlRGV2aWNlTWFwID0ge307XHJcbiAgICBjb25zdCBlbnRpdHlEZXZpY2VzOiBhbnlbXSA9IFtcclxuICAgICAgLi4uKEFycmF5LmlzQXJyYXkoZW50aXR5Py5kZXZpY2VzKSA/IGVudGl0eS5kZXZpY2VzIDogW10pLFxyXG4gICAgICAuLi4oQXJyYXkuaXNBcnJheShlbnRpdHk/LndlYmV4TWlncmF0aW9uRGV2aWNlcykgPyBlbnRpdHkud2ViZXhNaWdyYXRpb25EZXZpY2VzIDogW10pLFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvdXJjZURldmljZXMgPSBlbnRpdHlEZXZpY2VzLmxlbmd0aCA/IGVudGl0eURldmljZXMgOiBbZGV2aWNlXTtcclxuICAgIGNvbnN0IGN1Y21JZCA9IE51bWJlcihkZXZpY2UuY3VjbUlkKSB8fCAwO1xyXG5cclxuICAgIHNvdXJjZURldmljZXMuZm9yRWFjaCgocmF3RGV2aWNlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gcmF3RGV2aWNlPy5uYW1lIHx8IGRldmljZS5uYW1lIHx8ICcnO1xyXG4gICAgICBpZiAoIW5hbWUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZGV2aWNlTmFtZSA9IG5hbWUuaW5jbHVkZXMoJ1NFUCcpID8gbmFtZSA6IGBTRVAke25hbWV9YDtcclxuICAgICAgaWYgKCFkZXZpY2VNYXBbY3VjbUlkXSkge1xyXG4gICAgICAgIGRldmljZU1hcFtjdWNtSWRdID0ge307XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFkZXZpY2VNYXBbY3VjbUlkXVsnT1JQSEFORURfREVWSUNFJ10pIHtcclxuICAgICAgICBkZXZpY2VNYXBbY3VjbUlkXVsnT1JQSEFORURfREVWSUNFJ10gPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBkZXZpY2VNYXBbY3VjbUlkXVsnT1JQSEFORURfREVWSUNFJ10ucHVzaChkZXZpY2VOYW1lKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkZXZpY2VNYXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5vcm1hbGl6ZU1pZ3JhdGlvblN0YXR1cyhzdGF0dXM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChzdGF0dXMgfHwgJycpLnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVGVybWluYWxNaWdyYXRpb25TdGF0dXMoc3RhdHVzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemVNaWdyYXRpb25TdGF0dXMoc3RhdHVzKTtcclxuICAgIHJldHVybiBub3JtYWxpemVkID09PSAnQ09NUExFVEVEJyB8fCBub3JtYWxpemVkID09PSAnRkFJTEVEJyB8fCBub3JtYWxpemVkID09PSAnRVJST1InIHx8IG5vcm1hbGl6ZWQgPT09ICdDT01QTEVURURfV0lUSF9FUlJPUlMnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaFdvcmtzcGFjZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLndvcmtzcGFjZXNTZXJ2aWNlLmZldGNoV29ya3NwYWNlcyh0aGlzLmN1c3RvbWVySWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICh7IHdvcmtzcGFjZXMsIHRvdGFsIH0pID0+IHtcclxuICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSB3b3Jrc3BhY2VzO1xyXG4gICAgICAgIHRoaXMudG90YWwgPSB0b3RhbDtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMud29ya3NwYWNlcyA9IFtdO1xyXG4gICAgICAgIHRoaXMudG90YWwgPSAwO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXNcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlldyA9PT0gJ2xpc3QnOyBlbHNlIGRldGFpbFZpZXdcIj5cclxuICAgIDxoZWFkZXIgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX19oZWFkZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwidGstd29ya3NwYWNlc19fdGl0bGVcIj5Xb3Jrc3BhY2VzPC9oMT5cclxuICAgIDwvaGVhZGVyPlxyXG5cclxuICAgIDxuYXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX190YWJzXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIlxyXG4gICAgICAgIGNsYXNzPVwidGstd29ya3NwYWNlc19fdGFiXCJcclxuICAgICAgICBbY2xhc3MudGstd29ya3NwYWNlc19fdGFiLS1hY3RpdmVdPVwiYWN0aXZlVGFiID09PSB0YWIuaWRcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RUYWIodGFiLmlkKVwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX190YWItaWNvblwiIFtzcmNdPVwidGFiLmljb25cIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgIHt7IHRhYi5sYWJlbCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmF2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICd3b3Jrc3BhY2VzJzsgZWxzZSBwbGFjZWhvbGRlclwiPlxyXG4gICAgICA8YXBwLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiPjwvYXBwLWxvYWRlcj5cclxuXHJcbiAgICAgIDx0ay13b3Jrc3BhY2VzLWZpbHRlcnNcclxuICAgICAgICBbcmVzdWx0Q291bnRdPVwidG90YWxcIlxyXG4gICAgICAgIFt0eXBlT3B0aW9uc109XCJ0eXBlT3B0aW9uc1wiXHJcbiAgICAgICAgW2xvY2F0aW9uT3B0aW9uc109XCJsb2NhdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgIChzZWFyY2hDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKHR5cGVDaGFuZ2UpPVwib25UeXBlRmlsdGVyQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChsb2NhdGlvbkNoYW5nZSk9XCJvbkxvY2F0aW9uRmlsdGVyQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChhZGRXb3Jrc3BhY2UpPVwiYWRkV29ya3NwYWNlLmVtaXQoKVwiPlxyXG4gICAgICA8L3RrLXdvcmtzcGFjZXMtZmlsdGVycz5cclxuXHJcbiAgICAgIDx0ay13b3Jrc3BhY2VzLXRhYmxlXHJcbiAgICAgICAgW3dvcmtzcGFjZXNdPVwiZmlsdGVyZWRXb3Jrc3BhY2VzXCJcclxuICAgICAgICBbdG90YWxdPVwiZmlsdGVyZWRUb3RhbFwiXHJcbiAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxyXG4gICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgW3BlbmRpbmdXb3Jrc3BhY2VJZHNdPVwicGVuZGluZ1dvcmtzcGFjZUlkc1wiXHJcbiAgICAgICAgKG9wZW5Xb3Jrc3BhY2UpPVwib25PcGVuV29ya3NwYWNlKCRldmVudClcIlxyXG4gICAgICAgIChsaWNlbnNlV2l0aEh5YnJpZCk9XCJvbk1vdmVUb01UKCRldmVudClcIlxyXG4gICAgICAgIChtaWdyYXRlVG9NVCk9XCJvbk1vdmVUb01UKCRldmVudClcIlxyXG4gICAgICAgIChlbmFibGVXZWJleENhbGxpbmcpPVwib25FbmFibGVXZWJleENhbGxpbmcoJGV2ZW50KVwiXHJcbiAgICAgICAgKG1pZ3JhdGVUb1VDTSk9XCJvbk1pZ3JhdGVUb1VDTSgkZXZlbnQpXCJcclxuICAgICAgICAoYWRkRGV2aWNlKT1cImFkZERldmljZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgIDwvdGstd29ya3NwYWNlcy10YWJsZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX19wbGFjZWhvbGRlclwiPlRoaXMgc2VjdGlvbiBpc24ndCBhdmFpbGFibGUgaW4gdGhpcyB3aWRnZXQgeWV0LjwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNkZXRhaWxWaWV3PlxyXG4gICAgPHRrLXdvcmtzcGFjZS1kZXRhaWxcclxuICAgICAgKm5nSWY9XCJzZWxlY3RlZFdvcmtzcGFjZVwiXHJcbiAgICAgIFt3b3Jrc3BhY2VdPVwic2VsZWN0ZWRXb3Jrc3BhY2VcIlxyXG4gICAgICBbY29ubmVjdGlvblR5cGVdPVwic2VsZWN0ZWRDb25uZWN0aW9uVHlwZVwiXHJcbiAgICAgIFtjdXN0b21lcklkXT1cImN1c3RvbWVySWRcIlxyXG4gICAgICAoYmFjayk9XCJvbkJhY2tUb0xpc3QoKVwiPlxyXG4gICAgPC90ay13b3Jrc3BhY2UtZGV0YWlsPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsR0FBRyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU10RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBSTNILE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDO0FBRXpDLFNBQVMsYUFBYSxDQUFDLFFBQW1DO0lBQ3hELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM5RCxDQUFDO0FBZUQsTUFBTSxPQUFPLG1CQUFtQjtJQXFDOUIsWUFDVSxVQUFzQixFQUN0QixlQUFnQyxFQUNoQyxpQkFBb0MsRUFDcEMsZ0JBQTRDLEVBQzVDLE1BQWlCLEVBQ2pCLFFBQWtCO1FBTGxCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE0QjtRQUM1QyxXQUFNLEdBQU4sTUFBTSxDQUFX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QztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztpSEExVVUsbUJBQW1CO3FHQUFuQixtQkFBbUIsNE5DakNoQyx1MEVBOERBOzRGRDdCYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZUFBZTt1UEFLaEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgbWFwLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFrZVdoaWxlLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVdlYmV4U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpLXdlYmV4LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaXJtd2FyZURldmljZU1hcCwgV29ya3NwYWNlc01pZ3JhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3dvcmtzcGFjZXMtbWlncmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd29ya3NwYWNlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya3NwYWNlLCBXb3Jrc3BhY2VDb25uZWN0aW9uVHlwZSwgV29ya3NwYWNlRGV2aWNlUmVjb3JkLCBXb3Jrc3BhY2VPcGVuRXZlbnQgfSBmcm9tICcuL3R5cGVzL3dvcmtzcGFjZSc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nL3dvcmtzcGFjZS1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxudHlwZSBXb3Jrc3BhY2VzVmlldyA9ICdsaXN0JyB8ICdkZXRhaWwnO1xyXG5cclxuY29uc3QgTk9fTE9DQVRJT05fT1BUSU9OID0gJ05vIGxvY2F0aW9uJztcclxuXHJcbmZ1bmN0aW9uIGhhc05vTG9jYXRpb24obG9jYXRpb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICBjb25zdCB2YWx1ZSA9IGxvY2F0aW9uPy50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICByZXR1cm4gIXZhbHVlIHx8IHZhbHVlID09PSBOT19MT0NBVElPTl9PUFRJT04udG9Mb3dlckNhc2UoKTtcclxufVxyXG5cclxudHlwZSBXb3Jrc3BhY2VzVGFiID0gJ3dvcmtzcGFjZXMnIHwgJ2luc2lnaHRzJyB8ICdpbnRlZ3JhdGlvbnMnIHwgJ3NldHRpbmdzJztcclxuXHJcbmludGVyZmFjZSBXb3Jrc3BhY2VzVGFiRGVmaW5pdGlvbiB7XHJcbiAgaWQ6IFdvcmtzcGFjZXNUYWI7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpY29uOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGstd29ya3NwYWNlcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtzcGFjZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dvcmtzcGFjZXMuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgaG9zdCE6IHN0cmluZztcclxuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBjdXN0b21lcklkITogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgYWRkV29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuV29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGFkZERldmljZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICByZWFkb25seSB0YWJzOiBXb3Jrc3BhY2VzVGFiRGVmaW5pdGlvbltdID0gW1xyXG4gICAgeyBpZDogJ3dvcmtzcGFjZXMnLCBsYWJlbDogJ1dvcmtzcGFjZXMnLCBpY29uOiAnYXNzZXRzL2ljb25zL2RldmljZS1pbi1yb29tLXJlZ3VsYXIuc3ZnJyB9LFxyXG4gICAgeyBpZDogJ2luc2lnaHRzJywgbGFiZWw6ICdJbnNpZ2h0cycsIGljb246ICdhc3NldHMvaWNvbnMvYW5hbHlzaXMtcmVndWxhci5zdmcnIH0sXHJcbiAgICB7IGlkOiAnaW50ZWdyYXRpb25zJywgbGFiZWw6ICdJbnRlZ3JhdGlvbnMnLCBpY29uOiAnYXNzZXRzL2ljb25zL2ludGVncmF0aW9ucy1yZWd1bGFyLnN2ZycgfSxcclxuICAgIHsgaWQ6ICdzZXR0aW5ncycsIGxhYmVsOiAnU2V0dGluZ3MnLCBpY29uOiAnYXNzZXRzL2ljb25zL3Rvb2xzLXJlZ3VsYXIuc3ZnJyB9LFxyXG4gIF07XHJcblxyXG4gIGFjdGl2ZVRhYjogV29ya3NwYWNlc1RhYiA9ICd3b3Jrc3BhY2VzJztcclxuXHJcbiAgdmlldzogV29ya3NwYWNlc1ZpZXcgPSAnbGlzdCc7XHJcbiAgc2VsZWN0ZWRXb3Jrc3BhY2U6IFdvcmtzcGFjZSB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkQ29ubmVjdGlvblR5cGU6IFdvcmtzcGFjZUNvbm5lY3Rpb25UeXBlID0gJ2RpJztcclxuXHJcbiAgd29ya3NwYWNlczogV29ya3NwYWNlW10gPSBbXTtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgcGFnZUluZGV4ID0gMDtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHRvdGFsID0gMDtcclxuXHJcbiAgc2VhcmNoVGVybSA9ICcnO1xyXG4gIHR5cGVGaWx0ZXIgPSAnJztcclxuICBsb2NhdGlvbkZpbHRlciA9ICcnO1xyXG5cclxuICBwZW5kaW5nV29ya3NwYWNlSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVdlYmV4U2VydmljZTogQXBpV2ViZXhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VzU2VydmljZTogV29ya3NwYWNlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1pZ3JhdGlvblNlcnZpY2U6IFdvcmtzcGFjZXNNaWdyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLnRva2VuID0gdGhpcy50b2tlbjtcclxuICAgIHRoaXMuYXBpU2VydmljZS5hcGlVcmwgPSB0aGlzLmhvc3QgKyAnL2RjcCc7XHJcbiAgICB0aGlzLmFwaVdlYmV4U2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVdlYmV4U2VydmljZS5hcGlVcmwgPSB0aGlzLmhvc3QgKyAnL3dlYmV4JztcclxuICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZU9wdGlvbnMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHRoaXMud29ya3NwYWNlcy5tYXAod29ya3NwYWNlID0+IHdvcmtzcGFjZS50eXBlTGFiZWwpLmZpbHRlcihCb29sZWFuKSldO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxvY2F0aW9uT3B0aW9ucygpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBsb2NhdGlvbnMgPSBbLi4ubmV3IFNldCh0aGlzLndvcmtzcGFjZXMubWFwKHdvcmtzcGFjZSA9PiB3b3Jrc3BhY2UubG9jYXRpb24pLmZpbHRlcihsb2NhdGlvbiA9PiAhaGFzTm9Mb2NhdGlvbihsb2NhdGlvbikpKV07XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VzLnNvbWUod29ya3NwYWNlID0+IGhhc05vTG9jYXRpb24od29ya3NwYWNlLmxvY2F0aW9uKSlcclxuICAgICAgPyBbTk9fTE9DQVRJT05fT1BUSU9OLCAuLi5sb2NhdGlvbnNdXHJcbiAgICAgIDogbG9jYXRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZmlsdGVyZWRXb3Jrc3BhY2VzQWxsKCk6IFdvcmtzcGFjZVtdIHtcclxuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VzLmZpbHRlcih3b3Jrc3BhY2UgPT5cclxuICAgICAgKCF0ZXJtIHx8IHdvcmtzcGFjZS5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8IHdvcmtzcGFjZS5sb2NhdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKSAmJlxyXG4gICAgICAoIXRoaXMudHlwZUZpbHRlciB8fCB3b3Jrc3BhY2UudHlwZUxhYmVsID09PSB0aGlzLnR5cGVGaWx0ZXIpICYmXHJcbiAgICAgIHRoaXMubWF0Y2hlc0xvY2F0aW9uRmlsdGVyKHdvcmtzcGFjZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hdGNoZXNMb2NhdGlvbkZpbHRlcih3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmxvY2F0aW9uRmlsdGVyKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMubG9jYXRpb25GaWx0ZXIgPT09IE5PX0xPQ0FUSU9OX09QVElPTlxyXG4gICAgICA/IGhhc05vTG9jYXRpb24od29ya3NwYWNlLmxvY2F0aW9uKVxyXG4gICAgICA6IHdvcmtzcGFjZS5sb2NhdGlvbiA9PT0gdGhpcy5sb2NhdGlvbkZpbHRlcjtcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJlZFdvcmtzcGFjZXMoKTogV29ya3NwYWNlW10ge1xyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMucGFnZVNpemU7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFdvcmtzcGFjZXNBbGwuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgdGhpcy5wYWdlU2l6ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWRUb3RhbCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRXb3Jrc3BhY2VzQWxsLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHNlbGVjdFRhYih0YWI6IFdvcmtzcGFjZXNUYWIpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuV29ya3NwYWNlKHsgaWQsIGNvbm5lY3Rpb25UeXBlIH06IFdvcmtzcGFjZU9wZW5FdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBpZCkgPz8gbnVsbDtcclxuICAgIHRoaXMub3BlbldvcmtzcGFjZS5lbWl0KGlkKTtcclxuXHJcbiAgICBpZiAoIXdvcmtzcGFjZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFdvcmtzcGFjZSA9IHdvcmtzcGFjZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb25uZWN0aW9uVHlwZSA9IGNvbm5lY3Rpb25UeXBlO1xyXG4gICAgdGhpcy52aWV3ID0gJ2RldGFpbCc7XHJcbiAgfVxyXG5cclxuICBvbkJhY2tUb0xpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXcgPSAnbGlzdCc7XHJcbiAgICB0aGlzLnNlbGVjdGVkV29ya3NwYWNlID0gbnVsbDtcclxuICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKCcvd29ya3NwYWNlcycpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UodGVybTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSB0ZXJtO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgb25UeXBlRmlsdGVyQ2hhbmdlKHR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50eXBlRmlsdGVyID0gdHlwZTtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gMDtcclxuICB9XHJcblxyXG4gIG9uTG9jYXRpb25GaWx0ZXJDaGFuZ2UobG9jYXRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2NhdGlvbkZpbHRlciA9IGxvY2F0aW9uO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHsgcGFnZUluZGV4LCBwYWdlU2l6ZSB9OiB7IHBhZ2VJbmRleDogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4O1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gIH1cclxuXHJcbiAgb25Nb3ZlVG9NVCh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihXb3Jrc3BhY2VDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogYFVwZ3JhZGUgd29ya3NwYWNlICR7d29ya3NwYWNlLmRpc3BsYXlOYW1lfSB0byBXZWJleCBDYWxsaW5nP2AsXHJcbiAgICAgICAgbWVzc2FnZTogYDxwPlVwZ3JhZGluZyB0aGlzIHdvcmtzcGFjZSB3aWxsIHByZXBhcmUgaXQgZm9yIG1pZ3JhdGlvbiB0byBXZWJleCBDYWxsaW5nLjwvcD5cclxuICAgICAgICAgIDxwPkR1cmluZyB0aGlzIHByb2Nlc3MsIHRoZSB3b3Jrc3BhY2UgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNvcGllZCB0byB0aGUgV2ViZXggQ2FsbGluZyBlbnZpcm9ubWVudC5cclxuICAgICAgICAgIFRoZSB3b3Jrc3BhY2Ugd2lsbCByZW1haW4gYWN0aXZlIG9uIHRoZSBjdXJyZW50IHN5c3RlbSB1bnRpbCB0aGUgQWN0aXZhdGUgc3RlcCBpcyBjb21wbGV0ZWQuPC9wPlxyXG4gICAgICAgICAgPHA+RG8geW91IHdhbnQgdG8gY29udGludWU/PC9wPmAsXHJcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdZZXMsIHVwZ3JhZGUnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5hZGQod29ya3NwYWNlLmlkKTtcclxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5taWdyYXRpb25TZXJ2aWNlLm1vdmVUb01UKHRoaXMuY3VzdG9tZXJJZCwgd29ya3NwYWNlLmRldmljZSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZm9ybUlkOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGlmIChmb3JtSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb2xsTWlncmF0aW9uRm9ybVN0YXR1cyhOdW1iZXIoZm9ybUlkKSwgd29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkVuYWJsZVdlYmV4Q2FsbGluZyh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IHZvaWQge1xyXG4gICAgY29uc3QgZGV2aWNlID0gd29ya3NwYWNlLmRldmljZTtcclxuICAgIGlmICghZGV2aWNlLndlYmV4VVVJRCB8fCB3b3Jrc3BhY2Uuc3RhdHVzICE9PSAnaW5hY3RpdmUnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFdvcmtzcGFjZUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRpdGxlOiBgQWN0aXZhdGUgd29ya3NwYWNlICR7d29ya3NwYWNlLmRpc3BsYXlOYW1lfSBvbiBNdWx0aSBUZW5hbnQ/YCxcclxuICAgICAgICBtZXNzYWdlOiBgPHA+QWN0aXZhdGluZyB0aGlzIHdvcmtzcGFjZSB3aWxsIHBlcmZvcm0gdGhlIGN1dG92ZXIgdG8gTXVsdGkgVGVuYW50IGFuZCBjb21wbGV0ZSB0aGUgbWlncmF0aW9uIHByb2Nlc3MuPC9wPlxyXG4gICAgICAgICAgPHA+QWZ0ZXIgYWN0aXZhdGlvbiwgdGhlIHdvcmtzcGFjZSB3aWxsIGJlY29tZSBhY3RpdmUgb24gTXVsdGkgVGVuYW50IGFuZCB0aGUgb3JpZ2luYWwgd29ya3NwYWNlIHdpbGwgYmVjb21lIGluYWN0aXZlLjwvcD5cclxuICAgICAgICAgIDxwPkRvIHlvdSB3YW50IHRvIGNvbnRpbnVlPzwvcD5gLFxyXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnQWN0aXZhdGUnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5hZGQod29ya3NwYWNlLmlkKTtcclxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5taWdyYXRpb25TZXJ2aWNlXHJcbiAgICAgICAgLmdldE1pZ3JhdGVkTWlncmF0aW9uRm9ybUVudGl0aWVzKHRoaXMuY3VzdG9tZXJJZCwgZGV2aWNlLndlYmV4VVVJRCBhcyBzdHJpbmcsICdPUlBIQU5FRF9ERVZJQ0UnKVxyXG4gICAgICAgIC5waXBlKG1hcCgoZW50aXRpZXM6IGFueVtdKSA9PiAoQXJyYXkuaXNBcnJheShlbnRpdGllcykgPyBlbnRpdGllc1swXSA6IGVudGl0aWVzIHx8IG51bGwpKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtSWQgPSBlbnRpdHk/Lm1pZ3JhdGlvbkZvcm1JZCA/PyBlbnRpdHk/LmlkID8/IG51bGw7XHJcbiAgICAgICAgICAgIGlmICghZm9ybUlkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBkZXZpY2VNYXAgPSB0aGlzLmJ1aWxkRmlybXdhcmVEZXZpY2VNYXAoZW50aXR5LCBkZXZpY2UpO1xyXG4gICAgICAgICAgICBjb25zdCB1cGdyYWRlU3Vic2NyaXB0aW9uID0gdGhpcy5taWdyYXRpb25TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLnRyaWdnZXJGaXJtd2FyZVVwZ3JhZGUodGhpcy5jdXN0b21lcklkLCBOdW1iZXIoZm9ybUlkKSwgZGV2aWNlTWFwKVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2xsTWlncmF0aW9uRm9ybVN0YXR1cyhOdW1iZXIoZm9ybUlkKSwgd29ya3NwYWNlLmlkLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1pZ3JhdGlvblNlcnZpY2UucmVtb3ZlVWNtTGljZW5zZSh0aGlzLmN1c3RvbWVySWQsIE51bWJlcihmb3JtSWQpKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfSwgMTAwMDApO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHVwZ3JhZGVTdWJzY3JpcHRpb24pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uTWlncmF0ZVRvVUNNKHdvcmtzcGFjZTogV29ya3NwYWNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZXZpY2UgPSB3b3Jrc3BhY2UuZGV2aWNlO1xyXG4gICAgaWYgKCFkZXZpY2Uud2ViZXhVVUlEIHx8IHdvcmtzcGFjZS5zdGF0dXMgIT09ICdhY3RpdmUnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuYWRkKHdvcmtzcGFjZS5pZCk7XHJcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLm1pZ3JhdGlvblNlcnZpY2VcclxuICAgICAgLnJldmVydE1pZ3JhdGlvbih0aGlzLmN1c3RvbWVySWQsIGRldmljZS53ZWJleFVVSUQpXHJcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aW1lcigyMDAwKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvbGxNaWdyYXRpb25Gb3JtU3RhdHVzKGZvcm1JZDogbnVtYmVyLCB3b3Jrc3BhY2VJZDogc3RyaW5nLCBvbkNvbXBsZXRlZD86ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRpbWVyKDAsIDEwMDAwKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5taWdyYXRpb25TZXJ2aWNlLmdldE1pZ3JhdGlvbkZvcm1TdGF0dXModGhpcy5jdXN0b21lcklkLCBmb3JtSWQpKSxcclxuICAgICAgICB0YWtlV2hpbGUoKHJlc3BvbnNlOiBhbnkpID0+ICF0aGlzLmlzVGVybWluYWxNaWdyYXRpb25TdGF0dXMocmVzcG9uc2U/LnN0YXR1cyksIHRydWUpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLm5vcm1hbGl6ZU1pZ3JhdGlvblN0YXR1cyhyZXNwb25zZT8uc3RhdHVzKTtcclxuICAgICAgICAgIGlmICghdGhpcy5pc1Rlcm1pbmFsTWlncmF0aW9uU3RhdHVzKHN0YXR1cykpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2VJZCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ0NPTVBMRVRFRCcpIHtcclxuICAgICAgICAgICAgb25Db21wbGV0ZWQ/LigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlSWQpO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRmlybXdhcmVEZXZpY2VNYXAoZW50aXR5OiBhbnksIGRldmljZTogV29ya3NwYWNlRGV2aWNlUmVjb3JkKTogRmlybXdhcmVEZXZpY2VNYXAge1xyXG4gICAgY29uc3QgZGV2aWNlTWFwOiBGaXJtd2FyZURldmljZU1hcCA9IHt9O1xyXG4gICAgY29uc3QgZW50aXR5RGV2aWNlczogYW55W10gPSBbXHJcbiAgICAgIC4uLihBcnJheS5pc0FycmF5KGVudGl0eT8uZGV2aWNlcykgPyBlbnRpdHkuZGV2aWNlcyA6IFtdKSxcclxuICAgICAgLi4uKEFycmF5LmlzQXJyYXkoZW50aXR5Py53ZWJleE1pZ3JhdGlvbkRldmljZXMpID8gZW50aXR5LndlYmV4TWlncmF0aW9uRGV2aWNlcyA6IFtdKSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3VyY2VEZXZpY2VzID0gZW50aXR5RGV2aWNlcy5sZW5ndGggPyBlbnRpdHlEZXZpY2VzIDogW2RldmljZV07XHJcbiAgICBjb25zdCBjdWNtSWQgPSBOdW1iZXIoZGV2aWNlLmN1Y21JZCkgfHwgMDtcclxuXHJcbiAgICBzb3VyY2VEZXZpY2VzLmZvckVhY2goKHJhd0RldmljZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IHJhd0RldmljZT8ubmFtZSB8fCBkZXZpY2UubmFtZSB8fCAnJztcclxuICAgICAgaWYgKCFuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRldmljZU5hbWUgPSBuYW1lLmluY2x1ZGVzKCdTRVAnKSA/IG5hbWUgOiBgU0VQJHtuYW1lfWA7XHJcbiAgICAgIGlmICghZGV2aWNlTWFwW2N1Y21JZF0pIHtcclxuICAgICAgICBkZXZpY2VNYXBbY3VjbUlkXSA9IHt9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghZGV2aWNlTWFwW2N1Y21JZF1bJ09SUEhBTkVEX0RFVklDRSddKSB7XHJcbiAgICAgICAgZGV2aWNlTWFwW2N1Y21JZF1bJ09SUEhBTkVEX0RFVklDRSddID0gW107XHJcbiAgICAgIH1cclxuICAgICAgZGV2aWNlTWFwW2N1Y21JZF1bJ09SUEhBTkVEX0RFVklDRSddLnB1c2goZGV2aWNlTmFtZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZGV2aWNlTWFwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBub3JtYWxpemVNaWdyYXRpb25TdGF0dXMoc3RhdHVzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoc3RhdHVzIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1Rlcm1pbmFsTWlncmF0aW9uU3RhdHVzKHN0YXR1czogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplTWlncmF0aW9uU3RhdHVzKHN0YXR1cyk7XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZCA9PT0gJ0NPTVBMRVRFRCcgfHwgbm9ybWFsaXplZCA9PT0gJ0ZBSUxFRCcgfHwgbm9ybWFsaXplZCA9PT0gJ0VSUk9SJyB8fCBub3JtYWxpemVkID09PSAnQ09NUExFVEVEX1dJVEhfRVJST1JTJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hXb3Jrc3BhY2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy53b3Jrc3BhY2VzU2VydmljZS5mZXRjaFdvcmtzcGFjZXModGhpcy5jdXN0b21lcklkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoeyB3b3Jrc3BhY2VzLCB0b3RhbCB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gd29ya3NwYWNlcztcclxuICAgICAgICB0aGlzLnRvdGFsID0gdG90YWw7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSBbXTtcclxuICAgICAgICB0aGlzLnRvdGFsID0gMDtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXcgPT09ICdsaXN0JzsgZWxzZSBkZXRhaWxWaWV3XCI+XHJcbiAgICA8aGVhZGVyIGNsYXNzPVwidGstd29ya3NwYWNlc19faGVhZGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RpdGxlXCI+V29ya3NwYWNlczwvaDE+XHJcbiAgICA8L2hlYWRlcj5cclxuXHJcbiAgICA8bmF2IGNsYXNzPVwidGstd29ya3NwYWNlc19fdGFic1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCJcclxuICAgICAgICBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RhYlwiXHJcbiAgICAgICAgW2NsYXNzLnRrLXdvcmtzcGFjZXNfX3RhYi0tYWN0aXZlXT1cImFjdGl2ZVRhYiA9PT0gdGFiLmlkXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0VGFiKHRhYi5pZClcIj5cclxuICAgICAgICA8aW1nIGNsYXNzPVwidGstd29ya3NwYWNlc19fdGFiLWljb25cIiBbc3JjXT1cInRhYi5pY29uXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25hdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnd29ya3NwYWNlcyc7IGVsc2UgcGxhY2Vob2xkZXJcIj5cclxuICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIj48L2FwcC1sb2FkZXI+XHJcblxyXG4gICAgICA8dGstd29ya3NwYWNlcy1maWx0ZXJzXHJcbiAgICAgICAgW3Jlc3VsdENvdW50XT1cInRvdGFsXCJcclxuICAgICAgICBbdHlwZU9wdGlvbnNdPVwidHlwZU9wdGlvbnNcIlxyXG4gICAgICAgIFtsb2NhdGlvbk9wdGlvbnNdPVwibG9jYXRpb25PcHRpb25zXCJcclxuICAgICAgICAoc2VhcmNoQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICh0eXBlQ2hhbmdlKT1cIm9uVHlwZUZpbHRlckNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAobG9jYXRpb25DaGFuZ2UpPVwib25Mb2NhdGlvbkZpbHRlckNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoYWRkV29ya3NwYWNlKT1cImFkZFdvcmtzcGFjZS5lbWl0KClcIj5cclxuICAgICAgPC90ay13b3Jrc3BhY2VzLWZpbHRlcnM+XHJcblxyXG4gICAgICA8dGstd29ya3NwYWNlcy10YWJsZVxyXG4gICAgICAgIFt3b3Jrc3BhY2VzXT1cImZpbHRlcmVkV29ya3NwYWNlc1wiXHJcbiAgICAgICAgW3RvdGFsXT1cImZpbHRlcmVkVG90YWxcIlxyXG4gICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcclxuICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgIFtwZW5kaW5nV29ya3NwYWNlSWRzXT1cInBlbmRpbmdXb3Jrc3BhY2VJZHNcIlxyXG4gICAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCJcclxuICAgICAgICAob3BlbldvcmtzcGFjZSk9XCJvbk9wZW5Xb3Jrc3BhY2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKG1pZ3JhdGVUb01UKT1cIm9uTW92ZVRvTVQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGVuYWJsZVdlYmV4Q2FsbGluZyk9XCJvbkVuYWJsZVdlYmV4Q2FsbGluZygkZXZlbnQpXCJcclxuICAgICAgICAobWlncmF0ZVRvVUNNKT1cIm9uTWlncmF0ZVRvVUNNKCRldmVudClcIlxyXG4gICAgICAgIChhZGREZXZpY2UpPVwiYWRkRGV2aWNlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPC90ay13b3Jrc3BhY2VzLXRhYmxlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3BsYWNlaG9sZGVyXCI+VGhpcyBzZWN0aW9uIGlzbid0IGF2YWlsYWJsZSBpbiB0aGlzIHdpZGdldCB5ZXQuPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2RldGFpbFZpZXc+XHJcbiAgICA8dGstd29ya3NwYWNlLWRldGFpbFxyXG4gICAgICAqbmdJZj1cInNlbGVjdGVkV29ya3NwYWNlXCJcclxuICAgICAgW3dvcmtzcGFjZV09XCJzZWxlY3RlZFdvcmtzcGFjZVwiXHJcbiAgICAgIFtjb25uZWN0aW9uVHlwZV09XCJzZWxlY3RlZENvbm5lY3Rpb25UeXBlXCJcclxuICAgICAgW2N1c3RvbWVySWRdPVwiY3VzdG9tZXJJZFwiXHJcbiAgICAgIChiYWNrKT1cIm9uQmFja1RvTGlzdCgpXCI+XHJcbiAgICA8L3RrLXdvcmtzcGFjZS1kZXRhaWw+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
|