@researchdatabox/redbox-core 0.0.0-bootstrap.0 → 0.0.1-beta.10213

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 (656) hide show
  1. package/dist/CoreController.d.ts +4 -0
  2. package/dist/CoreController.d.ts.map +1 -1
  3. package/dist/CoreController.js +68 -23
  4. package/dist/CoreService.d.ts +1 -1
  5. package/dist/CoreService.d.ts.map +1 -1
  6. package/dist/CoreService.js +1 -1
  7. package/dist/DatastreamService.d.ts +5 -2
  8. package/dist/DatastreamService.d.ts.map +1 -1
  9. package/dist/HarvestRunService.d.ts +49 -0
  10. package/dist/HarvestRunService.d.ts.map +1 -0
  11. package/dist/HarvestRunService.js +13 -0
  12. package/dist/IntegrationAuditParams.d.ts +11 -0
  13. package/dist/IntegrationAuditParams.js +14 -0
  14. package/dist/QueueService.d.ts +1 -1
  15. package/dist/QueueService.d.ts.map +1 -1
  16. package/dist/RecordAuditParams.d.ts +2 -0
  17. package/dist/RecordAuditParams.d.ts.map +1 -1
  18. package/dist/RecordAuditParams.js +3 -1
  19. package/dist/RecordsService.d.ts +52 -2
  20. package/dist/RecordsService.d.ts.map +1 -1
  21. package/dist/StorageService.d.ts +6 -2
  22. package/dist/StorageService.d.ts.map +1 -1
  23. package/dist/api-routes/apib.d.ts +7 -0
  24. package/dist/api-routes/apib.d.ts.map +1 -0
  25. package/dist/api-routes/apib.js +43 -0
  26. package/dist/api-routes/define.d.ts +4 -0
  27. package/dist/api-routes/define.d.ts.map +1 -0
  28. package/dist/api-routes/define.js +29 -0
  29. package/dist/api-routes/groups/admin.d.ts +6 -0
  30. package/dist/api-routes/groups/admin.d.ts.map +1 -0
  31. package/dist/api-routes/groups/admin.js +53 -0
  32. package/dist/api-routes/groups/appconfig.d.ts +4 -0
  33. package/dist/api-routes/groups/appconfig.d.ts.map +1 -0
  34. package/dist/api-routes/groups/appconfig.js +33 -0
  35. package/dist/api-routes/groups/branding.d.ts +8 -0
  36. package/dist/api-routes/groups/branding.d.ts.map +1 -0
  37. package/dist/api-routes/groups/branding.js +61 -0
  38. package/dist/api-routes/groups/dashboard-config.d.ts +11 -0
  39. package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -0
  40. package/dist/api-routes/groups/dashboard-config.js +90 -0
  41. package/dist/api-routes/groups/export.d.ts +3 -0
  42. package/dist/api-routes/groups/export.d.ts.map +1 -0
  43. package/dist/api-routes/groups/export.js +30 -0
  44. package/dist/api-routes/groups/forms.d.ts +4 -0
  45. package/dist/api-routes/groups/forms.d.ts.map +1 -0
  46. package/dist/api-routes/groups/forms.js +29 -0
  47. package/dist/api-routes/groups/harvest-runs.d.ts +5 -0
  48. package/dist/api-routes/groups/harvest-runs.d.ts.map +1 -0
  49. package/dist/api-routes/groups/harvest-runs.js +79 -0
  50. package/dist/api-routes/groups/integration-audit.d.ts +3 -0
  51. package/dist/api-routes/groups/integration-audit.d.ts.map +1 -0
  52. package/dist/api-routes/groups/integration-audit.js +35 -0
  53. package/dist/api-routes/groups/named-query.d.ts +8 -0
  54. package/dist/api-routes/groups/named-query.d.ts.map +1 -0
  55. package/dist/api-routes/groups/named-query.js +54 -0
  56. package/dist/api-routes/groups/notifications.d.ts +3 -0
  57. package/dist/api-routes/groups/notifications.d.ts.map +1 -0
  58. package/dist/api-routes/groups/notifications.js +20 -0
  59. package/dist/api-routes/groups/records.d.ts +28 -0
  60. package/dist/api-routes/groups/records.d.ts.map +1 -0
  61. package/dist/api-routes/groups/records.js +353 -0
  62. package/dist/api-routes/groups/recordtypes.d.ts +4 -0
  63. package/dist/api-routes/groups/recordtypes.d.ts.map +1 -0
  64. package/dist/api-routes/groups/recordtypes.js +27 -0
  65. package/dist/api-routes/groups/reports.d.ts +9 -0
  66. package/dist/api-routes/groups/reports.d.ts.map +1 -0
  67. package/dist/api-routes/groups/reports.js +63 -0
  68. package/dist/api-routes/groups/search-query.d.ts +4 -0
  69. package/dist/api-routes/groups/search-query.d.ts.map +1 -0
  70. package/dist/api-routes/groups/search-query.js +51 -0
  71. package/dist/api-routes/groups/search.d.ts +6 -0
  72. package/dist/api-routes/groups/search.d.ts.map +1 -0
  73. package/dist/api-routes/groups/search.js +31 -0
  74. package/dist/api-routes/groups/translation.d.ts +8 -0
  75. package/dist/api-routes/groups/translation.d.ts.map +1 -0
  76. package/dist/api-routes/groups/translation.js +82 -0
  77. package/dist/api-routes/groups/users.d.ts +17 -0
  78. package/dist/api-routes/groups/users.d.ts.map +1 -0
  79. package/dist/api-routes/groups/users.js +149 -0
  80. package/dist/api-routes/groups/vocabulary.d.ts +10 -0
  81. package/dist/api-routes/groups/vocabulary.d.ts.map +1 -0
  82. package/dist/api-routes/groups/vocabulary.js +97 -0
  83. package/dist/api-routes/helpers.d.ts +29 -0
  84. package/dist/api-routes/helpers.d.ts.map +1 -0
  85. package/dist/api-routes/helpers.js +485 -0
  86. package/dist/api-routes/index.d.ts +27 -0
  87. package/dist/api-routes/index.d.ts.map +1 -0
  88. package/dist/api-routes/index.js +43 -0
  89. package/dist/api-routes/openapi.d.ts +26 -0
  90. package/dist/api-routes/openapi.d.ts.map +1 -0
  91. package/dist/api-routes/openapi.js +292 -0
  92. package/dist/api-routes/request-extraction.d.ts +14 -0
  93. package/dist/api-routes/request-extraction.d.ts.map +1 -0
  94. package/dist/api-routes/request-extraction.js +100 -0
  95. package/dist/api-routes/route-factory.d.ts +3 -0
  96. package/dist/api-routes/route-factory.d.ts.map +1 -0
  97. package/dist/api-routes/route-factory.js +30 -0
  98. package/dist/api-routes/route-registry.d.ts +24 -0
  99. package/dist/api-routes/route-registry.d.ts.map +1 -0
  100. package/dist/api-routes/route-registry.js +117 -0
  101. package/dist/api-routes/route-resolution.d.ts +4 -0
  102. package/dist/api-routes/route-resolution.d.ts.map +1 -0
  103. package/dist/api-routes/route-resolution.js +71 -0
  104. package/dist/api-routes/schemas/common.d.ts +35 -0
  105. package/dist/api-routes/schemas/common.d.ts.map +1 -0
  106. package/dist/api-routes/schemas/common.js +146 -0
  107. package/dist/api-routes/schemas/responses.d.ts +972 -0
  108. package/dist/api-routes/schemas/responses.d.ts.map +1 -0
  109. package/dist/api-routes/schemas/responses.js +512 -0
  110. package/dist/api-routes/types.d.ts +70 -0
  111. package/dist/api-routes/types.d.ts.map +1 -0
  112. package/dist/api-routes/types.js +3 -0
  113. package/dist/api-routes/validation.d.ts +32 -0
  114. package/dist/api-routes/validation.d.ts.map +1 -0
  115. package/dist/api-routes/validation.js +142 -0
  116. package/dist/api-routes/zod-openapi.d.ts +3 -0
  117. package/dist/api-routes/zod-openapi.d.ts.map +1 -0
  118. package/dist/api-routes/zod-openapi.js +8 -0
  119. package/dist/bootstrap.d.ts.map +1 -1
  120. package/dist/bootstrap.js +12 -12
  121. package/dist/config/agendaQueue.config.d.ts +33 -6
  122. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  123. package/dist/config/agendaQueue.config.js +40 -18
  124. package/dist/config/auth.config.d.ts.map +1 -1
  125. package/dist/config/auth.config.js +29 -2
  126. package/dist/config/branding.config.d.ts +2 -1
  127. package/dist/config/branding.config.d.ts.map +1 -1
  128. package/dist/config/branding.config.js +5 -95
  129. package/dist/config/brandingConfigurationDefaults.config.d.ts +3 -0
  130. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  131. package/dist/config/brandingConfigurationDefaults.config.js +161 -5
  132. package/dist/config/custom.config.d.ts +6 -0
  133. package/dist/config/custom.config.d.ts.map +1 -1
  134. package/dist/config/custom.config.js +10 -1
  135. package/dist/config/dashboardtype.config.d.ts +5 -0
  136. package/dist/config/dashboardtype.config.d.ts.map +1 -1
  137. package/dist/config/dashboardtype.config.js +1 -1
  138. package/dist/config/dashboardview.config.d.ts +24 -0
  139. package/dist/config/dashboardview.config.d.ts.map +1 -0
  140. package/dist/config/dashboardview.config.js +137 -0
  141. package/dist/config/dompurify.config.d.ts +1 -0
  142. package/dist/config/dompurify.config.d.ts.map +1 -1
  143. package/dist/config/dompurify.config.js +5 -4
  144. package/dist/config/emailnotification.config.d.ts.map +1 -1
  145. package/dist/config/emailnotification.config.js +2 -1
  146. package/dist/config/figshareDev.config.d.ts +12 -0
  147. package/dist/config/figshareDev.config.js +9 -0
  148. package/dist/config/form.config.d.ts +4 -0
  149. package/dist/config/form.config.d.ts.map +1 -1
  150. package/dist/config/form.config.js +1 -1
  151. package/dist/config/harvestRuns.config.d.ts +9 -0
  152. package/dist/config/harvestRuns.config.d.ts.map +1 -0
  153. package/dist/config/harvestRuns.config.js +11 -0
  154. package/dist/config/http.config.d.ts +13 -1
  155. package/dist/config/http.config.d.ts.map +1 -1
  156. package/dist/config/http.config.js +201 -38
  157. package/dist/config/index.d.ts +14 -19
  158. package/dist/config/index.d.ts.map +1 -1
  159. package/dist/config/index.js +10 -15
  160. package/dist/config/namedQuery.config.d.ts +26 -4
  161. package/dist/config/namedQuery.config.d.ts.map +1 -1
  162. package/dist/config/namedQuery.config.js +7 -350
  163. package/dist/config/policies.config.d.ts +3 -0
  164. package/dist/config/policies.config.d.ts.map +1 -1
  165. package/dist/config/policies.config.js +35 -1
  166. package/dist/config/record.config.d.ts.map +1 -1
  167. package/dist/config/record.config.js +2 -1
  168. package/dist/config/recordtype.config.d.ts +28 -0
  169. package/dist/config/recordtype.config.d.ts.map +1 -1
  170. package/dist/config/recordtype.config.js +105 -13
  171. package/dist/config/redboxSession.config.d.ts +3 -0
  172. package/dist/config/redboxSession.config.d.ts.map +1 -1
  173. package/dist/config/redboxSession.config.js +1 -1
  174. package/dist/config/report.config.d.ts +2 -11
  175. package/dist/config/report.config.d.ts.map +1 -1
  176. package/dist/config/report.config.js +3 -49
  177. package/dist/config/reusableContributorFormDefinitions.config.d.ts +1 -1
  178. package/dist/config/reusableContributorFormDefinitions.config.d.ts.map +1 -1
  179. package/dist/config/reusableContributorFormDefinitions.config.js +371 -206
  180. package/dist/config/reusableViewFormDefinitions.config.js +3 -3
  181. package/dist/config/routes.config.d.ts +5 -2
  182. package/dist/config/routes.config.d.ts.map +1 -1
  183. package/dist/config/routes.config.js +55 -117
  184. package/dist/config/storage.config.d.ts +20 -2
  185. package/dist/config/storage.config.d.ts.map +1 -1
  186. package/dist/config/storage.config.js +2 -1
  187. package/dist/config/validators.config.d.ts +6 -4
  188. package/dist/config/validators.config.d.ts.map +1 -1
  189. package/dist/config/validators.config.js +5 -3
  190. package/dist/config/vocab.config.d.ts +30 -0
  191. package/dist/config/vocab.config.d.ts.map +1 -1
  192. package/dist/config/vocab.config.js +21 -1
  193. package/dist/config/webpack.config.d.ts.map +1 -1
  194. package/dist/config/webpack.config.js +18 -12
  195. package/dist/config/workflow.config.d.ts +0 -1
  196. package/dist/config/workflow.config.d.ts.map +1 -1
  197. package/dist/config/workflow.config.js +1 -137
  198. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  199. package/dist/configmodels/AdminSidebarConfig.js +4 -3
  200. package/dist/configmodels/AuthorizedDomainsEmails.d.ts +48 -0
  201. package/dist/configmodels/AuthorizedDomainsEmails.d.ts.map +1 -1
  202. package/dist/configmodels/AuthorizedDomainsEmails.js +50 -2
  203. package/dist/configmodels/ConfigModels.d.ts +7 -1
  204. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  205. package/dist/configmodels/ConfigModels.js +41 -1
  206. package/dist/configmodels/DashboardTableOverrideConfig.d.ts +1011 -0
  207. package/dist/configmodels/DashboardTableOverrideConfig.d.ts.map +1 -0
  208. package/dist/configmodels/DashboardTableOverrideConfig.js +138 -0
  209. package/dist/configmodels/DoiPublishing.d.ts +4711 -0
  210. package/dist/configmodels/DoiPublishing.js +639 -0
  211. package/dist/configmodels/FigsharePublishing.d.ts +1376 -0
  212. package/dist/configmodels/FigsharePublishing.js +630 -0
  213. package/dist/configmodels/IntegrationNotificationConfig.d.ts +133 -0
  214. package/dist/configmodels/IntegrationNotificationConfig.d.ts.map +1 -0
  215. package/dist/configmodels/IntegrationNotificationConfig.js +64 -0
  216. package/dist/configmodels/SystemMessage.d.ts +32 -0
  217. package/dist/configmodels/SystemMessage.d.ts.map +1 -1
  218. package/dist/configmodels/SystemMessage.js +34 -2
  219. package/dist/controllers/AdminController.d.ts +1 -1
  220. package/dist/controllers/AdminController.d.ts.map +1 -1
  221. package/dist/controllers/AdminController.js +6 -32
  222. package/dist/controllers/AppConfigController.js +3 -3
  223. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  224. package/dist/controllers/BrandingAppController.js +11 -10
  225. package/dist/controllers/BrandingController.d.ts +11 -5
  226. package/dist/controllers/BrandingController.d.ts.map +1 -1
  227. package/dist/controllers/BrandingController.js +116 -48
  228. package/dist/controllers/DashboardConfigController.d.ts +8 -0
  229. package/dist/controllers/DashboardConfigController.d.ts.map +1 -0
  230. package/dist/controllers/DashboardConfigController.js +17 -0
  231. package/dist/controllers/DynamicAssetController.d.ts +1 -21
  232. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  233. package/dist/controllers/DynamicAssetController.js +19 -41
  234. package/dist/controllers/EmailController.d.ts.map +1 -1
  235. package/dist/controllers/EmailController.js +16 -12
  236. package/dist/controllers/ExportController.d.ts.map +1 -1
  237. package/dist/controllers/ExportController.js +3 -8
  238. package/dist/controllers/FormVocabularyController.d.ts +3 -0
  239. package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
  240. package/dist/controllers/FormVocabularyController.js +154 -4
  241. package/dist/controllers/NamedQueryController.d.ts +8 -0
  242. package/dist/controllers/NamedQueryController.d.ts.map +1 -0
  243. package/dist/controllers/NamedQueryController.js +17 -0
  244. package/dist/controllers/RecordAuditController.d.ts +31 -14
  245. package/dist/controllers/RecordAuditController.d.ts.map +1 -1
  246. package/dist/controllers/RecordAuditController.js +509 -57
  247. package/dist/controllers/RecordController.d.ts +18 -16
  248. package/dist/controllers/RecordController.d.ts.map +1 -1
  249. package/dist/controllers/RecordController.js +314 -167
  250. package/dist/controllers/RenderViewController.d.ts.map +1 -1
  251. package/dist/controllers/RenderViewController.js +4 -2
  252. package/dist/controllers/ReportController.d.ts +7 -0
  253. package/dist/controllers/ReportController.d.ts.map +1 -1
  254. package/dist/controllers/ReportController.js +75 -2
  255. package/dist/controllers/ReportsController.d.ts +1 -0
  256. package/dist/controllers/ReportsController.d.ts.map +1 -1
  257. package/dist/controllers/ReportsController.js +12 -2
  258. package/dist/controllers/TranslationController.d.ts.map +1 -1
  259. package/dist/controllers/TranslationController.js +14 -12
  260. package/dist/controllers/WorkspaceTypesController.d.ts +3 -2
  261. package/dist/controllers/WorkspaceTypesController.d.ts.map +1 -1
  262. package/dist/controllers/WorkspaceTypesController.js +120 -31
  263. package/dist/controllers/index.d.ts.map +1 -1
  264. package/dist/controllers/index.js +19 -4
  265. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  266. package/dist/controllers/webservice/AdminController.js +16 -17
  267. package/dist/controllers/webservice/AppConfigController.d.ts.map +1 -1
  268. package/dist/controllers/webservice/AppConfigController.js +17 -18
  269. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  270. package/dist/controllers/webservice/BrandingController.js +102 -48
  271. package/dist/controllers/webservice/DashboardConfigController.d.ts +26 -0
  272. package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -0
  273. package/dist/controllers/webservice/DashboardConfigController.js +241 -0
  274. package/dist/controllers/webservice/ExportController.d.ts.map +1 -1
  275. package/dist/controllers/webservice/ExportController.js +13 -18
  276. package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
  277. package/dist/controllers/webservice/FormManagementController.js +11 -13
  278. package/dist/controllers/webservice/HarvestRunController.d.ts +13 -0
  279. package/dist/controllers/webservice/HarvestRunController.d.ts.map +1 -0
  280. package/dist/controllers/webservice/HarvestRunController.js +148 -0
  281. package/dist/controllers/webservice/IntegrationAuditController.d.ts +10 -0
  282. package/dist/controllers/webservice/IntegrationAuditController.d.ts.map +1 -1
  283. package/dist/controllers/webservice/IntegrationAuditController.js +98 -0
  284. package/dist/controllers/webservice/NamedQueryController.d.ts +17 -0
  285. package/dist/controllers/webservice/NamedQueryController.d.ts.map +1 -0
  286. package/dist/controllers/webservice/NamedQueryController.js +127 -0
  287. package/dist/controllers/webservice/RecordController.d.ts +4 -0
  288. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  289. package/dist/controllers/webservice/RecordController.js +441 -314
  290. package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
  291. package/dist/controllers/webservice/RecordTypeController.js +9 -10
  292. package/dist/controllers/webservice/ReportController.d.ts +7 -0
  293. package/dist/controllers/webservice/ReportController.d.ts.map +1 -1
  294. package/dist/controllers/webservice/ReportController.js +125 -19
  295. package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
  296. package/dist/controllers/webservice/SearchController.js +28 -35
  297. package/dist/controllers/webservice/TranslationController.d.ts.map +1 -1
  298. package/dist/controllers/webservice/TranslationController.js +65 -43
  299. package/dist/controllers/webservice/UserManagementController.d.ts +1 -1
  300. package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
  301. package/dist/controllers/webservice/UserManagementController.js +114 -101
  302. package/dist/controllers/webservice/VocabularyController.d.ts.map +1 -1
  303. package/dist/controllers/webservice/VocabularyController.js +76 -28
  304. package/dist/form-config/dataRecord-1.0-draft.js +3 -3
  305. package/dist/form-config/default-1.0-draft.d.ts.map +1 -1
  306. package/dist/form-config/default-1.0-draft.js +27 -3
  307. package/dist/form-config/index.d.ts.map +1 -1
  308. package/dist/form-config/index.js +1 -1
  309. package/dist/hooks/defineRedboxHook.d.ts +3 -0
  310. package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
  311. package/dist/hooks/defineRedboxHook.js +4 -1
  312. package/dist/hooks/webpack.d.ts.map +1 -1
  313. package/dist/hooks/webpack.js +17 -7
  314. package/dist/index.d.ts +12 -2
  315. package/dist/index.d.ts.map +1 -1
  316. package/dist/index.js +17 -2
  317. package/dist/loader/MigrationRunner.d.ts +19 -0
  318. package/dist/loader/MigrationRunner.d.ts.map +1 -0
  319. package/dist/loader/MigrationRunner.js +108 -0
  320. package/dist/loader/bootstrapShimRuntime.d.ts +2 -1
  321. package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
  322. package/dist/loader/bootstrapShimRuntime.js +7 -2
  323. package/dist/loader/index.d.ts +17 -0
  324. package/dist/loader/index.d.ts.map +1 -1
  325. package/dist/loader/index.js +216 -13
  326. package/dist/middleware/redboxSession.d.ts +5 -0
  327. package/dist/middleware/redboxSession.d.ts.map +1 -1
  328. package/dist/middleware/redboxSession.js +19 -6
  329. package/dist/model/BuildResponse.d.ts +4 -0
  330. package/dist/model/BuildResponse.d.ts.map +1 -1
  331. package/dist/model/DashboardTypeResponseModel.d.ts +13 -1
  332. package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
  333. package/dist/model/DashboardTypeResponseModel.js +12 -4
  334. package/dist/model/DashboardViewResponseModel.d.ts +20 -0
  335. package/dist/model/DashboardViewResponseModel.d.ts.map +1 -0
  336. package/dist/model/DashboardViewResponseModel.js +38 -0
  337. package/dist/model/RecordTypeResponseModel.d.ts +3 -1
  338. package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
  339. package/dist/model/RecordTypeResponseModel.js +4 -2
  340. package/dist/model/RequestDetails.d.ts +1 -1
  341. package/dist/model/RequestDetails.d.ts.map +1 -1
  342. package/dist/model/RequestDetails.js +1 -1
  343. package/dist/model/config/ReportConfig.d.ts +1 -1
  344. package/dist/model/config/ReportConfig.d.ts.map +1 -1
  345. package/dist/model/config/ReportConfig.js +2 -2
  346. package/dist/model/index.d.ts +1 -0
  347. package/dist/model/index.d.ts.map +1 -1
  348. package/dist/model/index.js +5 -2
  349. package/dist/model/storage/BrandingModel.d.ts +0 -16
  350. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  351. package/dist/model/storage/BrandingModel.js +2 -51
  352. package/dist/model/storage/DashboardTypeModel.d.ts +4 -0
  353. package/dist/model/storage/DashboardTypeModel.d.ts.map +1 -1
  354. package/dist/model/storage/HarvestRunModel.d.ts +140 -0
  355. package/dist/model/storage/HarvestRunModel.d.ts.map +1 -0
  356. package/dist/model/storage/HarvestRunModel.js +110 -0
  357. package/dist/model/storage/IntegrationAuditModel.d.ts +49 -0
  358. package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
  359. package/dist/model/storage/IntegrationAuditModel.js +106 -0
  360. package/dist/model/storage/RecordTypeModel.d.ts +16 -0
  361. package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
  362. package/dist/model/storage/RecordTypeModel.js +9 -1
  363. package/dist/model/storage/ReportModel.d.ts +1 -0
  364. package/dist/model/storage/ReportModel.d.ts.map +1 -1
  365. package/dist/model/storage/index.d.ts +2 -0
  366. package/dist/model/storage/index.d.ts.map +1 -1
  367. package/dist/model/storage/index.js +15 -2
  368. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  369. package/dist/policies/contentSecurityPolicy.js +23 -2
  370. package/dist/policies/i18nLanguages.d.ts.map +1 -1
  371. package/dist/policies/i18nLanguages.js +1 -1
  372. package/dist/policies/index.d.ts +3 -0
  373. package/dist/policies/index.d.ts.map +1 -1
  374. package/dist/policies/index.js +6 -2
  375. package/dist/policies/menuResolver.d.ts.map +1 -1
  376. package/dist/policies/menuResolver.js +1 -1
  377. package/dist/policies/setLang.d.ts.map +1 -1
  378. package/dist/policies/setLang.js +1 -1
  379. package/dist/policies/validateApiContractRequest.d.ts +3 -0
  380. package/dist/policies/validateApiContractRequest.d.ts.map +1 -0
  381. package/dist/policies/validateApiContractRequest.js +74 -0
  382. package/dist/responses/badRequest.d.ts.map +1 -1
  383. package/dist/responses/badRequest.js +7 -4
  384. package/dist/responses/created.d.ts.map +1 -1
  385. package/dist/responses/created.js +7 -4
  386. package/dist/responses/forbidden.d.ts.map +1 -1
  387. package/dist/responses/forbidden.js +7 -4
  388. package/dist/responses/ok.d.ts.map +1 -1
  389. package/dist/responses/ok.js +7 -4
  390. package/dist/responses/serverError.d.ts.map +1 -1
  391. package/dist/responses/serverError.js +7 -4
  392. package/dist/responses/siteTitle.d.ts +6 -0
  393. package/dist/responses/siteTitle.d.ts.map +1 -0
  394. package/dist/responses/siteTitle.js +28 -0
  395. package/dist/sails.d.ts +9 -0
  396. package/dist/sails.d.ts.map +1 -1
  397. package/dist/services/AgendaQueueService.d.ts +39 -17
  398. package/dist/services/AgendaQueueService.d.ts.map +1 -1
  399. package/dist/services/AgendaQueueService.js +328 -87
  400. package/dist/services/AppConfigService.d.ts +20 -2
  401. package/dist/services/AppConfigService.d.ts.map +1 -1
  402. package/dist/services/AppConfigService.js +129 -15
  403. package/dist/services/AttachmentMetadataService.d.ts +34 -0
  404. package/dist/services/AttachmentMetadataService.d.ts.map +1 -0
  405. package/dist/services/AttachmentMetadataService.js +133 -0
  406. package/dist/services/BrandingLogoService.d.ts +11 -8
  407. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  408. package/dist/services/BrandingLogoService.js +71 -72
  409. package/dist/services/BrandingService.d.ts.map +1 -1
  410. package/dist/services/BrandingService.js +4 -32
  411. package/dist/services/BrandingThemeCssService.d.ts +21 -0
  412. package/dist/services/BrandingThemeCssService.d.ts.map +1 -0
  413. package/dist/services/BrandingThemeCssService.js +113 -0
  414. package/dist/services/BrandingThemeTokens.d.ts +16 -0
  415. package/dist/services/BrandingThemeTokens.d.ts.map +1 -0
  416. package/dist/services/BrandingThemeTokens.js +82 -0
  417. package/dist/services/CacheService.d.ts.map +1 -1
  418. package/dist/services/CacheService.js +37 -29
  419. package/dist/services/DashboardConfigService.d.ts +71 -0
  420. package/dist/services/DashboardConfigService.d.ts.map +1 -0
  421. package/dist/services/DashboardConfigService.js +315 -0
  422. package/dist/services/DashboardTypesService.d.ts +61 -63
  423. package/dist/services/DashboardTypesService.d.ts.map +1 -1
  424. package/dist/services/DashboardTypesService.js +361 -198
  425. package/dist/services/DoiService.d.ts +30 -25
  426. package/dist/services/DoiService.d.ts.map +1 -1
  427. package/dist/services/DoiService.js +448 -393
  428. package/dist/services/EmailService.d.ts +17 -3
  429. package/dist/services/EmailService.d.ts.map +1 -1
  430. package/dist/services/EmailService.js +44 -17
  431. package/dist/services/FigshareService.d.ts +40 -65
  432. package/dist/services/FigshareService.d.ts.map +1 -1
  433. package/dist/services/FigshareService.js +616 -2038
  434. package/dist/services/FormPayloadPrehydrateService.d.ts +35 -0
  435. package/dist/services/FormPayloadPrehydrateService.d.ts.map +1 -0
  436. package/dist/services/FormPayloadPrehydrateService.js +200 -0
  437. package/dist/services/FormRecordConsistencyService.d.ts +3 -3
  438. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  439. package/dist/services/FormRecordConsistencyService.js +21 -19
  440. package/dist/services/FormVocabularyService.d.ts +45 -0
  441. package/dist/services/FormVocabularyService.d.ts.map +1 -0
  442. package/dist/services/FormVocabularyService.js +326 -0
  443. package/dist/services/FormsService.d.ts.map +1 -1
  444. package/dist/services/FormsService.js +8 -6
  445. package/dist/services/HarvestRunService.d.ts +73 -0
  446. package/dist/services/HarvestRunService.d.ts.map +1 -0
  447. package/dist/services/HarvestRunService.js +1317 -0
  448. package/dist/services/I18nEntriesService.d.ts +9 -4
  449. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  450. package/dist/services/I18nEntriesService.js +96 -18
  451. package/dist/services/IntegrationAuditService.d.ts +158 -0
  452. package/dist/services/IntegrationAuditService.d.ts.map +1 -1
  453. package/dist/services/IntegrationAuditService.js +838 -0
  454. package/dist/services/IntegrationNotificationService.d.ts +55 -0
  455. package/dist/services/IntegrationNotificationService.d.ts.map +1 -0
  456. package/dist/services/IntegrationNotificationService.js +271 -0
  457. package/dist/services/NamedQueryService.d.ts +51 -12
  458. package/dist/services/NamedQueryService.d.ts.map +1 -1
  459. package/dist/services/NamedQueryService.js +622 -125
  460. package/dist/services/OniService.d.ts.map +1 -1
  461. package/dist/services/OniService.js +4 -6
  462. package/dist/services/RDMPService.d.ts.map +1 -1
  463. package/dist/services/RDMPService.js +3 -2
  464. package/dist/services/RecordsService.d.ts +25 -3
  465. package/dist/services/RecordsService.d.ts.map +1 -1
  466. package/dist/services/RecordsService.js +119 -19
  467. package/dist/services/ReportsService.d.ts +57 -1
  468. package/dist/services/ReportsService.d.ts.map +1 -1
  469. package/dist/services/ReportsService.js +258 -34
  470. package/dist/services/SassCompilerService.d.ts +4 -10
  471. package/dist/services/SassCompilerService.d.ts.map +1 -1
  472. package/dist/services/SassCompilerService.js +9 -173
  473. package/dist/services/SolrSearchService.d.ts +1 -0
  474. package/dist/services/SolrSearchService.d.ts.map +1 -1
  475. package/dist/services/SolrSearchService.js +14 -3
  476. package/dist/services/StandardDatastreamService.d.ts +37 -5
  477. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  478. package/dist/services/StandardDatastreamService.js +535 -38
  479. package/dist/services/StorageManagerService.d.ts +13 -1
  480. package/dist/services/StorageManagerService.d.ts.map +1 -1
  481. package/dist/services/StorageManagerService.js +94 -11
  482. package/dist/services/TemplateService.d.ts +2 -18
  483. package/dist/services/TemplateService.d.ts.map +1 -1
  484. package/dist/services/TemplateService.js +9 -53
  485. package/dist/services/VocabularyService.d.ts +13 -0
  486. package/dist/services/VocabularyService.d.ts.map +1 -1
  487. package/dist/services/VocabularyService.js +204 -14
  488. package/dist/services/doi-v2/audit.d.ts +7 -0
  489. package/dist/services/doi-v2/audit.d.ts.map +1 -1
  490. package/dist/services/doi-v2/audit.js +30 -0
  491. package/dist/services/doi-v2/bindings.d.ts +8 -0
  492. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  493. package/dist/services/doi-v2/bindings.js +79 -0
  494. package/dist/services/doi-v2/config.d.ts +7 -0
  495. package/dist/services/doi-v2/config.js +51 -0
  496. package/dist/services/doi-v2/context.d.ts +18 -0
  497. package/dist/services/doi-v2/context.js +41 -0
  498. package/dist/services/doi-v2/http.d.ts +21 -0
  499. package/dist/services/doi-v2/http.js +88 -0
  500. package/dist/services/doi-v2/payload.d.ts +4 -0
  501. package/dist/services/doi-v2/payload.d.ts.map +1 -1
  502. package/dist/services/doi-v2/payload.js +305 -0
  503. package/dist/services/doi-v2/profiles.d.ts +5 -0
  504. package/dist/services/doi-v2/profiles.js +31 -0
  505. package/dist/services/doi-v2/runtime.d.ts +16 -0
  506. package/dist/services/doi-v2/runtime.js +173 -0
  507. package/dist/services/doi-v2/types.d.ts +49 -0
  508. package/dist/services/doi-v2/types.js +3 -0
  509. package/dist/services/figshare-v2/assets.d.ts +5 -0
  510. package/dist/services/figshare-v2/assets.js +297 -0
  511. package/dist/services/figshare-v2/audit.d.ts +7 -0
  512. package/dist/services/figshare-v2/audit.d.ts.map +1 -0
  513. package/dist/services/figshare-v2/audit.js +30 -0
  514. package/dist/services/figshare-v2/bindings.d.ts +6 -0
  515. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  516. package/dist/services/figshare-v2/bindings.js +58 -0
  517. package/dist/services/figshare-v2/config.d.ts +13 -0
  518. package/dist/services/figshare-v2/config.d.ts.map +1 -1
  519. package/dist/services/figshare-v2/config.js +105 -0
  520. package/dist/services/figshare-v2/context.d.ts +4 -0
  521. package/dist/services/figshare-v2/context.d.ts.map +1 -1
  522. package/dist/services/figshare-v2/context.js +21 -0
  523. package/dist/services/figshare-v2/embargo.d.ts +5 -0
  524. package/dist/services/figshare-v2/embargo.js +36 -0
  525. package/dist/services/figshare-v2/http.d.ts +42 -0
  526. package/dist/services/figshare-v2/http.d.ts.map +1 -1
  527. package/dist/services/figshare-v2/http.js +324 -0
  528. package/dist/services/figshare-v2/metadata.d.ts +6 -0
  529. package/dist/services/figshare-v2/metadata.d.ts.map +1 -1
  530. package/dist/services/figshare-v2/metadata.js +280 -0
  531. package/dist/services/figshare-v2/observability.d.ts +7 -0
  532. package/dist/services/figshare-v2/observability.d.ts.map +1 -1
  533. package/dist/services/figshare-v2/observability.js +87 -0
  534. package/dist/services/figshare-v2/plan.d.ts +5 -0
  535. package/dist/services/figshare-v2/plan.js +51 -0
  536. package/dist/services/figshare-v2/publish.d.ts +5 -0
  537. package/dist/services/figshare-v2/publish.js +20 -0
  538. package/dist/services/figshare-v2/queue.d.ts +4 -0
  539. package/dist/services/figshare-v2/queue.js +11 -0
  540. package/dist/services/figshare-v2/runtime.d.ts +14 -0
  541. package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
  542. package/dist/services/figshare-v2/runtime.js +88 -0
  543. package/dist/services/figshare-v2/types.d.ts +198 -0
  544. package/dist/services/figshare-v2/types.d.ts.map +1 -1
  545. package/dist/services/figshare-v2/types.js +59 -0
  546. package/dist/services/figshare-v2/workflow.d.ts +3 -0
  547. package/dist/services/figshare-v2/workflow.js +7 -0
  548. package/dist/services/figshare-v2/writeback.d.ts +5 -0
  549. package/dist/services/figshare-v2/writeback.js +45 -0
  550. package/dist/services/index.d.ts +24 -3
  551. package/dist/services/index.d.ts.map +1 -1
  552. package/dist/services/index.js +43 -7
  553. package/dist/shims/momentShim.d.ts.map +1 -1
  554. package/dist/shims/momentShim.js +1 -6
  555. package/dist/storage/GridFSDriver.d.ts +101 -0
  556. package/dist/storage/GridFSDriver.d.ts.map +1 -0
  557. package/dist/storage/GridFSDriver.js +291 -0
  558. package/dist/storage/TusStorageManagerDataStore.d.ts +49 -0
  559. package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -0
  560. package/dist/storage/TusStorageManagerDataStore.js +300 -0
  561. package/dist/transformers/ExportJSONTransformer.d.ts +1 -1
  562. package/dist/transformers/ExportJSONTransformer.d.ts.map +1 -1
  563. package/dist/transformers/ExportJSONTransformer.js +3 -3
  564. package/dist/utilities/RequestParamUtils.d.ts +3 -0
  565. package/dist/utilities/RequestParamUtils.d.ts.map +1 -0
  566. package/dist/utilities/RequestParamUtils.js +13 -0
  567. package/dist/visitor/attachment-fields.visitor.d.ts +17 -17
  568. package/dist/visitor/attachment-fields.visitor.d.ts.map +1 -1
  569. package/dist/visitor/attachment-fields.visitor.js +44 -34
  570. package/dist/visitor/client.visitor.d.ts +145 -97
  571. package/dist/visitor/client.visitor.d.ts.map +1 -1
  572. package/dist/visitor/client.visitor.js +366 -273
  573. package/dist/visitor/construct.visitor.d.ts +99 -93
  574. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  575. package/dist/visitor/construct.visitor.js +304 -227
  576. package/dist/visitor/context-variables.visitor.d.ts +35 -35
  577. package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
  578. package/dist/visitor/context-variables.visitor.js +85 -75
  579. package/dist/visitor/data-value.visitor.d.ts +99 -93
  580. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  581. package/dist/visitor/data-value.visitor.js +157 -148
  582. package/dist/visitor/json-type-def.visitor.d.ts +96 -90
  583. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  584. package/dist/visitor/json-type-def.visitor.js +158 -149
  585. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +101 -94
  586. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  587. package/dist/visitor/migrate-config-v4-v5.visitor.js +356 -295
  588. package/dist/visitor/template.visitor.d.ts +100 -92
  589. package/dist/visitor/template.visitor.d.ts.map +1 -1
  590. package/dist/visitor/template.visitor.js +245 -156
  591. package/dist/visitor/validator.visitor.d.ts +95 -91
  592. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  593. package/dist/visitor/validator.visitor.js +184 -152
  594. package/dist/visitor/visitor-helpers.js +9 -9
  595. package/dist/visitor/vocab-inline.visitor.d.ts +34 -19
  596. package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -1
  597. package/dist/visitor/vocab-inline.visitor.js +157 -48
  598. package/dist/waterline-models/AttachmentAccessAudit.d.ts +26 -0
  599. package/dist/waterline-models/AttachmentAccessAudit.d.ts.map +1 -0
  600. package/dist/waterline-models/AttachmentAccessAudit.js +63 -0
  601. package/dist/waterline-models/AttachmentMetadata.d.ts +40 -0
  602. package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -0
  603. package/dist/waterline-models/AttachmentMetadata.js +147 -0
  604. package/dist/waterline-models/BrandingConfig.d.ts +0 -2
  605. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  606. package/dist/waterline-models/BrandingConfig.js +5 -9
  607. package/dist/waterline-models/DashboardType.d.ts +7 -0
  608. package/dist/waterline-models/DashboardType.d.ts.map +1 -1
  609. package/dist/waterline-models/DashboardType.js +16 -1
  610. package/dist/waterline-models/HarvestRecordEvent.d.ts +43 -0
  611. package/dist/waterline-models/HarvestRecordEvent.d.ts.map +1 -0
  612. package/dist/waterline-models/HarvestRecordEvent.js +107 -0
  613. package/dist/waterline-models/HarvestRun.d.ts +51 -0
  614. package/dist/waterline-models/HarvestRun.d.ts.map +1 -0
  615. package/dist/waterline-models/HarvestRun.js +125 -0
  616. package/dist/waterline-models/HarvestRunChunk.d.ts +57 -0
  617. package/dist/waterline-models/HarvestRunChunk.d.ts.map +1 -0
  618. package/dist/waterline-models/HarvestRunChunk.js +140 -0
  619. package/dist/waterline-models/I18nTranslation.d.ts +2 -0
  620. package/dist/waterline-models/I18nTranslation.d.ts.map +1 -1
  621. package/dist/waterline-models/I18nTranslation.js +6 -1
  622. package/dist/waterline-models/Migration.d.ts +24 -0
  623. package/dist/waterline-models/Migration.d.ts.map +1 -0
  624. package/dist/waterline-models/Migration.js +52 -0
  625. package/dist/waterline-models/NamedQuery.d.ts +6 -0
  626. package/dist/waterline-models/NamedQuery.d.ts.map +1 -1
  627. package/dist/waterline-models/NamedQuery.js +16 -1
  628. package/dist/waterline-models/index.d.ts +12 -0
  629. package/dist/waterline-models/index.d.ts.map +1 -1
  630. package/dist/waterline-models/index.js +19 -1
  631. package/package.json +78 -52
  632. package/redbox-loader-templates/bootstrap-shim.js.hbs +14 -1
  633. package/dist/config/datacite.config.d.ts +0 -51
  634. package/dist/config/datacite.config.d.ts.map +0 -1
  635. package/dist/config/datacite.config.js +0 -44
  636. package/dist/config/figshareAPI.config.d.ts +0 -116
  637. package/dist/config/figshareAPI.config.d.ts.map +0 -1
  638. package/dist/config/figshareAPI.config.js +0 -857
  639. package/dist/config/figshareAPIEnv.config.d.ts +0 -11
  640. package/dist/config/figshareAPIEnv.config.d.ts.map +0 -1
  641. package/dist/config/figshareAPIEnv.config.js +0 -13
  642. package/dist/config/figshareRedboxFORMapping.config.d.ts +0 -15
  643. package/dist/config/figshareRedboxFORMapping.config.d.ts.map +0 -1
  644. package/dist/config/figshareRedboxFORMapping.config.js +0 -7458
  645. package/dist/config/relatedObjectsFormDefinition.config.d.ts.map +0 -1
  646. package/dist/controllers/VocabController.d.ts +0 -43
  647. package/dist/controllers/VocabController.d.ts.map +0 -1
  648. package/dist/controllers/VocabController.js +0 -190
  649. package/dist/form-config/dataPublication-1.0-draft.d.ts.map +0 -1
  650. package/dist/form-config/dataPublication-1.0-embargoed.d.ts.map +0 -1
  651. package/dist/form-config/dataPublication-1.0-published.d.ts.map +0 -1
  652. package/dist/form-config/dataPublication-1.0-queued.d.ts.map +0 -1
  653. package/dist/form-config/dataPublication-1.0-retired.d.ts.map +0 -1
  654. package/dist/services/VocabService.d.ts +0 -81
  655. package/dist/services/VocabService.d.ts.map +0 -1
  656. package/dist/services/VocabService.js +0 -424
