@tuki-io/tuki-widgets 0.0.219-dev.5 → 0.0.219-dev.50

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.
Files changed (193) hide show
  1. package/di2mt/api/api.endpoints.d.ts +3 -0
  2. package/esm2020/di2mt/api/api.endpoints.mjs +4 -1
  3. package/esm2020/locations/public-api.mjs +8 -0
  4. package/esm2020/locations/src/app.constants.mjs +14 -0
  5. package/esm2020/locations/src/location-confirm-dialog/location-confirm-dialog.component.mjs +23 -0
  6. package/esm2020/locations/src/locations.component.mjs +351 -0
  7. package/esm2020/locations/src/locations.module.mjs +42 -0
  8. package/esm2020/locations/src/material.module.mjs +55 -0
  9. package/esm2020/locations/src/services/api.service.mjs +67 -0
  10. package/esm2020/locations/src/services/locations.service.mjs +65 -0
  11. package/esm2020/locations/src/types/location.mjs +2 -0
  12. package/esm2020/locations/src/utils/app-loader/app-loader.mjs +14 -0
  13. package/esm2020/locations/tuki-io-tuki-widgets-locations.mjs +5 -0
  14. package/esm2020/meetings/public-api.mjs +8 -0
  15. package/esm2020/meetings/src/app.constants.mjs +9 -0
  16. package/esm2020/meetings/src/components/live-meetings/live-meeting/live-meeting.component.mjs +107 -0
  17. package/esm2020/meetings/src/components/live-meetings/live-meetings.component.mjs +98 -0
  18. package/esm2020/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.mjs +110 -0
  19. package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +65 -0
  20. package/esm2020/meetings/src/material.module.mjs +76 -0
  21. package/esm2020/meetings/src/meetings.component.mjs +65 -0
  22. package/esm2020/meetings/src/meetings.module.mjs +51 -0
  23. package/esm2020/meetings/src/services/api.service.mjs +67 -0
  24. package/esm2020/meetings/src/services/live-meetings.service.mjs +178 -0
  25. package/esm2020/meetings/src/services/meeting-spaces.service.mjs +102 -0
  26. package/esm2020/meetings/src/types/live-meeting.mjs +2 -0
  27. package/esm2020/meetings/src/types/meeting-space.mjs +2 -0
  28. package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +14 -0
  29. package/esm2020/meetings/tuki-io-tuki-widgets-meetings.mjs +5 -0
  30. package/esm2020/shared/public-api.mjs +4 -0
  31. package/esm2020/shared/src/ui/material.module.mjs +188 -0
  32. package/esm2020/shared/src/ui/shared.module.mjs +36 -0
  33. package/esm2020/shared/src/ui/tk-page-section/tk-page-section.component.mjs +13 -0
  34. package/esm2020/shared/src/ui/tk-page-section-row/tk-page-section-row.component.mjs +13 -0
  35. package/esm2020/shared/src/ui/ui.module.mjs +37 -0
  36. package/esm2020/shared/tuki-io-tuki-widgets-shared.mjs +5 -0
  37. package/esm2020/user-creation/src/utils/device-default-prefix.mjs +19 -2
  38. package/esm2020/user-creation/src/utils/device-name-dynamic-tokens.mjs +4 -0
  39. package/esm2020/user-creation/src/utils/parse-device-name-rule.mjs +6 -3
  40. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +60 -13
  41. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +2 -1
  42. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +8 -6
  43. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.mjs +13 -9
  44. package/esm2020/user-device-manage/src/classes/simplified-user.mjs +1 -1
  45. package/esm2020/user-device-manage/src/user-device-manage.module.mjs +1 -4
  46. package/esm2020/user-manage/src/app.constants.mjs +7 -1
  47. package/esm2020/user-manage/src/classes/simplified-user.mjs +5 -3
  48. package/esm2020/user-manage/src/device-list/device-list.component.mjs +7 -4
  49. package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +6 -3
  50. package/esm2020/user-manage/src/material.module.mjs +14 -7
  51. package/esm2020/user-manage/src/services/dcp-api.service.mjs +79 -0
  52. package/esm2020/user-manage/src/services/user.service.mjs +65 -19
  53. package/esm2020/user-manage/src/user-calling/user-calling.component.mjs +12 -7
  54. package/esm2020/user-manage/src/user-manage-widget.component.mjs +64 -23
  55. package/esm2020/user-manage/src/user-manage.module.mjs +10 -3
  56. package/esm2020/users-list/src/app.constants.mjs +2 -1
  57. package/esm2020/users-list/src/classes/simlified-user.mjs +1 -1
  58. package/esm2020/users-list/src/classes/user-list.mjs +2 -1
  59. package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +3 -3
  60. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +14 -3
  61. package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +5 -3
  62. package/esm2020/users-list/src/users-list.component.mjs +100 -17
  63. package/esm2020/workspaces/public-api.mjs +8 -0
  64. package/esm2020/workspaces/src/app.constants.mjs +27 -0
  65. package/esm2020/workspaces/src/components/workspace-confirm-dialog/workspace-confirm-dialog.component.mjs +32 -0
  66. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +61 -0
  67. package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +56 -0
  68. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +127 -0
  69. package/esm2020/workspaces/src/material.module.mjs +83 -0
  70. package/esm2020/workspaces/src/services/api-webex.service.mjs +14 -0
  71. package/esm2020/workspaces/src/services/api.service.mjs +67 -0
  72. package/esm2020/workspaces/src/services/workspace-detail.service.mjs +122 -0
  73. package/esm2020/workspaces/src/services/workspaces-migration.service.mjs +59 -0
  74. package/esm2020/workspaces/src/services/workspaces.service.mjs +105 -0
  75. package/esm2020/workspaces/src/types/workspace.mjs +4 -0
  76. package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +14 -0
  77. package/esm2020/workspaces/src/utils/device-icon.mjs +13 -0
  78. package/esm2020/workspaces/src/utils/workspace-name.mjs +8 -0
  79. package/esm2020/workspaces/src/workspaces.component.mjs +306 -0
  80. package/esm2020/workspaces/src/workspaces.module.mjs +51 -0
  81. package/esm2020/workspaces/tuki-io-tuki-widgets-workspaces.mjs +5 -0
  82. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +3 -0
  83. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  84. package/fesm2015/tuki-io-tuki-widgets-locations.mjs +623 -0
  85. package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -0
  86. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +894 -0
  87. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -0
  88. package/fesm2015/tuki-io-tuki-widgets-shared.mjs +280 -0
  89. package/fesm2015/tuki-io-tuki-widgets-shared.mjs.map +1 -0
  90. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +111 -32
  91. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  92. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +0 -13
  93. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  94. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +253 -60
  95. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  96. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +121 -22
  97. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  98. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +1082 -0
  99. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -0
  100. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +3 -0
  101. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  102. package/fesm2020/tuki-io-tuki-widgets-locations.mjs +617 -0
  103. package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -0
  104. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +902 -0
  105. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -0
  106. package/fesm2020/tuki-io-tuki-widgets-shared.mjs +280 -0
  107. package/fesm2020/tuki-io-tuki-widgets-shared.mjs.map +1 -0
  108. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +104 -28
  109. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  110. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +0 -13
  111. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  112. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +248 -58
  113. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  114. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +120 -22
  115. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  116. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +1089 -0
  117. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -0
  118. package/locations/index.d.ts +5 -0
  119. package/locations/public-api.d.ts +2 -0
  120. package/locations/src/app.constants.d.ts +9 -0
  121. package/locations/src/location-confirm-dialog/location-confirm-dialog.component.d.ts +15 -0
  122. package/locations/src/locations.component.d.ts +86 -0
  123. package/locations/src/locations.module.d.ts +13 -0
  124. package/locations/src/material.module.d.ts +12 -0
  125. package/locations/src/services/api.service.d.ts +18 -0
  126. package/locations/src/services/locations.service.d.ts +19 -0
  127. package/locations/src/types/location.d.ts +28 -0
  128. package/locations/src/utils/app-loader/app-loader.d.ts +6 -0
  129. package/meetings/index.d.ts +5 -0
  130. package/meetings/public-api.d.ts +2 -0
  131. package/meetings/src/app.constants.d.ts +8 -0
  132. package/meetings/src/components/live-meetings/live-meeting/live-meeting.component.d.ts +34 -0
  133. package/meetings/src/components/live-meetings/live-meetings.component.d.ts +43 -0
  134. package/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.d.ts +39 -0
  135. package/meetings/src/components/meeting-spaces/meeting-spaces.component.d.ts +27 -0
  136. package/meetings/src/material.module.d.ts +15 -0
  137. package/meetings/src/meetings.component.d.ts +29 -0
  138. package/meetings/src/meetings.module.d.ts +16 -0
  139. package/meetings/src/services/api.service.d.ts +18 -0
  140. package/meetings/src/services/live-meetings.service.d.ts +9 -0
  141. package/meetings/src/services/meeting-spaces.service.d.ts +16 -0
  142. package/meetings/src/types/live-meeting.d.ts +71 -0
  143. package/meetings/src/types/meeting-space.d.ts +52 -0
  144. package/meetings/src/utils/app-loader/app-loader.d.ts +6 -0
  145. package/package.json +33 -1
  146. package/shared/index.d.ts +5 -0
  147. package/shared/public-api.d.ts +3 -0
  148. package/shared/src/ui/material.module.d.ts +28 -0
  149. package/shared/src/ui/shared.module.d.ts +10 -0
  150. package/{user-device-manage/src/shared/tk-page-section/page-section.component.d.ts → shared/src/ui/tk-page-section/tk-page-section.component.d.ts} +1 -1
  151. package/shared/src/ui/tk-page-section-row/tk-page-section-row.component.d.ts +6 -0
  152. package/shared/src/ui/ui.module.d.ts +11 -0
  153. package/user-creation/src/utils/device-default-prefix.d.ts +7 -2
  154. package/user-creation/src/utils/device-name-dynamic-tokens.d.ts +1 -0
  155. package/user-creation/src/utils/parse-device-name-rule.d.ts +1 -0
  156. package/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.d.ts +2 -0
  157. package/user-device-manage/src/classes/simplified-user.d.ts +1 -1
  158. package/user-device-manage/src/user-device-manage.module.d.ts +9 -10
  159. package/user-manage/src/app.constants.d.ts +6 -0
  160. package/user-manage/src/classes/simplified-user.d.ts +11 -1
  161. package/user-manage/src/device-list/device-list.component.d.ts +2 -0
  162. package/user-manage/src/material.module.d.ts +2 -1
  163. package/user-manage/src/services/dcp-api.service.d.ts +21 -0
  164. package/user-manage/src/services/user.service.d.ts +8 -1
  165. package/user-manage/src/user-calling/user-calling.component.d.ts +3 -2
  166. package/user-manage/src/user-manage-widget.component.d.ts +10 -2
  167. package/user-manage/src/user-manage.module.d.ts +2 -1
  168. package/users-list/src/app.constants.d.ts +1 -0
  169. package/users-list/src/classes/simlified-user.d.ts +1 -1
  170. package/users-list/src/classes/user-list.d.ts +4 -0
  171. package/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.d.ts +3 -1
  172. package/users-list/src/move-user-wizard/move-user-wizard.component.d.ts +2 -1
  173. package/users-list/src/users-list.component.d.ts +6 -1
  174. package/workspaces/index.d.ts +5 -0
  175. package/workspaces/public-api.d.ts +2 -0
  176. package/workspaces/src/app.constants.d.ts +25 -0
  177. package/workspaces/src/components/workspace-confirm-dialog/workspace-confirm-dialog.component.d.ts +20 -0
  178. package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +25 -0
  179. package/workspaces/src/components/workspaces-filters/workspaces-filters.component.d.ts +20 -0
  180. package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +42 -0
  181. package/workspaces/src/material.module.d.ts +16 -0
  182. package/workspaces/src/services/api-webex.service.d.ts +6 -0
  183. package/workspaces/src/services/api.service.d.ts +18 -0
  184. package/workspaces/src/services/workspace-detail.service.d.ts +20 -0
  185. package/workspaces/src/services/workspaces-migration.service.d.ts +18 -0
  186. package/workspaces/src/services/workspaces.service.d.ts +11 -0
  187. package/workspaces/src/types/workspace.d.ts +416 -0
  188. package/workspaces/src/utils/app-loader/app-loader.d.ts +6 -0
  189. package/workspaces/src/utils/device-icon.d.ts +1 -0
  190. package/workspaces/src/utils/workspace-name.d.ts +1 -0
  191. package/workspaces/src/workspaces.component.d.ts +74 -0
  192. package/workspaces/src/workspaces.module.d.ts +16 -0
  193. package/esm2020/user-device-manage/src/shared/tk-page-section/page-section.component.mjs +0 -13
