@researchdatabox/redbox-core 0.0.1-beta.10213 → 0.0.1-beta.10760

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 (287) hide show
  1. package/dist/CoreController.d.ts +8 -0
  2. package/dist/CoreController.d.ts.map +1 -1
  3. package/dist/CoreController.js +87 -52
  4. package/dist/RecordsService.d.ts +2 -0
  5. package/dist/RecordsService.d.ts.map +1 -1
  6. package/dist/SearchService.d.ts +1 -1
  7. package/dist/SearchService.d.ts.map +1 -1
  8. package/dist/StorageService.d.ts +2 -0
  9. package/dist/StorageService.d.ts.map +1 -1
  10. package/dist/api-routes/groups/branding.d.ts +1 -0
  11. package/dist/api-routes/groups/branding.d.ts.map +1 -1
  12. package/dist/api-routes/groups/branding.js +19 -2
  13. package/dist/api-routes/groups/export.js +2 -2
  14. package/dist/api-routes/groups/figshare-crosswalks.d.ts +11 -0
  15. package/dist/api-routes/groups/figshare-crosswalks.d.ts.map +1 -0
  16. package/dist/api-routes/groups/figshare-crosswalks.js +171 -0
  17. package/dist/api-routes/groups/figshare-vocabulary.d.ts +12 -0
  18. package/dist/api-routes/groups/figshare-vocabulary.d.ts.map +1 -0
  19. package/dist/api-routes/groups/figshare-vocabulary.js +248 -0
  20. package/dist/api-routes/groups/search.js +4 -4
  21. package/dist/api-routes/groups/users.js +3 -3
  22. package/dist/api-routes/index.d.ts +2 -0
  23. package/dist/api-routes/index.d.ts.map +1 -1
  24. package/dist/api-routes/index.js +3 -1
  25. package/dist/api-routes/route-registry.d.ts.map +1 -1
  26. package/dist/api-routes/route-registry.js +5 -1
  27. package/dist/api-routes/schemas/common.d.ts +1 -0
  28. package/dist/api-routes/schemas/common.d.ts.map +1 -1
  29. package/dist/api-routes/schemas/common.js +3 -2
  30. package/dist/bootstrap.d.ts.map +1 -1
  31. package/dist/bootstrap.js +5 -1
  32. package/dist/config/agendaQueue.config.d.ts +3 -0
  33. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  34. package/dist/config/agendaQueue.config.js +13 -1
  35. package/dist/config/auth.config.d.ts.map +1 -1
  36. package/dist/config/auth.config.js +4 -1
  37. package/dist/config/brandingConfigurationDefaults.config.d.ts +1 -1
  38. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  39. package/dist/config/brandingConfigurationDefaults.config.js +22 -230
  40. package/dist/config/dashboardtype.config.d.ts +7 -0
  41. package/dist/config/dashboardtype.config.d.ts.map +1 -1
  42. package/dist/config/dashboardtype.config.js +9 -89
  43. package/dist/config/dashboardview.config.d.ts +7 -0
  44. package/dist/config/dashboardview.config.d.ts.map +1 -1
  45. package/dist/config/dashboardview.config.js +9 -134
  46. package/dist/config/http.config.d.ts +2 -0
  47. package/dist/config/http.config.d.ts.map +1 -1
  48. package/dist/config/http.config.js +47 -1
  49. package/dist/config/jsonld.config.d.ts.map +1 -1
  50. package/dist/config/jsonld.config.js +2 -21
  51. package/dist/config/record.config.d.ts.map +1 -1
  52. package/dist/config/record.config.js +2 -9
  53. package/dist/config/recordtype.config.d.ts +8 -0
  54. package/dist/config/recordtype.config.d.ts.map +1 -1
  55. package/dist/config/recordtype.config.js +10 -660
  56. package/dist/config/reusableContributorFormDefinitions.config.d.ts.map +1 -1
  57. package/dist/config/reusableContributorFormDefinitions.config.js +1 -2
  58. package/dist/config/reusableViewFormDefinitions.config.d.ts.map +1 -1
  59. package/dist/config/reusableViewFormDefinitions.config.js +12 -1
  60. package/dist/config/routes.config.d.ts.map +1 -1
  61. package/dist/config/routes.config.js +12 -3
  62. package/dist/config/solr.config.d.ts +1 -0
  63. package/dist/config/solr.config.d.ts.map +1 -1
  64. package/dist/config/solr.config.js +3 -2
  65. package/dist/config/static_assets.config.d.ts +2 -0
  66. package/dist/config/static_assets.config.d.ts.map +1 -1
  67. package/dist/config/static_assets.config.js +4 -2
  68. package/dist/config/storage.config.d.ts.map +1 -1
  69. package/dist/config/storage.config.js +7 -1
  70. package/dist/config/views.config.d.ts.map +1 -1
  71. package/dist/config/views.config.js +2 -6
  72. package/dist/config/vocab.config.d.ts +4 -0
  73. package/dist/config/vocab.config.d.ts.map +1 -1
  74. package/dist/config/vocab.config.js +1 -1
  75. package/dist/config/workflow.config.d.ts +7 -0
  76. package/dist/config/workflow.config.d.ts.map +1 -1
  77. package/dist/config/workflow.config.js +9 -194
  78. package/dist/config/workspacetype.config.d.ts +7 -0
  79. package/dist/config/workspacetype.config.d.ts.map +1 -1
  80. package/dist/config/workspacetype.config.js +9 -10
  81. package/dist/configmodels/DoiPublishing.d.ts +1 -1
  82. package/dist/configmodels/DoiPublishing.d.ts.map +1 -1
  83. package/dist/configmodels/FigsharePublishing.d.ts +746 -217
  84. package/dist/configmodels/FigsharePublishing.d.ts.map +1 -1
  85. package/dist/configmodels/FigsharePublishing.js +181 -190
  86. package/dist/constants/export.d.ts +2 -0
  87. package/dist/constants/export.d.ts.map +1 -0
  88. package/dist/constants/export.js +8 -0
  89. package/dist/controllers/AsynchController.d.ts +4 -1
  90. package/dist/controllers/AsynchController.d.ts.map +1 -1
  91. package/dist/controllers/AsynchController.js +118 -9
  92. package/dist/controllers/BrandingAppController.d.ts +2 -0
  93. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  94. package/dist/controllers/BrandingAppController.js +40 -2
  95. package/dist/controllers/BrandingController.d.ts +8 -0
  96. package/dist/controllers/BrandingController.d.ts.map +1 -1
  97. package/dist/controllers/BrandingController.js +45 -1
  98. package/dist/controllers/ExportController.d.ts.map +1 -1
  99. package/dist/controllers/ExportController.js +4 -3
  100. package/dist/controllers/RecordController.d.ts +1 -1
  101. package/dist/controllers/RecordController.d.ts.map +1 -1
  102. package/dist/controllers/RecordController.js +47 -21
  103. package/dist/controllers/UserController.d.ts.map +1 -1
  104. package/dist/controllers/UserController.js +3 -2
  105. package/dist/controllers/VocabularyController.js +4 -4
  106. package/dist/controllers/index.d.ts.map +1 -1
  107. package/dist/controllers/index.js +7 -1
  108. package/dist/controllers/webservice/BrandingController.d.ts +1 -0
  109. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  110. package/dist/controllers/webservice/BrandingController.js +69 -10
  111. package/dist/controllers/webservice/ExportController.d.ts.map +1 -1
  112. package/dist/controllers/webservice/ExportController.js +4 -3
  113. package/dist/controllers/webservice/FigshareCrosswalkController.d.ts +20 -0
  114. package/dist/controllers/webservice/FigshareCrosswalkController.d.ts.map +1 -0
  115. package/dist/controllers/webservice/FigshareCrosswalkController.js +184 -0
  116. package/dist/controllers/webservice/FigshareVocabularyController.d.ts +21 -0
  117. package/dist/controllers/webservice/FigshareVocabularyController.d.ts.map +1 -0
  118. package/dist/controllers/webservice/FigshareVocabularyController.js +223 -0
  119. package/dist/controllers/webservice/RecordController.d.ts +2 -0
  120. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  121. package/dist/controllers/webservice/RecordController.js +60 -12
  122. package/dist/controllers/webservice/UserManagementController.d.ts +5 -3
  123. package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
  124. package/dist/controllers/webservice/UserManagementController.js +140 -9
  125. package/dist/controllers/webservice/figshare-vocabulary-errors.d.ts +14 -0
  126. package/dist/controllers/webservice/figshare-vocabulary-errors.d.ts.map +1 -0
  127. package/dist/controllers/webservice/figshare-vocabulary-errors.js +39 -0
  128. package/dist/form-config/index.d.ts +7 -0
  129. package/dist/form-config/index.d.ts.map +1 -1
  130. package/dist/form-config/index.js +8 -5
  131. package/dist/hooks/hookDiscovery.d.ts +20 -0
  132. package/dist/hooks/hookDiscovery.d.ts.map +1 -0
  133. package/dist/hooks/hookDiscovery.js +186 -0
  134. package/dist/hooks/hookResources.d.ts +23 -0
  135. package/dist/hooks/hookResources.d.ts.map +1 -0
  136. package/dist/hooks/hookResources.js +136 -0
  137. package/dist/hooks/index.d.ts +4 -0
  138. package/dist/hooks/index.d.ts.map +1 -1
  139. package/dist/hooks/index.js +14 -2
  140. package/dist/index.d.ts +4 -0
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +14 -2
  143. package/dist/loader/index.d.ts.map +1 -1
  144. package/dist/loader/index.js +21 -62
  145. package/dist/model/storage/BrandingModel.d.ts +2 -0
  146. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  147. package/dist/model/storage/BrandingModel.js +3 -1
  148. package/dist/services/AgendaQueueService.d.ts.map +1 -1
  149. package/dist/services/AgendaQueueService.js +6 -2
  150. package/dist/services/BrandingLogoService.d.ts +20 -1
  151. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  152. package/dist/services/BrandingLogoService.js +51 -5
  153. package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
  154. package/dist/services/BrandingThemeTokens.js +2 -1
  155. package/dist/services/EmailService.d.ts +2 -8
  156. package/dist/services/EmailService.d.ts.map +1 -1
  157. package/dist/services/EmailService.js +8 -26
  158. package/dist/services/FigshareService.d.ts.map +1 -1
  159. package/dist/services/FigshareService.js +5 -4
  160. package/dist/services/FigshareVocabularyService.d.ts +442 -0
  161. package/dist/services/FigshareVocabularyService.d.ts.map +1 -0
  162. package/dist/services/FigshareVocabularyService.js +1802 -0
  163. package/dist/services/FormVocabularyService.d.ts.map +1 -1
  164. package/dist/services/FormVocabularyService.js +28 -7
  165. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  166. package/dist/services/I18nEntriesService.js +21 -2
  167. package/dist/services/IntegrationAuditService.js +4 -4
  168. package/dist/services/NamedQueryService.d.ts.map +1 -1
  169. package/dist/services/NamedQueryService.js +3 -16
  170. package/dist/services/RDMPService.d.ts.map +1 -1
  171. package/dist/services/RDMPService.js +9 -1
  172. package/dist/services/RecordsService.d.ts +4 -0
  173. package/dist/services/RecordsService.d.ts.map +1 -1
  174. package/dist/services/RecordsService.js +62 -45
  175. package/dist/services/ReportsService.d.ts +0 -5
  176. package/dist/services/ReportsService.d.ts.map +1 -1
  177. package/dist/services/ReportsService.js +22 -31
  178. package/dist/services/SolrSearchService.d.ts +10 -2
  179. package/dist/services/SolrSearchService.d.ts.map +1 -1
  180. package/dist/services/SolrSearchService.js +110 -52
  181. package/dist/services/StandardDatastreamService.d.ts +7 -0
  182. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  183. package/dist/services/StandardDatastreamService.js +127 -27
  184. package/dist/services/TemplateService.d.ts +0 -14
  185. package/dist/services/TemplateService.d.ts.map +1 -1
  186. package/dist/services/TemplateService.js +4 -45
  187. package/dist/services/UsersService.d.ts.map +1 -1
  188. package/dist/services/UsersService.js +19 -16
  189. package/dist/services/ViewUtilsService.d.ts +5 -1
  190. package/dist/services/ViewUtilsService.d.ts.map +1 -1
  191. package/dist/services/ViewUtilsService.js +38 -46
  192. package/dist/services/VocabularyService.d.ts +11 -2
  193. package/dist/services/VocabularyService.d.ts.map +1 -1
  194. package/dist/services/VocabularyService.js +46 -20
  195. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  196. package/dist/services/doi-v2/bindings.js +2 -11
  197. package/dist/services/figshare-v2/assets.d.ts +2 -1
  198. package/dist/services/figshare-v2/assets.d.ts.map +1 -1
  199. package/dist/services/figshare-v2/assets.js +144 -89
  200. package/dist/services/figshare-v2/bindings.d.ts +28 -3
  201. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  202. package/dist/services/figshare-v2/bindings.js +75 -17
  203. package/dist/services/figshare-v2/categories.d.ts +142 -0
  204. package/dist/services/figshare-v2/categories.d.ts.map +1 -0
  205. package/dist/services/figshare-v2/categories.js +408 -0
  206. package/dist/services/figshare-v2/config.d.ts +10 -0
  207. package/dist/services/figshare-v2/config.d.ts.map +1 -1
  208. package/dist/services/figshare-v2/config.js +39 -1
  209. package/dist/services/figshare-v2/context.d.ts +18 -1
  210. package/dist/services/figshare-v2/context.d.ts.map +1 -1
  211. package/dist/services/figshare-v2/context.js +34 -2
  212. package/dist/services/figshare-v2/embargo.d.ts.map +1 -1
  213. package/dist/services/figshare-v2/embargo.js +6 -4
  214. package/dist/services/figshare-v2/http.d.ts +3 -1
  215. package/dist/services/figshare-v2/http.d.ts.map +1 -1
  216. package/dist/services/figshare-v2/http.js +26 -4
  217. package/dist/services/figshare-v2/metadata.d.ts.map +1 -1
  218. package/dist/services/figshare-v2/metadata.js +74 -26
  219. package/dist/services/figshare-v2/observability.d.ts +1 -2
  220. package/dist/services/figshare-v2/observability.d.ts.map +1 -1
  221. package/dist/services/figshare-v2/observability.js +7 -47
  222. package/dist/services/figshare-v2/types.d.ts +13 -0
  223. package/dist/services/figshare-v2/types.d.ts.map +1 -1
  224. package/dist/services/figshare-v2/types.js +1 -1
  225. package/dist/services/figshare-v2/vocabulary-errors.d.ts +39 -0
  226. package/dist/services/figshare-v2/vocabulary-errors.d.ts.map +1 -0
  227. package/dist/services/figshare-v2/vocabulary-errors.js +68 -0
  228. package/dist/services/index.d.ts +3 -0
  229. package/dist/services/index.d.ts.map +1 -1
  230. package/dist/services/index.js +8 -3
  231. package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -1
  232. package/dist/storage/TusStorageManagerDataStore.js +14 -1
  233. package/dist/utilities/ContextVariableUtils.d.ts +3 -1
  234. package/dist/utilities/ContextVariableUtils.d.ts.map +1 -1
  235. package/dist/utilities/ContextVariableUtils.js +25 -7
  236. package/dist/utilities/PromiseUtils.d.ts +9 -0
  237. package/dist/utilities/PromiseUtils.d.ts.map +1 -0
  238. package/dist/utilities/PromiseUtils.js +27 -0
  239. package/dist/utilities/RedactionUtils.d.ts +3 -0
  240. package/dist/utilities/RedactionUtils.d.ts.map +1 -0
  241. package/dist/utilities/RedactionUtils.js +55 -0
  242. package/dist/visitor/client.visitor.d.ts +3 -0
  243. package/dist/visitor/client.visitor.d.ts.map +1 -1
  244. package/dist/visitor/client.visitor.js +102 -17
  245. package/dist/visitor/construct.visitor.d.ts +3 -0
  246. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  247. package/dist/visitor/construct.visitor.js +51 -38
  248. package/dist/visitor/json-type-def.visitor.d.ts +1 -0
  249. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  250. package/dist/visitor/json-type-def.visitor.js +20 -4
  251. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +6 -3
  252. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  253. package/dist/visitor/migrate-config-v4-v5.visitor.js +94 -44
  254. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  255. package/dist/visitor/validator.visitor.js +1 -1
  256. package/dist/visitor/visitor-helpers.js +2 -2
  257. package/dist/waterline-models/BrandingConfig.d.ts +2 -0
  258. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  259. package/dist/waterline-models/BrandingConfig.js +6 -1
  260. package/dist/waterline-models/FigshareVocabularyCategory.d.ts +38 -0
  261. package/dist/waterline-models/FigshareVocabularyCategory.d.ts.map +1 -0
  262. package/dist/waterline-models/FigshareVocabularyCategory.js +157 -0
  263. package/dist/waterline-models/FigshareVocabularyCrosswalk.d.ts +37 -0
  264. package/dist/waterline-models/FigshareVocabularyCrosswalk.d.ts.map +1 -0
  265. package/dist/waterline-models/FigshareVocabularyCrosswalk.js +153 -0
  266. package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.d.ts +37 -0
  267. package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.d.ts.map +1 -0
  268. package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.js +138 -0
  269. package/dist/waterline-models/FigshareVocabularySource.d.ts +45 -0
  270. package/dist/waterline-models/FigshareVocabularySource.d.ts.map +1 -0
  271. package/dist/waterline-models/FigshareVocabularySource.js +149 -0
  272. package/dist/waterline-models/FigshareVocabularySyncRun.d.ts +70 -0
  273. package/dist/waterline-models/FigshareVocabularySyncRun.d.ts.map +1 -0
  274. package/dist/waterline-models/FigshareVocabularySyncRun.js +237 -0
  275. package/dist/waterline-models/Vocabulary.d.ts +3 -1
  276. package/dist/waterline-models/Vocabulary.d.ts.map +1 -1
  277. package/dist/waterline-models/Vocabulary.js +9 -3
  278. package/dist/waterline-models/index.d.ts +10 -0
  279. package/dist/waterline-models/index.d.ts.map +1 -1
  280. package/dist/waterline-models/index.js +16 -1
  281. package/package.json +19 -19
  282. package/dist/form-config/dataRecord-1.0-draft.d.ts +0 -4
  283. package/dist/form-config/dataRecord-1.0-draft.d.ts.map +0 -1
  284. package/dist/form-config/dataRecord-1.0-draft.js +0 -1042
  285. package/dist/form-config/default-1.0-draft.d.ts +0 -4
  286. package/dist/form-config/default-1.0-draft.d.ts.map +0 -1
  287. package/dist/form-config/default-1.0-draft.js +0 -1156
