@researchdatabox/redbox-core 0.0.1-beta.9909 → 5.0.0-RC1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CoreController.d.ts +12 -0
- package/dist/CoreController.d.ts.map +1 -1
- package/dist/CoreController.js +91 -52
- package/dist/CoreService.d.ts +8 -1
- package/dist/CoreService.d.ts.map +1 -1
- package/dist/CoreService.js +8 -1
- package/dist/RecordsService.d.ts +2 -0
- package/dist/RecordsService.d.ts.map +1 -1
- package/dist/SearchService.d.ts +1 -1
- package/dist/SearchService.d.ts.map +1 -1
- package/dist/StorageService.d.ts +3 -1
- package/dist/StorageService.d.ts.map +1 -1
- package/dist/api-routes/groups/branding.d.ts +1 -0
- package/dist/api-routes/groups/branding.d.ts.map +1 -1
- package/dist/api-routes/groups/branding.js +19 -2
- package/dist/api-routes/groups/export.js +2 -2
- package/dist/api-routes/groups/figshare-crosswalks.d.ts +11 -0
- package/dist/api-routes/groups/figshare-crosswalks.d.ts.map +1 -0
- package/dist/api-routes/groups/figshare-crosswalks.js +171 -0
- package/dist/api-routes/groups/figshare-vocabulary.d.ts +12 -0
- package/dist/api-routes/groups/figshare-vocabulary.d.ts.map +1 -0
- package/dist/api-routes/groups/figshare-vocabulary.js +248 -0
- package/dist/api-routes/groups/search.js +4 -4
- package/dist/api-routes/groups/users.js +3 -3
- package/dist/api-routes/helpers.d.ts +4 -4
- package/dist/api-routes/helpers.d.ts.map +1 -1
- package/dist/api-routes/helpers.js +3 -4
- package/dist/api-routes/index.d.ts +2 -0
- package/dist/api-routes/index.d.ts.map +1 -1
- package/dist/api-routes/index.js +3 -1
- package/dist/api-routes/openapi.js +1 -1
- package/dist/api-routes/request-extraction.d.ts +2 -2
- package/dist/api-routes/request-extraction.d.ts.map +1 -1
- package/dist/api-routes/request-extraction.js +1 -1
- package/dist/api-routes/route-registry.d.ts.map +1 -1
- package/dist/api-routes/route-registry.js +5 -1
- package/dist/api-routes/schemas/common.d.ts +19 -19
- package/dist/api-routes/schemas/common.d.ts.map +1 -1
- package/dist/api-routes/schemas/common.js +3 -2
- package/dist/api-routes/schemas/responses.d.ts +352 -7032
- package/dist/api-routes/schemas/responses.d.ts.map +1 -1
- package/dist/api-routes/schemas/responses.js +2 -2
- package/dist/api-routes/types.d.ts +2 -2
- package/dist/api-routes/types.d.ts.map +1 -1
- package/dist/api-routes/validation.js +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +5 -1
- package/dist/config/agendaQueue.config.d.ts +11 -5
- package/dist/config/agendaQueue.config.d.ts.map +1 -1
- package/dist/config/agendaQueue.config.js +27 -19
- package/dist/config/auth.config.d.ts.map +1 -1
- package/dist/config/auth.config.js +4 -1
- package/dist/config/brandingConfigurationDefaults.config.d.ts +1 -1
- package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
- package/dist/config/brandingConfigurationDefaults.config.js +22 -227
- package/dist/config/dashboardtype.config.d.ts +7 -0
- package/dist/config/dashboardtype.config.d.ts.map +1 -1
- package/dist/config/dashboardtype.config.js +9 -89
- package/dist/config/dashboardview.config.d.ts +7 -0
- package/dist/config/dashboardview.config.d.ts.map +1 -1
- package/dist/config/dashboardview.config.js +9 -134
- package/dist/config/emailnotification.config.d.ts.map +1 -1
- package/dist/config/emailnotification.config.js +2 -1
- package/dist/config/http.config.d.ts +2 -0
- package/dist/config/http.config.d.ts.map +1 -1
- package/dist/config/http.config.js +47 -1
- package/dist/config/jsonld.config.d.ts.map +1 -1
- package/dist/config/jsonld.config.js +2 -21
- package/dist/config/record.config.d.ts.map +1 -1
- package/dist/config/record.config.js +2 -9
- package/dist/config/recordtype.config.d.ts +8 -0
- package/dist/config/recordtype.config.d.ts.map +1 -1
- package/dist/config/recordtype.config.js +10 -660
- package/dist/config/reusableContributorFormDefinitions.config.d.ts +1 -1
- package/dist/config/reusableContributorFormDefinitions.config.d.ts.map +1 -1
- package/dist/config/reusableContributorFormDefinitions.config.js +307 -202
- package/dist/config/reusableViewFormDefinitions.config.d.ts.map +1 -1
- package/dist/config/reusableViewFormDefinitions.config.js +15 -4
- package/dist/config/routes.config.d.ts.map +1 -1
- package/dist/config/routes.config.js +13 -3
- package/dist/config/solr.config.d.ts +1 -0
- package/dist/config/solr.config.d.ts.map +1 -1
- package/dist/config/solr.config.js +3 -2
- package/dist/config/static_assets.config.d.ts +2 -0
- package/dist/config/static_assets.config.d.ts.map +1 -1
- package/dist/config/static_assets.config.js +4 -2
- package/dist/config/storage.config.d.ts.map +1 -1
- package/dist/config/storage.config.js +7 -1
- package/dist/config/views.config.d.ts.map +1 -1
- package/dist/config/views.config.js +2 -6
- package/dist/config/vocab.config.d.ts +4 -0
- package/dist/config/vocab.config.d.ts.map +1 -1
- package/dist/config/vocab.config.js +1 -1
- package/dist/config/workflow.config.d.ts +7 -0
- package/dist/config/workflow.config.d.ts.map +1 -1
- package/dist/config/workflow.config.js +9 -194
- package/dist/config/workspacetype.config.d.ts +7 -0
- package/dist/config/workspacetype.config.d.ts.map +1 -1
- package/dist/config/workspacetype.config.js +9 -10
- package/dist/configmodels/ConfigModels.d.ts +1 -1
- package/dist/configmodels/ConfigModels.d.ts.map +1 -1
- package/dist/configmodels/ConfigModels.js +9 -1
- package/dist/configmodels/DoiPublishing.d.ts +1 -1
- package/dist/configmodels/DoiPublishing.d.ts.map +1 -1
- package/dist/configmodels/FigsharePublishing.d.ts +746 -217
- package/dist/configmodels/FigsharePublishing.d.ts.map +1 -1
- package/dist/configmodels/FigsharePublishing.js +181 -190
- package/dist/configmodels/IntegrationNotificationConfig.d.ts +133 -0
- package/dist/configmodels/IntegrationNotificationConfig.d.ts.map +1 -0
- package/dist/configmodels/IntegrationNotificationConfig.js +64 -0
- package/dist/constants/export.d.ts +2 -0
- package/dist/constants/export.d.ts.map +1 -0
- package/dist/constants/export.js +8 -0
- package/dist/controllers/AdminController.d.ts.map +1 -1
- package/dist/controllers/AdminController.js +1 -1
- package/dist/controllers/AsynchController.d.ts +4 -1
- package/dist/controllers/AsynchController.d.ts.map +1 -1
- package/dist/controllers/AsynchController.js +118 -9
- package/dist/controllers/BrandingAppController.d.ts +2 -0
- package/dist/controllers/BrandingAppController.d.ts.map +1 -1
- package/dist/controllers/BrandingAppController.js +40 -2
- package/dist/controllers/BrandingController.d.ts +8 -0
- package/dist/controllers/BrandingController.d.ts.map +1 -1
- package/dist/controllers/BrandingController.js +45 -1
- package/dist/controllers/ExportController.d.ts.map +1 -1
- package/dist/controllers/ExportController.js +6 -10
- package/dist/controllers/RecordAuditController.d.ts +2 -0
- package/dist/controllers/RecordAuditController.d.ts.map +1 -1
- package/dist/controllers/RecordAuditController.js +55 -1
- package/dist/controllers/RecordController.d.ts +5 -1
- package/dist/controllers/RecordController.d.ts.map +1 -1
- package/dist/controllers/RecordController.js +51 -21
- package/dist/controllers/UserController.d.ts.map +1 -1
- package/dist/controllers/UserController.js +3 -2
- package/dist/controllers/VocabularyController.js +4 -4
- package/dist/controllers/index.d.ts.map +1 -1
- package/dist/controllers/index.js +7 -1
- package/dist/controllers/webservice/BrandingController.d.ts +1 -0
- package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
- package/dist/controllers/webservice/BrandingController.js +69 -10
- package/dist/controllers/webservice/ExportController.d.ts.map +1 -1
- package/dist/controllers/webservice/ExportController.js +6 -10
- package/dist/controllers/webservice/FigshareCrosswalkController.d.ts +20 -0
- package/dist/controllers/webservice/FigshareCrosswalkController.d.ts.map +1 -0
- package/dist/controllers/webservice/FigshareCrosswalkController.js +184 -0
- package/dist/controllers/webservice/FigshareVocabularyController.d.ts +21 -0
- package/dist/controllers/webservice/FigshareVocabularyController.d.ts.map +1 -0
- package/dist/controllers/webservice/FigshareVocabularyController.js +223 -0
- package/dist/controllers/webservice/IntegrationAuditController.d.ts.map +1 -1
- package/dist/controllers/webservice/IntegrationAuditController.js +1 -1
- package/dist/controllers/webservice/RecordController.d.ts +6 -1
- package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordController.js +64 -13
- package/dist/controllers/webservice/UserManagementController.d.ts +5 -3
- package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
- package/dist/controllers/webservice/UserManagementController.js +140 -9
- package/dist/controllers/webservice/figshare-vocabulary-errors.d.ts +14 -0
- package/dist/controllers/webservice/figshare-vocabulary-errors.d.ts.map +1 -0
- package/dist/controllers/webservice/figshare-vocabulary-errors.js +39 -0
- package/dist/form-config/index.d.ts +7 -0
- package/dist/form-config/index.d.ts.map +1 -1
- package/dist/form-config/index.js +8 -5
- package/dist/hooks/defineRedboxHook.d.ts +11 -2
- package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
- package/dist/hooks/defineRedboxHook.js +36 -7
- package/dist/hooks/hookDiscovery.d.ts +20 -0
- package/dist/hooks/hookDiscovery.d.ts.map +1 -0
- package/dist/hooks/hookDiscovery.js +186 -0
- package/dist/hooks/hookResources.d.ts +23 -0
- package/dist/hooks/hookResources.d.ts.map +1 -0
- package/dist/hooks/hookResources.js +136 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +14 -2
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -2
- package/dist/loader/index.d.ts +2 -0
- package/dist/loader/index.d.ts.map +1 -1
- package/dist/loader/index.js +82 -64
- package/dist/model/storage/BrandingModel.d.ts +2 -0
- package/dist/model/storage/BrandingModel.d.ts.map +1 -1
- package/dist/model/storage/BrandingModel.js +3 -1
- package/dist/model/storage/IntegrationAuditModel.d.ts +2 -0
- package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
- package/dist/model/storage/IntegrationAuditModel.js +3 -1
- package/dist/policies/i18nLanguages.d.ts.map +1 -1
- package/dist/policies/i18nLanguages.js +1 -1
- package/dist/policies/menuResolver.d.ts.map +1 -1
- package/dist/policies/menuResolver.js +1 -1
- package/dist/policies/setLang.d.ts.map +1 -1
- package/dist/policies/setLang.js +1 -1
- package/dist/responses/badRequest.d.ts.map +1 -1
- package/dist/responses/badRequest.js +3 -2
- package/dist/responses/created.d.ts.map +1 -1
- package/dist/responses/created.js +3 -2
- package/dist/responses/forbidden.d.ts.map +1 -1
- package/dist/responses/forbidden.js +3 -2
- package/dist/responses/ok.d.ts.map +1 -1
- package/dist/responses/ok.js +3 -2
- package/dist/responses/serverError.d.ts.map +1 -1
- package/dist/responses/serverError.js +3 -2
- package/dist/responses/siteTitle.d.ts.map +1 -1
- package/dist/responses/siteTitle.js +1 -1
- package/dist/services/AgendaQueueService.d.ts +1 -0
- package/dist/services/AgendaQueueService.d.ts.map +1 -1
- package/dist/services/AgendaQueueService.js +24 -9
- package/dist/services/BrandingLogoService.d.ts +25 -1
- package/dist/services/BrandingLogoService.d.ts.map +1 -1
- package/dist/services/BrandingLogoService.js +56 -5
- package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
- package/dist/services/BrandingThemeTokens.js +2 -1
- package/dist/services/DoiService.js +5 -5
- package/dist/services/EmailService.d.ts +12 -4
- package/dist/services/EmailService.d.ts.map +1 -1
- package/dist/services/EmailService.js +28 -19
- package/dist/services/FigshareService.d.ts +12 -7
- package/dist/services/FigshareService.d.ts.map +1 -1
- package/dist/services/FigshareService.js +258 -104
- package/dist/services/FigshareVocabularyService.d.ts +442 -0
- package/dist/services/FigshareVocabularyService.d.ts.map +1 -0
- package/dist/services/FigshareVocabularyService.js +1802 -0
- package/dist/services/FormVocabularyService.d.ts.map +1 -1
- package/dist/services/FormVocabularyService.js +28 -7
- package/dist/services/HarvestRunService.d.ts.map +1 -1
- package/dist/services/HarvestRunService.js +1 -1
- package/dist/services/I18nEntriesService.d.ts.map +1 -1
- package/dist/services/I18nEntriesService.js +26 -4
- package/dist/services/IntegrationAuditService.d.ts +58 -0
- package/dist/services/IntegrationAuditService.d.ts.map +1 -1
- package/dist/services/IntegrationAuditService.js +292 -15
- package/dist/services/IntegrationNotificationService.d.ts +55 -0
- package/dist/services/IntegrationNotificationService.d.ts.map +1 -0
- package/dist/services/IntegrationNotificationService.js +271 -0
- package/dist/services/NamedQueryService.d.ts.map +1 -1
- package/dist/services/NamedQueryService.js +3 -16
- package/dist/services/OniService.d.ts.map +1 -1
- package/dist/services/OniService.js +3 -5
- package/dist/services/RDMPService.d.ts +2 -0
- package/dist/services/RDMPService.d.ts.map +1 -1
- package/dist/services/RDMPService.js +49 -33
- package/dist/services/RecordsService.d.ts +9 -2
- package/dist/services/RecordsService.d.ts.map +1 -1
- package/dist/services/RecordsService.js +66 -46
- package/dist/services/ReportsService.d.ts +0 -5
- package/dist/services/ReportsService.d.ts.map +1 -1
- package/dist/services/ReportsService.js +22 -31
- package/dist/services/SolrSearchService.d.ts +10 -2
- package/dist/services/SolrSearchService.d.ts.map +1 -1
- package/dist/services/SolrSearchService.js +110 -52
- package/dist/services/StandardDatastreamService.d.ts +7 -0
- package/dist/services/StandardDatastreamService.d.ts.map +1 -1
- package/dist/services/StandardDatastreamService.js +127 -27
- package/dist/services/TemplateService.d.ts +1 -15
- package/dist/services/TemplateService.d.ts.map +1 -1
- package/dist/services/TemplateService.js +7 -47
- package/dist/services/UsersService.d.ts.map +1 -1
- package/dist/services/UsersService.js +19 -16
- package/dist/services/ViewUtilsService.d.ts +5 -1
- package/dist/services/ViewUtilsService.d.ts.map +1 -1
- package/dist/services/ViewUtilsService.js +38 -46
- package/dist/services/VocabularyService.d.ts +11 -2
- package/dist/services/VocabularyService.d.ts.map +1 -1
- package/dist/services/VocabularyService.js +46 -20
- package/dist/services/doi-v2/audit.d.ts.map +1 -1
- package/dist/services/doi-v2/audit.js +1 -1
- package/dist/services/doi-v2/bindings.d.ts.map +1 -1
- package/dist/services/doi-v2/bindings.js +2 -11
- package/dist/services/doi-v2/payload.d.ts.map +1 -1
- package/dist/services/doi-v2/payload.js +32 -18
- package/dist/services/figshare-v2/assets.d.ts +2 -1
- package/dist/services/figshare-v2/assets.d.ts.map +1 -1
- package/dist/services/figshare-v2/assets.js +144 -89
- package/dist/services/figshare-v2/audit.d.ts +7 -0
- package/dist/services/figshare-v2/audit.d.ts.map +1 -0
- package/dist/services/figshare-v2/audit.js +30 -0
- package/dist/services/figshare-v2/bindings.d.ts +28 -3
- package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
- package/dist/services/figshare-v2/bindings.js +76 -17
- package/dist/services/figshare-v2/categories.d.ts +142 -0
- package/dist/services/figshare-v2/categories.d.ts.map +1 -0
- package/dist/services/figshare-v2/categories.js +408 -0
- package/dist/services/figshare-v2/config.d.ts +10 -0
- package/dist/services/figshare-v2/config.d.ts.map +1 -1
- package/dist/services/figshare-v2/config.js +64 -2
- package/dist/services/figshare-v2/context.d.ts +18 -1
- package/dist/services/figshare-v2/context.d.ts.map +1 -1
- package/dist/services/figshare-v2/context.js +35 -2
- package/dist/services/figshare-v2/embargo.d.ts.map +1 -1
- package/dist/services/figshare-v2/embargo.js +6 -4
- package/dist/services/figshare-v2/http.d.ts +20 -1
- package/dist/services/figshare-v2/http.d.ts.map +1 -1
- package/dist/services/figshare-v2/http.js +85 -9
- package/dist/services/figshare-v2/metadata.d.ts.map +1 -1
- package/dist/services/figshare-v2/metadata.js +150 -35
- package/dist/services/figshare-v2/observability.d.ts +1 -2
- package/dist/services/figshare-v2/observability.d.ts.map +1 -1
- package/dist/services/figshare-v2/observability.js +7 -45
- package/dist/services/figshare-v2/runtime.d.ts +5 -2
- package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
- package/dist/services/figshare-v2/runtime.js +59 -37
- package/dist/services/figshare-v2/types.d.ts +18 -0
- package/dist/services/figshare-v2/types.d.ts.map +1 -1
- package/dist/services/figshare-v2/types.js +1 -1
- package/dist/services/figshare-v2/vocabulary-errors.d.ts +39 -0
- package/dist/services/figshare-v2/vocabulary-errors.d.ts.map +1 -0
- package/dist/services/figshare-v2/vocabulary-errors.js +68 -0
- package/dist/services/index.d.ts +6 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +13 -2
- package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -1
- package/dist/storage/TusStorageManagerDataStore.js +14 -1
- package/dist/transformers/ExportJSONTransformer.d.ts +1 -1
- package/dist/transformers/ExportJSONTransformer.d.ts.map +1 -1
- package/dist/transformers/ExportJSONTransformer.js +3 -3
- package/dist/utilities/ContextVariableUtils.d.ts +3 -1
- package/dist/utilities/ContextVariableUtils.d.ts.map +1 -1
- package/dist/utilities/ContextVariableUtils.js +25 -7
- package/dist/utilities/PromiseUtils.d.ts +9 -0
- package/dist/utilities/PromiseUtils.d.ts.map +1 -0
- package/dist/utilities/PromiseUtils.js +27 -0
- package/dist/utilities/RedactionUtils.d.ts +3 -0
- package/dist/utilities/RedactionUtils.d.ts.map +1 -0
- package/dist/utilities/RedactionUtils.js +55 -0
- package/dist/visitor/client.visitor.d.ts +7 -0
- package/dist/visitor/client.visitor.d.ts.map +1 -1
- package/dist/visitor/client.visitor.js +135 -30
- package/dist/visitor/construct.visitor.d.ts +6 -0
- package/dist/visitor/construct.visitor.d.ts.map +1 -1
- package/dist/visitor/construct.visitor.js +153 -108
- package/dist/visitor/data-value.visitor.d.ts +3 -0
- package/dist/visitor/data-value.visitor.d.ts.map +1 -1
- package/dist/visitor/data-value.visitor.js +6 -1
- package/dist/visitor/json-type-def.visitor.d.ts +4 -0
- package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
- package/dist/visitor/json-type-def.visitor.js +25 -4
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +9 -3
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.js +211 -148
- package/dist/visitor/template.visitor.d.ts +3 -0
- package/dist/visitor/template.visitor.d.ts.map +1 -1
- package/dist/visitor/template.visitor.js +6 -1
- package/dist/visitor/validator.visitor.d.ts +3 -1
- package/dist/visitor/validator.visitor.d.ts.map +1 -1
- package/dist/visitor/validator.visitor.js +8 -2
- package/dist/visitor/visitor-helpers.js +2 -2
- package/dist/waterline-models/BrandingConfig.d.ts +2 -0
- package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
- package/dist/waterline-models/BrandingConfig.js +6 -1
- package/dist/waterline-models/FigshareVocabularyCategory.d.ts +38 -0
- package/dist/waterline-models/FigshareVocabularyCategory.d.ts.map +1 -0
- package/dist/waterline-models/FigshareVocabularyCategory.js +157 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalk.d.ts +37 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalk.d.ts.map +1 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalk.js +153 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.d.ts +37 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.d.ts.map +1 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.js +138 -0
- package/dist/waterline-models/FigshareVocabularySource.d.ts +45 -0
- package/dist/waterline-models/FigshareVocabularySource.d.ts.map +1 -0
- package/dist/waterline-models/FigshareVocabularySource.js +149 -0
- package/dist/waterline-models/FigshareVocabularySyncRun.d.ts +70 -0
- package/dist/waterline-models/FigshareVocabularySyncRun.d.ts.map +1 -0
- package/dist/waterline-models/FigshareVocabularySyncRun.js +237 -0
- package/dist/waterline-models/Vocabulary.d.ts +3 -1
- package/dist/waterline-models/Vocabulary.d.ts.map +1 -1
- package/dist/waterline-models/Vocabulary.js +9 -3
- package/dist/waterline-models/index.d.ts +10 -0
- package/dist/waterline-models/index.d.ts.map +1 -1
- package/dist/waterline-models/index.js +16 -1
- package/package.json +28 -31
- package/dist/form-config/dataRecord-1.0-draft.d.ts +0 -4
- package/dist/form-config/dataRecord-1.0-draft.d.ts.map +0 -1
- package/dist/form-config/dataRecord-1.0-draft.js +0 -1042
- package/dist/form-config/default-1.0-draft.d.ts +0 -4
- package/dist/form-config/default-1.0-draft.d.ts.map +0 -1
- package/dist/form-config/default-1.0-draft.js +0 -1156
|
@@ -77,6 +77,48 @@ var Controllers;
|
|
|
77
77
|
**************************************************************************************************
|
|
78
78
|
*/
|
|
79
79
|
bootstrap() { }
|
|
80
|
+
async requireUserInBrand(userId, brandId) {
|
|
81
|
+
const user = await (0, rxjs_1.firstValueFrom)(UsersService.getUserWithId(userId));
|
|
82
|
+
if (!user) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const roles = (user.roles ?? []);
|
|
86
|
+
const hasBrandRole = _.some(roles, (role) => {
|
|
87
|
+
const branding = role.branding;
|
|
88
|
+
const roleBrandId = _.isObject(branding) ? String(branding.id ?? '') : String(branding ?? '');
|
|
89
|
+
return roleBrandId === brandId;
|
|
90
|
+
});
|
|
91
|
+
if (hasBrandRole) {
|
|
92
|
+
return user;
|
|
93
|
+
}
|
|
94
|
+
const isLinked = typeof UserLink !== 'undefined'
|
|
95
|
+
? await UserLink.findOne({
|
|
96
|
+
brandId: brandId,
|
|
97
|
+
status: 'active',
|
|
98
|
+
or: [
|
|
99
|
+
{ primaryUserId: userId },
|
|
100
|
+
{ secondaryUserId: userId }
|
|
101
|
+
]
|
|
102
|
+
})
|
|
103
|
+
: null;
|
|
104
|
+
if (isLinked) {
|
|
105
|
+
return user;
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
mergeBrandRoleIds(user, brandId, brandRoleIds) {
|
|
110
|
+
const foreignRoleIds = (user.roles ?? [])
|
|
111
|
+
.filter((role) => {
|
|
112
|
+
const branding = role.branding;
|
|
113
|
+
const roleBrandId = _.isObject(branding)
|
|
114
|
+
? String(branding.id ?? '')
|
|
115
|
+
: String(branding ?? '');
|
|
116
|
+
return roleBrandId !== brandId;
|
|
117
|
+
})
|
|
118
|
+
.map((role) => role.id)
|
|
119
|
+
.filter((roleId) => roleId != null);
|
|
120
|
+
return _.uniq([...foreignRoleIds, ...brandRoleIds]);
|
|
121
|
+
}
|
|
80
122
|
async listUsers(req, res) {
|
|
81
123
|
const validated = (0, index_1.getValidatedApiRequest)(req);
|
|
82
124
|
const { query } = validated;
|
|
@@ -172,7 +214,8 @@ var Controllers;
|
|
|
172
214
|
sails.log.warn('UserManagementController.createUser - No role ids resolved, skipping role assignment.');
|
|
173
215
|
return respondWithUser(response);
|
|
174
216
|
}
|
|
175
|
-
|
|
217
|
+
const mergedRoleIds = this.mergeBrandRoleIds(response, brand.id, roleIds);
|
|
218
|
+
UsersService.updateUserRoles(response.id, mergedRoleIds).subscribe((roleUser) => {
|
|
176
219
|
const user = roleUser;
|
|
177
220
|
sails.log.verbose(user);
|
|
178
221
|
return respondWithUser(response);
|
|
@@ -190,9 +233,46 @@ var Controllers;
|
|
|
190
233
|
return applyRolesIfRequested(response);
|
|
191
234
|
}, (error) => {
|
|
192
235
|
if (error?.message?.includes('Username already exists')) {
|
|
193
|
-
UsersService.getUserWithUsername(userReq.username || '').subscribe((existingUser) => {
|
|
194
|
-
|
|
195
|
-
|
|
236
|
+
UsersService.getUserWithUsername(userReq.username || '').subscribe(async (existingUser) => {
|
|
237
|
+
try {
|
|
238
|
+
if (existingUser) {
|
|
239
|
+
const brand = BrandingService.getBrand(req.session.branding) ?? BrandingService.getDefault();
|
|
240
|
+
if (brand?.id) {
|
|
241
|
+
const hasBrandRole = _.some((existingUser.roles ?? []), (role) => {
|
|
242
|
+
const branding = role.branding;
|
|
243
|
+
const roleBrandId = _.isObject(branding) ? String(branding.id ?? '') : String(branding ?? '');
|
|
244
|
+
return roleBrandId === brand.id;
|
|
245
|
+
});
|
|
246
|
+
if (!hasBrandRole) {
|
|
247
|
+
const isLinked = typeof UserLink !== 'undefined'
|
|
248
|
+
? await UserLink.findOne({
|
|
249
|
+
brandId: brand.id,
|
|
250
|
+
status: 'active',
|
|
251
|
+
or: [
|
|
252
|
+
{ primaryUserId: existingUser.id },
|
|
253
|
+
{ secondaryUserId: existingUser.id }
|
|
254
|
+
]
|
|
255
|
+
})
|
|
256
|
+
: null;
|
|
257
|
+
if (!isLinked) {
|
|
258
|
+
return this.sendResp(req, res, {
|
|
259
|
+
status: 403,
|
|
260
|
+
displayErrors: [{ detail: 'Unauthorized cross-brand access' }],
|
|
261
|
+
headers: this.getNoCacheHeaders(),
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return applyRolesIfRequested(existingUser);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
sails.log.error('Failed to check brand membership for existing user:', err);
|
|
271
|
+
return this.sendResp(req, res, {
|
|
272
|
+
status: 500,
|
|
273
|
+
displayErrors: [{ detail: 'An error has occurred' }],
|
|
274
|
+
headers: this.getNoCacheHeaders(),
|
|
275
|
+
});
|
|
196
276
|
}
|
|
197
277
|
sails.log.error(error);
|
|
198
278
|
return this.sendResp(req, res, {
|
|
@@ -219,9 +299,21 @@ var Controllers;
|
|
|
219
299
|
});
|
|
220
300
|
return;
|
|
221
301
|
}
|
|
222
|
-
updateUser(req, res) {
|
|
302
|
+
async updateUser(req, res) {
|
|
223
303
|
const validated = (0, index_1.getValidatedApiRequest)(req);
|
|
224
304
|
const userReq = validated.body;
|
|
305
|
+
const brand = BrandingService.getBrand(req.session.branding) ?? BrandingService.getDefault();
|
|
306
|
+
let targetUser = null;
|
|
307
|
+
if (brand?.id) {
|
|
308
|
+
targetUser = await this.requireUserInBrand(userReq.id || '', brand.id);
|
|
309
|
+
if (!targetUser) {
|
|
310
|
+
return this.sendResp(req, res, {
|
|
311
|
+
status: 403,
|
|
312
|
+
displayErrors: [{ detail: 'Unauthorized cross-brand access' }],
|
|
313
|
+
headers: this.getNoCacheHeaders(),
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
225
317
|
UsersService.updateUserDetails(userReq.id || '', userReq.name || '', userReq.email || '', userReq.password || '').subscribe((userResponse) => {
|
|
226
318
|
const response = userResponse;
|
|
227
319
|
let user = null;
|
|
@@ -240,7 +332,8 @@ var Controllers;
|
|
|
240
332
|
.filter((roleName) => !_.isEmpty(roleName));
|
|
241
333
|
const brand = BrandingService.getBrand(req.session.branding);
|
|
242
334
|
const roleIds = RolesService.getRoleIds(brand.roles, roles);
|
|
243
|
-
|
|
335
|
+
const mergedRoleIds = this.mergeBrandRoleIds(targetUser ?? userReq, brand.id, roleIds);
|
|
336
|
+
UsersService.updateUserRoles(user.id, mergedRoleIds).subscribe((user) => {
|
|
244
337
|
//TODO: Add roles to the response
|
|
245
338
|
const u = user;
|
|
246
339
|
const userResponse = new index_1.CreateUserAPIResponse();
|
|
@@ -295,9 +388,20 @@ var Controllers;
|
|
|
295
388
|
});
|
|
296
389
|
return;
|
|
297
390
|
}
|
|
298
|
-
generateAPIToken(req, res) {
|
|
391
|
+
async generateAPIToken(req, res) {
|
|
299
392
|
const validated = (0, index_1.getValidatedApiRequest)(req);
|
|
300
393
|
const userid = validated.query.id;
|
|
394
|
+
const brandId = _.get(BrandingService.getBrand(req.session.branding), 'id');
|
|
395
|
+
if (userid && brandId) {
|
|
396
|
+
const targetUser = await this.requireUserInBrand(userid, brandId);
|
|
397
|
+
if (!targetUser) {
|
|
398
|
+
return this.sendResp(req, res, {
|
|
399
|
+
status: 403,
|
|
400
|
+
displayErrors: [{ detail: 'Unauthorized cross-brand access' }],
|
|
401
|
+
headers: this.getNoCacheHeaders(),
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
}
|
|
301
405
|
if (userid) {
|
|
302
406
|
const uuid = (0, uuid_1.v4)();
|
|
303
407
|
UsersService.setUserKey(userid, uuid).subscribe((userResponse) => {
|
|
@@ -328,9 +432,20 @@ var Controllers;
|
|
|
328
432
|
}
|
|
329
433
|
return;
|
|
330
434
|
}
|
|
331
|
-
revokeAPIToken(req, res) {
|
|
435
|
+
async revokeAPIToken(req, res) {
|
|
332
436
|
const validated = (0, index_1.getValidatedApiRequest)(req);
|
|
333
437
|
const userid = validated.query.id;
|
|
438
|
+
const brandId = _.get(BrandingService.getBrand(req.session.branding), 'id');
|
|
439
|
+
if (userid && brandId) {
|
|
440
|
+
const targetUser = await this.requireUserInBrand(userid, brandId);
|
|
441
|
+
if (!targetUser) {
|
|
442
|
+
return this.sendResp(req, res, {
|
|
443
|
+
status: 403,
|
|
444
|
+
displayErrors: [{ detail: 'Unauthorized cross-brand access' }],
|
|
445
|
+
headers: this.getNoCacheHeaders(),
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
}
|
|
334
449
|
if (userid) {
|
|
335
450
|
const uuid = '';
|
|
336
451
|
UsersService.setUserKey(userid, uuid).subscribe((userResponse) => {
|
|
@@ -572,6 +687,14 @@ var Controllers;
|
|
|
572
687
|
headers: this.getNoCacheHeaders(),
|
|
573
688
|
});
|
|
574
689
|
}
|
|
690
|
+
const targetUser = await this.requireUserInBrand(userId, brand.id);
|
|
691
|
+
if (!targetUser) {
|
|
692
|
+
return this.sendResp(req, res, {
|
|
693
|
+
status: 403,
|
|
694
|
+
displayErrors: [{ detail: 'Unauthorized cross-brand access' }],
|
|
695
|
+
headers: this.getNoCacheHeaders(),
|
|
696
|
+
});
|
|
697
|
+
}
|
|
575
698
|
await UsersService.disableUser(userId, String(req.user?.username ?? 'system'), String(brand.id));
|
|
576
699
|
return this.apiRespond(req, res, { status: true, message: 'User disabled successfully' });
|
|
577
700
|
}
|
|
@@ -603,6 +726,14 @@ var Controllers;
|
|
|
603
726
|
headers: this.getNoCacheHeaders(),
|
|
604
727
|
});
|
|
605
728
|
}
|
|
729
|
+
const targetUser = await this.requireUserInBrand(userId, brand.id);
|
|
730
|
+
if (!targetUser) {
|
|
731
|
+
return this.sendResp(req, res, {
|
|
732
|
+
status: 403,
|
|
733
|
+
displayErrors: [{ detail: 'Unauthorized cross-brand access' }],
|
|
734
|
+
headers: this.getNoCacheHeaders(),
|
|
735
|
+
});
|
|
736
|
+
}
|
|
606
737
|
await UsersService.enableUser(userId, String(req.user?.username ?? 'system'), String(brand.id));
|
|
607
738
|
return this.apiRespond(req, res, { status: true, message: 'User enabled successfully' });
|
|
608
739
|
}
|
|
@@ -618,4 +749,4 @@ var Controllers;
|
|
|
618
749
|
}
|
|
619
750
|
Controllers.UserManagement = UserManagement;
|
|
620
751
|
})(Controllers || (exports.Controllers = Controllers = {}));
|
|
621
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlck1hbmFnZW1lbnRDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRyb2xsZXJzL3dlYnNlcnZpY2UvVXNlck1hbmFnZW1lbnRDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQXlCcUI7QUFFckIsK0JBQW9DO0FBQ3BDLCtCQUFzQztBQUV0QyxJQUFpQixXQUFXLENBMHRCM0I7QUExdEJELFdBQWlCLFdBQVc7SUFDMUI7Ozs7T0FJRztJQUNILE1BQWEsY0FBZSxTQUFRLG1CQUFXLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFDN0Q7O1dBRUc7UUFDZ0IsZ0JBQWdCLEdBQWE7WUFDOUMsV0FBVztZQUNYLFNBQVM7WUFDVCxZQUFZO1lBQ1osWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsc0JBQXNCO1lBQ3RCLGNBQWM7WUFDZCxjQUFjO1lBQ2QsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFDbEIsYUFBYTtZQUNiLFlBQVk7U0FDYixDQUFDO1FBRU0sS0FBSyxDQUFDLDJCQUEyQixDQUFDLEtBQXVCLEVBQUUsT0FBZ0I7WUFDakYsTUFBTSxLQUFLLEdBQ1QsT0FBTyxRQUFRLEtBQUssV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDekcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNULE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FDbEMsS0FBNkMsRUFDN0MsQ0FBQyxJQUF3QyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FDL0UsQ0FBQztZQUNGLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBNkMsRUFBRSxDQUFDLElBQXdDLEVBQUUsRUFBRSxDQUNoRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FDakMsQ0FDRixDQUFDO1lBQ0YsTUFBTSxZQUFZLEdBQ2hCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ2xHLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FDbkMsWUFBb0QsRUFDcEQsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ1osR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3pELE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxFQUNELEVBQXVDLENBQ3hDLENBQUM7WUFFRixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBb0IsRUFBRSxFQUFFO2dCQUMzQyxNQUFNLFlBQVksR0FBRyxJQUEyRCxDQUFDO2dCQUNqRixZQUFZLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQztnQkFDMUUsWUFBWSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6RixZQUFZLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUM7b0JBQ2pGLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUTtvQkFDdkIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDO2dCQUNsRyxPQUFPLFlBQVksQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFTyx1QkFBdUIsQ0FBQyxJQUEyQjtZQUN6RCxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsTUFBTSxhQUFhLEdBQUcsRUFBRSxHQUFJLElBQTRELEVBQUUsQ0FBQztZQUMzRixPQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqQyxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QixPQUFPLGFBQStCLENBQUM7UUFDekMsQ0FBQztRQUVPLEtBQUssQ0FBQyxzQkFBc0IsQ0FDbEMsV0FBb0MsRUFDcEMsT0FBMkIsRUFDM0IsZUFBd0I7WUFFeEIsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUUsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFFbEcsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDbEQsSUFBSSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBeUIsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3RixXQUFXLEdBQUcsTUFBTSxZQUFZLENBQUMscUNBQXFDLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFcEYsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixXQUFXLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDdEcsQ0FBQztZQUVELE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRDs7OztXQUlHO1FBRUksU0FBUyxLQUFLLENBQUM7UUFFZixLQUFLLENBQUMsU0FBUyxDQUFDLEdBQWMsRUFBRSxHQUFjO1lBQ25ELE1BQU0sU0FBUyxHQUFHLElBQUEsOEJBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQztZQUM1QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBOEIsQ0FBQztZQUN6RCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBMkIsQ0FBQztZQUN0RCxNQUFNLFdBQVcsR0FBNEIsRUFBRSxDQUFDO1lBQ2hELElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQy9DLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUM7WUFDekMsQ0FBQztZQUNELE1BQU0sSUFBSSxHQUFXLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sUUFBUSxHQUFXLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVGLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUNuQyxNQUFNLFFBQVEsR0FBb0MsSUFBSSx1QkFBZSxFQUFrQixDQUFDO1lBRXhGLElBQUksQ0FBQztnQkFDSCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxLQUFLLE1BQU0sQ0FBQztnQkFDekQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBa0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN0RixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUM3RixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO2dCQUNqQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ2xDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDN0IsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2hCLFFBQVEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29CQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztnQkFFRCxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUM7Z0JBQzlELENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBb0IsRUFBRSxFQUFFO29CQUM1QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDckIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2dCQUNILFFBQVEsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQzdCLE1BQU0sRUFBRSxHQUFHO29CQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFHLEdBQWEsRUFBRSxPQUFPLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDL0UsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtpQkFDbEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFTSxPQUFPLENBQUMsR0FBYyxFQUFFLEdBQWM7WUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUEsOEJBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQztZQUM1QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBa0IsQ0FBQztZQUM3QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBZSxDQUFDO1lBQzFDLE1BQU0sV0FBVyxHQUE0QixFQUFFLENBQUM7WUFDaEQsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQVksRUFBRSxJQUEyQjtnQkFDaEYsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2hCLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTt3QkFDN0IsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUcsR0FBYSxFQUFFLE9BQU8sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO3dCQUMvRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO3FCQUNsQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDekMsQ0FBQztnQkFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLHdCQUFnQixDQUN4QyxtQ0FBbUMsRUFDbkMsYUFBYSxXQUFXLGVBQWUsV0FBVyxFQUFFLENBQ3JELENBQUM7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQzdCLE1BQU0sRUFBRSxHQUFHO29CQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDaEYsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtpQkFDbEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRU0sVUFBVSxDQUFDLEdBQWMsRUFBRSxHQUFjO1lBQzlDLE1BQU0sU0FBUyxHQUFHLElBQUEsOEJBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTSxPQUFPLEdBQWMsU0FBUyxDQUFDLElBQWlCLENBQUM7WUFFdkQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFtQixFQUFFLEVBQUU7Z0JBQzlDLE1BQU0sWUFBWSxHQUFHLElBQUksNkJBQXFCLEVBQUUsQ0FBQztnQkFDakQsWUFBWSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM5QixZQUFZLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQzFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDbEMsWUFBWSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUNwQyxZQUFZLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xDLFlBQVksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3RELENBQUMsQ0FBQztZQUVGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxRQUFtQixFQUFFLEVBQUU7Z0JBQ3BELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNsQixNQUFNLEtBQUssR0FBYyxPQUFPLENBQUMsS0FBbUI7eUJBQ2pELEdBQUcsQ0FBQyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQ3JCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUcsSUFBMkMsRUFBRSxJQUFlLENBQ3pGO3lCQUNBLE1BQU0sQ0FBQyxDQUFDLFFBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUN2RCxNQUFNLEtBQUssR0FDVCxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBa0IsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDM0YsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2hGLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUN2QixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx1RkFBdUYsQ0FBQyxDQUFDO3dCQUN4RyxPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDbkMsQ0FBQztvQkFDRCxZQUFZLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUMxRCxDQUFDLFFBQW1CLEVBQUUsRUFBRTt3QkFDdEIsTUFBTSxJQUFJLEdBQWMsUUFBUSxDQUFDO3dCQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDeEIsT0FBTyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ25DLENBQUMsRUFDRCxDQUFDLEtBQWMsRUFBRSxFQUFFO3dCQUNqQixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO3dCQUNoRCxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDdkIsT0FBTyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ25DLENBQUMsQ0FDRixDQUFDO29CQUNGLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUM7WUFFRixZQUFZLENBQUMsWUFBWSxDQUN2QixPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFDdEIsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQ2xCLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxFQUNuQixPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FDdkIsQ0FBQyxTQUFTLENBQ1QsQ0FBQyxZQUF1QixFQUFFLEVBQUU7Z0JBQzFCLE1BQU0sUUFBUSxHQUFjLFlBQVksQ0FBQztnQkFDekMsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxDQUFDLEVBQ0QsQ0FBQyxLQUFjLEVBQUUsRUFBRTtnQkFDakIsSUFBSyxLQUFlLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7b0JBQ25FLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FDaEUsQ0FBQyxZQUE4QixFQUFFLEVBQUU7d0JBQ2pDLElBQUksWUFBWSxFQUFFLENBQUM7NEJBQ2pCLE9BQU8scUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQzdDLENBQUM7d0JBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFOzRCQUM3QixNQUFNLEVBQUUsR0FBRzs0QkFDWCxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRyxLQUFlLEVBQUUsT0FBTyxJQUFJLHVCQUF1QixFQUFFLENBQUM7NEJBQ2pGLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7eUJBQ2xDLENBQUMsQ0FBQztvQkFDTCxDQUFDLEVBQ0QsQ0FBQyxXQUFvQixFQUFFLEVBQUU7d0JBQ3ZCLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTs0QkFDN0IsTUFBTSxFQUFFLEdBQUc7NEJBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUcsS0FBZSxFQUFFLE9BQU8sSUFBSSx1QkFBdUIsRUFBRSxDQUFDOzRCQUNqRixPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO3lCQUNsQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUNGLENBQUM7b0JBQ0YsT0FBTztnQkFDVCxDQUFDO2dCQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtvQkFDN0IsTUFBTSxFQUFFLEdBQUc7b0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUcsS0FBZSxFQUFFLE9BQU8sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO29CQUNqRixPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQ0YsQ0FBQztZQUVGLE9BQU87UUFDVCxDQUFDO1FBRU0sVUFBVSxDQUFDLEdBQWMsRUFBRSxHQUFjO1lBQzlDLE1BQU0sU0FBUyxHQUFHLElBQUEsOEJBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTSxPQUFPLEdBQWMsU0FBUyxDQUFDLElBQWlCLENBQUM7WUFFdkQsWUFBWSxDQUFDLGlCQUFpQixDQUM1QixPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFDaEIsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQ2xCLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxFQUNuQixPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FDdkIsQ0FBQyxTQUFTLENBQ1QsQ0FBQyxZQUF1QixFQUFFLEVBQUU7Z0JBQzFCLE1BQU0sUUFBUSxHQUFjLFlBQVksQ0FBQztnQkFDekMsSUFBSSxJQUFJLEdBQVksSUFBSSxDQUFDO2dCQUN6QixLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFeEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUNoRCxLQUFLLE1BQU0sUUFBUSxJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNoQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7NEJBQ2hELElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ25CLE1BQU07d0JBQ1IsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7Z0JBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2xCLE1BQU0sS0FBSyxHQUFjLE9BQU8sQ0FBQyxLQUFtQjt5QkFDakQsR0FBRyxDQUFDLENBQUMsSUFBYSxFQUFFLEVBQUUsQ0FDckIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBRyxJQUEyQyxFQUFFLElBQWUsQ0FDekY7eUJBQ0EsTUFBTSxDQUFDLENBQUMsUUFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZELE1BQU0sS0FBSyxHQUFrQixlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBa0IsQ0FBQyxDQUFDO29CQUN0RixNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzVELFlBQVksQ0FBQyxlQUFlLENBQUUsSUFBMkMsQ0FBQyxFQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUN4RyxDQUFDLElBQWEsRUFBRSxFQUFFO3dCQUNwQixpQ0FBaUM7d0JBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQTBDLENBQUM7d0JBQ3JELE1BQU0sWUFBWSxHQUFHLElBQUksNkJBQXFCLEVBQUUsQ0FBQzt3QkFDakQsWUFBWSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBWSxDQUFDO3dCQUNqQyxZQUFZLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFrQixDQUFDO3dCQUM3QyxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFjLENBQUM7d0JBQ3JDLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQWUsQ0FBQzt3QkFDdkMsWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBYyxDQUFDO3dCQUNyQyxZQUFZLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUF3QixDQUFDO3dCQUNwRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ2xELENBQUMsRUFDRCxDQUFDLEtBQWMsRUFBRSxFQUFFO3dCQUNqQixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO3dCQUNoRCxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDdkIseUNBQXlDO3dCQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLHdCQUFnQixDQUFFLEtBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFOzRCQUN0QixNQUFNLEVBQUUsR0FBRzs0QkFDWCxhQUFhLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQ2hGLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7eUJBQ2xDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQ0YsQ0FBQztvQkFDRixPQUFPO2dCQUNULENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLENBQUMsR0FBRyxJQUEwQyxDQUFDO29CQUNyRCxNQUFNLFlBQVksR0FBMEIsSUFBSSw2QkFBcUIsRUFBRSxDQUFDO29CQUN4RSxZQUFZLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFZLENBQUM7b0JBQ2pDLFlBQVksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQWtCLENBQUM7b0JBQzdDLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQWMsQ0FBQztvQkFDckMsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBZSxDQUFDO29CQUN2QyxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFjLENBQUM7b0JBQ3JDLFlBQVksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQXdCLENBQUM7b0JBRXBELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdEQsQ0FBQztZQUNILENBQUMsRUFDRCxDQUFDLEtBQWMsRUFBRSxFQUFFO2dCQUNqQixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsSUFBSyxLQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3BFLE1BQU0sYUFBYSxHQUFHLElBQUksd0JBQWdCLENBQUUsS0FBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNyRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTt3QkFDN0IsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNoRixPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO3FCQUNsQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO3dCQUM3QixNQUFNLEVBQUUsR0FBRzt3QkFDWCxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRyxLQUFlLEVBQUUsT0FBTyxJQUFJLHVCQUF1QixFQUFFLENBQUM7d0JBQ2pGLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7cUJBQ2xDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUNGLENBQUM7WUFFRixPQUFPO1FBQ1QsQ0FBQztRQUVNLGdCQUFnQixDQUFDLEdBQWMsRUFBRSxHQUFjO1lBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUEsOEJBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFZLENBQUM7WUFFNUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLElBQUksR0FBVyxJQUFBLFNBQU0sR0FBRSxDQUFDO2dCQUM5QixZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQzdDLENBQUMsWUFBdUIsRUFBRSxFQUFFO29CQUMxQixNQUFNLElBQUksR0FBYyxZQUFZLENBQUM7b0JBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksK0JBQXVCLEVBQUUsQ0FBQztvQkFDL0MsUUFBUSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUM7b0JBQ3JCLFFBQVEsQ0FBQyxRQUFRLEdBQUksSUFBMkMsQ0FBQyxRQUFrQixDQUFDO29CQUNwRixRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDLEVBQ0QsQ0FBQyxLQUFjLEVBQUUsRUFBRTtvQkFDakIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztvQkFDdkMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3ZCLE1BQU0sYUFBYSxHQUFHLElBQUksd0JBQWdCLENBQUUsS0FBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNyRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7d0JBQ3RCLE1BQU0sRUFBRSxHQUFHO3dCQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDaEYsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtxQkFDbEMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sYUFBYSxHQUFHLElBQUksd0JBQWdCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDckUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQzdCLE1BQU0sRUFBRSxHQUFHO29CQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDaEYsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtpQkFDbEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRU0sY0FBYyxDQUFDLEdBQWMsRUFBRSxHQUFjO1lBQ2xELE1BQU0sU0FBUyxHQUFHLElBQUEsOEJBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFZLENBQUM7WUFFNUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLElBQUksR0FBVyxFQUFFLENBQUM7Z0JBQ3hCLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FDN0MsQ0FBQyxZQUF1QixFQUFFLEVBQUU7b0JBQzFCLE1BQU0sSUFBSSxHQUFjLFlBQVksQ0FBQztvQkFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSwrQkFBdUIsRUFBRSxDQUFDO29CQUMvQyxRQUFRLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQztvQkFDckIsUUFBUSxDQUFDLFFBQVEsR0FBSSxJQUEyQyxDQUFDLFFBQWtCLENBQUM7b0JBQ3BGLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO29CQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3RDLENBQUMsRUFDRCxDQUFDLEtBQWMsRUFBRSxFQUFFO29CQUNqQixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO29CQUN2QyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdkIsTUFBTSxhQUFhLEdBQUcsSUFBSSx3QkFBZ0IsQ0FBRSxLQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3JFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTt3QkFDdEIsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNoRixPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO3FCQUNsQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUNGLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxhQUFhLEdBQUcsSUFBSSx3QkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2dCQUNyRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtvQkFDN0IsTUFBTSxFQUFFLEdBQUc7b0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoRixPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFFTSxLQUFLLENBQUMsb0JBQW9CLENBQUMsR0FBYyxFQUFFLEdBQWM7WUFDOUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sU0FBUyxHQUFHLElBQUEsOEJBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUM7Z0JBQzVCLE1BQU0sS0FBSyxHQUFrQixlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBa0IsQ0FBQyxDQUFDO2dCQUN0RixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTt3QkFDN0IsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsd0NBQXdDLEVBQUUsQ0FBQzt3QkFDckUsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtxQkFDbEMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLHFCQUFjLEVBQ3JDLFlBQVksQ0FBQyxvQkFBb0IsQ0FDL0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUNsQyxDQUNGLENBQUM7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQzdCLElBQUksRUFBRSxVQUFVO29CQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQzdCLE1BQU0sRUFBRSxHQUFHO29CQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFHLEtBQWUsRUFBRSxPQUFPLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDakYsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtpQkFDbEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQWMsRUFBRSxHQUFjO1lBQ3RELElBQUksQ0FBQztnQkFDSCxNQUFNLFNBQVMsR0FBRyxJQUFBLDhCQUFzQixFQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO2dCQUM3QixNQUFNLEtBQUssR0FBa0IsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQWtCLENBQUMsQ0FBQztnQkFDdEYsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDeEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7d0JBQzdCLE1BQU0sRUFBRSxHQUFHO3dCQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLHdDQUF3QyxFQUFFLENBQUM7d0JBQ3JFLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7cUJBQ2xDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBQSxxQkFBYyxFQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUM3QixJQUFJLEVBQUUsS0FBSztvQkFDWCxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQzdCLE1BQU0sRUFBRSxHQUFHO29CQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFHLEtBQWUsRUFBRSxPQUFPLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDakYsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtpQkFDbEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQWMsRUFBRSxHQUFjO1lBQ3RELE1BQU0sU0FBUyxHQUFHLElBQUEsOEJBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtvQkFDN0IsTUFBTSxFQUFFLEdBQUc7b0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztvQkFDbEQsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtpQkFDbEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEscUJBQWMsRUFBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3RFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTt3QkFDN0IsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQzt3QkFDN0MsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtxQkFDbEMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsTUFBTSxLQUFLLEdBQWtCLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFrQixDQUFDLENBQUM7Z0JBQ3RGLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO3dCQUM3QixNQUFNLEVBQUUsR0FBRzt3QkFDWCxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSx3Q0FBd0MsRUFBRSxDQUFDO3dCQUNyRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO3FCQUNsQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUM3QixJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFzQixDQUFDO3dCQUMxRCxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87d0JBQzlCLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTztxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtpQkFDbEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUM3QixNQUFNLEVBQUUsR0FBRztvQkFDWCxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRyxLQUFlLEVBQUUsT0FBTyxJQUFJLHVCQUF1QixFQUFFLENBQUM7b0JBQ2pGLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7aUJBQ2xDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFjLEVBQUUsR0FBYztZQUN0RCxtQkFBbUI7WUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBQSw4QkFBc0IsRUFBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsSUFBK0IsQ0FBQztZQUN2RCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVsRSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUM3QixNQUFNLEVBQUUsR0FBRztvQkFDWCxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxxREFBcUQsRUFBRSxDQUFDO29CQUNsRixPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxhQUFhLEtBQUssZUFBZSxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUM3QixNQUFNLEVBQUUsR0FBRztvQkFDWCxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxzQ0FBc0MsRUFBRSxDQUFDO29CQUNuRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sS0FBSyxHQUFrQixlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBa0IsQ0FBQyxDQUFDO2dCQUN0RixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTt3QkFDN0IsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsd0NBQXdDLEVBQUUsQ0FBQzt3QkFDckUsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtxQkFDbEMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHFCQUFjLEVBQ25DLFlBQVksQ0FBQyxZQUFZLENBQ3ZCLGFBQWEsRUFDYixlQUFlLEVBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQyxFQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUNqQixDQUNGLENBQUM7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQzdCLElBQUksRUFBRSxRQUFRO29CQUNkLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7aUJBQ2xDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV2QixNQUFNLFlBQVksR0FBSSxLQUFlLEVBQUUsT0FBTyxJQUFJLHVCQUF1QixDQUFDO2dCQUMxRSxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckQsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDO2dCQUVyQixJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDdEYsVUFBVSxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsQ0FBQztxQkFBTSxJQUNMLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7b0JBQ3RDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7b0JBQ3JDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7b0JBQ2xDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxzQ0FBc0MsQ0FBQyxFQUNsRSxDQUFDO29CQUNELFVBQVUsR0FBRyxHQUFHLENBQUM7Z0JBQ25CLENBQUM7Z0JBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQzdCLE1BQU0sRUFBRSxVQUFVO29CQUNsQixhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQztvQkFDekMsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtpQkFDbEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFTSxlQUFlLENBQUMsR0FBYyxFQUFFLEdBQWM7WUFDbkQsTUFBTSxTQUFTLEdBQUcsSUFBQSw4QkFBc0IsRUFBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxNQUFNLEtBQUssR0FBa0IsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQWtCLENBQUMsQ0FBQztZQUN0RixNQUFNLFFBQVEsR0FBNkIsSUFBSSx1QkFBZSxFQUFXLENBQUM7WUFDMUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDL0MsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBRS9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBYyxFQUFFLEdBQWM7WUFDMUQsTUFBTSxTQUFTLEdBQUcsSUFBQSw4QkFBc0IsRUFBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsSUFBK0IsQ0FBQztZQUN2RCxNQUFNLFFBQVEsR0FBSSxJQUFJLENBQUMsUUFBK0IsSUFBSyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQStCLENBQUM7WUFDM0csS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsOEJBQThCLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxLQUFLLEdBQWtCLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFrQixDQUFDLENBQUM7Z0JBQ3RGLE1BQU0sWUFBWSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDeEQsTUFBTSxRQUFRLEdBQXNCLElBQUkseUJBQWlCLENBQ3ZELFFBQVEsR0FBRyxzQkFBc0IsRUFDakMsUUFBUSxHQUFHLHNCQUFzQixDQUNsQyxDQUFDO2dCQUNGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLGFBQWEsR0FBRyxJQUFJLHdCQUFnQixDQUN4QyxvRkFBb0YsQ0FDckYsQ0FBQztnQkFDRixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtvQkFDN0IsTUFBTSxFQUFFLEdBQUc7b0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoRixPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBYyxFQUFFLEdBQWM7WUFDckQsSUFBSSxDQUFDO2dCQUNILE1BQU0sU0FBUyxHQUFHLElBQUEsOEJBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO3dCQUM3QixNQUFNLEVBQUUsR0FBRzt3QkFDWCxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxDQUFDO3dCQUNsRCxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO3FCQUNsQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxNQUFNLEtBQUssR0FBa0IsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQWtCLENBQUMsQ0FBQztnQkFDdEYsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDeEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7d0JBQzdCLE1BQU0sRUFBRSxHQUFHO3dCQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLHdDQUF3QyxFQUFFLENBQUM7d0JBQ3JFLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7cUJBQ2xDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUNsRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTt3QkFDN0IsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUscUNBQXFDLEVBQUUsQ0FBQzt3QkFDbEUsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtxQkFDbEMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTSxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLENBQUMsQ0FBQztZQUM1RixDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQzdCLE1BQU0sRUFBRSxHQUFHO29CQUNYLGFBQWEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFHLEdBQWEsRUFBRSxPQUFPLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDL0UsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtpQkFDbEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQWMsRUFBRSxHQUFjO1lBQ3BELElBQUksQ0FBQztnQkFDSCxNQUFNLFNBQVMsR0FBRyxJQUFBLDhCQUFzQixFQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTt3QkFDN0IsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsQ0FBQzt3QkFDbEQsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtxQkFDbEMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTSxLQUFLLEdBQWtCLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFrQixDQUFDLENBQUM7Z0JBQ3RGLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO3dCQUM3QixNQUFNLEVBQUUsR0FBRzt3QkFDWCxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSx3Q0FBd0MsRUFBRSxDQUFDO3dCQUNyRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO3FCQUNsQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxNQUFNLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hHLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDO1lBQzNGLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtvQkFDN0IsTUFBTSxFQUFFLEdBQUc7b0JBQ1gsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUcsR0FBYSxFQUFFLE9BQU8sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO29CQUMvRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztLQU9GO0lBbnRCWSwwQkFBYyxpQkFtdEIxQixDQUFBO0FBQ0gsQ0FBQyxFQTF0QmdCLFdBQVcsMkJBQVgsV0FBVyxRQTB0QjNCIn0=
|
|
752
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlck1hbmFnZW1lbnRDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRyb2xsZXJzL3dlYnNlcnZpY2UvVXNlck1hbmFnZW1lbnRDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQXlCcUI7QUFFckIsK0JBQW9DO0FBQ3BDLCtCQUFzQztBQUV0QyxJQUFpQixXQUFXLENBZzJCM0I7QUFoMkJELFdBQWlCLFdBQVc7SUFDMUI7Ozs7T0FJRztJQUNILE1BQWEsY0FBZSxTQUFRLG1CQUFXLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFDN0Q7O1dBRUc7UUFDZ0IsZ0JBQWdCLEdBQWE7WUFDOUMsV0FBVztZQUNYLFNBQVM7WUFDVCxZQUFZO1lBQ1osWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsc0JBQXNCO1lBQ3RCLGNBQWM7WUFDZCxjQUFjO1lBQ2QsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFDbEIsYUFBYTtZQUNiLFlBQVk7U0FDYixDQUFDO1FBRU0sS0FBSyxDQUFDLDJCQUEyQixDQUFDLEtBQXVCLEVBQUUsT0FBZ0I7WUFDakYsTUFBTSxLQUFLLEdBQ1QsT0FBTyxRQUFRLEtBQUssV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDekcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNULE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FDbEMsS0FBNkMsRUFDN0MsQ0FBQyxJQUF3QyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFB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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface FigshareVocabularyErrorResponse {
|
|
2
|
+
status: number;
|
|
3
|
+
title: string;
|
|
4
|
+
detail: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Translate service-level errors into HTTP statuses.
|
|
8
|
+
*
|
|
9
|
+
* Cross-brand identifiers deliberately produce 404 so the API never discloses that a
|
|
10
|
+
* resource exists in another tenant, and no branch ever surfaces Figshare credentials
|
|
11
|
+
* or raw request configuration.
|
|
12
|
+
*/
|
|
13
|
+
export declare function toFigshareVocabularyErrorResponse(error: unknown): FigshareVocabularyErrorResponse;
|
|
14
|
+
//# sourceMappingURL=figshare-vocabulary-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figshare-vocabulary-errors.d.ts","sourceRoot":"","sources":["../../../src/controllers/webservice/figshare-vocabulary-errors.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,GAAG,+BAA+B,CA2BjG"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toFigshareVocabularyErrorResponse = toFigshareVocabularyErrorResponse;
|
|
4
|
+
const vocabulary_errors_1 = require("../../services/figshare-v2/vocabulary-errors");
|
|
5
|
+
/**
|
|
6
|
+
* Translate service-level errors into HTTP statuses.
|
|
7
|
+
*
|
|
8
|
+
* Cross-brand identifiers deliberately produce 404 so the API never discloses that a
|
|
9
|
+
* resource exists in another tenant, and no branch ever surfaces Figshare credentials
|
|
10
|
+
* or raw request configuration.
|
|
11
|
+
*/
|
|
12
|
+
function toFigshareVocabularyErrorResponse(error) {
|
|
13
|
+
if (error instanceof vocabulary_errors_1.FigshareVocabularyError) {
|
|
14
|
+
switch (error.code) {
|
|
15
|
+
case 'relationship-boundary':
|
|
16
|
+
return { status: 404, title: 'Not found', detail: error.message };
|
|
17
|
+
case 'preview-expired':
|
|
18
|
+
return { status: 410, title: 'Preview expired', detail: error.message };
|
|
19
|
+
case 'stale-preview':
|
|
20
|
+
case 'crosswalk-revision':
|
|
21
|
+
return { status: 409, title: 'Conflict', detail: error.message };
|
|
22
|
+
case 'catalogue-invalid':
|
|
23
|
+
return { status: 422, title: 'Unprocessable request', detail: error.message };
|
|
24
|
+
case 'snapshot-too-large':
|
|
25
|
+
return { status: 422, title: 'Catalogue too large', detail: error.message };
|
|
26
|
+
case 'transport':
|
|
27
|
+
return {
|
|
28
|
+
status: 502,
|
|
29
|
+
title: 'Figshare unavailable',
|
|
30
|
+
detail: error.message,
|
|
31
|
+
};
|
|
32
|
+
default:
|
|
33
|
+
return { status: 400, title: 'Bad request', detail: error.message };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
37
|
+
return { status: 400, title: 'Bad request', detail: message };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlnc2hhcmUtdm9jYWJ1bGFyeS1lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJvbGxlcnMvd2Vic2VydmljZS9maWdzaGFyZS12b2NhYnVsYXJ5LWVycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWVBLDhFQTJCQztBQTFDRCxvRkFBdUY7QUFRdkY7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsaUNBQWlDLENBQUMsS0FBYztJQUM5RCxJQUFJLEtBQUssWUFBWSwyQ0FBdUIsRUFBRSxDQUFDO1FBQzdDLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25CLEtBQUssdUJBQXVCO2dCQUMxQixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEUsS0FBSyxpQkFBaUI7Z0JBQ3BCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFFLEtBQUssZUFBZSxDQUFDO1lBQ3JCLEtBQUssb0JBQW9CO2dCQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkUsS0FBSyxtQkFBbUI7Z0JBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hGLEtBQUssb0JBQW9CO2dCQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5RSxLQUFLLFdBQVc7Z0JBQ2QsT0FBTztvQkFDTCxNQUFNLEVBQUUsR0FBRztvQkFDWCxLQUFLLEVBQUUsc0JBQXNCO29CQUM3QixNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU87aUJBQ3RCLENBQUM7WUFDSjtnQkFDRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDaEUsQ0FBQyJ9
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import { FormConfigFrame } from '@researchdatabox/sails-ng-common';
|
|
2
|
+
/**
|
|
3
|
+
* Core form configurations.
|
|
4
|
+
*
|
|
5
|
+
* Core ships only the framework-generated read-only form. Demo forms
|
|
6
|
+
* (default-1.0-draft, dataRecord-1.0-draft, etc.) now live in redbox-hook-dev
|
|
7
|
+
* and are merged in by the loader when that hook is installed.
|
|
8
|
+
*/
|
|
2
9
|
export declare const FormConfigExports: Record<string, FormConfigFrame>;
|
|
3
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/form-config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/form-config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAInE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAE7D,CAAC"}
|
|
@@ -4,12 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.FormConfigExports = void 0;
|
|
7
|
-
const default_1_0_draft_1 = __importDefault(require("./default-1.0-draft"));
|
|
8
|
-
const dataRecord_1_0_draft_1 = __importDefault(require("./dataRecord-1.0-draft"));
|
|
9
7
|
const generated_view_only_1 = __importDefault(require("./generated-view-only"));
|
|
8
|
+
/**
|
|
9
|
+
* Core form configurations.
|
|
10
|
+
*
|
|
11
|
+
* Core ships only the framework-generated read-only form. Demo forms
|
|
12
|
+
* (default-1.0-draft, dataRecord-1.0-draft, etc.) now live in redbox-hook-dev
|
|
13
|
+
* and are merged in by the loader when that hook is installed.
|
|
14
|
+
*/
|
|
10
15
|
exports.FormConfigExports = {
|
|
11
|
-
'default-1.0-draft': default_1_0_draft_1.default,
|
|
12
|
-
'dataRecord-1.0-draft': dataRecord_1_0_draft_1.default,
|
|
13
16
|
'generated-view-only': generated_view_only_1.default,
|
|
14
17
|
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZm9ybS1jb25maWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsZ0ZBQXNEO0FBRXREOzs7Ozs7R0FNRztBQUNVLFFBQUEsaUJBQWlCLEdBQW9DO0lBQ2hFLHFCQUFxQixFQUFFLDZCQUFpQjtDQUN6QyxDQUFDIn0=
|
|
@@ -4,14 +4,23 @@ type HookFactoryResult = {
|
|
|
4
4
|
defaults?: Record<string, unknown>;
|
|
5
5
|
routes?: unknown;
|
|
6
6
|
configure?: () => void;
|
|
7
|
-
initialize?: (
|
|
7
|
+
initialize?: () => Promise<void>;
|
|
8
8
|
};
|
|
9
9
|
export type HookRegistrationMap = Record<string, unknown>;
|
|
10
|
+
type HookDone = (error?: Error) => void;
|
|
11
|
+
type HookInitializer = (sails: Sails.Application, done: HookDone) => void | Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Declares the capabilities contributed by an installable ReDBox hook.
|
|
14
|
+
*
|
|
15
|
+
* @extensionPoint Pass registration functions to `defineRedboxHook`; the loader calls them during static shim discovery. Registration functions must be deterministic and must not require a lifted Sails application.
|
|
16
|
+
* @remarks Service and controller maps use the core registry names when replacing a core implementation. Hook initializers may use either Promise or callback completion.
|
|
17
|
+
* @see https://github.com/redbox-mint/redbox-portal/wiki/Redbox-Loader
|
|
18
|
+
*/
|
|
10
19
|
export type DefineRedboxHookOptions = {
|
|
11
20
|
defaults?: Record<string, unknown>;
|
|
12
21
|
routes?: ((sails: Sails.Application) => unknown) | unknown;
|
|
13
22
|
configure?: (sails: Sails.Application) => void;
|
|
14
|
-
initialize?:
|
|
23
|
+
initialize?: HookInitializer;
|
|
15
24
|
registerRedboxConfig?: () => HookRegistrationMap;
|
|
16
25
|
registerHookApiRoutes?: () => readonly ApiRouteDefinition[];
|
|
17
26
|
registerRedboxControllers?: () => HookRegistrationMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineRedboxHook.d.ts","sourceRoot":"","sources":["../../src/hooks/defineRedboxHook.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"defineRedboxHook.d.ts","sourceRoot":"","sources":["../../src/hooks/defineRedboxHook.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,KAAK,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAKxC,KAAK,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAM1F;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC,GAAG,OAAO,CAAC;IAC3D,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;IAC/C,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,mBAAmB,CAAC;IACjD,qBAAqB,CAAC,EAAE,MAAM,SAAS,kBAAkB,EAAE,CAAC;IAC5D,yBAAyB,CAAC,EAAE,MAAM,mBAAmB,CAAC;IACtD,mCAAmC,CAAC,EAAE,MAAM,mBAAmB,CAAC;IAChE,sBAAsB,CAAC,EAAE,MAAM,mBAAmB,CAAC;IACnD,yBAAyB,CAAC,EAAE,MAAM,mBAAmB,CAAC;IACtD,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,KAAK,iBAAiB,CAAC,GAAG;IAC3E,oBAAoB,CAAC,EAAE,MAAM,mBAAmB,CAAC;IACjD,qBAAqB,CAAC,EAAE,MAAM,SAAS,kBAAkB,EAAE,CAAC;IAC5D,yBAAyB,CAAC,EAAE,MAAM,mBAAmB,CAAC;IACtD,mCAAmC,CAAC,EAAE,MAAM,mBAAmB,CAAC;IAChE,sBAAsB,CAAC,EAAE,MAAM,mBAAmB,CAAC;IACnD,yBAAyB,CAAC,EAAE,MAAM,mBAAmB,CAAC;IACtD,kBAAkB,CAAC,EAAE,MAAM,mBAAmB,CAAC;CAChD,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,iBAAiB,CAgFpF;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -2,24 +2,53 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defineRedboxHook = defineRedboxHook;
|
|
4
4
|
require("../sails");
|
|
5
|
+
function normalizeError(error) {
|
|
6
|
+
return error instanceof Error ? error : new Error(String(error));
|
|
7
|
+
}
|
|
5
8
|
function defineRedboxHook(options) {
|
|
6
9
|
const hookFactory = ((sails) => {
|
|
7
10
|
const hook = {
|
|
8
11
|
defaults: options.defaults ?? {},
|
|
9
12
|
};
|
|
10
13
|
if (options.routes) {
|
|
11
|
-
hook.routes = typeof options.routes === 'function'
|
|
12
|
-
? options.routes(sails)
|
|
13
|
-
: options.routes;
|
|
14
|
+
hook.routes = typeof options.routes === 'function' ? options.routes(sails) : options.routes;
|
|
14
15
|
}
|
|
15
16
|
if (options.configure) {
|
|
16
17
|
hook.configure = () => {
|
|
17
18
|
options.configure?.(sails);
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
const initializer = options.initialize;
|
|
22
|
+
if (initializer) {
|
|
23
|
+
hook.initialize = async () => {
|
|
24
|
+
// Sails sees a zero-argument Promise initializer, so it never hands the wrapper a
|
|
25
|
+
// callback of its own. Internally the bridge always supplies `done` and also honours a
|
|
26
|
+
// returned promise, so both author styles work without sniffing Function.length -
|
|
27
|
+
// which is inaccurate for default and rest parameters.
|
|
28
|
+
await new Promise((resolve, reject) => {
|
|
29
|
+
let settled = false;
|
|
30
|
+
const done = error => {
|
|
31
|
+
if (settled) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
settled = true;
|
|
35
|
+
if (error) {
|
|
36
|
+
reject(normalizeError(error));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
resolve();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
try {
|
|
43
|
+
const result = initializer(sails, done);
|
|
44
|
+
if (result && typeof result.then === 'function') {
|
|
45
|
+
void Promise.resolve(result).then(() => done(), done);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
done(normalizeError(error));
|
|
50
|
+
}
|
|
51
|
+
});
|
|
23
52
|
};
|
|
24
53
|
}
|
|
25
54
|
return hook;
|
|
@@ -47,4 +76,4 @@ function defineRedboxHook(options) {
|
|
|
47
76
|
return hookFactory;
|
|
48
77
|
}
|
|
49
78
|
exports.default = defineRedboxHook;
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lUmVkYm94SG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy9kZWZpbmVSZWRib3hIb29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBc0RBLDRDQWdGQztBQXRJRCxvQkFBa0I7QUFtQmxCLFNBQVMsY0FBYyxDQUFDLEtBQWM7SUFDcEMsT0FBTyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFpQ0QsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBZ0M7SUFDL0QsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEtBQXdCLEVBQXFCLEVBQUU7UUFDbkUsTUFBTSxJQUFJLEdBQXNCO1lBQzlCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUU7U0FDakMsQ0FBQztRQUVGLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxPQUFPLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM5RixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFTLEVBQUU7Z0JBQzFCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN2QyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxJQUFtQixFQUFFO2dCQUMxQyxrRkFB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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface RedboxHookPackageMetadata {
|
|
2
|
+
name: string;
|
|
3
|
+
module: string;
|
|
4
|
+
packageJsonPath: string;
|
|
5
|
+
rootPath: string;
|
|
6
|
+
sails: Record<string, unknown>;
|
|
7
|
+
listedPriorityIndex?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface RedboxHookOrderConfig {
|
|
10
|
+
hookLoadPriority: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface RedboxHookDiscoveryOptions {
|
|
13
|
+
includeDevDependencies?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function readHookLoadPriority(appPath: string): string[];
|
|
16
|
+
export declare function compareHookPrecedence(a: RedboxHookPackageMetadata, b: RedboxHookPackageMetadata): number;
|
|
17
|
+
export declare function discoverRedboxHookPackages(appPath: string, options?: RedboxHookDiscoveryOptions): RedboxHookPackageMetadata[];
|
|
18
|
+
export declare function getHookPrecedenceOrder(appPath: string): RedboxHookPackageMetadata[];
|
|
19
|
+
export declare function getHookProcessingOrder(appPath: string): RedboxHookPackageMetadata[];
|
|
20
|
+
//# sourceMappingURL=hookDiscovery.d.ts.map
|