@@ -0,0 +1,8 @@
1
+ /*
2
+ * Public API Surface of @tuki-io/tuki-widgets
3
+ */
4
+ // Widget Modules
5
+ export * from './src/workspaces.module';
6
+ // Components
7
+ export * from './src/workspaces.component';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy93b3Jrc3BhY2VzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxpQkFBaUI7QUFDakIsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxhQUFhO0FBQ2IsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQHR1a2ktaW8vdHVraS13aWRnZXRzXG4gKi9cblxuLy8gV2lkZ2V0IE1vZHVsZXNcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3dvcmtzcGFjZXMubW9kdWxlJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,27 @@
1
+ export const API = {
2
+ WORKSPACES: {
3
+ GET_ALL: '/api/search/quicknonuserdevices',
4
+ },
5
+ MIGRATION: {
6
+ MOVE: '/api/migration/webex/singlemigration/features/ORPHANED_DEVICE',
7
+ MIGRATION_FORM: '/api/search/webex/customers/:customerId/migrationforms/:formId',
8
+ MIGRATION_FORM_ENTITIES_MIGRATED: '/api/search/webex/customers/:customerId/migrationformentities/migrated',
9
+ TRIGGER_FIRMWARE_MIGRATION: '/api/migration/:migrationType/firmwaremigration/customer/:customerId/migration/:migrationFormId',
10
+ REMOVE_UCM_LICENSE: '/api/migration/:controlHubType/removeucmlicense/customer/:customerId/migrationform/:migrationFormId',
11
+ WEBEX_REVERT: '/api/webex/provisioning/customers/:customerId/persons/:personId/revertmigration',
12
+ },
13
+ DETAILS: {
14
+ // CUCM detail endpoints will be provided later.
15
+ CUCM: {
16
+ WORKSPACE: '/api/provision/:siteId/nonuserdevices/:workspaceId?type=ORPHAN_DEVICE',
17
+ SITE: '/api/sites/:siteId',
18
+ },
19
+ WEBEX: {
20
+ WORKSPACE: '/api/webex/provisioning/customers/:customerId/workspaces/:workspaceId',
21
+ NUMBERS: '/api/webex/provisioning/customers/:customerId/workspaces/:workspaceId/numbers',
22
+ CALLERID: '/api/webex/provisioning/customers/:customerId/workspaces/:workspaceId/callerId',
23
+ },
24
+ },
25
+ };
26
+ export const ON_PREM_ID = 2542;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy93b3Jrc3BhY2VzL3NyYy9hcHAuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRztJQUNqQixVQUFVLEVBQUU7UUFDVixPQUFPLEVBQUUsaUNBQWlDO0tBQzNDO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsSUFBSSxFQUFFLCtEQUErRDtRQUNyRSxjQUFjLEVBQUUsZ0VBQWdFO1FBQ2hGLGdDQUFnQyxFQUFFLHdFQUF3RTtRQUMxRywwQkFBMEIsRUFBRSxpR0FBaUc7UUFDN0gsa0JBQWtCLEVBQUUscUdBQXFHO1FBQ3pILFlBQVksRUFBRSxpRkFBaUY7S0FDaEc7SUFDRCxPQUFPLEVBQUU7UUFDUCxnREFBZ0Q7UUFDaEQsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLHVFQUF1RTtZQUNsRixJQUFJLEVBQUUsb0JBQW9CO1NBQzNCO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsU0FBUyxFQUFFLHVFQUF1RTtZQUNsRixPQUFPLEVBQUUsK0VBQStFO1lBQ3hGLFFBQVEsRUFBRSxnRkFBZ0Y7U0FDM0Y7S0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFQSSA9IHtcbiAgV09SS1NQQUNFUzoge1xuICAgIEdFVF9BTEw6ICcvYXBpL3NlYXJjaC9xdWlja25vbnVzZXJkZXZpY2VzJyxcbiAgfSxcbiAgTUlHUkFUSU9OOiB7XG4gICAgTU9WRTogJy9hcGkvbWlncmF0aW9uL3dlYmV4L3NpbmdsZW1pZ3JhdGlvbi9mZWF0dXJlcy9PUlBIQU5FRF9ERVZJQ0UnLFxuICAgIE1JR1JBVElPTl9GT1JNOiAnL2FwaS9zZWFyY2gvd2ViZXgvY3VzdG9tZXJzLzpjdXN0b21lcklkL21pZ3JhdGlvbmZvcm1zLzpmb3JtSWQnLFxuICAgIE1JR1JBVElPTl9GT1JNX0VOVElUSUVTX01JR1JBVEVEOiAnL2FwaS9zZWFyY2gvd2ViZXgvY3VzdG9tZXJzLzpjdXN0b21lcklkL21pZ3JhdGlvbmZvcm1lbnRpdGllcy9taWdyYXRlZCcsXG4gICAgVFJJR0dFUl9GSVJNV0FSRV9NSUdSQVRJT046ICcvYXBpL21pZ3JhdGlvbi86bWlncmF0aW9uVHlwZS9maXJtd2FyZW1pZ3JhdGlvbi9jdXN0b21lci86Y3VzdG9tZXJJZC9taWdyYXRpb24vOm1pZ3JhdGlvbkZvcm1JZCcsXG4gICAgUkVNT1ZFX1VDTV9MSUNFTlNFOiAnL2FwaS9taWdyYXRpb24vOmNvbnRyb2xIdWJUeXBlL3JlbW92ZXVjbWxpY2Vuc2UvY3VzdG9tZXIvOmN1c3RvbWVySWQvbWlncmF0aW9uZm9ybS86bWlncmF0aW9uRm9ybUlkJyxcbiAgICBXRUJFWF9SRVZFUlQ6ICcvYXBpL3dlYmV4L3Byb3Zpc2lvbmluZy9jdXN0b21lcnMvOmN1c3RvbWVySWQvcGVyc29ucy86cGVyc29uSWQvcmV2ZXJ0bWlncmF0aW9uJyxcbiAgfSxcbiAgREVUQUlMUzoge1xuICAgIC8vIENVQ00gZGV0YWlsIGVuZHBvaW50cyB3aWxsIGJlIHByb3ZpZGVkIGxhdGVyLlxuICAgIENVQ006IHtcbiAgICAgIFdPUktTUEFDRTogJy9hcGkvcHJvdmlzaW9uLzpzaXRlSWQvbm9udXNlcmRldmljZXMvOndvcmtzcGFjZUlkP3R5cGU9T1JQSEFOX0RFVklDRScsXG4gICAgICBTSVRFOiAnL2FwaS9zaXRlcy86c2l0ZUlkJyxcbiAgICB9LFxuICAgIFdFQkVYOiB7XG4gICAgICBXT1JLU1BBQ0U6ICcvYXBpL3dlYmV4L3Byb3Zpc2lvbmluZy9jdXN0b21lcnMvOmN1c3RvbWVySWQvd29ya3NwYWNlcy86d29ya3NwYWNlSWQnLFxuICAgICAgTlVNQkVSUzogJy9hcGkvd2ViZXgvcHJvdmlzaW9uaW5nL2N1c3RvbWVycy86Y3VzdG9tZXJJZC93b3Jrc3BhY2VzLzp3b3Jrc3BhY2VJZC9udW1iZXJzJyxcbiAgICAgIENBTExFUklEOiAnL2FwaS93ZWJleC9wcm92aXNpb25pbmcvY3VzdG9tZXJzLzpjdXN0b21lcklkL3dvcmtzcGFjZXMvOndvcmtzcGFjZUlkL2NhbGxlcklkJyxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IE9OX1BSRU1fSUQgPSAyNTQyOyJdfQ==
@@ -0,0 +1,32 @@
1
+ import { Component, Inject, ViewEncapsulation } from '@angular/core';
2
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/dialog";
5
+ import * as i2 from "@angular/common";
6
+ export class WorkspaceConfirmDialogComponent {
7
+ constructor(dialogRef, data) {
8
+ this.dialogRef = dialogRef;
9
+ this.data = data;
10
+ this.confirmButtonText = 'OK';
11
+ this.message = '';
12
+ this.title = '';
13
+ }
14
+ ngOnInit() {
15
+ this.confirmButtonText = this.data.confirmButtonText || '';
16
+ this.message = this.data.message || '';
17
+ this.title = this.data.title || '';
18
+ }
19
+ onClose(result) {
20
+ this.dialogRef.close(result);
21
+ }
22
+ }
23
+ WorkspaceConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
24
+ WorkspaceConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspaceConfirmDialogComponent, selector: "tk-workspace-confirm-dialog", ngImport: i0, template: "<div id=\"tk-workspace-confirm-dialog\" class=\"tk-workspace-confirm-dialog\" aria-labelledby=\"tk-workspace-confirm-dialog-label\" role=\"dialog\">\n <h3 *ngIf=\"title\" class=\"tk-workspace-confirm-dialog__title\">{{ title }}</h3>\n <div mat-dialog-content *ngIf=\"message\" class=\"tk-workspace-confirm-dialog__content\">\n <div class=\"tk-workspace-confirm-dialog__message\" [innerHTML]=\"message\"></div>\n </div>\n <div mat-dialog-actions class=\"tk-workspace-confirm-dialog__actions\">\n <button type=\"button\" class=\"tk-workspace-confirm-dialog__button tk-workspace-confirm-dialog__button--cancel\" (click)=\"onClose(false)\">\n Cancel\n </button>\n <button type=\"button\" class=\"tk-workspace-confirm-dialog__button tk-workspace-confirm-dialog__button--confirm\" (click)=\"onClose(true)\">\n {{ confirmButtonText }}\n </button>\n </div>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspace-confirm-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative;padding:0 0 30px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-confirm-dialog__title{text-align:center;font-weight:600;font-size:16px;margin:0 0 24px}.tk-workspace-confirm-dialog__content{color:#000000b3;font-size:14px;margin:0 auto 15px;padding:0}.tk-workspace-confirm-dialog__message{font-weight:500}.tk-workspace-confirm-dialog__message p{padding:15px 0 0;margin:0}.tk-workspace-confirm-dialog__actions{gap:16px;display:flex;justify-content:flex-end;margin:0}.tk-workspace-confirm-dialog__button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer}.tk-workspace-confirm-dialog__button--cancel{border:1px solid rgba(0,0,0,.5);color:#000;background:white}.tk-workspace-confirm-dialog__button--confirm{background:black;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }], encapsulation: i0.ViewEncapsulation.None });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceConfirmDialogComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'tk-workspace-confirm-dialog', encapsulation: ViewEncapsulation.None, template: "<div id=\"tk-workspace-confirm-dialog\" class=\"tk-workspace-confirm-dialog\" aria-labelledby=\"tk-workspace-confirm-dialog-label\" role=\"dialog\">\n <h3 *ngIf=\"title\" class=\"tk-workspace-confirm-dialog__title\">{{ title }}</h3>\n <div mat-dialog-content *ngIf=\"message\" class=\"tk-workspace-confirm-dialog__content\">\n <div class=\"tk-workspace-confirm-dialog__message\" [innerHTML]=\"message\"></div>\n </div>\n <div mat-dialog-actions class=\"tk-workspace-confirm-dialog__actions\">\n <button type=\"button\" class=\"tk-workspace-confirm-dialog__button tk-workspace-confirm-dialog__button--cancel\" (click)=\"onClose(false)\">\n Cancel\n </button>\n <button type=\"button\" class=\"tk-workspace-confirm-dialog__button tk-workspace-confirm-dialog__button--confirm\" (click)=\"onClose(true)\">\n {{ confirmButtonText }}\n </button>\n </div>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspace-confirm-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative;padding:0 0 30px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-confirm-dialog__title{text-align:center;font-weight:600;font-size:16px;margin:0 0 24px}.tk-workspace-confirm-dialog__content{color:#000000b3;font-size:14px;margin:0 auto 15px;padding:0}.tk-workspace-confirm-dialog__message{font-weight:500}.tk-workspace-confirm-dialog__message p{padding:15px 0 0;margin:0}.tk-workspace-confirm-dialog__actions{gap:16px;display:flex;justify-content:flex-end;margin:0}.tk-workspace-confirm-dialog__button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer}.tk-workspace-confirm-dialog__button--cancel{border:1px solid rgba(0,0,0,.5);color:#000;background:white}.tk-workspace-confirm-dialog__button--confirm{background:black;color:#fff}\n"] }]
28
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
29
+ type: Inject,
30
+ args: [MAT_DIALOG_DATA]
31
+ }] }]; } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy93b3Jrc3BhY2VzL3NyYy9jb21wb25lbnRzL3dvcmtzcGFjZS1jb25maXJtLWRpYWxvZy93b3Jrc3BhY2UtY29uZmlybS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL2NvbXBvbmVudHMvd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nL3dvcmtzcGFjZS1jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDOzs7O0FBY3pFLE1BQU0sT0FBTywrQkFBK0I7SUFLMUMsWUFDUyxTQUF3RCxFQUMvQixJQUFrQztRQUQzRCxjQUFTLEdBQVQsU0FBUyxDQUErQztRQUMvQixTQUFJLEdBQUosSUFBSSxDQUE4QjtRQU5wRSxzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDekIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFVBQUssR0FBRyxFQUFFLENBQUM7SUFLUCxDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWU7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7NkhBbEJVLCtCQUErQiw4Q0FPaEMsZUFBZTtpSEFQZCwrQkFBK0IsbUVDZjVDLDAzQkFjQTs0RkRDYSwrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0UsNkJBQTZCLGlCQUd4QixpQkFBaUIsQ0FBQyxJQUFJOzswQkFTbEMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VDb25maXJtRGlhbG9nQ29uZmlnIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBjb25maXJtQnV0dG9uVGV4dDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ay13b3Jrc3BhY2UtY29uZmlybS1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZUNvbmZpcm1EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25maXJtQnV0dG9uVGV4dCA9ICdPSyc7XG4gIG1lc3NhZ2UgPSAnJztcbiAgdGl0bGUgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8V29ya3NwYWNlQ29uZmlybURpYWxvZ0NvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBXb3Jrc3BhY2VDb25maXJtRGlhbG9nQ29uZmlnLFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUJ1dHRvblRleHQgPSB0aGlzLmRhdGEuY29uZmlybUJ1dHRvblRleHQgfHwgJyc7XG4gICAgdGhpcy5tZXNzYWdlID0gdGhpcy5kYXRhLm1lc3NhZ2UgfHwgJyc7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuZGF0YS50aXRsZSB8fCAnJztcbiAgfVxuXG4gIG9uQ2xvc2UocmVzdWx0OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcbiAgfVxufVxuIiwiPGRpdiBpZD1cInRrLXdvcmtzcGFjZS1jb25maXJtLWRpYWxvZ1wiIGNsYXNzPVwidGstd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwidGstd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nLWxhYmVsXCIgcm9sZT1cImRpYWxvZ1wiPlxuICA8aDMgKm5nSWY9XCJ0aXRsZVwiIGNsYXNzPVwidGstd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nX190aXRsZVwiPnt7IHRpdGxlIH19PC9oMz5cbiAgPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgKm5nSWY9XCJtZXNzYWdlXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtY29uZmlybS1kaWFsb2dfX2NvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nX19tZXNzYWdlXCIgW2lubmVySFRNTF09XCJtZXNzYWdlXCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cInRrLXdvcmtzcGFjZS1jb25maXJtLWRpYWxvZ19fYWN0aW9uc1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nX19idXR0b24gdGstd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nX19idXR0b24tLWNhbmNlbFwiIChjbGljayk9XCJvbkNsb3NlKGZhbHNlKVwiPlxuICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtY29uZmlybS1kaWFsb2dfX2J1dHRvbiB0ay13b3Jrc3BhY2UtY29uZmlybS1kaWFsb2dfX2J1dHRvbi0tY29uZmlybVwiIChjbGljayk9XCJvbkNsb3NlKHRydWUpXCI+XG4gICAgICB7eyBjb25maXJtQnV0dG9uVGV4dCB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,61 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { getDeviceIcon } from '../../utils/device-icon';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../services/workspace-detail.service";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/material/icon";
7
+ import * as i4 from "@angular/material/menu";
8
+ export class WorkspaceDetailComponent {
9
+ constructor(workspaceDetailService, location) {
10
+ this.workspaceDetailService = workspaceDetailService;
11
+ this.location = location;
12
+ this.connectionType = 'di';
13
+ this.back = new EventEmitter();
14
+ this.activeTab = 'overview';
15
+ this.details = null;
16
+ }
17
+ ngOnInit() {
18
+ this.workspaceDetailService.getByWorkspace(this.workspace, this.connectionType, this.customerId).subscribe(details => {
19
+ this.details = details;
20
+ if (details.capacity != null) {
21
+ this.workspace = { ...this.workspace, capacity: details.capacity };
22
+ }
23
+ });
24
+ this.updateUrl();
25
+ }
26
+ get deviceName() {
27
+ if (this.connectionType === 'webex') {
28
+ return this.workspace.device?.webexUUID || this.workspace.device?.name || this.workspace.id;
29
+ }
30
+ return this.workspace.device?.name || this.workspace.id;
31
+ }
32
+ resolveIcon(model) {
33
+ return getDeviceIcon(model);
34
+ }
35
+ selectTab(tab) {
36
+ this.activeTab = tab;
37
+ this.updateUrl();
38
+ }
39
+ onBack() {
40
+ this.location.replaceState('/workspaces');
41
+ this.back.emit();
42
+ }
43
+ updateUrl() {
44
+ this.location.replaceState(`/workspaces/${this.deviceName}/${this.activeTab}`);
45
+ }
46
+ }
47
+ WorkspaceDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDetailComponent, deps: [{ token: i1.WorkspaceDetailService }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Component });
48
+ WorkspaceDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspaceDetailComponent, selector: "tk-workspace-detail", inputs: { workspace: "workspace", connectionType: "connectionType", customerId: "customerId" }, outputs: { back: "back" }, ngImport: i0, template: "<button type=\"button\" class=\"tk-workspace-detail__breadcrumb\" (click)=\"onBack()\">\n <mat-icon>chevron_left</mat-icon>\n Workspaces\n</button>\n\n<div class=\"tk-workspace-detail__header\">\n <span class=\"tk-workspace-detail__icon\">\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\n </span>\n <div class=\"tk-workspace-detail__title-block\">\n <h1 class=\"tk-workspace-detail__name\">{{ workspace.displayName }}</h1>\n <div class=\"tk-workspace-detail__meta\">\n <span class=\"tk-workspace-detail__status\">\n <span class=\"tk-workspace-detail__status-dot\"></span>\n Live status unavailable\n </span>\n <span class=\"tk-workspace-detail__meta-sep\">&middot;</span>\n <span>Type: {{ workspace.typeLabel === 'No type' ? 'Not set' : workspace.typeLabel }}</span>\n <span class=\"tk-workspace-detail__meta-sep\">&middot;</span>\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\n <span>Capacity: {{ workspace.capacity ?? 'Not set' }}</span>\n <span class=\"tk-workspace-detail__meta-sep\">&middot;</span>\n <span class=\"tk-workspace-detail__meta-muted\">Size not set</span>\n </div>\n </div>\n <button type=\"button\" class=\"tk-workspace-detail__actions-button\" [matMenuTriggerFor]=\"actionsMenu\">\n Actions\n <mat-icon>expand_more</mat-icon>\n </button>\n <mat-menu #actionsMenu=\"matMenu\">\n <button type=\"button\" mat-menu-item disabled>More actions coming soon</button>\n </mat-menu>\n</div>\n\n<nav class=\"tk-workspace-detail__tabs\">\n <button\n type=\"button\"\n class=\"tk-workspace-detail__tab\"\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'overview'\"\n (click)=\"selectTab('overview')\">\n Overview\n </button>\n <button\n type=\"button\"\n class=\"tk-workspace-detail__tab\"\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'calling'\"\n (click)=\"selectTab('calling')\">\n Calling\n </button>\n</nav>\n\n<ng-container *ngIf=\"details\">\n <div class=\"tk-workspace-detail__grid\" *ngIf=\"activeTab === 'overview'\">\n <div class=\"tk-workspace-detail__col\">\n <section class=\"tk-workspace-detail__card\">\n <h2 class=\"tk-workspace-detail__card-title\">Issues &amp; Information</h2>\n <div class=\"tk-workspace-detail__no-issues\" *ngIf=\"!details.issues.length\">\n <mat-icon class=\"tk-workspace-detail__no-issues-icon\">check_circle</mat-icon>\n There are currently no issues detected in your workspace.\n </div>\n <div class=\"tk-workspace-detail__issue\" *ngFor=\"let issue of details.issues\">\n <div class=\"tk-workspace-detail__issue-info\">\n <mat-icon class=\"tk-workspace-detail__issue-icon\">info</mat-icon>\n <div>\n <div class=\"tk-workspace-detail__issue-message\">{{ issue.message }}</div>\n <div class=\"tk-workspace-detail__issue-timestamp\">{{ issue.timestamp }}</div>\n </div>\n </div>\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">\n {{ issue.actionLabel }}\n <mat-icon>expand_more</mat-icon>\n </button>\n </div>\n </section>\n\n <section class=\"tk-workspace-detail__card\">\n <div class=\"tk-workspace-detail__card-header\">\n <h2 class=\"tk-workspace-detail__card-title\">Devices</h2>\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add device</button>\n </div>\n <div class=\"tk-workspace-detail__devices\" *ngIf=\"workspace.devices.length; else noDevices\">\n <div class=\"tk-workspace-detail__device\" *ngFor=\"let device of workspace.devices\">\n <img class=\"tk-workspace-detail__device-icon\" [src]=\"resolveIcon(device.model)\" [alt]=\"device.label\" />\n <div class=\"tk-workspace-detail__device-info\">\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__device-link\">{{ device.label }}</a>\n <div class=\"tk-workspace-detail__device-status\">\n <span class=\"tk-workspace-detail__status-dot\"></span>\n Status unavailable\n <mat-icon class=\"tk-workspace-detail__info-icon\">info_outline</mat-icon>\n </div>\n </div>\n </div>\n </div>\n <ng-template #noDevices>\n <div class=\"tk-workspace-detail__empty\">No devices assigned.</div>\n </ng-template>\n </section>\n\n <section class=\"tk-workspace-detail__card\">\n <div class=\"tk-workspace-detail__card-header\">\n <h2 class=\"tk-workspace-detail__card-title\">Calling</h2>\n <mat-icon class=\"tk-workspace-detail__settings-icon\">settings</mat-icon>\n </div>\n <div class=\"tk-workspace-detail__calling-license\">\n <mat-icon>call</mat-icon>\n {{ details.calling.license }}\n </div>\n <hr class=\"tk-workspace-detail__divider\" />\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\">\n <span class=\"tk-workspace-detail__row-label\">Cisco Webex SIP Address</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.sipAddress }}</span>\n </div>\n </section>\n\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.schedulingConfigured\">\n <mat-icon class=\"tk-workspace-detail__card-icon\">event</mat-icon>\n <h3 class=\"tk-workspace-detail__card-heading\">Choose scheduling</h3>\n <p class=\"tk-workspace-detail__card-text\">Choose a calendar service or setup hot-desking for this workspace.</p>\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Choose scheduling</button>\n </section>\n\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\">\n <mat-icon class=\"tk-workspace-detail__card-icon\">info</mat-icon>\n <h3 class=\"tk-workspace-detail__card-heading\">Device hosted meetings unavailable</h3>\n <p class=\"tk-workspace-detail__card-text\">Service not supported by Cisco IP phones</p>\n </section>\n\n <section class=\"tk-workspace-detail__card\">\n <h2 class=\"tk-workspace-detail__card-title\">\n Planned Maintenance\n <mat-icon class=\"tk-workspace-detail__info-icon\">info_outline</mat-icon>\n </h2>\n <div class=\"tk-workspace-detail__row\">\n <mat-icon>build</mat-icon>\n <span>{{ details.plannedMaintenanceEnabled ? 'On' : 'Off' }}</span>\n </div>\n <hr class=\"tk-workspace-detail__divider\" />\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--with-action\">\n <div class=\"tk-workspace-detail__row\">\n <mat-icon>event</mat-icon>\n <div>\n <div>Schedule</div>\n <div class=\"tk-workspace-detail__row-hint\">No schedule set</div>\n </div>\n </div>\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Edit schedule</button>\n </div>\n </section>\n\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.notes\">\n <mat-icon class=\"tk-workspace-detail__card-icon\">description</mat-icon>\n <h3 class=\"tk-workspace-detail__card-heading\">Add notes</h3>\n <p class=\"tk-workspace-detail__card-text\">Write a note about this workspace.</p>\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add notes</button>\n </section>\n </div>\n\n <div class=\"tk-workspace-detail__col\">\n <section class=\"tk-workspace-detail__card\">\n <div class=\"tk-workspace-detail__card-header\">\n <h2 class=\"tk-workspace-detail__card-title\">Location</h2>\n <mat-icon class=\"tk-workspace-detail__settings-icon\">settings</mat-icon>\n </div>\n <div class=\"tk-workspace-detail__location\">\n <mat-icon>location_on</mat-icon>\n <div>\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__location-link\">{{ details.location.country }}</a>\n <div class=\"tk-workspace-detail__location-address\">{{ details.location.address }}</div>\n </div>\n </div>\n </section>\n </div>\n </div>\n\n <div class=\"tk-workspace-detail__grid\" *ngIf=\"activeTab === 'calling'\">\n <div class=\"tk-workspace-detail__col\">\n <section class=\"tk-workspace-detail__card\">\n <h2 class=\"tk-workspace-detail__card-title\">Calling</h2>\n <div class=\"tk-workspace-detail__calling-license\">\n <mat-icon>call</mat-icon>\n {{ details.calling.license }}\n </div>\n <hr class=\"tk-workspace-detail__divider\" />\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\">\n <span class=\"tk-workspace-detail__row-label\">Cisco Webex SIP Address</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.sipAddress }}</span>\n </div>\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\">\n <span class=\"tk-workspace-detail__row-label\">Directory Number</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.directoryNumber }}</span>\n </div>\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\" *ngIf=\"details.calling.externalCallerIdNumber\">\n <span class=\"tk-workspace-detail__row-label\">External Caller ID</span>\n <span class=\"tk-workspace-detail__row-value\">\n {{ details.calling.externalCallerIdName }} ({{ details.calling.externalCallerIdNumber }})\n </span>\n </div>\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\" *ngIf=\"details.calling.routePartition\">\n <span class=\"tk-workspace-detail__row-label\">Route Partition</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.routePartition }}</span>\n </div>\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\" *ngIf=\"details.calling.callingSearchSpace\">\n <span class=\"tk-workspace-detail__row-label\">Calling Search Space</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.callingSearchSpace }}</span>\n </div>\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\" *ngIf=\"details.calling.securityProfile\">\n <span class=\"tk-workspace-detail__row-label\">Device Security Profile</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.securityProfile }}</span>\n </div>\n </section>\n </div>\n </div>\n</ng-container>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspace-detail__breadcrumb{display:inline-flex;align-items:center;gap:.125rem;padding:0;margin-bottom:1rem;background:none;border:none;font-family:inherit;font-size:.875rem;font-weight:500;color:#0009;cursor:pointer}.tk-workspace-detail__breadcrumb:hover{color:#000000f2}.tk-workspace-detail__breadcrumb mat-icon{font-size:1.25rem;height:1.25rem;width:1.25rem}.tk-workspace-detail__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}.tk-workspace-detail__icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:50%;background:#2b2b2b}.tk-workspace-detail__icon img{height:1.375rem;width:1.375rem;filter:brightness(0) invert(1)}.tk-workspace-detail__title-block{flex:1;min-width:0}.tk-workspace-detail__name{margin:0 0 .375rem;font-size:1.25rem;font-weight:600}.tk-workspace-detail__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;font-size:.875rem;color:#0009}.tk-workspace-detail__meta-sep{color:#0000004d}.tk-workspace-detail__meta-icon{height:.875rem;width:.875rem;opacity:.4}.tk-workspace-detail__meta-muted{color:#0006}.tk-workspace-detail__actions-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;flex-shrink:0}.tk-workspace-detail__actions-button:hover{background:#2b2b2b}.tk-workspace-detail__actions-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__tabs{display:flex;align-items:center;gap:1.5rem;border-bottom:1px solid rgba(0,0,0,.12);margin-bottom:1.25rem}.tk-workspace-detail__tab{padding:.75rem 0;background:none;border:none;border-bottom:2px solid transparent;font-family:inherit;font-size:.9375rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspace-detail__tab:hover{color:#000000f2}.tk-workspace-detail__tab--active{color:#000000f2;border-bottom-color:#000}.tk-workspace-detail__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}@media (max-width: 900px){.tk-workspace-detail__grid{grid-template-columns:1fr}}.tk-workspace-detail__col{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.tk-workspace-detail__card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;padding:1.25rem}.tk-workspace-detail__card--centered{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem;padding:2rem 1.25rem}.tk-workspace-detail__card-icon{color:#0009;margin-bottom:.5rem}.tk-workspace-detail__card-heading{margin:0;font-size:.9375rem;font-weight:600}.tk-workspace-detail__card-text{margin:0 0 .5rem;font-size:.8125rem;color:#0009;max-width:20rem}.tk-workspace-detail__card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.tk-workspace-detail__card-title{display:flex;align-items:center;gap:.375rem;margin:0 0 .75rem;font-size:.9375rem;font-weight:600}.tk-workspace-detail__card-header .tk-workspace-detail__card-title{margin-bottom:0}.tk-workspace-detail__settings-icon,.tk-workspace-detail__info-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006}.tk-workspace-detail__divider{border:none;border-top:1px solid rgba(0,0,0,.12);margin:.75rem 0}.tk-workspace-detail__no-issues{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__no-issues-icon{color:#1d805f;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__issue{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 0;border-top:1px solid rgba(0,0,0,.12)}.tk-workspace-detail__issue:first-of-type{border-top:none;padding-top:0}.tk-workspace-detail__issue-info{display:flex;align-items:flex-start;gap:.5rem}.tk-workspace-detail__issue-icon{color:#0353a8;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__issue-message{font-size:.875rem;font-weight:500}.tk-workspace-detail__issue-timestamp{font-size:.75rem;color:#0006}.tk-workspace-detail__pill-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#fff;border:1px solid rgba(0,0,0,.3);border-radius:6.25rem;font-family:inherit;font-size:.8125rem;font-weight:500;color:#000000f2;cursor:pointer;white-space:nowrap}.tk-workspace-detail__pill-button:hover{background:#ededed}.tk-workspace-detail__pill-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__devices{display:flex;flex-wrap:wrap;gap:.75rem}.tk-workspace-detail__device{display:flex;align-items:center;gap:.625rem;padding:.75rem;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;min-width:12rem}.tk-workspace-detail__device-icon{width:2.25rem;height:auto;flex-shrink:0}.tk-workspace-detail__device-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__device-status{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:#0009}.tk-workspace-detail__empty{font-size:.875rem;color:#0009}.tk-workspace-detail__calling-license{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__calling-license mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__row{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__row mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;flex-shrink:0}.tk-workspace-detail__row--with-action{justify-content:space-between}.tk-workspace-detail__row--kv{justify-content:space-between;padding:.5rem 0;border-top:1px solid rgba(0,0,0,.12)}.tk-workspace-detail__row--kv:first-of-type{border-top:none}.tk-workspace-detail__row-label{color:#0009}.tk-workspace-detail__row-value{font-weight:500;text-align:right}.tk-workspace-detail__row-hint{font-size:.75rem;color:#0006}.tk-workspace-detail__location{display:flex;align-items:flex-start;gap:.5rem}.tk-workspace-detail__location mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__location-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__location-address{font-size:.8125rem;color:#0009}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] });
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDetailComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'tk-workspace-detail', template: "<button type=\"button\" class=\"tk-workspace-detail__breadcrumb\" (click)=\"onBack()\">\n <mat-icon>chevron_left</mat-icon>\n Workspaces\n</button>\n\n<div class=\"tk-workspace-detail__header\">\n <span class=\"tk-workspace-detail__icon\">\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\n </span>\n <div class=\"tk-workspace-detail__title-block\">\n <h1 class=\"tk-workspace-detail__name\">{{ workspace.displayName }}</h1>\n <div class=\"tk-workspace-detail__meta\">\n <span class=\"tk-workspace-detail__status\">\n <span class=\"tk-workspace-detail__status-dot\"></span>\n Live status unavailable\n </span>\n <span class=\"tk-workspace-detail__meta-sep\">&middot;</span>\n <span>Type: {{ workspace.typeLabel === 'No type' ? 'Not set' : workspace.typeLabel }}</span>\n <span class=\"tk-workspace-detail__meta-sep\">&middot;</span>\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\n <span>Capacity: {{ workspace.capacity ?? 'Not set' }}</span>\n <span class=\"tk-workspace-detail__meta-sep\">&middot;</span>\n <span class=\"tk-workspace-detail__meta-muted\">Size not set</span>\n </div>\n </div>\n <button type=\"button\" class=\"tk-workspace-detail__actions-button\" [matMenuTriggerFor]=\"actionsMenu\">\n Actions\n <mat-icon>expand_more</mat-icon>\n </button>\n <mat-menu #actionsMenu=\"matMenu\">\n <button type=\"button\" mat-menu-item disabled>More actions coming soon</button>\n </mat-menu>\n</div>\n\n<nav class=\"tk-workspace-detail__tabs\">\n <button\n type=\"button\"\n class=\"tk-workspace-detail__tab\"\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'overview'\"\n (click)=\"selectTab('overview')\">\n Overview\n </button>\n <button\n type=\"button\"\n class=\"tk-workspace-detail__tab\"\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'calling'\"\n (click)=\"selectTab('calling')\">\n Calling\n </button>\n</nav>\n\n<ng-container *ngIf=\"details\">\n <div class=\"tk-workspace-detail__grid\" *ngIf=\"activeTab === 'overview'\">\n <div class=\"tk-workspace-detail__col\">\n <section class=\"tk-workspace-detail__card\">\n <h2 class=\"tk-workspace-detail__card-title\">Issues &amp; Information</h2>\n <div class=\"tk-workspace-detail__no-issues\" *ngIf=\"!details.issues.length\">\n <mat-icon class=\"tk-workspace-detail__no-issues-icon\">check_circle</mat-icon>\n There are currently no issues detected in your workspace.\n </div>\n <div class=\"tk-workspace-detail__issue\" *ngFor=\"let issue of details.issues\">\n <div class=\"tk-workspace-detail__issue-info\">\n <mat-icon class=\"tk-workspace-detail__issue-icon\">info</mat-icon>\n <div>\n <div class=\"tk-workspace-detail__issue-message\">{{ issue.message }}</div>\n <div class=\"tk-workspace-detail__issue-timestamp\">{{ issue.timestamp }}</div>\n </div>\n </div>\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">\n {{ issue.actionLabel }}\n <mat-icon>expand_more</mat-icon>\n </button>\n </div>\n </section>\n\n <section class=\"tk-workspace-detail__card\">\n <div class=\"tk-workspace-detail__card-header\">\n <h2 class=\"tk-workspace-detail__card-title\">Devices</h2>\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add device</button>\n </div>\n <div class=\"tk-workspace-detail__devices\" *ngIf=\"workspace.devices.length; else noDevices\">\n <div class=\"tk-workspace-detail__device\" *ngFor=\"let device of workspace.devices\">\n <img class=\"tk-workspace-detail__device-icon\" [src]=\"resolveIcon(device.model)\" [alt]=\"device.label\" />\n <div class=\"tk-workspace-detail__device-info\">\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__device-link\">{{ device.label }}</a>\n <div class=\"tk-workspace-detail__device-status\">\n <span class=\"tk-workspace-detail__status-dot\"></span>\n Status unavailable\n <mat-icon class=\"tk-workspace-detail__info-icon\">info_outline</mat-icon>\n </div>\n </div>\n </div>\n </div>\n <ng-template #noDevices>\n <div class=\"tk-workspace-detail__empty\">No devices assigned.</div>\n </ng-template>\n </section>\n\n <section class=\"tk-workspace-detail__card\">\n <div class=\"tk-workspace-detail__card-header\">\n <h2 class=\"tk-workspace-detail__card-title\">Calling</h2>\n <mat-icon class=\"tk-workspace-detail__settings-icon\">settings</mat-icon>\n </div>\n <div class=\"tk-workspace-detail__calling-license\">\n <mat-icon>call</mat-icon>\n {{ details.calling.license }}\n </div>\n <hr class=\"tk-workspace-detail__divider\" />\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\">\n <span class=\"tk-workspace-detail__row-label\">Cisco Webex SIP Address</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.sipAddress }}</span>\n </div>\n </section>\n\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.schedulingConfigured\">\n <mat-icon class=\"tk-workspace-detail__card-icon\">event</mat-icon>\n <h3 class=\"tk-workspace-detail__card-heading\">Choose scheduling</h3>\n <p class=\"tk-workspace-detail__card-text\">Choose a calendar service or setup hot-desking for this workspace.</p>\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Choose scheduling</button>\n </section>\n\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\">\n <mat-icon class=\"tk-workspace-detail__card-icon\">info</mat-icon>\n <h3 class=\"tk-workspace-detail__card-heading\">Device hosted meetings unavailable</h3>\n <p class=\"tk-workspace-detail__card-text\">Service not supported by Cisco IP phones</p>\n </section>\n\n <section class=\"tk-workspace-detail__card\">\n <h2 class=\"tk-workspace-detail__card-title\">\n Planned Maintenance\n <mat-icon class=\"tk-workspace-detail__info-icon\">info_outline</mat-icon>\n </h2>\n <div class=\"tk-workspace-detail__row\">\n <mat-icon>build</mat-icon>\n <span>{{ details.plannedMaintenanceEnabled ? 'On' : 'Off' }}</span>\n </div>\n <hr class=\"tk-workspace-detail__divider\" />\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--with-action\">\n <div class=\"tk-workspace-detail__row\">\n <mat-icon>event</mat-icon>\n <div>\n <div>Schedule</div>\n <div class=\"tk-workspace-detail__row-hint\">No schedule set</div>\n </div>\n </div>\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Edit schedule</button>\n </div>\n </section>\n\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.notes\">\n <mat-icon class=\"tk-workspace-detail__card-icon\">description</mat-icon>\n <h3 class=\"tk-workspace-detail__card-heading\">Add notes</h3>\n <p class=\"tk-workspace-detail__card-text\">Write a note about this workspace.</p>\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add notes</button>\n </section>\n </div>\n\n <div class=\"tk-workspace-detail__col\">\n <section class=\"tk-workspace-detail__card\">\n <div class=\"tk-workspace-detail__card-header\">\n <h2 class=\"tk-workspace-detail__card-title\">Location</h2>\n <mat-icon class=\"tk-workspace-detail__settings-icon\">settings</mat-icon>\n </div>\n <div class=\"tk-workspace-detail__location\">\n <mat-icon>location_on</mat-icon>\n <div>\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__location-link\">{{ details.location.country }}</a>\n <div class=\"tk-workspace-detail__location-address\">{{ details.location.address }}</div>\n </div>\n </div>\n </section>\n </div>\n </div>\n\n <div class=\"tk-workspace-detail__grid\" *ngIf=\"activeTab === 'calling'\">\n <div class=\"tk-workspace-detail__col\">\n <section class=\"tk-workspace-detail__card\">\n <h2 class=\"tk-workspace-detail__card-title\">Calling</h2>\n <div class=\"tk-workspace-detail__calling-license\">\n <mat-icon>call</mat-icon>\n {{ details.calling.license }}\n </div>\n <hr class=\"tk-workspace-detail__divider\" />\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\">\n <span class=\"tk-workspace-detail__row-label\">Cisco Webex SIP Address</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.sipAddress }}</span>\n </div>\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\">\n <span class=\"tk-workspace-detail__row-label\">Directory Number</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.directoryNumber }}</span>\n </div>\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\" *ngIf=\"details.calling.externalCallerIdNumber\">\n <span class=\"tk-workspace-detail__row-label\">External Caller ID</span>\n <span class=\"tk-workspace-detail__row-value\">\n {{ details.calling.externalCallerIdName }} ({{ details.calling.externalCallerIdNumber }})\n </span>\n </div>\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\" *ngIf=\"details.calling.routePartition\">\n <span class=\"tk-workspace-detail__row-label\">Route Partition</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.routePartition }}</span>\n </div>\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\" *ngIf=\"details.calling.callingSearchSpace\">\n <span class=\"tk-workspace-detail__row-label\">Calling Search Space</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.callingSearchSpace }}</span>\n </div>\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\" *ngIf=\"details.calling.securityProfile\">\n <span class=\"tk-workspace-detail__row-label\">Device Security Profile</span>\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.securityProfile }}</span>\n </div>\n </section>\n </div>\n </div>\n</ng-container>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspace-detail__breadcrumb{display:inline-flex;align-items:center;gap:.125rem;padding:0;margin-bottom:1rem;background:none;border:none;font-family:inherit;font-size:.875rem;font-weight:500;color:#0009;cursor:pointer}.tk-workspace-detail__breadcrumb:hover{color:#000000f2}.tk-workspace-detail__breadcrumb mat-icon{font-size:1.25rem;height:1.25rem;width:1.25rem}.tk-workspace-detail__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}.tk-workspace-detail__icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:50%;background:#2b2b2b}.tk-workspace-detail__icon img{height:1.375rem;width:1.375rem;filter:brightness(0) invert(1)}.tk-workspace-detail__title-block{flex:1;min-width:0}.tk-workspace-detail__name{margin:0 0 .375rem;font-size:1.25rem;font-weight:600}.tk-workspace-detail__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;font-size:.875rem;color:#0009}.tk-workspace-detail__meta-sep{color:#0000004d}.tk-workspace-detail__meta-icon{height:.875rem;width:.875rem;opacity:.4}.tk-workspace-detail__meta-muted{color:#0006}.tk-workspace-detail__actions-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;flex-shrink:0}.tk-workspace-detail__actions-button:hover{background:#2b2b2b}.tk-workspace-detail__actions-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__tabs{display:flex;align-items:center;gap:1.5rem;border-bottom:1px solid rgba(0,0,0,.12);margin-bottom:1.25rem}.tk-workspace-detail__tab{padding:.75rem 0;background:none;border:none;border-bottom:2px solid transparent;font-family:inherit;font-size:.9375rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspace-detail__tab:hover{color:#000000f2}.tk-workspace-detail__tab--active{color:#000000f2;border-bottom-color:#000}.tk-workspace-detail__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}@media (max-width: 900px){.tk-workspace-detail__grid{grid-template-columns:1fr}}.tk-workspace-detail__col{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.tk-workspace-detail__card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;padding:1.25rem}.tk-workspace-detail__card--centered{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem;padding:2rem 1.25rem}.tk-workspace-detail__card-icon{color:#0009;margin-bottom:.5rem}.tk-workspace-detail__card-heading{margin:0;font-size:.9375rem;font-weight:600}.tk-workspace-detail__card-text{margin:0 0 .5rem;font-size:.8125rem;color:#0009;max-width:20rem}.tk-workspace-detail__card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.tk-workspace-detail__card-title{display:flex;align-items:center;gap:.375rem;margin:0 0 .75rem;font-size:.9375rem;font-weight:600}.tk-workspace-detail__card-header .tk-workspace-detail__card-title{margin-bottom:0}.tk-workspace-detail__settings-icon,.tk-workspace-detail__info-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006}.tk-workspace-detail__divider{border:none;border-top:1px solid rgba(0,0,0,.12);margin:.75rem 0}.tk-workspace-detail__no-issues{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__no-issues-icon{color:#1d805f;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__issue{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 0;border-top:1px solid rgba(0,0,0,.12)}.tk-workspace-detail__issue:first-of-type{border-top:none;padding-top:0}.tk-workspace-detail__issue-info{display:flex;align-items:flex-start;gap:.5rem}.tk-workspace-detail__issue-icon{color:#0353a8;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__issue-message{font-size:.875rem;font-weight:500}.tk-workspace-detail__issue-timestamp{font-size:.75rem;color:#0006}.tk-workspace-detail__pill-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#fff;border:1px solid rgba(0,0,0,.3);border-radius:6.25rem;font-family:inherit;font-size:.8125rem;font-weight:500;color:#000000f2;cursor:pointer;white-space:nowrap}.tk-workspace-detail__pill-button:hover{background:#ededed}.tk-workspace-detail__pill-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__devices{display:flex;flex-wrap:wrap;gap:.75rem}.tk-workspace-detail__device{display:flex;align-items:center;gap:.625rem;padding:.75rem;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;min-width:12rem}.tk-workspace-detail__device-icon{width:2.25rem;height:auto;flex-shrink:0}.tk-workspace-detail__device-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__device-status{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:#0009}.tk-workspace-detail__empty{font-size:.875rem;color:#0009}.tk-workspace-detail__calling-license{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__calling-license mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__row{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__row mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;flex-shrink:0}.tk-workspace-detail__row--with-action{justify-content:space-between}.tk-workspace-detail__row--kv{justify-content:space-between;padding:.5rem 0;border-top:1px solid rgba(0,0,0,.12)}.tk-workspace-detail__row--kv:first-of-type{border-top:none}.tk-workspace-detail__row-label{color:#0009}.tk-workspace-detail__row-value{font-weight:500;text-align:right}.tk-workspace-detail__row-hint{font-size:.75rem;color:#0006}.tk-workspace-detail__location{display:flex;align-items:flex-start;gap:.5rem}.tk-workspace-detail__location mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__location-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__location-address{font-size:.8125rem;color:#0009}\n"] }]
52
+ }], ctorParameters: function () { return [{ type: i1.WorkspaceDetailService }, { type: i2.Location }]; }, propDecorators: { workspace: [{
53
+ type: Input
54
+ }], connectionType: [{
55
+ type: Input
56
+ }], customerId: [{
57
+ type: Input
58
+ }], back: [{
59
+ type: Output
60
+ }] } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvY29tcG9uZW50cy93b3Jrc3BhY2UtZGV0YWlsL3dvcmtzcGFjZS1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL2NvbXBvbmVudHMvd29ya3NwYWNlLWRldGFpbC93b3Jrc3BhY2UtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7QUFTeEQsTUFBTSxPQUFPLHdCQUF3QjtJQVVuQyxZQUNVLHNCQUE4QyxFQUM5QyxRQUFrQjtRQURsQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFWbkIsbUJBQWMsR0FBNEIsSUFBSSxDQUFDO1FBRzlDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTFDLGNBQVMsR0FBdUIsVUFBVSxDQUFDO1FBQzNDLFlBQU8sR0FBNEIsSUFBSSxDQUFDO0lBS3BDLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuSCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN2QixJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFO2dCQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEU7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLE9BQU8sRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDN0Y7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWM7UUFDeEIsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUF1QjtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsZUFBZSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7O3NIQWhEVSx3QkFBd0I7MEdBQXhCLHdCQUF3QixzTENickMscXVWQXFOQTs0RkR4TWEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHFCQUFxQjtvSUFLdEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksSUFBSTtzQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV29ya3NwYWNlLCBXb3Jrc3BhY2VDb25uZWN0aW9uVHlwZSwgV29ya3NwYWNlRGV0YWlscyB9IGZyb20gJy4uLy4uL3R5cGVzL3dvcmtzcGFjZSc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VEZXRhaWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd29ya3NwYWNlLWRldGFpbC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldERldmljZUljb24gfSBmcm9tICcuLi8uLi91dGlscy9kZXZpY2UtaWNvbic7XG5cbmV4cG9ydCB0eXBlIFdvcmtzcGFjZURldGFpbFRhYiA9ICdvdmVydmlldycgfCAnY2FsbGluZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RrLXdvcmtzcGFjZS1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya3NwYWNlLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtzcGFjZS1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlRGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgd29ya3NwYWNlITogV29ya3NwYWNlO1xuICBASW5wdXQoKSBjb25uZWN0aW9uVHlwZTogV29ya3NwYWNlQ29ubmVjdGlvblR5cGUgPSAnZGknO1xuICBASW5wdXQoKSBjdXN0b21lcklkITogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBiYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGFjdGl2ZVRhYjogV29ya3NwYWNlRGV0YWlsVGFiID0gJ292ZXJ2aWV3JztcbiAgZGV0YWlsczogV29ya3NwYWNlRGV0YWlscyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgd29ya3NwYWNlRGV0YWlsU2VydmljZTogV29ya3NwYWNlRGV0YWlsU2VydmljZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLndvcmtzcGFjZURldGFpbFNlcnZpY2UuZ2V0QnlXb3Jrc3BhY2UodGhpcy53b3Jrc3BhY2UsIHRoaXMuY29ubmVjdGlvblR5cGUsIHRoaXMuY3VzdG9tZXJJZCkuc3Vic2NyaWJlKGRldGFpbHMgPT4ge1xuICAgICAgdGhpcy5kZXRhaWxzID0gZGV0YWlscztcbiAgICAgIGlmIChkZXRhaWxzLmNhcGFjaXR5ICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy53b3Jrc3BhY2UgPSB7IC4uLnRoaXMud29ya3NwYWNlLCBjYXBhY2l0eTogZGV0YWlscy5jYXBhY2l0eSB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlVXJsKCk7XG4gIH1cblxuICBnZXQgZGV2aWNlTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25UeXBlID09PSAnd2ViZXgnKSB7XG4gICAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2UuZGV2aWNlPy53ZWJleFVVSUQgfHwgdGhpcy53b3Jrc3BhY2UuZGV2aWNlPy5uYW1lIHx8IHRoaXMud29ya3NwYWNlLmlkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2UuZGV2aWNlPy5uYW1lIHx8IHRoaXMud29ya3NwYWNlLmlkO1xuICB9XG5cbiAgcmVzb2x2ZUljb24obW9kZWw/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXREZXZpY2VJY29uKG1vZGVsKTtcbiAgfVxuXG4gIHNlbGVjdFRhYih0YWI6IFdvcmtzcGFjZURldGFpbFRhYik6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xuICAgIHRoaXMudXBkYXRlVXJsKCk7XG4gIH1cblxuICBvbkJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoJy93b3Jrc3BhY2VzJyk7XG4gICAgdGhpcy5iYWNrLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVXJsKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKGAvd29ya3NwYWNlcy8ke3RoaXMuZGV2aWNlTmFtZX0vJHt0aGlzLmFjdGl2ZVRhYn1gKTtcbiAgfVxufVxuIiwiPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19icmVhZGNydW1iXCIgKGNsaWNrKT1cIm9uQmFjaygpXCI+XG4gIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxuICBXb3Jrc3BhY2VzXG48L2J1dHRvbj5cblxuPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2hlYWRlclwiPlxuICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2ljb25cIj5cbiAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9kZXZpY2UtaW4tcm9vbS1yZWd1bGFyLnN2Z1wiIGFsdD1cIlwiIC8+XG4gIDwvc3Bhbj5cbiAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3RpdGxlLWJsb2NrXCI+XG4gICAgPGgxIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fbmFtZVwiPnt7IHdvcmtzcGFjZS5kaXNwbGF5TmFtZSB9fTwvaDE+XG4gICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX21ldGFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fc3RhdHVzXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fc3RhdHVzLWRvdFwiPjwvc3Bhbj5cbiAgICAgICAgTGl2ZSBzdGF0dXMgdW5hdmFpbGFibGVcbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fbWV0YS1zZXBcIj4mbWlkZG90Ozwvc3Bhbj5cbiAgICAgIDxzcGFuPlR5cGU6IHt7IHdvcmtzcGFjZS50eXBlTGFiZWwgPT09ICdObyB0eXBlJyA/ICdOb3Qgc2V0JyA6IHdvcmtzcGFjZS50eXBlTGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX21ldGEtc2VwXCI+Jm1pZGRvdDs8L3NwYW4+XG4gICAgICA8aW1nIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fbWV0YS1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL3Blb3BsZS1yZWd1bGFyLnN2Z1wiIGFsdD1cIlwiIC8+XG4gICAgICA8c3Bhbj5DYXBhY2l0eToge3sgd29ya3NwYWNlLmNhcGFjaXR5ID8/ICdOb3Qgc2V0JyB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fbWV0YS1zZXBcIj4mbWlkZG90Ozwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fbWV0YS1tdXRlZFwiPlNpemUgbm90IHNldDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fYWN0aW9ucy1idXR0b25cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWN0aW9uc01lbnVcIj5cbiAgICBBY3Rpb25zXG4gICAgPG1hdC1pY29uPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxtYXQtbWVudSAjYWN0aW9uc01lbnU9XCJtYXRNZW51XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSBkaXNhYmxlZD5Nb3JlIGFjdGlvbnMgY29taW5nIHNvb248L2J1dHRvbj5cbiAgPC9tYXQtbWVudT5cbjwvZGl2PlxuXG48bmF2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fdGFic1wiPlxuICA8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX190YWJcIlxuICAgIFtjbGFzcy50ay13b3Jrc3BhY2UtZGV0YWlsX190YWItLWFjdGl2ZV09XCJhY3RpdmVUYWIgPT09ICdvdmVydmlldydcIlxuICAgIChjbGljayk9XCJzZWxlY3RUYWIoJ292ZXJ2aWV3JylcIj5cbiAgICBPdmVydmlld1xuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fdGFiXCJcbiAgICBbY2xhc3MudGstd29ya3NwYWNlLWRldGFpbF9fdGFiLS1hY3RpdmVdPVwiYWN0aXZlVGFiID09PSAnY2FsbGluZydcIlxuICAgIChjbGljayk9XCJzZWxlY3RUYWIoJ2NhbGxpbmcnKVwiPlxuICAgIENhbGxpbmdcbiAgPC9idXR0b24+XG48L25hdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNcIj5cbiAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2dyaWRcIiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ292ZXJ2aWV3J1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19jb2xcIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY2FyZFwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19jYXJkLXRpdGxlXCI+SXNzdWVzICZhbXA7IEluZm9ybWF0aW9uPC9oMj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX25vLWlzc3Vlc1wiICpuZ0lmPVwiIWRldGFpbHMuaXNzdWVzLmxlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX25vLWlzc3Vlcy1pY29uXCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICAgICAgICBUaGVyZSBhcmUgY3VycmVudGx5IG5vIGlzc3VlcyBkZXRlY3RlZCBpbiB5b3VyIHdvcmtzcGFjZS5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19pc3N1ZVwiICpuZ0Zvcj1cImxldCBpc3N1ZSBvZiBkZXRhaWxzLmlzc3Vlc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19pc3N1ZS1pbmZvXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19pc3N1ZS1pY29uXCI+aW5mbzwvbWF0LWljb24+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9faXNzdWUtbWVzc2FnZVwiPnt7IGlzc3VlLm1lc3NhZ2UgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2lzc3VlLXRpbWVzdGFtcFwiPnt7IGlzc3VlLnRpbWVzdGFtcCB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19waWxsLWJ1dHRvblwiPlxuICAgICAgICAgICAge3sgaXNzdWUuYWN0aW9uTGFiZWwgfX1cbiAgICAgICAgICAgIDxtYXQtaWNvbj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY2FyZC10aXRsZVwiPkRldmljZXM8L2gyPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcGlsbC1idXR0b25cIj5BZGQgZGV2aWNlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fZGV2aWNlc1wiICpuZ0lmPVwid29ya3NwYWNlLmRldmljZXMubGVuZ3RoOyBlbHNlIG5vRGV2aWNlc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19kZXZpY2VcIiAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIHdvcmtzcGFjZS5kZXZpY2VzXCI+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fZGV2aWNlLWljb25cIiBbc3JjXT1cInJlc29sdmVJY29uKGRldmljZS5tb2RlbClcIiBbYWx0XT1cImRldmljZS5sYWJlbFwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fZGV2aWNlLWluZm9cIj5cbiAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fZGV2aWNlLWxpbmtcIj57eyBkZXZpY2UubGFiZWwgfX08L2E+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19kZXZpY2Utc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19zdGF0dXMtZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIFN0YXR1cyB1bmF2YWlsYWJsZVxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2luZm8taWNvblwiPmluZm9fb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vRGV2aWNlcz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fZW1wdHlcIj5ObyBkZXZpY2VzIGFzc2lnbmVkLjwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY2FyZC10aXRsZVwiPkNhbGxpbmc8L2gyPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3NldHRpbmdzLWljb25cIj5zZXR0aW5nczwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY2FsbGluZy1saWNlbnNlXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmNhbGw8L21hdC1pY29uPlxuICAgICAgICAgIHt7IGRldGFpbHMuY2FsbGluZy5saWNlbnNlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19kaXZpZGVyXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3JvdyB0ay13b3Jrc3BhY2UtZGV0YWlsX19yb3ctLWt2XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19yb3ctbGFiZWxcIj5DaXNjbyBXZWJleCBTSVAgQWRkcmVzczwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3Jvdy12YWx1ZVwiPnt7IGRldGFpbHMuY2FsbGluZy5zaXBBZGRyZXNzIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19jYXJkIHRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmQtLWNlbnRlcmVkXCIgKm5nSWY9XCIhZGV0YWlscy5zY2hlZHVsaW5nQ29uZmlndXJlZFwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19jYXJkLWljb25cIj5ldmVudDwvbWF0LWljb24+XG4gICAgICAgIDxoMyBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmQtaGVhZGluZ1wiPkNob29zZSBzY2hlZHVsaW5nPC9oMz5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19jYXJkLXRleHRcIj5DaG9vc2UgYSBjYWxlbmRhciBzZXJ2aWNlIG9yIHNldHVwIGhvdC1kZXNraW5nIGZvciB0aGlzIHdvcmtzcGFjZS48L3A+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcGlsbC1idXR0b25cIj5DaG9vc2Ugc2NoZWR1bGluZzwvYnV0dG9uPlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmQgdGstd29ya3NwYWNlLWRldGFpbF9fY2FyZC0tY2VudGVyZWRcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY2FyZC1pY29uXCI+aW5mbzwvbWF0LWljb24+XG4gICAgICAgIDxoMyBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmQtaGVhZGluZ1wiPkRldmljZSBob3N0ZWQgbWVldGluZ3MgdW5hdmFpbGFibGU8L2gzPlxuICAgICAgICA8cCBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmQtdGV4dFwiPlNlcnZpY2Ugbm90IHN1cHBvcnRlZCBieSBDaXNjbyBJUCBwaG9uZXM8L3A+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY2FyZFwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19jYXJkLXRpdGxlXCI+XG4gICAgICAgICAgUGxhbm5lZCBNYWludGVuYW5jZVxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2luZm8taWNvblwiPmluZm9fb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19yb3dcIj5cbiAgICAgICAgICA8bWF0LWljb24+YnVpbGQ8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7IGRldGFpbHMucGxhbm5lZE1haW50ZW5hbmNlRW5hYmxlZCA/ICdPbicgOiAnT2ZmJyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxociBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2RpdmlkZXJcIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcm93IHRrLXdvcmtzcGFjZS1kZXRhaWxfX3Jvdy0td2l0aC1hY3Rpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcm93XCI+XG4gICAgICAgICAgICA8bWF0LWljb24+ZXZlbnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdj5TY2hlZHVsZTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcm93LWhpbnRcIj5ObyBzY2hlZHVsZSBzZXQ8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcGlsbC1idXR0b25cIj5FZGl0IHNjaGVkdWxlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmQgdGstd29ya3NwYWNlLWRldGFpbF9fY2FyZC0tY2VudGVyZWRcIiAqbmdJZj1cIiFkZXRhaWxzLm5vdGVzXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmQtaWNvblwiPmRlc2NyaXB0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgPGgzIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY2FyZC1oZWFkaW5nXCI+QWRkIG5vdGVzPC9oMz5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19jYXJkLXRleHRcIj5Xcml0ZSBhIG5vdGUgYWJvdXQgdGhpcyB3b3Jrc3BhY2UuPC9wPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3BpbGwtYnV0dG9uXCI+QWRkIG5vdGVzPC9idXR0b24+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY29sXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY2FyZC10aXRsZVwiPkxvY2F0aW9uPC9oMj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19zZXR0aW5ncy1pY29uXCI+c2V0dGluZ3M8L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2xvY2F0aW9uXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmxvY2F0aW9uX29uPC9tYXQtaWNvbj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fbG9jYXRpb24tbGlua1wiPnt7IGRldGFpbHMubG9jYXRpb24uY291bnRyeSB9fTwvYT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19sb2NhdGlvbi1hZGRyZXNzXCI+e3sgZGV0YWlscy5sb2NhdGlvbi5hZGRyZXNzIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fZ3JpZFwiICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnY2FsbGluZydcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY29sXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX2NhcmRcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY2FyZC10aXRsZVwiPkNhbGxpbmc8L2gyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fY2FsbGluZy1saWNlbnNlXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmNhbGw8L21hdC1pY29uPlxuICAgICAgICAgIHt7IGRldGFpbHMuY2FsbGluZy5saWNlbnNlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19kaXZpZGVyXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3JvdyB0ay13b3Jrc3BhY2UtZGV0YWlsX19yb3ctLWt2XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19yb3ctbGFiZWxcIj5DaXNjbyBXZWJleCBTSVAgQWRkcmVzczwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3Jvdy12YWx1ZVwiPnt7IGRldGFpbHMuY2FsbGluZy5zaXBBZGRyZXNzIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3JvdyB0ay13b3Jrc3BhY2UtZGV0YWlsX19yb3ctLWt2XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19yb3ctbGFiZWxcIj5EaXJlY3RvcnkgTnVtYmVyPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcm93LXZhbHVlXCI+e3sgZGV0YWlscy5jYWxsaW5nLmRpcmVjdG9yeU51bWJlciB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19yb3cgdGstd29ya3NwYWNlLWRldGFpbF9fcm93LS1rdlwiICpuZ0lmPVwiZGV0YWlscy5jYWxsaW5nLmV4dGVybmFsQ2FsbGVySWROdW1iZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3Jvdy1sYWJlbFwiPkV4dGVybmFsIENhbGxlciBJRDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3Jvdy12YWx1ZVwiPlxuICAgICAgICAgICAge3sgZGV0YWlscy5jYWxsaW5nLmV4dGVybmFsQ2FsbGVySWROYW1lIH19ICh7eyBkZXRhaWxzLmNhbGxpbmcuZXh0ZXJuYWxDYWxsZXJJZE51bWJlciB9fSlcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcm93IHRrLXdvcmtzcGFjZS1kZXRhaWxfX3Jvdy0ta3ZcIiAqbmdJZj1cImRldGFpbHMuY2FsbGluZy5yb3V0ZVBhcnRpdGlvblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcm93LWxhYmVsXCI+Um91dGUgUGFydGl0aW9uPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcm93LXZhbHVlXCI+e3sgZGV0YWlscy5jYWxsaW5nLnJvdXRlUGFydGl0aW9uIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3JvdyB0ay13b3Jrc3BhY2UtZGV0YWlsX19yb3ctLWt2XCIgKm5nSWY9XCJkZXRhaWxzLmNhbGxpbmcuY2FsbGluZ1NlYXJjaFNwYWNlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2UtZGV0YWlsX19yb3ctbGFiZWxcIj5DYWxsaW5nIFNlYXJjaCBTcGFjZTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3Jvdy12YWx1ZVwiPnt7IGRldGFpbHMuY2FsbGluZy5jYWxsaW5nU2VhcmNoU3BhY2UgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcm93IHRrLXdvcmtzcGFjZS1kZXRhaWxfX3Jvdy0ta3ZcIiAqbmdJZj1cImRldGFpbHMuY2FsbGluZy5zZWN1cml0eVByb2ZpbGVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZS1kZXRhaWxfX3Jvdy1sYWJlbFwiPkRldmljZSBTZWN1cml0eSBQcm9maWxlPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlLWRldGFpbF9fcm93LXZhbHVlXCI+e3sgZGV0YWlscy5jYWxsaW5nLnNlY3VyaXR5UHJvZmlsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,56 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/forms";
5
+ import * as i3 from "@angular/material/icon";
6
+ import * as i4 from "@angular/material/menu";
7
+ export class WorkspacesFiltersComponent {
8
+ constructor() {
9
+ this.resultCount = 0;
10
+ this.typeOptions = [];
11
+ this.locationOptions = [];
12
+ this.searchChange = new EventEmitter();
13
+ this.typeChange = new EventEmitter();
14
+ this.locationChange = new EventEmitter();
15
+ this.addWorkspace = new EventEmitter();
16
+ this.searchTerm = '';
17
+ this.selectedType = '';
18
+ this.selectedLocation = '';
19
+ }
20
+ onSearchInputChange(event) {
21
+ this.searchTerm = event.target.value;
22
+ this.searchChange.emit(this.searchTerm);
23
+ }
24
+ onTypeChange(value) {
25
+ this.selectedType = value;
26
+ this.typeChange.emit(value);
27
+ }
28
+ onLocationChange(value) {
29
+ this.selectedLocation = value;
30
+ this.locationChange.emit(value);
31
+ }
32
+ onAddWorkspace() {
33
+ this.addWorkspace.emit();
34
+ }
35
+ }
36
+ WorkspacesFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
+ WorkspacesFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesFiltersComponent, selector: "tk-workspaces-filters", inputs: { resultCount: "resultCount", typeOptions: "typeOptions", locationOptions: "locationOptions" }, outputs: { searchChange: "searchChange", typeChange: "typeChange", locationChange: "locationChange", addWorkspace: "addWorkspace" }, ngImport: i0, template: "<div class=\"tk-workspaces-filters\">\n <div class=\"tk-workspaces-filters__search\">\n <input\n class=\"tk-workspaces-filters__search-input blue-input\"\n type=\"text\"\n placeholder=\"Search\"\n [value]=\"searchTerm\"\n (input)=\"onSearchInputChange($event)\"\n />\n <mat-icon class=\"tk-workspaces-filters__search-icon\">search</mat-icon>\n </div>\n\n <div class=\"tk-workspaces-filters__filters\">\n <span class=\"tk-workspaces-filters__filters-label\">Filters:</span>\n\n <div class=\"tk-workspaces-filters__select-wrap\">\n <select\n class=\"tk-workspaces-filters__select\"\n [ngModel]=\"selectedType\"\n (ngModelChange)=\"onTypeChange($event)\">\n <option value=\"\">General</option>\n <option *ngFor=\"let type of typeOptions\" [value]=\"type\">{{ type }}</option>\n </select>\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\n </div>\n\n <div class=\"tk-workspaces-filters__select-wrap\">\n <select\n class=\"tk-workspaces-filters__select\"\n [ngModel]=\"selectedLocation\"\n (ngModelChange)=\"onLocationChange($event)\">\n <option value=\"\">Location</option>\n <option *ngFor=\"let location of locationOptions\" [value]=\"location\">{{ location }}</option>\n </select>\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\n </div>\n </div>\n\n <span class=\"tk-workspaces-filters__count\">{{ resultCount }} workspace{{ resultCount === 1 ? '' : 's' }} in total</span>\n\n <button type=\"button\" class=\"tk-workspaces-filters__add-button\" [matMenuTriggerFor]=\"addMenu\">\n Add workspace\n <mat-icon class=\"tk-workspaces-filters__add-icon\">expand_more</mat-icon>\n </button>\n\n <mat-menu #addMenu=\"matMenu\">\n <button type=\"button\" mat-menu-item (click)=\"onAddWorkspace()\">Add workspace</button>\n <button type=\"button\" mat-menu-item disabled>Import workspaces</button>\n </mat-menu>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-filters{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap;font-size:.875rem;font-weight:400;color:#000000f2}.tk-workspaces-filters__search{position:relative;min-width:14rem}.tk-workspaces-filters__search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__search-input{width:100%;height:34px;padding:6px 12px 6px 44px;border-radius:.5rem;outline:none;box-sizing:border-box;font-family:inherit;font-size:1rem;color:#000000f2;background:#fff}.tk-workspaces-filters__search-input::placeholder{color:#0006}.tk-workspaces-filters__filters{display:flex;align-items:center;gap:.5rem}.tk-workspaces-filters__filters-label{font-size:.875rem;color:#000000f2;white-space:nowrap}.tk-workspaces-filters__select-wrap{position:relative;display:flex;align-items:center}.tk-workspaces-filters__select{appearance:none;height:34px;padding:6px 32px 6px 12px;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:.5rem;font-family:inherit;font-size:1rem;color:#222;cursor:pointer;box-sizing:border-box}.tk-workspaces-filters__select:focus{outline:none;border-color:#0006}.tk-workspaces-filters__select-icon{position:absolute;right:.375rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__count{margin-left:auto;font-size:.875rem;color:#0009;white-space:nowrap;font-weight:400;flex:1}.tk-workspaces-filters__add-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer;white-space:nowrap}.tk-workspaces-filters__add-button:hover{background:#222}.tk-workspaces-filters__add-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesFiltersComponent, decorators: [{
39
+ type: Component,
40
+ args: [{ selector: 'tk-workspaces-filters', template: "<div class=\"tk-workspaces-filters\">\n <div class=\"tk-workspaces-filters__search\">\n <input\n class=\"tk-workspaces-filters__search-input blue-input\"\n type=\"text\"\n placeholder=\"Search\"\n [value]=\"searchTerm\"\n (input)=\"onSearchInputChange($event)\"\n />\n <mat-icon class=\"tk-workspaces-filters__search-icon\">search</mat-icon>\n </div>\n\n <div class=\"tk-workspaces-filters__filters\">\n <span class=\"tk-workspaces-filters__filters-label\">Filters:</span>\n\n <div class=\"tk-workspaces-filters__select-wrap\">\n <select\n class=\"tk-workspaces-filters__select\"\n [ngModel]=\"selectedType\"\n (ngModelChange)=\"onTypeChange($event)\">\n <option value=\"\">General</option>\n <option *ngFor=\"let type of typeOptions\" [value]=\"type\">{{ type }}</option>\n </select>\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\n </div>\n\n <div class=\"tk-workspaces-filters__select-wrap\">\n <select\n class=\"tk-workspaces-filters__select\"\n [ngModel]=\"selectedLocation\"\n (ngModelChange)=\"onLocationChange($event)\">\n <option value=\"\">Location</option>\n <option *ngFor=\"let location of locationOptions\" [value]=\"location\">{{ location }}</option>\n </select>\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\n </div>\n </div>\n\n <span class=\"tk-workspaces-filters__count\">{{ resultCount }} workspace{{ resultCount === 1 ? '' : 's' }} in total</span>\n\n <button type=\"button\" class=\"tk-workspaces-filters__add-button\" [matMenuTriggerFor]=\"addMenu\">\n Add workspace\n <mat-icon class=\"tk-workspaces-filters__add-icon\">expand_more</mat-icon>\n </button>\n\n <mat-menu #addMenu=\"matMenu\">\n <button type=\"button\" mat-menu-item (click)=\"onAddWorkspace()\">Add workspace</button>\n <button type=\"button\" mat-menu-item disabled>Import workspaces</button>\n </mat-menu>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-filters{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap;font-size:.875rem;font-weight:400;color:#000000f2}.tk-workspaces-filters__search{position:relative;min-width:14rem}.tk-workspaces-filters__search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__search-input{width:100%;height:34px;padding:6px 12px 6px 44px;border-radius:.5rem;outline:none;box-sizing:border-box;font-family:inherit;font-size:1rem;color:#000000f2;background:#fff}.tk-workspaces-filters__search-input::placeholder{color:#0006}.tk-workspaces-filters__filters{display:flex;align-items:center;gap:.5rem}.tk-workspaces-filters__filters-label{font-size:.875rem;color:#000000f2;white-space:nowrap}.tk-workspaces-filters__select-wrap{position:relative;display:flex;align-items:center}.tk-workspaces-filters__select{appearance:none;height:34px;padding:6px 32px 6px 12px;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:.5rem;font-family:inherit;font-size:1rem;color:#222;cursor:pointer;box-sizing:border-box}.tk-workspaces-filters__select:focus{outline:none;border-color:#0006}.tk-workspaces-filters__select-icon{position:absolute;right:.375rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__count{margin-left:auto;font-size:.875rem;color:#0009;white-space:nowrap;font-weight:400;flex:1}.tk-workspaces-filters__add-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer;white-space:nowrap}.tk-workspaces-filters__add-button:hover{background:#222}.tk-workspaces-filters__add-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}\n"] }]
41
+ }], propDecorators: { resultCount: [{
42
+ type: Input
43
+ }], typeOptions: [{
44
+ type: Input
45
+ }], locationOptions: [{
46
+ type: Input
47
+ }], searchChange: [{
48
+ type: Output
49
+ }], typeChange: [{
50
+ type: Output
51
+ }], locationChange: [{
52
+ type: Output
53
+ }], addWorkspace: [{
54
+ type: Output
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy93b3Jrc3BhY2VzL3NyYy9jb21wb25lbnRzL3dvcmtzcGFjZXMtZmlsdGVycy93b3Jrc3BhY2VzLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL2NvbXBvbmVudHMvd29ya3NwYWNlcy1maWx0ZXJzL3dvcmtzcGFjZXMtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPdkUsTUFBTSxPQUFPLDBCQUEwQjtJQUx2QztRQU1XLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBQzNCLG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBRTlCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMxQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDNUMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxELGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO0tBb0J2QjtJQWxCQyxtQkFBbUIsQ0FBQyxLQUFZO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUksS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7d0hBL0JVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLDBTQ1B2Qyw2L0RBa0RBOzRGRDNDYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsdUJBQXVCOzhCQUt4QixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGstd29ya3NwYWNlcy1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtzcGFjZXMtZmlsdGVycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtzcGFjZXMtZmlsdGVycy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VzRmlsdGVyc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHJlc3VsdENvdW50ID0gMDtcbiAgQElucHV0KCkgdHlwZU9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGxvY2F0aW9uT3B0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICBAT3V0cHV0KCkgc2VhcmNoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSB0eXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBsb2NhdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgYWRkV29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgc2VsZWN0ZWRUeXBlID0gJyc7XG4gIHNlbGVjdGVkTG9jYXRpb24gPSAnJztcblxuICBvblNlYXJjaElucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaFRlcm0pO1xuICB9XG5cbiAgb25UeXBlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IHZhbHVlO1xuICAgIHRoaXMudHlwZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uTG9jYXRpb25DaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbiA9IHZhbHVlO1xuICAgIHRoaXMubG9jYXRpb25DaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvbkFkZFdvcmtzcGFjZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZFdvcmtzcGFjZS5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLWZpbHRlcnNcIj5cbiAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtZmlsdGVyc19fc2VhcmNoXCI+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cInRrLXdvcmtzcGFjZXMtZmlsdGVyc19fc2VhcmNoLWlucHV0IGJsdWUtaW5wdXRcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxuICAgICAgW3ZhbHVlXT1cInNlYXJjaFRlcm1cIlxuICAgICAgKGlucHV0KT1cIm9uU2VhcmNoSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLWZpbHRlcnNfX3NlYXJjaC1pY29uXCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtZmlsdGVyc19fZmlsdGVyc1wiPlxuICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlcy1maWx0ZXJzX19maWx0ZXJzLWxhYmVsXCI+RmlsdGVyczo8L3NwYW4+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlcy1maWx0ZXJzX19zZWxlY3Qtd3JhcFwiPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBjbGFzcz1cInRrLXdvcmtzcGFjZXMtZmlsdGVyc19fc2VsZWN0XCJcbiAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRUeXBlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UeXBlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPkdlbmVyYWw8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdHlwZSBvZiB0eXBlT3B0aW9uc1wiIFt2YWx1ZV09XCJ0eXBlXCI+e3sgdHlwZSB9fTwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLWZpbHRlcnNfX3NlbGVjdC1pY29uXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtZmlsdGVyc19fc2VsZWN0LXdyYXBcIj5cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLWZpbHRlcnNfX3NlbGVjdFwiXG4gICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkTG9jYXRpb25cIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkxvY2F0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPkxvY2F0aW9uPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGxvY2F0aW9uIG9mIGxvY2F0aW9uT3B0aW9uc1wiIFt2YWx1ZV09XCJsb2NhdGlvblwiPnt7IGxvY2F0aW9uIH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtZmlsdGVyc19fc2VsZWN0LWljb25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlcy1maWx0ZXJzX19jb3VudFwiPnt7IHJlc3VsdENvdW50IH19IHdvcmtzcGFjZXt7IHJlc3VsdENvdW50ID09PSAxID8gJycgOiAncycgfX0gaW4gdG90YWw8L3NwYW4+XG5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLWZpbHRlcnNfX2FkZC1idXR0b25cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWRkTWVudVwiPlxuICAgIEFkZCB3b3Jrc3BhY2VcbiAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLWZpbHRlcnNfX2FkZC1pY29uXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8bWF0LW1lbnUgI2FkZE1lbnU9XCJtYXRNZW51XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25BZGRXb3Jrc3BhY2UoKVwiPkFkZCB3b3Jrc3BhY2U8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIGRpc2FibGVkPkltcG9ydCB3b3Jrc3BhY2VzPC9idXR0b24+XG4gIDwvbWF0LW1lbnU+XG48L2Rpdj5cbiJdfQ==