@@ -1,1042 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const formConfig = {
4
- name: 'dataRecord-1.0-draft',
5
- type: 'dataRecord',
6
- debugValue: true,
7
- domElementType: 'form',
8
- defaultComponentConfig: {
9
- defaultComponentCssClasses: 'row',
10
- },
11
- attachmentFields: [
12
- "dataLocations"
13
- ],
14
- editCssClasses: 'redbox-form form',
15
- validationGroups: {
16
- all: {
17
- description: 'Validate all fields with validators.',
18
- initialMembership: 'all',
19
- },
20
- none: {
21
- description: 'Validate none of the fields.',
22
- initialMembership: 'none',
23
- },
24
- minimumCreate: {
25
- description: 'Fields that must be valid to create a new record.',
26
- initialMembership: 'none',
27
- },
28
- transitionDraftToSubmitted: {
29
- description: 'Fields that must be valid to transition from draft to submitted.',
30
- initialMembership: 'all',
31
- },
32
- },
33
- // Validators that operate on multiple fields.
34
- validators: [{ class: 'different-values', config: { controlNames: ['text_1_event', 'text_2'] } }],
35
- // operations: [
36
- // // sample operations...that can be referenced by expressions
37
- // {
38
- // class: "script",// or "valueEquals", "valueInList", "hasKey" etc.
39
- // config: {
40
- // name: "runSomeOperationThatNeedsTheEntireFormData", // the unique name of the operation
41
- // template: "<% %>"
42
- // }
43
- // },
44
- // {
45
- // class: "valueEquals",
46
- // config: {
47
- // name: "setVisibilityByValueEquals",
48
- // config: {
49
- // }
50
- // }
51
- // },
52
- // {
53
- // class: "valueMatches",
54
- // config: {
55
- // name: "setVisibilityByValueMatches",
56
- // config: {
57
- // }
58
- // }
59
- // },
60
- // ],
61
- // // Operations that will run every time form data changes
62
- // expressions: [
63
- // {
64
- // name: "runSomeOperationThatNeedsTheEntireFormData",
65
- // description: '',
66
- // config: {
67
- // template: ``,
68
- // condition: ``,
69
- // // target: ``
70
- // }
71
- // }
72
- // ],
73
- componentDefinitions: [
74
- {
75
- name: 'main_tab',
76
- layout: {
77
- class: 'TabLayout',
78
- config: {
79
- // layout-specific config goes here
80
- hostCssClasses: 'd-flex align-items-start',
81
- buttonSectionCssClass: 'nav flex-column nav-pills me-5',
82
- tabPaneCssClass: 'tab-pane fade',
83
- tabPaneActiveCssClass: 'active show',
84
- },
85
- },
86
- component: {
87
- class: 'TabComponent',
88
- config: {
89
- hostCssClasses: 'tab-content',
90
- tabs: [
91
- {
92
- name: 'tab_1',
93
- layout: {
94
- class: 'TabContentLayout',
95
- config: {
96
- buttonLabel: 'Tab 1',
97
- },
98
- },
99
- component: {
100
- class: 'TabContentComponent',
101
- config: {
102
- selected: true,
103
- componentDefinitions: [
104
- {
105
- name: 'text_block',
106
- component: {
107
- class: 'ContentComponent',
108
- config: {
109
- content: 'My first text block component!!!',
110
- template: '<h3>content default value content: {{content}}</h3>',
111
- },
112
- },
113
- },
114
- // {
115
- // name: 'debug_checkbox',
116
- // layout: {
117
- // class: 'DefaultLayout',
118
- // config: {
119
- // label: 'Debug Checkbox',
120
- // helpText: 'Checkbox some help text - single selection mode',
121
- // }
122
- // },
123
- // model: {
124
- // class: 'CheckboxInputModel',
125
- // config: {
126
- // defaultValue: 'debugging',
127
- // }
128
- // },
129
- // component: {
130
- // class: 'CheckboxInputComponent',
131
- // config: {
132
- // options: [
133
- // { label: 'Debug', value: 'debugging' }
134
- // ],
135
- // tooltip: 'Checkbox tooltip',
136
- // multipleValues: false
137
- // }
138
- // }
139
- // },
140
- {
141
- name: 'textarea_1',
142
- layout: {
143
- class: 'DefaultLayout',
144
- config: {
145
- label: 'Textarea some label',
146
- helpText: 'Textarea some help text',
147
- },
148
- },
149
- model: {
150
- class: 'TextAreaModel',
151
- config: {
152
- defaultValue: 'Textarea hello world!!!',
153
- },
154
- },
155
- component: {
156
- class: 'TextAreaComponent',
157
- config: {
158
- rows: 7,
159
- cols: 80,
160
- tooltip: 'Textarea tooltip',
161
- },
162
- },
163
- // expressions: [
164
- // {
165
- // name: "setVisibilityByValueScript",
166
- // config: {
167
- // sources: [
168
- // "tab1.text_1_event/value",
169
- // "tab1.text_1_event/metadata"
170
- // ]
171
- // }
172
- // }
173
- // ]
174
- },
175
- {
176
- name: 'rich_text_1',
177
- layout: {
178
- class: 'DefaultLayout',
179
- config: {
180
- label: 'Rich text editor',
181
- helpText: 'Use the rich text editor to format content.',
182
- },
183
- },
184
- model: {
185
- class: 'RichTextEditorModel',
186
- config: {
187
- defaultValue: '<p><strong>Rich text test content</strong></p><p>Try headings, lists, links, and tables.</p>',
188
- },
189
- },
190
- component: {
191
- class: 'RichTextEditorComponent',
192
- config: {
193
- outputFormat: 'html',
194
- minHeight: '240px',
195
- placeholder: 'Start writing formatted content...',
196
- },
197
- },
198
- },
199
- {
200
- name: 'rich_text_markdown_1',
201
- layout: {
202
- class: 'DefaultLayout',
203
- config: {
204
- label: 'Rich text editor (Markdown output)',
205
- helpText: 'Stores Markdown while keeping rich text editing.',
206
- },
207
- },
208
- model: {
209
- class: 'RichTextEditorModel',
210
- config: {
211
- defaultValue: '## Markdown heading\n\nThis is **bold** and this is *italic*.',
212
- },
213
- },
214
- component: {
215
- class: 'RichTextEditorComponent',
216
- config: {
217
- outputFormat: 'markdown',
218
- minHeight: '240px',
219
- showSourceToggle: true,
220
- placeholder: 'Start writing markdown-backed rich text...',
221
- },
222
- },
223
- },
224
- {
225
- name: 'dropdown_1',
226
- layout: {
227
- class: 'DefaultLayout',
228
- config: {
229
- label: 'Dropdown some label',
230
- helpText: 'Dropdown some help text',
231
- },
232
- },
233
- model: {
234
- class: 'DropdownInputModel',
235
- config: {
236
- defaultValue: 'Dropdown hello world!!!',
237
- },
238
- },
239
- component: {
240
- class: 'DropdownInputComponent',
241
- config: {
242
- options: [
243
- { label: 'Option 1', value: 'option1' },
244
- { label: 'Option 2', value: 'option2' },
245
- { label: 'Option 3', value: 'option3' },
246
- ],
247
- tooltip: 'Dropdown tooltip',
248
- },
249
- },
250
- },
251
- {
252
- name: 'lookahead_1',
253
- layout: {
254
- class: 'DefaultLayout',
255
- config: {
256
- label: 'Lookahead example',
257
- helpText: 'Type to filter static options in a typeahead field.',
258
- },
259
- },
260
- model: {
261
- class: 'TypeaheadInputModel',
262
- config: {
263
- defaultValue: 'option2',
264
- },
265
- },
266
- component: {
267
- class: 'TypeaheadInputComponent',
268
- config: {
269
- sourceType: 'static',
270
- staticOptions: [
271
- { label: 'Option 1', value: 'option1' },
272
- { label: 'Option 2', value: 'option2' },
273
- { label: 'Option 3', value: 'option3' },
274
- { label: 'Another Option', value: 'another-option' },
275
- ],
276
- placeholder: 'Start typing to search...',
277
- minChars: 1,
278
- debounceMs: 200,
279
- maxResults: 10,
280
- requireSelection: true,
281
- valueMode: 'value',
282
- },
283
- },
284
- },
285
- {
286
- name: 'lookahead_party_1',
287
- layout: {
288
- class: 'DefaultLayout',
289
- config: {
290
- label: 'Party lookup',
291
- helpText: 'Type to search party records via named query.',
292
- },
293
- },
294
- model: {
295
- class: 'TypeaheadInputModel',
296
- config: {
297
- defaultValue: null,
298
- },
299
- },
300
- component: {
301
- class: 'TypeaheadInputComponent',
302
- config: {
303
- sourceType: 'namedQuery',
304
- queryId: 'party',
305
- labelField: 'metadata.fullName',
306
- valueField: 'oid',
307
- placeholder: '@lookup-placeholder-party',
308
- minChars: 1,
309
- debounceMs: 250,
310
- maxResults: 25,
311
- requireSelection: true,
312
- valueMode: 'value',
313
- },
314
- },
315
- },
316
- {
317
- name: 'lookahead_vocab_1',
318
- layout: {
319
- class: 'DefaultLayout',
320
- config: {
321
- label: 'ANZSRC ToA lookup',
322
- helpText: 'Type to search vocabulary entries from anzsrc-toa.',
323
- },
324
- },
325
- model: {
326
- class: 'TypeaheadInputModel',
327
- config: {
328
- defaultValue: null,
329
- },
330
- },
331
- component: {
332
- class: 'TypeaheadInputComponent',
333
- config: {
334
- sourceType: 'vocabulary',
335
- vocabRef: 'anzsrc-toa',
336
- placeholder: 'Start typing a ToA term...',
337
- minChars: 1,
338
- debounceMs: 250,
339
- maxResults: 25,
340
- requireSelection: true,
341
- valueMode: 'value',
342
- },
343
- },
344
- },
345
- {
346
- name: 'checkbox_1',
347
- layout: {
348
- class: 'DefaultLayout',
349
- config: {
350
- label: 'Checkbox some label (single value)',
351
- helpText: 'Checkbox some help text - single selection mode',
352
- },
353
- },
354
- model: {
355
- class: 'CheckboxInputModel',
356
- config: {
357
- defaultValue: 'option1',
358
- },
359
- },
360
- component: {
361
- class: 'CheckboxInputComponent',
362
- config: {
363
- options: [
364
- { label: 'Option 1', value: 'option1' },
365
- { label: 'Option 2', value: 'option2' },
366
- { label: 'Option 3', value: 'option3' },
367
- ],
368
- tooltip: 'Checkbox tooltip',
369
- multipleValues: false,
370
- },
371
- },
372
- },
373
- {
374
- name: 'checkbox_multiple',
375
- layout: {
376
- class: 'DefaultLayout',
377
- config: {
378
- label: 'Checkbox multiple values',
379
- helpText: 'Checkbox with multiple selection enabled',
380
- },
381
- },
382
- model: {
383
- class: 'CheckboxInputModel',
384
- config: {
385
- defaultValue: ['option1', 'option3'],
386
- },
387
- },
388
- component: {
389
- class: 'CheckboxInputComponent',
390
- config: {
391
- options: [
392
- { label: 'Multi Option 1', value: 'option1' },
393
- { label: 'Multi Option 2', value: 'option2' },
394
- { label: 'Multi Option 3', value: 'option3' },
395
- { label: 'Multi Option 4', value: 'option4' },
396
- ],
397
- tooltip: 'Multiple selection checkbox tooltip',
398
- multipleValues: true,
399
- },
400
- },
401
- },
402
- {
403
- name: 'radio_1',
404
- layout: {
405
- class: 'DefaultLayout',
406
- config: {
407
- label: 'Radio some label (single value)',
408
- helpText: 'Radio some help text - single selection mode',
409
- },
410
- },
411
- model: {
412
- class: 'RadioInputModel',
413
- config: {
414
- defaultValue: 'option1',
415
- },
416
- },
417
- component: {
418
- class: 'RadioInputComponent',
419
- config: {
420
- options: [
421
- { label: 'Option 1', value: 'option1' },
422
- { label: 'Option 2', value: 'option2' },
423
- { label: 'Option 3', value: 'option3' },
424
- ],
425
- tooltip: 'Checkbox tooltip',
426
- },
427
- },
428
- },
429
- {
430
- name: 'date_1',
431
- layout: {
432
- class: 'DefaultLayout',
433
- config: {
434
- label: 'Date1',
435
- helpText: 'Date1 some help text',
436
- },
437
- },
438
- model: {
439
- class: 'DateInputModel',
440
- config: {},
441
- },
442
- component: {
443
- class: 'DateInputComponent',
444
- },
445
- expressions: [
446
- {
447
- name: 'listenToRadio1Change',
448
- config: {
449
- template: `value = "option2"`,
450
- conditionKind: 'jsonpointer',
451
- condition: `/main_tab/tab_1/radio_1::field.value.changed`,
452
- target: `layout.visible`,
453
- },
454
- },
455
- ],
456
- },
457
- {
458
- name: 'date_2',
459
- layout: {
460
- class: 'DefaultLayout',
461
- config: {
462
- label: 'Date some label',
463
- helpText: 'Date some help text',
464
- },
465
- },
466
- model: {
467
- class: 'DateInputModel',
468
- config: {},
469
- },
470
- component: {
471
- class: 'DateInputComponent',
472
- config: {
473
- enableTimePicker: true,
474
- },
475
- },
476
- },
477
- {
478
- name: 'text_1_event',
479
- layout: {
480
- class: 'DefaultLayout',
481
- config: {
482
- label: 'TextField1 emitting events',
483
- helpText: 'This is a help text',
484
- },
485
- },
486
- model: {
487
- class: 'SimpleInputModel',
488
- config: {
489
- defaultValue: 'hello world!',
490
- validators: [{ class: 'required' }],
491
- },
492
- },
493
- component: {
494
- class: 'SimpleInputComponent',
495
- },
496
- },
497
- {
498
- name: 'text_2',
499
- layout: {
500
- class: 'DefaultLayout',
501
- config: {
502
- label: 'TextField2 with expression listening to text_1_event',
503
- helpText: 'This is a help text',
504
- },
505
- },
506
- model: {
507
- class: 'SimpleInputModel',
508
- config: {
509
- defaultValue: 'hello world 2!',
510
- validators: [
511
- // {class: 'pattern', config: {pattern: "^prefix.*$", description: "must start with prefix"}},
512
- // {class: 'minLength', message: "@validator-error-custom-text_2", config: {minLength: 3}},
513
- ],
514
- },
515
- },
516
- component: {
517
- class: 'SimpleInputComponent',
518
- },
519
- expressions: [
520
- {
521
- name: 'listenToText1Event',
522
- config: {
523
- template: `value & "__suffix"`,
524
- conditionKind: 'jsonpointer',
525
- condition: `/main_tab/tab_1/text_1_event::field.value.changed`,
526
- target: `model.value`,
527
- },
528
- },
529
- {
530
- name: 'listenToText1Event2',
531
- config: {
532
- template: `formData.text_2 & "__hasJSONata"`,
533
- conditionKind: 'jsonata',
534
- condition: `$contains($lowercase(formData.text_1_event), "jsonata")`,
535
- target: `model.value`,
536
- },
537
- },
538
- {
539
- name: 'listenToRepeatable1',
540
- config: {
541
- conditionKind: 'jsonata_query',
542
- condition: `$count(**[name="repeatable_textfield_1"].children) >= 2`,
543
- template: `formData.text_2 & "__repeatableMoreThan2"`,
544
- target: `model.value`,
545
- },
546
- },
547
- ],
548
- },
549
- {
550
- name: 'text_7',
551
- layout: {
552
- class: 'DefaultLayout',
553
- config: {
554
- label: 'TextField with default wrapper defined',
555
- helpText: 'This is a help text',
556
- },
557
- },
558
- model: {
559
- class: 'SimpleInputModel',
560
- config: {
561
- defaultValue: 'hello world 2!',
562
- validators: [
563
- {
564
- class: 'pattern',
565
- config: {
566
- pattern: /prefix.*/,
567
- description: 'must start with prefix',
568
- },
569
- groups: { include: ['minimumCreate'] },
570
- },
571
- {
572
- class: 'minLength',
573
- message: '@validator-error-custom-text_7',
574
- config: { minLength: 3 },
575
- },
576
- ],
577
- },
578
- },
579
- component: {
580
- class: 'SimpleInputComponent',
581
- },
582
- // expressions: {
583
- // 'model.value': {
584
- // template: `<%= _.get(model,'text_1_event','') %>`
585
- // }
586
- // }
587
- },
588
- {
589
- name: 'text_2_event',
590
- model: {
591
- class: 'SimpleInputModel',
592
- config: {
593
- defaultValue: 'hello world! component event',
594
- validators: [{ class: 'required' }],
595
- },
596
- },
597
- component: {
598
- class: 'SimpleInputComponent',
599
- config: {
600
- tooltip: 'text_2_event tooltip',
601
- type: 'text',
602
- },
603
- },
604
- },
605
- {
606
- name: 'text_2_component_event',
607
- layout: {
608
- class: 'DefaultLayout',
609
- config: {
610
- label: 'TextField with default wrapper defined',
611
- helpText: 'This is a help text',
612
- tooltip: 'text_2_component_event layout tooltip',
613
- },
614
- },
615
- model: {
616
- class: 'SimpleInputModel',
617
- config: {
618
- defaultValue: 'hello world 2! component expression',
619
- },
620
- },
621
- component: {
622
- class: 'SimpleInputComponent',
623
- config: {
624
- tooltip: 'text_2_component_event component tooltip 22222',
625
- type: 'text',
626
- },
627
- },
628
- // expressions: [
629
- // ]
630
- },
631
- {
632
- name: 'text_3_event',
633
- model: {
634
- class: 'SimpleInputModel',
635
- config: {
636
- defaultValue: 'hello world! layout event',
637
- validators: [{ class: 'required' }],
638
- },
639
- },
640
- component: {
641
- class: 'SimpleInputComponent',
642
- },
643
- },
644
- {
645
- name: 'text_3_layout_event',
646
- layout: {
647
- class: 'DefaultLayout',
648
- config: {
649
- label: 'TextField with default wrapper defined',
650
- helpText: 'This is a help text',
651
- },
652
- },
653
- model: {
654
- class: 'SimpleInputModel',
655
- config: {
656
- defaultValue: 'hello world 2! layout expression',
657
- },
658
- },
659
- component: {
660
- class: 'SimpleInputComponent',
661
- },
662
- // expressions: {
663
- // 'layout.visible': {
664
- // template: `<% if(_.isEmpty(_.get(model,'text_3_event',''))) {
665
- // return false;
666
- // } else {
667
- // return true;
668
- // } %>`
669
- // }
670
- // }
671
- },
672
- ],
673
- },
674
- },
675
- },
676
- {
677
- name: 'tab_2',
678
- layout: {
679
- class: 'TabContentLayout',
680
- config: {
681
- buttonLabel: 'Tab 2',
682
- },
683
- },
684
- component: {
685
- class: 'TabContentComponent',
686
- config: {
687
- componentDefinitions: [
688
- {
689
- // first group component
690
- name: 'group_1_component',
691
- layout: {
692
- class: 'DefaultLayout',
693
- config: {
694
- label: 'Group label',
695
- helpText: 'Group help',
696
- },
697
- },
698
- model: {
699
- class: 'GroupModel',
700
- config: {
701
- defaultValue: {},
702
- },
703
- },
704
- component: {
705
- class: 'GroupComponent',
706
- config: {
707
- componentDefinitions: [
708
- {
709
- name: 'text_3',
710
- layout: {
711
- class: 'DefaultLayout',
712
- config: {
713
- label: 'TextField with default wrapper defined',
714
- helpText: 'This is a help text',
715
- },
716
- },
717
- model: {
718
- class: 'SimpleInputModel',
719
- config: {
720
- defaultValue: 'hello world 3!',
721
- },
722
- },
723
- component: {
724
- class: 'SimpleInputComponent',
725
- },
726
- },
727
- {
728
- name: 'text_4',
729
- model: {
730
- class: 'SimpleInputModel',
731
- config: {
732
- defaultValue: 'hello world 4!',
733
- },
734
- },
735
- component: {
736
- class: 'SimpleInputComponent',
737
- },
738
- },
739
- {
740
- // second group component, nested in first group component
741
- name: 'group_2_component',
742
- layout: {
743
- class: 'DefaultLayout',
744
- config: {
745
- label: 'Group2 label',
746
- helpText: 'Group 2 help',
747
- },
748
- },
749
- model: {
750
- class: 'GroupModel',
751
- config: {
752
- defaultValue: {},
753
- },
754
- },
755
- component: {
756
- class: 'GroupComponent',
757
- config: {
758
- componentDefinitions: [
759
- {
760
- name: 'text_5',
761
- layout: {
762
- class: 'DefaultLayout',
763
- config: {
764
- label: 'TextField with default wrapper defined',
765
- helpText: 'This is a help text',
766
- },
767
- },
768
- model: {
769
- class: 'SimpleInputModel',
770
- config: {
771
- defaultValue: 'hello world 5!',
772
- },
773
- },
774
- component: {
775
- class: 'SimpleInputComponent',
776
- },
777
- },
778
- ],
779
- },
780
- },
781
- },
782
- ],
783
- },
784
- },
785
- // expressions: {
786
- // 'layout.visible': {
787
- // template: `<% if(_.isEmpty(_.get(model,'text_3_event',''))) {
788
- // return false;
789
- // } else {
790
- // return true;
791
- // } %>`
792
- // }
793
- // }
794
- },
795
- {
796
- name: 'map_coverage',
797
- layout: {
798
- class: 'DefaultLayout',
799
- config: {
800
- label: 'Geographic coverage',
801
- helpText: 'Draw or import the geographic coverage area.',
802
- },
803
- },
804
- model: {
805
- class: 'MapModel',
806
- config: {
807
- defaultValue: { type: 'FeatureCollection', features: [] },
808
- },
809
- },
810
- component: {
811
- class: 'MapComponent',
812
- config: {
813
- zoom: 4,
814
- center: [-24.67, 134.07],
815
- enableImport: true,
816
- },
817
- },
818
- },
819
- {
820
- name: 'file_upload_1',
821
- layout: {
822
- class: 'DefaultLayout',
823
- config: {
824
- label: 'File upload',
825
- helpText: 'Attach one or more files to this record.',
826
- },
827
- },
828
- model: {
829
- class: 'FileUploadModel',
830
- config: {
831
- defaultValue: [],
832
- },
833
- },
834
- component: {
835
- class: 'FileUploadComponent',
836
- config: {
837
- allowUploadWithoutSave: true,
838
- companionUrl: '/companion',
839
- enabledSources: ['dropbox', 'googleDrive', 'onedrive'],
840
- uppyDashboardNote: 'Maximum upload size: 1 Gb per file',
841
- },
842
- },
843
- },
844
- {
845
- name: 'repeatable_textfield_1',
846
- model: {
847
- class: 'RepeatableModel',
848
- config: {
849
- defaultValue: ['hello world from repeatable, default!'],
850
- },
851
- },
852
- component: {
853
- class: 'RepeatableComponent',
854
- config: {
855
- elementTemplate: {
856
- name: "",
857
- model: {
858
- class: 'SimpleInputModel',
859
- config: {
860
- newEntryValue: 'hello world from elementTemplate!',
861
- validators: [
862
- {
863
- class: 'pattern',
864
- config: {
865
- pattern: /prefix.*/,
866
- description: 'must start with prefix',
867
- },
868
- },
869
- {
870
- class: 'minLength',
871
- message: '@validator-error-custom-example_repeatable',
872
- config: { minLength: 3 },
873
- },
874
- ],
875
- },
876
- },
877
- component: {
878
- class: 'SimpleInputComponent',
879
- config: {
880
- wrapperCssClasses: 'col',
881
- type: 'text',
882
- },
883
- },
884
- layout: {
885
- class: 'RepeatableElementLayout',
886
- config: {
887
- hostCssClasses: 'row align-items-start',
888
- },
889
- },
890
- },
891
- },
892
- },
893
- layout: {
894
- class: 'DefaultLayout',
895
- config: {
896
- label: 'Repeatable TextField with default wrapper defined',
897
- helpText: 'Repeatable component help text',
898
- },
899
- },
900
- // expressions: {
901
- // 'layout.visible': {
902
- // template: `<% if(_.isEmpty(_.get(model,'text_3_event',''))) {
903
- // return false;
904
- // } else {
905
- // return true;
906
- // } %>`
907
- // }
908
- // }
909
- },
910
- ],
911
- },
912
- },
913
- },
914
- ],
915
- },
916
- },
917
- },
918
- {
919
- name: 'repeatable_group_1',
920
- model: {
921
- class: 'RepeatableModel',
922
- config: {
923
- defaultValue: [{ text_3: 'hello world from repeating groups' }],
924
- },
925
- },
926
- component: {
927
- class: 'RepeatableComponent',
928
- config: {
929
- elementTemplate: {
930
- name: "",
931
- // first group component
932
- model: {
933
- class: 'GroupModel',
934
- config: {
935
- newEntryValue: { text_3: 'hello world 3!' },
936
- },
937
- },
938
- component: {
939
- class: 'GroupComponent',
940
- config: {
941
- wrapperCssClasses: 'col',
942
- componentDefinitions: [
943
- {
944
- name: 'text_3',
945
- model: {
946
- class: 'SimpleInputModel',
947
- config: {
948
- validators: [
949
- {
950
- class: 'minLength',
951
- message: '@validator-error-custom-text_3',
952
- config: { minLength: 3 },
953
- groups: { exclude: ['transitionDraftToSubmitted'] },
954
- },
955
- ],
956
- },
957
- },
958
- component: {
959
- class: 'SimpleInputComponent',
960
- config: {
961
- type: 'text',
962
- },
963
- },
964
- },
965
- ],
966
- },
967
- },
968
- layout: {
969
- class: 'RepeatableElementLayout',
970
- config: {
971
- hostCssClasses: 'row align-items-start',
972
- },
973
- },
974
- },
975
- },
976
- },
977
- layout: {
978
- class: 'DefaultLayout',
979
- config: {
980
- label: 'Repeatable TextField not inside the tab with default wrapper defined',
981
- helpText: 'Repeatable component help text',
982
- },
983
- },
984
- },
985
- {
986
- name: 'save_button',
987
- component: {
988
- class: 'SaveButtonComponent',
989
- config: {
990
- label: 'Save',
991
- labelSaving: 'Saving...',
992
- },
993
- },
994
- },
995
- {
996
- name: 'tab_nav_buttons',
997
- component: {
998
- class: 'TabNavButtonComponent',
999
- config: {
1000
- prevLabel: 'Previous',
1001
- nextLabel: 'Next',
1002
- targetTabContainerId: 'main_tab',
1003
- endDisplayMode: 'disabled',
1004
- },
1005
- },
1006
- },
1007
- {
1008
- name: 'cancel_button',
1009
- component: {
1010
- class: 'CancelButtonComponent',
1011
- config: {
1012
- label: 'Cancel',
1013
- confirmationTitle: 'Confirm',
1014
- confirmationMessage: 'Are you sure you want to cancel?',
1015
- cancelButtonMessage: 'No',
1016
- confirmButtonMessage: 'Yes',
1017
- },
1018
- },
1019
- },
1020
- {
1021
- name: 'validation_summary_1',
1022
- component: { class: 'ValidationSummaryComponent' },
1023
- },
1024
- // {
1025
- // module: 'custom',
1026
- // component: {
1027
- // class: 'FormCustomComponent',
1028
- // },
1029
- // model: {
1030
- // class: 'FormCustomFieldModel',
1031
- // config: {
1032
- // name: 'project_name',
1033
- // label: 'Project Name',
1034
- // type: 'text',
1035
- // defaultValue: 'hello world!'
1036
- // }
1037
- // }
1038
- // }
1039
- ],
1040
- };
1041
- exports.default = formConfig;
1042
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YVJlY29yZC0xLjAtZHJhZnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZm9ybS1jb25maWcvZGF0YVJlY29yZC0xLjAtZHJhZnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUFNLFVBQVUsR0FBb0I7SUFDbEMsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QixJQUFJLEVBQUUsWUFBWTtJQUNsQixVQUFVLEVBQUUsSUFBSTtJQUNoQixjQUFjLEVBQUUsTUFBTTtJQUN0QixzQkFBc0IsRUFBRTtRQUN0QiwwQkFBMEIsRUFBRSxLQUFLO0tBQ2xDO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsZUFBZTtLQUNoQjtJQUNELGNBQWMsRUFBRSxrQkFBa0I7SUFDbEMsZ0JBQWdCLEVBQUU7UUFDaEIsR0FBRyxFQUFFO1lBQ0gsV0FBVyxFQUFFLHNDQUFzQztZQUNuRCxpQkFBaUIsRUFBRSxLQUFLO1NBQ3pCO1FBQ0QsSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUFFLDhCQUE4QjtZQUMzQyxpQkFBaUIsRUFBRSxNQUFNO1NBQzFCO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsV0FBVyxFQUFFLG1EQUFtRDtZQUNoRSxpQkFBaUIsRUFBRSxNQUFNO1NBQzFCO1FBQ0QsMEJBQTBCLEVBQUU7WUFDMUIsV0FBVyxFQUFFLGtFQUFrRTtZQUMvRSxpQkFBaUIsRUFBRSxLQUFLO1NBQ3pCO0tBQ0Y7SUFFRCw4Q0FBOEM7SUFDOUMsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNqRyxnQkFBZ0I7SUFDaEIsaUVBQWlFO0lBQ2pFLE1BQU07SUFDTix3RUFBd0U7SUFDeEUsZ0JBQWdCO0lBQ2hCLGtHQUFrRztJQUNsRyw2QkFBNkI7SUFDN0IsUUFBUTtJQUNSLE9BQU87SUFDUCxNQUFNO0lBQ04sNEJB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