@@ -5,56 +5,203 @@ const rxjs_1 = require("rxjs");
5
5
  const CoreService_1 = require("../CoreService");
6
6
  var Services;
7
7
  (function (Services) {
8
- /**
9
- * Dashboard Types related functions...
10
- */
11
8
  class DashboardTypes extends CoreService_1.Services.Core.Service {
12
9
  _exportedMethods = [
13
10
  'bootstrap',
14
11
  'create',
12
+ 'createDashboardType',
15
13
  'get',
16
14
  'getAll',
15
+ 'getAllDashboardTypeDefinitions',
16
+ 'getDashboardTypeDefinition',
17
+ 'updateDashboardType',
18
+ 'deleteDashboardType',
17
19
  'getDashboardTableConfig',
18
20
  'getRecordTypeDashboardConfig',
19
- 'extractDashboardTemplates'
21
+ 'extractDashboardTemplates',
22
+ 'getDashboardView',
23
+ 'getDashboardViewStep',
24
+ 'extractDashboardViewTemplates'
20
25
  ];
21
26
  dashboardTypes = [];
27
+ defaultTableConfig() {
28
+ return {
29
+ rowConfig: [
30
+ {
31
+ title: 'Record Title',
32
+ variable: 'metadata.title',
33
+ template: `<a href='{{rootContext}}/{{branding}}/{{portal}}/record/view/{{oid}}'>{{metadata.title}}</a>
34
+ <span class="dashboard-controls">
35
+ {{#if hasEditAccess}}
36
+ <a href='{{rootContext}}/{{branding}}/{{portal}}/record/edit/{{oid}}' aria-label='{{t "edit-link-label"}}'><i class="fa fa-pencil" aria-hidden="true"></i></a>
37
+ {{/if}}
38
+ </span>
39
+ `,
40
+ initialSort: 'desc'
41
+ },
42
+ {
43
+ title: 'header-ci',
44
+ variable: 'metadata.contributor_ci.text_full_name',
45
+ template: '{{#if metadata.contributor_ci}}{{metadata.contributor_ci.text_full_name}}{{/if}}',
46
+ initialSort: 'desc'
47
+ },
48
+ {
49
+ title: 'header-data-manager',
50
+ variable: 'metadata.contributor_data_manager.text_full_name',
51
+ template: '{{#if metadata.contributor_data_manager}}{{metadata.contributor_data_manager.text_full_name}}{{/if}}',
52
+ initialSort: 'desc'
53
+ },
54
+ {
55
+ title: 'header-created',
56
+ variable: 'metaMetadata.createdOn',
57
+ template: '{{formatDateLocale dateCreated "DATETIME_MED"}}',
58
+ initialSort: 'desc'
59
+ },
60
+ {
61
+ title: 'header-modified',
62
+ variable: 'metaMetadata.lastSaveDate',
63
+ template: '{{formatDateLocale dateModified "DATETIME_MED"}}',
64
+ initialSort: 'desc',
65
+ defaultSort: true
66
+ }
67
+ ]
68
+ };
69
+ }
70
+ normalizeTableConfig(config) {
71
+ return _.isEmpty(config) ? this.defaultTableConfig() : _.cloneDeep(config);
72
+ }
73
+ isConfiguredSystemDashboardType(name) {
74
+ return name != null && Object.prototype.hasOwnProperty.call(sails.config.dashboardtype ?? {}, name);
75
+ }
76
+ normalizeDashboardTypeRecord(type) {
77
+ if (!type) {
78
+ return null;
79
+ }
80
+ return {
81
+ ...type,
82
+ description: type.description,
83
+ formatRules: _.cloneDeep(type.formatRules ?? {}),
84
+ tableConfig: this.normalizeTableConfig(type.tableConfig),
85
+ searchable: type.searchable ?? true,
86
+ system: type.system ?? this.isConfiguredSystemDashboardType(type.name)
87
+ };
88
+ }
89
+ normalizeDashboardTypeInput(input) {
90
+ return {
91
+ ...input,
92
+ formatRules: _.cloneDeep(input.formatRules ?? {}),
93
+ tableConfig: this.normalizeTableConfig(input.tableConfig),
94
+ searchable: input.searchable ?? true,
95
+ system: input.system ?? false
96
+ };
97
+ }
98
+ async findDashboardTypeRecord(brand, name) {
99
+ const record = await (0, rxjs_1.firstValueFrom)(this.get(brand, name));
100
+ return this.normalizeDashboardTypeRecord(record);
101
+ }
102
+ addAssignedDashboardTypesFromConfig(value, assigned) {
103
+ if (_.isArray(value)) {
104
+ for (const item of value) {
105
+ this.addAssignedDashboardTypesFromConfig(item, assigned);
106
+ }
107
+ return;
108
+ }
109
+ if (_.isObject(value)) {
110
+ const record = value;
111
+ if (typeof record.dashboardType === 'string' && record.dashboardType.trim()) {
112
+ assigned.add(record.dashboardType);
113
+ }
114
+ for (const child of Object.values(record)) {
115
+ this.addAssignedDashboardTypesFromConfig(child, assigned);
116
+ }
117
+ }
118
+ }
119
+ async listAssignedDashboardTypeNames(brand) {
120
+ const overrides = await AppConfigService.getAppConfigByBrandAndKey(String(brand.id), 'dashboardTableConfig');
121
+ const assigned = new Set();
122
+ for (const recordType of Object.values(overrides.recordTypes ?? {})) {
123
+ if (recordType.default?.dashboardType) {
124
+ assigned.add(recordType.default.dashboardType);
125
+ }
126
+ for (const step of Object.values(recordType.steps ?? {})) {
127
+ if (step.dashboardType) {
128
+ assigned.add(step.dashboardType);
129
+ }
130
+ }
131
+ }
132
+ for (const view of Object.values(overrides.views ?? {})) {
133
+ if (view.default?.dashboardType) {
134
+ assigned.add(view.default.dashboardType);
135
+ }
136
+ for (const step of Object.values(view.steps ?? {})) {
137
+ if (step.dashboardType) {
138
+ assigned.add(step.dashboardType);
139
+ }
140
+ }
141
+ }
142
+ if (sails.config.dashboardview) {
143
+ for (const viewDef of Object.values(sails.config.dashboardview)) {
144
+ if (viewDef.dashboardType) {
145
+ assigned.add(viewDef.dashboardType);
146
+ }
147
+ }
148
+ }
149
+ this.addAssignedDashboardTypesFromConfig(sails.config.recordtype, assigned);
150
+ this.addAssignedDashboardTypesFromConfig(sails.config.workflow, assigned);
151
+ return assigned;
152
+ }
22
153
  async bootstrap(defBrand) {
23
154
  let dashboardTypes = await DashboardType.find({ branding: defBrand.id });
24
155
  if (sails.config.appmode.bootstrapAlways) {
25
156
  await DashboardType.destroy({ branding: defBrand.id });
26
157
  dashboardTypes = [];
27
158
  }
28
- // if (_.isUndefined(dashboardTypes)) {
29
- // dashboardTypes = [];
30
- // }
31
- sails.log.verbose(`DashboardTypes found: ${dashboardTypes} and boostrapAlways set to: ${sails.config.appmode.bootstrapAlways}`);
159
+ sails.log.verbose(`DashboardTypes found: ${dashboardTypes.length} and bootstrapAlways set to: ${sails.config.appmode.bootstrapAlways}`);
32
160
  if (_.isEmpty(dashboardTypes)) {
33
161
  const dashTypes = [];
34
- sails.log.verbose("Bootstrapping DashboardTypes definitions... ");
35
- for (const dashboardType in sails.config.dashboardtype) {
36
- const config = sails.config.dashboardtype[dashboardType];
37
- const createdDashboardType = await (0, rxjs_1.firstValueFrom)(this.create(defBrand, dashboardType, config));
38
- dashTypes.push(createdDashboardType);
162
+ for (const dashboardTypeName in sails.config.dashboardtype) {
163
+ const config = sails.config.dashboardtype[dashboardTypeName];
164
+ const created = await (0, rxjs_1.firstValueFrom)(this.create(defBrand, dashboardTypeName, {
165
+ formatRules: config.formatRules,
166
+ description: config.description,
167
+ searchable: config.searchable,
168
+ system: true,
169
+ tableConfig: config.tableConfig ?? this.defaultTableConfig()
170
+ }));
171
+ dashTypes.push(created);
39
172
  }
40
- ;
41
- this.dashboardTypes = dashTypes;
42
- return dashTypes;
173
+ this.dashboardTypes = dashTypes.map((type) => this.normalizeDashboardTypeRecord(type));
174
+ return this.dashboardTypes;
43
175
  }
44
- sails.log.verbose("Default DashboardTypes definition(s) exist.");
45
- sails.log.verbose(JSON.stringify(dashboardTypes));
46
- this.dashboardTypes = dashboardTypes;
47
- return dashboardTypes;
176
+ this.dashboardTypes = dashboardTypes
177
+ .map((type) => this.normalizeDashboardTypeRecord(type))
178
+ .filter((type) => type !== null);
179
+ return this.dashboardTypes;
48
180
  }
49
181
  create(brand, name, config) {
50
- sails.log.verbose(JSON.stringify(config));
51
- return super.getObservable(DashboardType.create({
52
- name: name,
53
- branding: brand.id,
54
- searchFilters: config.searchFilters,
55
- formatRules: config.formatRules,
56
- searchable: config.searchable
57
- }));
182
+ return this.createDashboardType(brand, { name, ...config });
183
+ }
184
+ createDashboardType(brand, input) {
185
+ return (0, rxjs_1.from)((async () => {
186
+ const normalized = this.normalizeDashboardTypeInput(input);
187
+ if (!normalized.name) {
188
+ throw new Error('Dashboard type name is required');
189
+ }
190
+ const existing = await this.findDashboardTypeRecord(brand, normalized.name);
191
+ if (existing) {
192
+ throw new Error(`Dashboard type '${normalized.name}' already exists for brand '${brand.name}'`);
193
+ }
194
+ const created = await DashboardType.create({
195
+ name: normalized.name,
196
+ branding: brand.id,
197
+ description: normalized.description,
198
+ formatRules: normalized.formatRules,
199
+ tableConfig: normalized.tableConfig,
200
+ searchable: normalized.searchable,
201
+ system: normalized.system
202
+ });
203
+ return this.normalizeDashboardTypeRecord(created);
204
+ })());
58
205
  }
59
206
  get(brand, name) {
60
207
  const criteria = { where: { branding: brand.id, name: name } };
@@ -64,103 +211,92 @@ var Services;
64
211
  const criteria = { where: { branding: brand.id } };
65
212
  return super.getObservable(DashboardType.find(criteria));
66
213
  }
67
- defaultRowConfig = [
68
- {
69
- title: 'Record Title',
70
- variable: 'metadata.title',
71
- template: `<a href='{{rootContext}}/{{branding}}/{{portal}}/record/view/{{oid}}'>{{metadata.title}}</a>
72
- <span class="dashboard-controls">
73
- {{#if hasEditAccess}}
74
- <a href='{{rootContext}}/{{branding}}/{{portal}}/record/edit/{{oid}}' aria-label='{{t "edit-link-label"}}'><i class="fa fa-pencil" aria-hidden="true"></i></a>
75
- {{/if}}
76
- </span>
77
- `,
78
- initialSort: 'desc'
79
- },
80
- {
81
- title: 'header-ci',
82
- variable: 'metadata.contributor_ci.text_full_name',
83
- template: '{{#if metadata.contributor_ci}}{{metadata.contributor_ci.text_full_name}}{{/if}}',
84
- initialSort: 'desc'
85
- },
86
- {
87
- title: 'header-data-manager',
88
- variable: 'metadata.contributor_data_manager.text_full_name',
89
- template: '{{#if metadata.contributor_data_manager}}{{metadata.contributor_data_manager.text_full_name}}{{/if}}',
90
- initialSort: 'desc'
91
- },
92
- {
93
- title: 'header-created',
94
- variable: 'metaMetadata.createdOn',
95
- template: '{{formatDateLocale dateCreated "DATETIME_MED"}}',
96
- initialSort: 'desc'
97
- },
98
- {
99
- title: 'header-modified',
100
- variable: 'metaMetadata.lastSaveDate',
101
- template: '{{formatDateLocale dateModified "DATETIME_MED"}}',
102
- initialSort: 'desc',
103
- defaultSort: true
104
- }
105
- ];
106
- /**
107
- * Get the dashboard table configuration for a specific record type and workflow stage.
108
- * Resolves configuration from workflow config, merging with any branding-specific overrides.
109
- *
110
- * @param brand The branding model
111
- * @param recordType The record type name
112
- * @param workflowStage The workflow stage name
113
- * @returns The dashboard table configuration
114
- */
214
+ async getAllDashboardTypeDefinitions(brand) {
215
+ const types = await (0, rxjs_1.firstValueFrom)(this.getAll(brand));
216
+ return types.map((type) => this.normalizeDashboardTypeRecord(type));
217
+ }
218
+ async getDashboardTypeDefinition(brand, name) {
219
+ const type = await this.findDashboardTypeRecord(brand, name);
220
+ return type;
221
+ }
222
+ updateDashboardType(brand, name, input) {
223
+ return (0, rxjs_1.from)((async () => {
224
+ const current = await this.findDashboardTypeRecord(brand, name);
225
+ if (!current) {
226
+ throw new Error(`Dashboard type '${name}' was not found for brand '${brand.name}'`);
227
+ }
228
+ if (input.name != null && input.name !== name) {
229
+ throw new Error('Dashboard type name is immutable once created');
230
+ }
231
+ if (current.system && input.system === false) {
232
+ throw new Error('System dashboard types cannot be converted to non-system types');
233
+ }
234
+ const updateData = {
235
+ description: input.description ?? current.description,
236
+ formatRules: this.normalizeDashboardTypeInput({ ...current, ...input }).formatRules,
237
+ tableConfig: this.normalizeTableConfig(input.tableConfig ?? current.tableConfig),
238
+ searchable: input.searchable ?? current.searchable,
239
+ system: input.system ?? current.system
240
+ };
241
+ const updated = await DashboardType.updateOne({ branding: brand.id, name }).set(updateData);
242
+ if (!updated) {
243
+ throw new Error(`Dashboard type '${name}' was not updated`);
244
+ }
245
+ return this.normalizeDashboardTypeRecord(updated);
246
+ })());
247
+ }
248
+ deleteDashboardType(brand, name) {
249
+ return (0, rxjs_1.from)((async () => {
250
+ const current = await this.findDashboardTypeRecord(brand, name);
251
+ if (!current) {
252
+ throw new Error(`Dashboard type '${name}' was not found for brand '${brand.name}'`);
253
+ }
254
+ if (current.system) {
255
+ throw new Error(`System dashboard type '${name}' cannot be deleted`);
256
+ }
257
+ const assigned = await this.listAssignedDashboardTypeNames(brand);
258
+ if (assigned.has(name)) {
259
+ throw new Error(`Dashboard type '${name}' is assigned to one or more workflow states or dashboard views`);
260
+ }
261
+ await DashboardType.destroy({ branding: brand.id, name });
262
+ return { deleted: true };
263
+ })());
264
+ }
115
265
  async getDashboardTableConfig(brand, recordType, workflowStage) {
116
266
  try {
117
- // Get record type
267
+ if (typeof DashboardConfigService !== 'undefined' && DashboardConfigService.getMergedDashboardTableConfig) {
268
+ const mergedConfig = await DashboardConfigService.getMergedDashboardTableConfig(brand, recordType, workflowStage);
269
+ if (mergedConfig) {
270
+ sails.log.verbose(`DashboardTypesService: using merged config for ${recordType}/${workflowStage}`);
271
+ return mergedConfig.mergedConfig;
272
+ }
273
+ }
118
274
  const recType = await (0, rxjs_1.firstValueFrom)(RecordTypesService.get(brand, recordType));
119
275
  if (!recType) {
120
276
  sails.log.warn(`Record type not found: ${recordType}`);
121
277
  return null;
122
278
  }
123
- sails.log.verbose(`DashboardTypesService: Found record type ${recordType}`);
124
- // Get workflow step config
125
279
  const workflowStep = await (0, rxjs_1.firstValueFrom)(WorkflowStepsService.get(recType, workflowStage));
126
280
  if (!workflowStep) {
127
281
  sails.log.warn(`Workflow step not found: ${workflowStage} for record type: ${recordType}`);
128
282
  return null;
129
283
  }
130
- sails.log.verbose(`DashboardTypesService: Found workflow step ${workflowStage}`);
131
- // Extract dashboard table config from workflow step
132
284
  const dashboardConfig = _.get(workflowStep, 'config.dashboard.table', {});
133
- sails.log.verbose(`DashboardTypesService: loaded config for ${recordType}/${workflowStage}, keys: ${Object.keys(dashboardConfig)}`);
134
- // TODO: In future, merge with user-configurable overrides from AppConfigService
135
- // const userOverrides = await AppConfigService.getAppConfigByBrandAndKey(brand.id, `dashboardTable_${recordType}_${workflowStage}`);
136
- // return _.merge({}, dashboardConfig, userOverrides);
137
- return dashboardConfig;
285
+ return this.normalizeTableConfig(dashboardConfig);
138
286
  }
139
287
  catch (error) {
140
288
  sails.log.error(`Error getting dashboard table config for ${recordType}/${workflowStage}:`, error);
141
289
  return null;
142
290
  }
143
291
  }
144
- /**
145
- * Get the top-level dashboard configuration for a specific record type.
146
- * This configuration is stored at the recordtype level, not the workflow step level.
147
- *
148
- * @param brand The branding model
149
- * @param recordType The record type name
150
- * @returns The record type dashboard configuration, or null if not found
151
- */
152
292
  async getRecordTypeDashboardConfig(brand, recordType) {
153
293
  try {
154
- // Get record type - need full config, so not limiting fields
155
294
  const recType = await (0, rxjs_1.firstValueFrom)(RecordTypesService.get(brand, recordType));
156
295
  if (!recType) {
157
296
  sails.log.warn(`Record type not found: ${recordType}`);
158
297
  return null;
159
298
  }
160
- // Extract top-level dashboard config from record type
161
- // This is different from the workflow-specific table config
162
299
  const dashboardConfig = _.get(recType, 'dashboard', {});
163
- sails.log.verbose(`DashboardTypesService: loaded record type dashboard config for ${recordType}: ${JSON.stringify(dashboardConfig)}`);
164
300
  return dashboardConfig;
165
301
  }
166
302
  catch (error) {
@@ -168,124 +304,151 @@ var Services;
168
304
  return null;
169
305
  }
170
306
  }
171
- /**
172
- * Extract templates from dashboard configuration and prepare them for pre-compilation.
173
- * Converts dashboard row templates to TemplateCompileInput format for Handlebars pre-compilation.
174
- *
175
- * @param brand The branding model
176
- * @param recordType The record type name
177
- * @param workflowStage The workflow stage name
178
- * @param dashboardType The dashboard type name (default: standard)
179
- * @returns Array of templates ready for compilation
180
- */
181
- async extractDashboardTemplates(brand, recordType, workflowStage, dashboardType = 'standard') {
307
+ getDashboardView(name) {
308
+ const dashboardView = _.get(sails.config.dashboardview, name);
309
+ if (dashboardView == null) {
310
+ sails.log.warn(`Dashboard view not found: ${name}`);
311
+ return null;
312
+ }
313
+ return dashboardView;
314
+ }
315
+ getDashboardViewStep(name, stepName) {
316
+ const dashboardView = this.getDashboardView(name);
317
+ if (!dashboardView) {
318
+ return null;
319
+ }
320
+ const dashboardStep = (dashboardView.steps || []).find((step) => step.name === stepName) ?? null;
321
+ if (!dashboardStep) {
322
+ sails.log.warn(`Dashboard view step not found: ${name}/${stepName}`);
323
+ }
324
+ return dashboardStep;
325
+ }
326
+ async extractQueryFilterTemplates(brand, queryRecordType, dashboardType, templateKeyPrefix) {
182
327
  const entries = [];
183
- const dashboardConfig = await this.getDashboardTableConfig(brand, recordType, workflowStage);
184
- // Extract templates from rowConfig
185
- if (dashboardConfig) {
186
- const rowConfig = (!_.isEmpty(dashboardConfig.rowConfig)) ? dashboardConfig.rowConfig : this.defaultRowConfig;
187
- sails.log.verbose(`DashboardTypesService: extracting ${rowConfig.length} row templates. Using default? ${_.isEmpty(dashboardConfig.rowConfig)}`);
188
- for (let i = 0; i < rowConfig.length; i++) {
189
- const row = rowConfig[i];
190
- if (row.template) {
328
+ try {
329
+ const dashboardTypeModel = typeof DashboardConfigService !== 'undefined' && DashboardConfigService.getMergedDashboardTypeFormatRules
330
+ ? await DashboardConfigService.getMergedDashboardTypeFormatRules(brand, dashboardType)
331
+ : (await (0, rxjs_1.firstValueFrom)(this.get(brand, dashboardType)))?.formatRules;
332
+ const queryFilters = _.get(dashboardTypeModel, `queryFilters.${queryRecordType}`);
333
+ if (_.isArray(queryFilters)) {
334
+ for (let i = 0; i < queryFilters.length; i++) {
335
+ const queryFilter = queryFilters[i];
336
+ if (_.isArray(queryFilter.filterFields)) {
337
+ for (let j = 0; j < queryFilter.filterFields.length; j++) {
338
+ const filterField = queryFilter.filterFields[j];
339
+ if (filterField.template) {
340
+ entries.push({
341
+ key: [...templateKeyPrefix, dashboardType, 'filters', i.toString(), 'fields', j.toString(), 'template'],
342
+ kind: 'handlebars',
343
+ value: filterField.template
344
+ });
345
+ }
346
+ }
347
+ }
348
+ }
349
+ }
350
+ }
351
+ catch (e) {
352
+ sails.log.warn(`Could not load dashboard type ${dashboardType} for template extraction`, e);
353
+ }
354
+ return entries;
355
+ }
356
+ extractDashboardTableTemplates(configKeyPrefix, dashboardConfig) {
357
+ const entries = [];
358
+ if (!dashboardConfig) {
359
+ return entries;
360
+ }
361
+ const rowConfig = (!_.isEmpty(dashboardConfig.rowConfig)) ? dashboardConfig.rowConfig : this.defaultTableConfig().rowConfig;
362
+ for (let i = 0; i < rowConfig.length; i++) {
363
+ const row = rowConfig[i];
364
+ if (row.template) {
365
+ entries.push({
366
+ key: [...configKeyPrefix, 'rowConfig', i.toString(), row.variable],
367
+ kind: 'handlebars',
368
+ value: row.template
369
+ });
370
+ }
371
+ }
372
+ const groupRowConfig = dashboardConfig.groupRowConfig || [];
373
+ for (let i = 0; i < groupRowConfig.length; i++) {
374
+ const row = groupRowConfig[i];
375
+ if (row.template) {
376
+ entries.push({
377
+ key: [...configKeyPrefix, 'groupRowConfig', i.toString(), row.variable],
378
+ kind: 'handlebars',
379
+ value: row.template
380
+ });
381
+ }
382
+ }
383
+ const rowRulesConfig = dashboardConfig.rowRulesConfig || [];
384
+ for (let ruleSetIdx = 0; ruleSetIdx < rowRulesConfig.length; ruleSetIdx++) {
385
+ const ruleSet = rowRulesConfig[ruleSetIdx];
386
+ const rules = ruleSet.rules || [];
387
+ for (let ruleIdx = 0; ruleIdx < rules.length; ruleIdx++) {
388
+ const rule = rules[ruleIdx];
389
+ if (rule.renderItemTemplate) {
191
390
  entries.push({
192
- key: [recordType, workflowStage, 'rowConfig', i.toString(), row.variable],
391
+ key: [...configKeyPrefix, 'rowRules', ruleSet.ruleSetName, ruleIdx.toString(), 'render'],
193
392
  kind: 'handlebars',
194
- value: row.template
393
+ value: rule.renderItemTemplate
195
394
  });
196
395
  }
197
- }
198
- // Extract templates from groupRowConfig
199
- const groupRowConfig = dashboardConfig.groupRowConfig || [];
200
- for (let i = 0; i < groupRowConfig.length; i++) {
201
- const row = groupRowConfig[i];
202
- if (row.template) {
396
+ if (rule.evaluateRulesTemplate) {
203
397
  entries.push({
204
- key: [recordType, workflowStage, 'groupRowConfig', i.toString(), row.variable],
398
+ key: [...configKeyPrefix, 'rowRules', ruleSet.ruleSetName, ruleIdx.toString(), 'evaluate'],
205
399
  kind: 'handlebars',
206
- value: row.template
400
+ value: rule.evaluateRulesTemplate
207
401
  });
208
402
  }
209
403
  }
210
- // Extract templates from rowRulesConfig
211
- const rowRulesConfig = dashboardConfig.rowRulesConfig || [];
212
- for (let ruleSetIdx = 0; ruleSetIdx < rowRulesConfig.length; ruleSetIdx++) {
213
- const ruleSet = rowRulesConfig[ruleSetIdx];
214
- const rules = ruleSet.rules || [];
215
- for (let ruleIdx = 0; ruleIdx < rules.length; ruleIdx++) {
216
- const rule = rules[ruleIdx];
217
- if (rule.renderItemTemplate) {
218
- entries.push({
219
- key: [recordType, workflowStage, 'rowRules', ruleSet.ruleSetName, ruleIdx.toString(), 'render'],
220
- kind: 'handlebars',
221
- value: rule.renderItemTemplate
222
- });
223
- }
224
- if (rule.evaluateRulesTemplate) {
225
- entries.push({
226
- key: [recordType, workflowStage, 'rowRules', ruleSet.ruleSetName, ruleIdx.toString(), 'evaluate'],
227
- kind: 'handlebars',
228
- value: rule.evaluateRulesTemplate
229
- });
230
- }
404
+ }
405
+ const groupRowRulesConfig = dashboardConfig.groupRowRulesConfig || [];
406
+ for (let ruleSetIdx = 0; ruleSetIdx < groupRowRulesConfig.length; ruleSetIdx++) {
407
+ const ruleSet = groupRowRulesConfig[ruleSetIdx];
408
+ const rules = ruleSet.rules || [];
409
+ for (let ruleIdx = 0; ruleIdx < rules.length; ruleIdx++) {
410
+ const rule = rules[ruleIdx];
411
+ if (rule.renderItemTemplate) {
412
+ entries.push({
413
+ key: [...configKeyPrefix, 'groupRowRules', ruleSet.ruleSetName, ruleIdx.toString(), 'render'],
414
+ kind: 'handlebars',
415
+ value: rule.renderItemTemplate
416
+ });
231
417
  }
232
- }
233
- // Extract templates from groupRowRulesConfig
234
- const groupRowRulesConfig = dashboardConfig.groupRowRulesConfig || [];
235
- for (let ruleSetIdx = 0; ruleSetIdx < groupRowRulesConfig.length; ruleSetIdx++) {
236
- const ruleSet = groupRowRulesConfig[ruleSetIdx];
237
- const rules = ruleSet.rules || [];
238
- for (let ruleIdx = 0; ruleIdx < rules.length; ruleIdx++) {
239
- const rule = rules[ruleIdx];
240
- if (rule.renderItemTemplate) {
241
- entries.push({
242
- key: [recordType, workflowStage, 'groupRowRules', ruleSet.ruleSetName, ruleIdx.toString(), 'render'],
243
- kind: 'handlebars',
244
- value: rule.renderItemTemplate
245
- });
246
- }
247
- if (rule.evaluateRulesTemplate) {
248
- entries.push({
249
- key: [recordType, workflowStage, 'groupRowRules', ruleSet.ruleSetName, ruleIdx.toString(), 'evaluate'],
250
- kind: 'handlebars',
251
- value: rule.evaluateRulesTemplate
252
- });
253
- }
418
+ if (rule.evaluateRulesTemplate) {
419
+ entries.push({
420
+ key: [...configKeyPrefix, 'groupRowRules', ruleSet.ruleSetName, ruleIdx.toString(), 'evaluate'],
421
+ kind: 'handlebars',
422
+ value: rule.evaluateRulesTemplate
423
+ });
254
424
  }
255
425
  }
256
426
  }
257
- // Extract templates from queryFilters (DashboardType config)
258
- try {
259
- const dashboardTypeModel = await (0, rxjs_1.firstValueFrom)(this.get(brand, dashboardType));
260
- if (dashboardTypeModel) {
261
- const formatRules = dashboardTypeModel.formatRules;
262
- const queryFilters = _.get(formatRules, `queryFilters.${recordType}`);
263
- if (_.isArray(queryFilters)) {
264
- for (let i = 0; i < queryFilters.length; i++) {
265
- const queryFilter = queryFilters[i];
266
- if (_.isArray(queryFilter.filterFields)) {
267
- for (let j = 0; j < queryFilter.filterFields.length; j++) {
268
- const filterField = queryFilter.filterFields[j];
269
- if (filterField.template) {
270
- entries.push({
271
- key: [recordType, dashboardType, 'filters', i.toString(), 'fields', j.toString(), 'template'],
272
- kind: 'handlebars',
273
- value: filterField.template
274
- });
275
- }
276
- }
277
- }
278
- }
279
- }
280
- }
427
+ return entries;
428
+ }
429
+ async extractDashboardTemplates(brand, recordType, workflowStage, dashboardType = 'standard') {
430
+ const dashboardConfig = await this.getDashboardTableConfig(brand, recordType, workflowStage);
431
+ const entries = this.extractDashboardTableTemplates([recordType, workflowStage], dashboardConfig);
432
+ entries.push(...await this.extractQueryFilterTemplates(brand, recordType, dashboardType, [recordType]));
433
+ return entries;
434
+ }
435
+ async extractDashboardViewTemplates(brand, dashboardView, stepName, dashboardType) {
436
+ const dashboardViewConfig = this.getDashboardView(dashboardView);
437
+ const dashboardStepConfig = this.getDashboardViewStep(dashboardView, stepName);
438
+ if (!dashboardViewConfig || !dashboardStepConfig) {
439
+ return [];
281
440
  }
282
- catch (e) {
283
- sails.log.warn(`Could not load dashboard type ${dashboardType} for template extraction`, e);
441
+ const resolvedDashboardType = dashboardType || dashboardViewConfig.dashboardType;
442
+ let mergedTableConfig = dashboardStepConfig.dashboardTable ?? null;
443
+ if (typeof DashboardConfigService !== 'undefined' && DashboardConfigService.getMergedDashboardViewTableConfig) {
444
+ const mergedConfig = await DashboardConfigService.getMergedDashboardViewTableConfig(brand, dashboardView, stepName);
445
+ mergedTableConfig = mergedConfig?.mergedConfig ?? mergedTableConfig;
284
446
  }
285
- sails.log.verbose(`Extracted ${entries.length} dashboard templates for ${recordType}/${workflowStage}`);
447
+ const entries = this.extractDashboardTableTemplates([dashboardView, stepName], mergedTableConfig);
448
+ entries.push(...await this.extractQueryFilterTemplates(brand, dashboardStepConfig.sourceRecordType, resolvedDashboardType, [dashboardView]));
286
449
  return entries;
287
450
  }
288
451
  }
289
452
  Services.DashboardTypes = DashboardTypes;
290
453
  })(Services || (exports.Services = Services = {}));
291
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFzaGJvYXJkVHlwZXNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0Rhc2hib2FyZFR5cGVzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBa0Q7QUFDbEQsZ0RBQXNEO0FBT3RELElBQWlCLFFBQVEsQ0FrV3hCO0FBbFdELFdBQWlCLFFBQVE7SUFtRHZCOztPQUVHO0lBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUVwQyxnQkFBZ0IsR0FBYTtZQUM5QyxXQUFXO1lBQ1gsUUFBUTtZQUNSLEtBQUs7WUFDTCxRQUFRO1lBQ1IseUJBQXlCO1lBQ3pCLDhCQUE4QjtZQUM5QiwyQkFBMkI7U0FDNUIsQ0FBQztRQUVRLGNBQWMsR0FBeUIsRUFBRSxDQUFDO1FBRTdDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBdUI7WUFDNUMsSUFBSSxjQUFjLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBeUIsQ0FBQztZQUNqRyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZELGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUVELHVDQUF1QztZQUN2Qyx5QkFBeUI7WUFDekIsSUFBSTtZQUNKLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLHlCQUF5QixjQUFjLCtCQUErQixLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQ2hJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUM5QixN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
454
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFzaGJvYXJkVHlwZXNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0Rhc2hib2FyZFR5cGVzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBd0Q7QUFDeEQsZ0RBQXNEO0FBOEJ0RCxJQUFpQixRQUFRLENBaWhCeEI7QUFqaEJELFdBQWlCLFFBQVE7SUFzQ3ZCLE1BQWEsY0FBZSxTQUFRLHNCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU87UUFDcEMsZ0JBQWdCLEdBQWE7WUFDOUMsV0FBVztZQUNYLFFBQVE7WUFDUixxQkFBcUI7WUFDckIsS0FBSztZQUNMLFFBQVE7WUFDUixnQ0FBZ0M7WUFDaEMsNEJBQTRCO1lBQzVCLHFCQUFxQjtZQUNyQixxQkFBcUI7WUFDckIseUJBQXlCO1lBQ3pCLDhCQUE4QjtZQUM5QiwyQkFBMkI7WUFDM0Isa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QiwrQkFBK0I7U0FDaEMsQ0FBQztRQUVRLGNBQWMsR0FBeUIsRUFBRSxDQUFDO1FBRTVDLGtCQUFrQjtZQUN4QixPQUFPO2dCQUNMLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxLQUFLLEVBQUUsY0FBYzt3QkFDckIsUUFBUSxFQUFFLGdCQUFnQjt3QkFDMUIsUUFBUSxFQUFFOzs7Ozs7V0FNWDt3QkFDQyxXQUFXLEVBQUUsTUFBTTtxQkFDcEI7b0JBQ0Q7d0JBQ0UsS0FBSyxFQUFFLFdBQVc7d0JBQ2xCLFFBQVEsRUFBRSx3Q0FBd0M7d0JBQ2xELFFBQVEsRUFBRSxrRkFBa0Y7d0JBQzVGLFdBQVcsRUFBRSxNQUFNO3FCQUNwQjtvQkFDRDt3QkFDRSxLQUFLLEVBQUUscUJBQXFCO3dCQUM1QixRQUFRLEVBQUUsa0RBQWtEO3dCQUM1RCxRQUFRLEVBQUUsc0dBQXNHO3dCQUNoSCxXQUFXLEVBQUUsTUFBTTtxQkFDcEI7b0JBQ0Q7d0JBQ0UsS0FBSyxFQUFFLGdCQUFnQjt3QkFDdkIsUUFBUSxFQUFFLHdCQUF3Qjt3QkFDbEMsUUFBUSxFQUFFLGlEQUFpRDt3QkFDM0QsV0FBVyxFQUFFLE1BQU07cUJBQ3BCO29CQUNEO3dCQUNFLEtBQUssRUFBRSxpQkFBaUI7d0JBQ3hCLFFBQVEsRUFBRSwyQkFBMkI7d0JBQ3JDLFFBQVEsRUFBRSxrREFBa0Q7d0JBQzVELFdBQVcsRUFBRSxNQUFNO3dCQUNuQixXQUFXLEVBQUUsSUFBSTtxQkFDbEI7aUJBQ0Y7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVPLG9CQUFvQixDQUFDLE1BQStDO1lBQzFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUEwQixDQUFDO1FBQ3ZHLENBQUM7UUFFTywrQkFBK0IsQ0FBQyxJQUErQjtZQUNyRSxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RyxDQUFDO1FBRU8sNEJBQTRCLENBQUMsSUFBMkM7WUFDOUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELE9BQU87Z0JBQ0wsR0FBRyxJQUFJO2dCQUNQLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsV0FBVyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQ2hELFdBQVcsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDeEQsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSTtnQkFDbkMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDdkUsQ0FBQztRQUNKLENBQUM7UUFFTywyQkFBMkIsQ0FBQyxLQUF5QjtZQUMzRCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixXQUFXLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBNEI7Z0JBQzVFLFdBQVcsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDekQsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSTtnQkFDcEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSzthQUM5QixDQUFDO1FBQ0osQ0FBQztRQUVPLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFvQixFQUFFLElBQVk7WUFDdEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLHFCQUFjLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMzRCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRU8sbUNBQW1DLENBQUMsS0FBYyxFQUFFLFFBQXFCO1lBQy9FLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsbUNBQW1DLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMzRCxDQUFDO2dCQUNELE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sTUFBTSxHQUFHLEtBQWdDLENBQUM7Z0JBQ2hELElBQUksT0FBTyxNQUFNLENBQUMsYUFBYSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQzVFLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO2dCQUNELEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUMxQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM1RCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFTyxLQUFLLENBQUMsOEJBQThCLENBQUMsS0FBb0I7WUFDL0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLHNCQUFzQixDQUFzRyxDQUFDO1lBQ2xOLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7WUFDbkMsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUE4QixFQUFFLENBQUM7Z0JBQ2pHLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztvQkFDdEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO2dCQUNELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBd0MsRUFBRSxDQUFDO29CQUNoRyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDdkIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ25DLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQXdCLEVBQUUsQ0FBQztnQkFDL0UsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO29CQUNoQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7Z0JBQ0QsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUF3QyxFQUFFLENBQUM7b0JBQzFGLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUN2QixRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDbkMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUE4QixFQUFFLENBQUM7b0JBQzdGLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUMxQixRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDdEMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDMUUsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBdUI7WUFDNUMsSUFBSSxjQUFjLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBeUIsQ0FBQztZQUNqRyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZELGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLHlCQUF5QixjQUFjLENBQUMsTUFBTSxnQ0FBZ0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUN4SSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxTQUFTLEdBQXlCLEVBQUUsQ0FBQztnQkFDM0MsS0FBSyxNQUFNLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQzNELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUF3QixDQUFDO29CQUNwRixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEscUJBQWMsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTt3QkFDNUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO3dCQUMvQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7d0JBQy9CLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTt3QkFDN0IsTUFBTSxFQUFFLElBQUk7d0JBQ1osV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO3FCQUM3RCxDQUFDLENBQUMsQ0FBQztvQkFDSixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMxQixDQUFDO2dCQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBdUIsQ0FBQyxDQUFDO2dCQUM3RyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDN0IsQ0FBQztZQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYztpQkFDakMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3RELE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBOEIsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztZQUMvRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDN0IsQ0FBQztRQUVNLE1BQU0sQ0FBQyxLQUFvQixFQUFFLElBQVksRUFBRSxNQUEyQjtZQUMzRSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFTSxtQkFBbUIsQ0FBQyxLQUFvQixFQUFFLEtBQStCO1lBQzlFLE9BQU8sSUFBQSxXQUFJLEVBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDdEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQ3JELENBQUM7Z0JBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUUsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixVQUFVLENBQUMsSUFBSSwrQkFBK0IsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQ2xHLENBQUM7Z0JBQ0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsTUFBTSxDQUFDO29CQUN6QyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7b0JBQ3JCLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDbEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO29CQUNuQyxXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVc7b0JBQ25DLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVztvQkFDbkMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO29CQUNqQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07aUJBQzFCLENBQUMsQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUF3QyxDQUF1QixDQUFDO1lBQzNHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNSLENBQUM7UUFFTSxHQUFHLENBQUMsS0FBb0IsRUFBRSxJQUFZO1lBQzNDLE1BQU0sUUFBUSxHQUFrRCxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzlHLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBNEIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFFTSxNQUFNLENBQUMsS0FBb0I7WUFDaEMsTUFBTSxRQUFRLEdBQW9DLEVBQUUsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3BGLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBdUIsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFTSxLQUFLLENBQUMsOEJBQThCLENBQUMsS0FBb0I7WUFDOUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLHFCQUFjLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBdUIsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFFTSxLQUFLLENBQUMsMEJBQTBCLENBQUMsS0FBb0IsRUFBRSxJQUFZO1lBQ3hFLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM3RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxtQkFBbUIsQ0FBQyxLQUFvQixFQUFFLElBQVksRUFBRSxLQUErQjtZQUM1RixPQUFPLElBQUEsV0FBSSxFQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3RCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLElBQUksOEJBQThCLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUN0RixDQUFDO2dCQUNELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO2dCQUNuRSxDQUFDO2dCQUNELElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO29CQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7Z0JBQ3BGLENBQUM7Z0JBRUQsTUFBTSxVQUFVLEdBQWdDO29CQUM5QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVztvQkFDckQsV0FBVyxFQUFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXO29CQUNuRixXQUFXLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQztvQkFDaEYsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVU7b0JBQ2xELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNO2lCQUN2QyxDQUFDO2dCQUVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM1RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDO2dCQUM5RCxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQXdDLENBQXVCLENBQUM7WUFDM0csQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1IsQ0FBQztRQUVNLG1CQUFtQixDQUFDLEtBQW9CLEVBQUUsSUFBWTtZQUMzRCxPQUFPLElBQUEsV0FBSSxFQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3RCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLElBQUksOEJBQThCLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUN0RixDQUFDO2dCQUNELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixJQUFJLHFCQUFxQixDQUFDLENBQUM7Z0JBQ3ZFLENBQUM7Z0JBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xFLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixJQUFJLGlFQUFpRSxDQUFDLENBQUM7Z0JBQzVHLENBQUM7Z0JBRUQsTUFBTSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDUixDQUFDO1FBRU0sS0FBSyxDQUFDLHVCQUF1QixDQUFDLEtBQW9CLEVBQUUsVUFBa0IsRUFBRSxhQUFxQjtZQUNsRyxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxPQUFPLHNCQUFzQixLQUFLLFdBQVcsSUFBSSxzQkFBc0IsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO29CQUMxRyxNQUFNLFlBQVksR0FBRyxNQUFNLHNCQUFzQixDQUFDLDZCQUE2QixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7b0JBQ2xILElBQUksWUFBWSxFQUFFLENBQUM7d0JBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGtEQUFrRCxVQUFVLElBQUksYUFBYSxFQUFFLENBQUMsQ0FBQzt3QkFDbkcsT0FBTyxZQUFZLENBQUMsWUFBWSxDQUFDO29CQUNuQyxDQUFDO2dCQUNILENBQUM7Z0JBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLHFCQUFjLEVBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLFVBQVUsRUFBRSxDQUFDLENBQUM7b0JBQ3ZELE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLHFCQUFjLEVBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUM1RixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ2xCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDRCQUE0QixhQUFhLHFCQUFxQixVQUFVLEVBQUUsQ0FBQyxDQUFDO29CQUMzRixPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUVELE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLEVBQUUsQ0FBeUIsQ0FBQztnQkFDbEcsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsNENBQTRDLFVBQVUsSUFBSSxhQUFhLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbkcsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVNLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxLQUFvQixFQUFFLFVBQWtCO1lBQ2hGLElBQUksQ0FBQztnQkFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEscUJBQWMsRUFBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDYixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDdkQsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUE4QixDQUFDO2dCQUNyRixPQUFPLGVBQWUsQ0FBQztZQUN6QixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrREFBa0QsVUFBVSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hGLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFTSxnQkFBZ0IsQ0FBQyxJQUFZO1lBQ2xDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFvQyxDQUFDO1lBQ2pHLElBQUksYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUMxQixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztRQUVNLG9CQUFvQixDQUFDLElBQVksRUFBRSxRQUFnQjtZQUN4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLGFBQWEsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQztZQUNqRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25CLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxJQUFJLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN2RSxDQUFDO1lBQ0QsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztRQUVPLEtBQUssQ0FBQywyQkFBMkIsQ0FDdkMsS0FBb0IsRUFDcEIsZUFBdUIsRUFDdkIsYUFBcUIsRUFDckIsaUJBQTJCO1lBRTNCLE1BQU0sT0FBTyxHQUEyQixFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDO2dCQUNILE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxzQkFBc0IsS0FBSyxXQUFXLElBQUksc0JBQXNCLENBQUMsaUNBQWlDO29CQUNsSSxDQUFDLENBQUMsTUFBTSxzQkFBc0IsQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDO29CQUN0RixDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUEscUJBQWMsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDO2dCQUN4RSxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLGtCQUFvRCxFQUFFLGdCQUFnQixlQUFlLEVBQUUsQ0FBdUUsQ0FBQztnQkFDMUwsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7b0JBQzVCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7d0JBQzdDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDcEMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDOzRCQUN4QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQ0FDekQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQ0FDaEQsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7b0NBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0NBQ1gsR0FBRyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsQ0FBQzt3Q0FDdkcsSUFBSSxFQUFFLFlBQVk7d0NBQ2xCLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUTtxQ0FDNUIsQ0FBQyxDQUFDO2dDQUNMLENBQUM7NEJBQ0gsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxhQUFhLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlGLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRU8sOEJBQThCLENBQUMsZUFBeUIsRUFBRSxlQUE0QztZQUM1RyxNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1lBRTNDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUUsZUFBZSxDQUFDLFNBQWtDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUM1SyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMxQyxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUF1QixDQUFDO2dCQUMvQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDWCxHQUFHLEVBQUUsQ0FBQyxHQUFHLGVBQWUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUM7d0JBQ2xFLElBQUksRUFBRSxZQUFZO3dCQUNsQixLQUFLLEVBQUUsR0FBRyxDQUFDLFFBQVE7cUJBQ3BCLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1lBQzVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ1gsR0FBRyxFQUFFLENBQUMsR0FBRyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUM7d0JBQ3ZFLElBQUksRUFBRSxZQUFZO3dCQUNsQixLQUFLLEVBQUUsR0FBRyxDQUFDLFFBQVE7cUJBQ3BCLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1lBQzVELEtBQUssSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzFFLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ3hELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDNUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzt3QkFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQzs0QkFDWCxHQUFHLEVBQUUsQ0FBQyxHQUFHLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDOzRCQUN4RixJQUFJLEVBQUUsWUFBWTs0QkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0I7eUJBQy9CLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUNELElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7d0JBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUM7NEJBQ1gsR0FBRyxFQUFFLENBQUMsR0FBRyxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsQ0FBQzs0QkFDMUYsSUFBSSxFQUFFLFlBQVk7NEJBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMscUJBQXFCO3lCQUNsQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sbUJBQW1CLEdBQUcsZUFBZSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQztZQUN0RSxLQUFLLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQy9FLE1BQU0sT0FBTyxHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDeEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM1QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO3dCQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDOzRCQUNYLEdBQUcsRUFBRSxDQUFDLEdBQUcsZUFBZSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLENBQUM7NEJBQzdGLElBQUksRUFBRSxZQUFZOzRCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjt5QkFDL0IsQ0FBQyxDQUFDO29CQUNMLENBQUM7b0JBQ0QsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQzt3QkFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQzs0QkFDWCxHQUFHLEVBQUUsQ0FBQyxHQUFHLGVBQWUsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxDQUFDOzRCQUMvRixJQUFJLEVBQUUsWUFBWTs0QkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxxQkFBcUI7eUJBQ2xDLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxLQUFvQixFQUFFLFVBQWtCLEVBQUUsYUFBcUIsRUFBRSxnQkFBd0IsVUFBVTtZQUN4SSxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNsRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEcsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVNLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxLQUFvQixFQUFFLGFBQXFCLEVBQUUsUUFBZ0IsRUFBRSxhQUFzQjtZQUM5SCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBRUQsTUFBTSxxQkFBcUIsR0FBRyxhQUFhLElBQUksbUJBQW1CLENBQUMsYUFBYSxDQUFDO1lBQ2pGLElBQUksaUJBQWlCLEdBQWdDLG1CQUFtQixDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUM7WUFDaEcsSUFBSSxPQUFPLHNCQUFzQixLQUFLLFdBQVcsSUFBSSxzQkFBc0IsQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO2dCQUM5RyxNQUFNLFlBQVksR0FBRyxNQUFNLHNCQUFzQixDQUFDLGlDQUFpQyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3BILGlCQUFpQixHQUFHLFlBQVksRUFBRSxZQUFZLElBQUksaUJBQWlCLENBQUM7WUFDdEUsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0ksT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztLQUNGO0lBMWVZLHVCQUFjLGlCQTBlMUIsQ0FBQTtBQUNILENBQUMsRUFqaEJnQixRQUFRLHdCQUFSLFFBQVEsUUFpaEJ4QiJ9