runlify 0.0.714 → 0.0.715
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/build/cli.js +20 -52
- package/build/commands/availableEnvironments.js +16 -51
- package/build/commands/generate.js +10 -46
- package/build/commands/init.js +73 -140
- package/build/commands/login.js +6 -42
- package/build/commands/logout.js +5 -41
- package/build/commands/pullEnvs.js +23 -70
- package/build/commands/readEnv.js +16 -45
- package/build/commands/regen.js +17 -48
- package/build/commands/runlify.js +6 -37
- package/build/commands/showToken.js +14 -45
- package/build/commands/start.js +57 -84
- package/build/commands/tryGetMeta.js +7 -43
- package/build/documentation/algoritmToDoc.js +4 -4
- package/build/documentation/algoritmToDoc.spec.js +5 -5
- package/build/documentation/curlExampleToText.js +15 -16
- package/build/documentation/curlExampleToText.spec.js +32 -16
- package/build/documentation/doc.js +1 -2
- package/build/documentation/docToFlatDoc.js +13 -17
- package/build/documentation/docToFlatDoc.spec.js +9 -9
- package/build/documentation/flatDoc.js +1 -2
- package/build/documentation/flatDocToText.js +4 -6
- package/build/documentation/flatDocToText.spec.js +20 -8
- package/build/documentation/templateDoc.js +1 -2
- package/build/documentation/templateDocToDoc.js +2 -2
- package/build/extensions/auth.js +64 -124
- package/build/extensions/cli-extension.js +3 -3
- package/build/extensions/cloudEnv.js +76 -120
- package/build/extensions/cloudMeta.js +35 -73
- package/build/extensions/globalConfig.js +37 -80
- package/build/extensions/localConfig.js +15 -46
- package/build/extensions/preventRunningIfUpdateAvailable.js +18 -52
- package/build/log.js +6 -6
- package/build/projectsGeneration/args.js +33 -53
- package/build/projectsGeneration/builders/AdditionalServiceBuilder.js +62 -96
- package/build/projectsGeneration/builders/BaseBuilder.js +30 -34
- package/build/projectsGeneration/builders/BaseSavableEntityBuilder.js +272 -312
- package/build/projectsGeneration/builders/CatalogBuilder.js +17 -46
- package/build/projectsGeneration/builders/ConfigVarBuilder.js +25 -36
- package/build/projectsGeneration/builders/DeploymentBuilder.js +18 -47
- package/build/projectsGeneration/builders/DocumentBuilder.js +26 -56
- package/build/projectsGeneration/builders/InfoRegistryBuilder.js +106 -140
- package/build/projectsGeneration/builders/PageBuilder.js +22 -51
- package/build/projectsGeneration/builders/PermissionBuilder.js +12 -41
- package/build/projectsGeneration/builders/ReportBuilder.js +23 -52
- package/build/projectsGeneration/builders/RestApiBuilder.js +20 -50
- package/build/projectsGeneration/builders/RestApiMethodBuilder.js +25 -54
- package/build/projectsGeneration/builders/RoleBuilder.js +12 -41
- package/build/projectsGeneration/builders/SumRegistryBuilder.js +100 -133
- package/build/projectsGeneration/builders/SystemMetaBuilder.js +281 -324
- package/build/projectsGeneration/builders/TelegramBotBuilder.js +18 -47
- package/build/projectsGeneration/builders/docs/DocumentationOfDocumentBuilder.js +8 -9
- package/build/projectsGeneration/builders/fields/BaseFieldBuilder.js +89 -105
- package/build/projectsGeneration/builders/fields/IdFieldBuilder.js +24 -54
- package/build/projectsGeneration/builders/fields/LinkFieldBuilder.js +33 -62
- package/build/projectsGeneration/builders/fields/ModelFieldBuilder.js +18 -47
- package/build/projectsGeneration/builders/fields/ScalarFieldBuilder.js +11 -42
- package/build/projectsGeneration/builders/fields/ViewLinkFieldBuilder.js +26 -55
- package/build/projectsGeneration/builders/integrationClients/IntegrationClientArgsModelBuilder.js +6 -23
- package/build/projectsGeneration/builders/integrationClients/IntegrationClientBaseModelBuilder.js +28 -57
- package/build/projectsGeneration/builders/integrationClients/IntegrationClientBuilder.js +25 -54
- package/build/projectsGeneration/builders/integrationClients/IntegrationClientQueryMethodsBuilder.js +18 -47
- package/build/projectsGeneration/builders/integrationClients/IntegrationClientReturnModelBuilder.js +12 -41
- package/build/projectsGeneration/builders/materialUiIcons.js +2 -2
- package/build/projectsGeneration/builders/mehods/ArgsModelBuilder.js +6 -23
- package/build/projectsGeneration/builders/mehods/BaseModelBuilder.js +30 -59
- package/build/projectsGeneration/builders/mehods/MethodBuilder.js +36 -66
- package/build/projectsGeneration/builders/mehods/ReturnModelBuilder.js +12 -41
- package/build/projectsGeneration/builders/menu/BaseMenuItemBuilder.js +24 -54
- package/build/projectsGeneration/builders/menu/ExternalEnvMenuItemBuilder.js +11 -40
- package/build/projectsGeneration/builders/menu/ExternalMenuItemBuilder.js +11 -40
- package/build/projectsGeneration/builders/menu/GroupMenuItemBuilder.js +31 -66
- package/build/projectsGeneration/builders/menu/InternalMenuItemBuilder.js +16 -45
- package/build/projectsGeneration/builders/tsFilterFields.js +11 -12
- package/build/projectsGeneration/builders/tsFilterFields.spec.js +29 -11
- package/build/projectsGeneration/builders/ui/FormsBuilder.js +9 -10
- package/build/projectsGeneration/builders/ui/ListFormBuilder.js +9 -10
- package/build/projectsGeneration/builders/ui/ListFormFilterBuilder.js +14 -16
- package/build/projectsGeneration/builders/ui/ListFormFilterFieldBuilder.js +8 -9
- package/build/projectsGeneration/builders/utils/accessFunctions.js +4 -4
- package/build/projectsGeneration/builders/validation/baseValudationToYupAssertions.js +4 -4
- package/build/projectsGeneration/builders/validation/bigintValudationToYupAssertions.js +5 -5
- package/build/projectsGeneration/builders/validation/bigintValudationToYupAssertions.spec.js +7 -7
- package/build/projectsGeneration/builders/validation/floatValudationToYupAssertions.js +4 -4
- package/build/projectsGeneration/builders/validation/floatValudationToYupAssertions.spec.js +6 -6
- package/build/projectsGeneration/builders/validation/intValudationToYupAssertions.js +9 -9
- package/build/projectsGeneration/builders/validation/intValudationToYupAssertions.spec.js +9 -9
- package/build/projectsGeneration/builders/validation/numberValudationToYupAssertions.js +10 -10
- package/build/projectsGeneration/builders/validation/stringValudationToYupAssertions.js +6 -6
- package/build/projectsGeneration/builders/validation/stringValudationToYupAssertions.spec.js +6 -6
- package/build/projectsGeneration/commonEntities/addAggregateTrackings.js +3 -3
- package/build/projectsGeneration/commonEntities/addAuditLogs.js +6 -6
- package/build/projectsGeneration/commonEntities/addAutogeneration.js +4 -4
- package/build/projectsGeneration/commonEntities/addCommonCommands.js +2 -2
- package/build/projectsGeneration/commonEntities/addCommonEntities.js +14 -14
- package/build/projectsGeneration/commonEntities/addConfigurationVariables.js +4 -4
- package/build/projectsGeneration/commonEntities/addLanguages.js +3 -3
- package/build/projectsGeneration/commonEntities/addManagers.js +6 -6
- package/build/projectsGeneration/commonEntities/addRefreshTokens.js +4 -4
- package/build/projectsGeneration/commonEntities/addRoles.js +8 -8
- package/build/projectsGeneration/commonEntities/addTenants.js +3 -3
- package/build/projectsGeneration/commonEntities/addUserSettings.js +7 -7
- package/build/projectsGeneration/commonEntities/addUsers.js +4 -4
- package/build/projectsGeneration/defaultCatalogs/addElasticSearch.js +12 -13
- package/build/projectsGeneration/defaultCatalogs/files.js +6 -6
- package/build/projectsGeneration/fileCleaners/back/graphServices/cleanGraphServices.js +24 -59
- package/build/projectsGeneration/fileCleaners/back/services/cleanServices.js +32 -67
- package/build/projectsGeneration/fileCleaners/cleanFiles.js +7 -38
- package/build/projectsGeneration/fileCleaners/ui/cleanUi.js +7 -39
- package/build/projectsGeneration/fileCleaners/ui/pages/cleanPages.js +24 -59
- package/build/projectsGeneration/fileCleaners/ui/widgets/cleanWidgets.js +10 -40
- package/build/projectsGeneration/fileCleaners/ui/widgets/cleanWidgetsByType.js +29 -62
- package/build/projectsGeneration/genGraphSchemesByLocalGenerator.js +26 -68
- package/build/projectsGeneration/generateAdditionalService.js +41 -98
- package/build/projectsGeneration/generateEntity.js +215 -346
- package/build/projectsGeneration/generateEnvironment.js +157 -265
- package/build/projectsGeneration/generateProject.js +422 -724
- package/build/projectsGeneration/generators/fieldTypeToTsType.js +4 -4
- package/build/projectsGeneration/generators/fileTemplates/back/Entities.js +16 -14
- package/build/projectsGeneration/generators/fileTemplates/back/devEnum.js +17 -13
- package/build/projectsGeneration/generators/fileTemplates/back/elastic/elastic.js +8 -44
- package/build/projectsGeneration/generators/fileTemplates/back/elastic/jobs.js +36 -26
- package/build/projectsGeneration/generators/fileTemplates/back/enum.js +17 -13
- package/build/projectsGeneration/generators/fileTemplates/back/environment/chart/Chart.js +12 -8
- package/build/projectsGeneration/generators/fileTemplates/back/environment/chart/templates/back.js +128 -12
- package/build/projectsGeneration/generators/fileTemplates/back/environment/chart/templates/ingress.js +54 -8
- package/build/projectsGeneration/generators/fileTemplates/back/environment/chart/values.js +149 -13
- package/build/projectsGeneration/generators/fileTemplates/back/environment/ciNotify.js +19 -8
- package/build/projectsGeneration/generators/fileTemplates/back/environment/defaultEnv.js +5 -9
- package/build/projectsGeneration/generators/fileTemplates/back/environment/dockerfileTmplBack.js +38 -8
- package/build/projectsGeneration/generators/fileTemplates/back/environment/dockerfileTmplUI.js +42 -8
- package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/backDocSpec.js +3 -6
- package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/backDocsConfiguration.js +27 -19
- package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/backDocsEntity.js +7 -5
- package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/backDocsIntegrationClient.js +44 -29
- package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/backDocsRestApi.js +45 -18
- package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/spec/findLinksToEntities.js +2 -4
- package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/spec/getAllSavableEntities.js +7 -11
- package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/spec/getProjectSpec.js +206 -216
- package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/spec/titleMd.js +5 -5
- package/build/projectsGeneration/generators/fileTemplates/back/environment/gitlabCi.js +272 -37
- package/build/projectsGeneration/generators/fileTemplates/back/environment/src/clients/getPrisma.js +78 -9
- package/build/projectsGeneration/generators/fileTemplates/back/environment/src/clients/queue/getQueue.js +42 -9
- package/build/projectsGeneration/generators/fileTemplates/back/environment/src/index.js +36 -9
- package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/IntegrationClient.js +56 -5
- package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/IntegrationClients.js +12 -9
- package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/fieldsToTsTypeFields.js +4 -6
- package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/integrationClientConstrictors.js +13 -9
- package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/tsModelTmpl.js +6 -4
- package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/types.js +15 -7
- package/build/projectsGeneration/generators/fileTemplates/back/graph/additionalResolvers.js +9 -2
- package/build/projectsGeneration/generators/fileTemplates/back/graph/additionalService/permissionToGraphql.js +16 -9
- package/build/projectsGeneration/generators/fileTemplates/back/graph/additionalService/resolvers.js +32 -12
- package/build/projectsGeneration/generators/fileTemplates/back/graph/additionalService/typeDefs.js +18 -11
- package/build/projectsGeneration/generators/fileTemplates/back/graph/additionalTypes.js +7 -2
- package/build/projectsGeneration/generators/fileTemplates/back/graph/entityAdditionalPermissionToGraphqlTmpl.js +20 -9
- package/build/projectsGeneration/generators/fileTemplates/back/graph/entityBasePermissionToGraphql.js +22 -10
- package/build/projectsGeneration/generators/fileTemplates/back/graph/entityPermissionToGraphqlTmpl.js +18 -9
- package/build/projectsGeneration/generators/fileTemplates/back/graph/help/baseResolvers.js +17 -2
- package/build/projectsGeneration/generators/fileTemplates/back/graph/help/baseTypeDefs.js +15 -5
- package/build/projectsGeneration/generators/fileTemplates/back/graph/help/permissionsToGraphql.js +11 -2
- package/build/projectsGeneration/generators/fileTemplates/back/graph/meta/resolvers.js +26 -2
- package/build/projectsGeneration/generators/fileTemplates/back/graph/meta/typeDefs.js +17 -2
- package/build/projectsGeneration/generators/fileTemplates/back/graph/permissionsToGraphql.js +52 -13
- package/build/projectsGeneration/generators/fileTemplates/back/graph/resolvers.js +52 -13
- package/build/projectsGeneration/generators/fileTemplates/back/graph/types.js +18 -11
- package/build/projectsGeneration/generators/fileTemplates/back/initCommon.js +30 -16
- package/build/projectsGeneration/generators/fileTemplates/back/initDev.js +27 -15
- package/build/projectsGeneration/generators/fileTemplates/back/initEntities.js +24 -10
- package/build/projectsGeneration/generators/fileTemplates/back/root/config/config.js +30 -16
- package/build/projectsGeneration/generators/fileTemplates/back/root/restRouter.js +21 -2
- package/build/projectsGeneration/generators/fileTemplates/back/services/AdditionalServices.js +7 -2
- package/build/projectsGeneration/generators/fileTemplates/back/services/BaseServices.js +18 -22
- package/build/projectsGeneration/generators/fileTemplates/back/services/HelpService/HelpService.js +30 -7
- package/build/projectsGeneration/generators/fileTemplates/back/services/additionalService/types.js +18 -13
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/additionalClass.js +7 -5
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/class.js +126 -49
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/config.js +59 -40
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/additionalOperationsOnCreate.js +13 -5
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/additionalOperationsOnDelete.js +14 -6
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/additionalOperationsOnUpdate.js +14 -6
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/afterCreate.js +15 -6
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/afterDelete.js +15 -6
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/afterUpdate.js +15 -6
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/beforeCreate.js +15 -6
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/beforeDelete.js +15 -6
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/beforeUpdate.js +14 -6
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/beforeUpsert.js +30 -7
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/changeListFilter.js +14 -6
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/tenantIdRequiredHooks.js +81 -8
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/initBuiltInHooks.js +22 -10
- package/build/projectsGeneration/generators/fileTemplates/back/services/entity/initUserHooks.js +31 -6
- package/build/projectsGeneration/generators/fileTemplates/back/services/serviceConstrictors.js +26 -14
- package/build/projectsGeneration/generators/fileTemplates/ui/Dashboard.js +14 -2
- package/build/projectsGeneration/generators/fileTemplates/ui/MetaPage.js +120 -3
- package/build/projectsGeneration/generators/fileTemplates/ui/ResourcesPage.js +45 -10
- package/build/projectsGeneration/generators/fileTemplates/ui/additionalRoutes.js +5 -2
- package/build/projectsGeneration/generators/fileTemplates/ui/entityMapping.js +14 -12
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/chart/Chart.js +12 -8
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/chart/templates/front.js +118 -13
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/chart/templates/ingress.js +51 -8
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/chart/values.js +79 -8
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/ciNotify.js +19 -8
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/docs/adminAppDocsConfiguration.js +27 -21
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/gitlabCi.js +179 -26
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/App.js +107 -10
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/contexts/SpacesContext.js +67 -9
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/dataProvider/getAdditionalMethods.js +55 -18
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/dataProvider/index.js +93 -13
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/i18nProvider/index.js +51 -19
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/layout/AppBar.js +60 -9
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/layout/Menu.js +52 -9
- package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/routes.js +38 -9
- package/build/projectsGeneration/generators/fileTemplates/ui/functions/Functions.js +60 -7
- package/build/projectsGeneration/generators/fileTemplates/ui/getAdditionalMenu.js +11 -2
- package/build/projectsGeneration/generators/fileTemplates/ui/getDefaultMenu.js +136 -23
- package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiLangCatalogsTmpl.js +3 -5
- package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiLangDocsTmpl.js +3 -5
- package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiLangInfoRegistriesTmpl.js +3 -5
- package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiLangReportsTmpl.js +3 -3
- package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiLangSumRegistriesTmpl.js +3 -5
- package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiTranslationsForServicesOfSavablesTmpl.js +33 -21
- package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiTranslationsLangTmpl.js +23 -15
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityCreate/DefaultEntityCreate.js +101 -62
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityCreate/index.js +15 -5
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityEdit/DefaultEntityEdit.js +176 -77
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityEdit/index.js +15 -5
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityList/DefaultEntityFilter.js +68 -50
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityList/DefaultEntityList.js +83 -47
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityList/EntityFilter.js +12 -5
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityList/index.js +15 -5
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/DefaultActions.js +54 -19
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/DefaultEntityShow.js +53 -30
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/DefaultMainTab.js +45 -32
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/DependencyTab.js +57 -41
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/MainTab.js +3 -2
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/additionalTabs.js +7 -3
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/index.js +15 -5
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/Icon.js +8 -8
- package/build/projectsGeneration/generators/fileTemplates/ui/pages/getEntityValidation.js +45 -30
- package/build/projectsGeneration/generators/fileTemplates/ui/resources.js +46 -12
- package/build/projectsGeneration/generators/fileTemplates/ui/widgets/count/CountWidget.js +50 -9
- package/build/projectsGeneration/generators/fileTemplates/ui/widgets/list/ListWidget.js +109 -14
- package/build/projectsGeneration/generators/graph/fieldTypeToGraphScalar.js +8 -9
- package/build/projectsGeneration/generators/graph/fieldTypeToGraphScalarStringified.js +4 -6
- package/build/projectsGeneration/generators/graph/fields/genGraphField.js +8 -9
- package/build/projectsGeneration/generators/graph/fields/genGraphIdField.js +7 -8
- package/build/projectsGeneration/generators/graph/fields/genGraphIdFieldType.js +6 -6
- package/build/projectsGeneration/generators/graph/fields/genGraphLinkField.js +10 -11
- package/build/projectsGeneration/generators/graph/fields/genGraphModelField.js +10 -11
- package/build/projectsGeneration/generators/graph/fields/genGraphScalarField.js +10 -11
- package/build/projectsGeneration/generators/graph/filters/genGraphField.js +7 -7
- package/build/projectsGeneration/generators/graph/filters/genGraphIdFilter.js +12 -14
- package/build/projectsGeneration/generators/graph/filters/genGraphLinkFilter.js +12 -24
- package/build/projectsGeneration/generators/graph/filters/genGraphScalarFilter.js +25 -37
- package/build/projectsGeneration/generators/graph/genGraphAdditionalServiceSchema.js +35 -35
- package/build/projectsGeneration/generators/graph/genGraphAdditionalServiceSchema.spec.js +148 -65
- package/build/projectsGeneration/generators/graph/genGraphCrudSchema.js +38 -50
- package/build/projectsGeneration/generators/graph/genGraphCrudSchema.spec.js +393 -34
- package/build/projectsGeneration/generators/graph/genGraphFilterType.js +11 -22
- package/build/projectsGeneration/generators/graph/genGraphFilterType.spec.js +75 -13
- package/build/projectsGeneration/generators/graph/genGraphModelType.js +15 -27
- package/build/projectsGeneration/generators/graph/genGraphType.js +7 -18
- package/build/projectsGeneration/generators/graph/genGraphType.spec.js +27 -12
- package/build/projectsGeneration/generators/graph/printGraphType.js +5 -7
- package/build/projectsGeneration/generators/graph/printGraphType.spec.js +11 -6
- package/build/projectsGeneration/generators/graph/utils/mapUtils.js +11 -30
- package/build/projectsGeneration/generators/graph/utils/models/getModelInitOrder.js +14 -28
- package/build/projectsGeneration/generators/graph/utils/models/getModelInitOrder.spec.js +18 -18
- package/build/projectsGeneration/generators/graph/utils/models/getUniqModels.js +3 -3
- package/build/projectsGeneration/generators/graph/utils/models/getUniqModels.spec.js +17 -28
- package/build/projectsGeneration/generators/graph/utils/models/getUsedModels.js +14 -19
- package/build/projectsGeneration/generators/graph/utils/models/getUsedModels.spec.js +40 -51
- package/build/projectsGeneration/generators/graph/utils/serviceModels/augmentInputModelsByUsedAsInputGeneralModelsAndPostfixThemByInput.js +17 -26
- package/build/projectsGeneration/generators/graph/utils/serviceModels/augmentInputModelsByUsedAsInputGeneralModelsAndPostfixThemByInput.spec.js +68 -68
- package/build/projectsGeneration/generators/graph/utils/serviceModels/getGraphTypesFromInputOutputModels.js +21 -42
- package/build/projectsGeneration/generators/graph/utils/serviceModels/getGraphTypesFromInputOutputModels.spec.js +85 -62
- package/build/projectsGeneration/generators/graph/utils/serviceModels/getPreparedModelsForGraph.js +20 -31
- package/build/projectsGeneration/generators/graph/utils/serviceModels/getPreparedModelsForGraph.spec.js +48 -49
- package/build/projectsGeneration/generators/graph/utils/serviceModels/getServiceModels.js +7 -7
- package/build/projectsGeneration/generators/graph/utils/serviceModels/getUsedGraphModelsForService.js +6 -6
- package/build/projectsGeneration/generators/graph/utils/serviceModels/getUsedGraphModelsForService.spec.js +13 -13
- package/build/projectsGeneration/generators/graph/utils/serviceModels/getUsedModelsForService.js +18 -21
- package/build/projectsGeneration/generators/graph/utils/serviceModels/getUsedModelsForService.spec.js +153 -153
- package/build/projectsGeneration/generators/graph/utils/serviceModels/prefixServiceModelsWithServiceName.js +25 -26
- package/build/projectsGeneration/generators/graph/utils/serviceModels/prefixServiceModelsWithServiceName.spec.js +69 -69
- package/build/projectsGeneration/generators/graph/utils/serviceModels/removeDublicatesFromServiceModels.js +4 -4
- package/build/projectsGeneration/generators/graph/utils/serviceModels/removeUnusedInOutputGeneralModels.js +6 -17
- package/build/projectsGeneration/generators/graph/utils/serviceModels/removeVoidsInServiceModels.js +5 -5
- package/build/projectsGeneration/generators/prisma/fieldIdTypeToPrismaType.js +3 -3
- package/build/projectsGeneration/generators/prisma/fieldTypeToPrismaType.js +3 -3
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaDefault.js +3 -3
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaDefault.spec.js +20 -20
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaField.js +7 -8
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaFieldFromExternalEntity.js +6 -7
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaFieldFromExternalEntity.spec.js +7 -19
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaIdField.js +10 -11
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaIdField.spec.js +13 -13
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaLinkFields.js +15 -18
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaLinkFields.spec.js +27 -28
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaScalarField.js +12 -14
- package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaScalarField.spec.js +29 -30
- package/build/projectsGeneration/generators/prisma/scheme/genPrismaEntity.js +23 -32
- package/build/projectsGeneration/generators/prisma/scheme/genPrismaEntity.spec.js +104 -47
- package/build/projectsGeneration/generators/prisma/scheme/genPrismaSchemaForEntities.js +5 -7
- package/build/projectsGeneration/generators/prisma/scheme/genPrismaSchemaForEntitiesWithClientAdnDb.js +19 -10
- package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNameToEditScalar.js +3 -3
- package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditField.js +7 -7
- package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditIdField.js +3 -3
- package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditLinkField.js +5 -5
- package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditLinkField.spec.js +10 -10
- package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditScalarField.js +3 -3
- package/build/projectsGeneration/generators/ui/componentNames/show/getCompNameToShowScalar.js +3 -3
- package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowField.js +7 -7
- package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowIdField.js +3 -3
- package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowLinkField.js +2 -14
- package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowLinkField.spec.js +17 -17
- package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowScalarField.js +3 -3
- package/build/projectsGeneration/generators/ui/getLinkShowComponent.spec.js +18 -18
- package/build/projectsGeneration/generators/ui/getScalarShowComponent.spec.js +11 -11
- package/build/projectsGeneration/generators/ui/getShowComponent.js +19 -20
- package/build/projectsGeneration/links/getLinksFromExternalEntities.js +2 -4
- package/build/projectsGeneration/links/getLinksFromExternalEntities.spec.js +11 -22
- package/build/projectsGeneration/links/getLinksOfEntities.js +6 -8
- package/build/projectsGeneration/links/getLinksOfEntities.spec.js +20 -31
- package/build/projectsGeneration/links/getLinksToExternalEntities.js +2 -4
- package/build/projectsGeneration/links/getLinksToExternalEntities.spec.js +11 -22
- package/build/projectsGeneration/metaUtils.js +17 -23
- package/build/projectsGeneration/modelsGeneration.serialization.spec.js +8 -8
- package/build/projectsGeneration/modules/addEmailModuleEntities.js +11 -11
- package/build/projectsGeneration/types.js +6 -6
- package/build/projectsGeneration/utils.js +24 -61
- package/build/refs/yup.spec.js +7 -7
- package/build/types/projectsGeneration/builders/InfoRegistryBuilder.d.ts +0 -4
- package/build/types/projectsGeneration/builders/SumRegistryBuilder.d.ts +0 -3
- package/build/types/projectsGeneration/fileCleaners/cleanFiles.d.ts +1 -1
- package/build/types/projectsGeneration/generateProject.d.ts +0 -5
- package/build/types/projectsGeneration/generators/fileTemplates/back/environment/chart/templates/back.d.ts +1 -1
- package/build/types/projectsGeneration/generators/fileTemplates/back/environment/chart/templates/ingress.d.ts +1 -1
- package/build/types/projectsGeneration/generators/fileTemplates/back/environment/dockerfileTmplBack.d.ts +1 -1
- package/build/types/projectsGeneration/generators/fileTemplates/back/environment/dockerfileTmplUI.d.ts +1 -1
- package/build/types/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/IntegrationClient.d.ts +1 -1
- package/build/types/projectsGeneration/generators/fileTemplates/back/services/entity/config.d.ts +1 -1
- package/build/types/projectsGeneration/generators/fileTemplates/ui/environment/chart/templates/front.d.ts +1 -1
- package/build/types/projectsGeneration/generators/fileTemplates/ui/environment/chart/templates/ingress.d.ts +1 -1
- package/build/types/projectsGeneration/generators/fileTemplates/ui/environment/src/App.d.ts +1 -1
- package/build/utils/TermSignals.js +35 -43
- package/build/utils/cases.js +12 -18
- package/build/utils/getPkgManager.js +4 -4
- package/package.json +12 -24
- package/build/projectsGeneration/fileCleaners/back/cleanBack.js +0 -50
- package/build/types/projectsGeneration/fileCleaners/back/cleanBack.d.ts +0 -3
|
@@ -3,306 +3,306 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
const jest_without_globals_1 = require("jest-without-globals");
|
|
7
|
+
const getUsedModelsForService_1 = require("./getUsedModelsForService");
|
|
8
|
+
const buildedTypes_1 = require("../../../../builders/buildedTypes");
|
|
9
|
+
const AdditionalServiceBuilder_1 = __importDefault(require("../../../../builders/AdditionalServiceBuilder"));
|
|
10
10
|
// yarn test --testPathPattern getUsedModelsForService
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const addUnusedModels = (service) => {
|
|
12
|
+
const unusedGeneralModel = service.addGeneralModel('unusedGeneralModel');
|
|
13
13
|
unusedGeneralModel.addField('fieldOfModel').setType('string').setRequired();
|
|
14
|
-
|
|
14
|
+
const unusedInputModel = service.addInputModel('unusedInputModel');
|
|
15
15
|
unusedInputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
16
|
-
|
|
16
|
+
const unusedOutputModel = service.addOutputModel('unusedOutputModel');
|
|
17
17
|
unusedOutputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
18
18
|
};
|
|
19
|
-
describe('getUsedModelsForService',
|
|
20
|
-
describe('for args model',
|
|
21
|
-
it('returns args and general model for args model with link to general model',
|
|
22
|
-
|
|
19
|
+
describe('getUsedModelsForService', () => {
|
|
20
|
+
describe('for args model', () => {
|
|
21
|
+
it('returns args and general model for args model with link to general model', () => {
|
|
22
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
23
23
|
addUnusedModels(service);
|
|
24
|
-
|
|
24
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
25
25
|
someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
|
|
26
|
-
|
|
26
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
27
27
|
someMethod.setExportedToApi();
|
|
28
|
-
|
|
28
|
+
const someMethodArgs = someMethod.getArgsModel();
|
|
29
29
|
someMethodArgs.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
30
|
-
|
|
30
|
+
const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
31
31
|
(0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someGerenalModel.build(), someMethodArgs.build()]);
|
|
32
32
|
});
|
|
33
|
-
it('returns args and input model for args model with link to input model',
|
|
34
|
-
|
|
33
|
+
it('returns args and input model for args model with link to input model', () => {
|
|
34
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
35
35
|
addUnusedModels(service);
|
|
36
|
-
|
|
36
|
+
const someInputModel = service.addInputModel('someInputModel');
|
|
37
37
|
someInputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
38
|
-
|
|
38
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
39
39
|
someMethod.setExportedToApi();
|
|
40
|
-
|
|
40
|
+
const someMethodArgs = someMethod.getArgsModel();
|
|
41
41
|
someMethodArgs.addModelField('someInputModel', 'objectField').setRequired();
|
|
42
|
-
|
|
42
|
+
const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
43
43
|
(0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someInputModel.build(), someMethodArgs.build()]);
|
|
44
44
|
});
|
|
45
|
-
it('returns args and two general models for args model with link to general model that itself has link to another general model',
|
|
46
|
-
|
|
45
|
+
it('returns args and two general models for args model with link to general model that itself has link to another general model', () => {
|
|
46
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
47
47
|
addUnusedModels(service);
|
|
48
|
-
|
|
48
|
+
const someSecondGerenalModel = service.addGeneralModel('someSecondGerenalModel');
|
|
49
49
|
someSecondGerenalModel.addField('fieldOfModel').setType('string').setRequired();
|
|
50
|
-
|
|
50
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
51
51
|
someGerenalModel.addModelField('someSecondGerenalModel', 'objectField').setRequired();
|
|
52
|
-
|
|
52
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
53
53
|
someMethod.setExportedToApi();
|
|
54
|
-
|
|
54
|
+
const someMethodArgs = someMethod.getArgsModel();
|
|
55
55
|
someMethodArgs.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
56
|
-
|
|
56
|
+
const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
57
57
|
(0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someGerenalModel.build(), someSecondGerenalModel.build(), someMethodArgs.build()]);
|
|
58
58
|
});
|
|
59
|
-
it('returns args, general and input models for args model with link to general model that itself has link to another input model',
|
|
60
|
-
|
|
59
|
+
it('returns args, general and input models for args model with link to general model that itself has link to another input model', () => {
|
|
60
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
61
61
|
addUnusedModels(service);
|
|
62
|
-
|
|
62
|
+
const someInputModel = service.addInputModel('someInputModel');
|
|
63
63
|
someInputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
64
|
-
|
|
64
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
65
65
|
someGerenalModel.addModelField('someInputModel', 'objectField').setRequired();
|
|
66
|
-
|
|
66
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
67
67
|
someMethod.setExportedToApi();
|
|
68
|
-
|
|
68
|
+
const someMethodArgs = someMethod.getArgsModel();
|
|
69
69
|
someMethodArgs.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
70
|
-
|
|
70
|
+
const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
71
71
|
(0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someGerenalModel.build(), someInputModel.build(), someMethodArgs.build()]);
|
|
72
72
|
});
|
|
73
|
-
it('returns args, general and input models for args model with link to input model that itself has link to general model',
|
|
74
|
-
|
|
73
|
+
it('returns args, general and input models for args model with link to input model that itself has link to general model', () => {
|
|
74
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
75
75
|
addUnusedModels(service);
|
|
76
|
-
|
|
76
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
77
77
|
someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
|
|
78
|
-
|
|
78
|
+
const someInputModel = service.addInputModel('someInputModel');
|
|
79
79
|
someInputModel.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
80
|
-
|
|
80
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
81
81
|
someMethod.setExportedToApi();
|
|
82
|
-
|
|
82
|
+
const someMethodArgs = someMethod.getArgsModel();
|
|
83
83
|
someMethodArgs.addModelField('someInputModel', 'objectField').setRequired();
|
|
84
|
-
|
|
84
|
+
const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
85
85
|
(0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someGerenalModel.build(), someInputModel.build(), someMethodArgs.build()]);
|
|
86
86
|
});
|
|
87
|
-
it('returns args and two input models for args model with link to input model that itself has link to another input model',
|
|
88
|
-
|
|
87
|
+
it('returns args and two input models for args model with link to input model that itself has link to another input model', () => {
|
|
88
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
89
89
|
addUnusedModels(service);
|
|
90
|
-
|
|
90
|
+
const someSecondInputModel = service.addInputModel('someSecondInputModel');
|
|
91
91
|
someSecondInputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
92
|
-
|
|
92
|
+
const someInputModel = service.addInputModel('someInputModel');
|
|
93
93
|
someInputModel.addModelField('someSecondInputModel', 'objectField').setRequired();
|
|
94
|
-
|
|
94
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
95
95
|
someMethod.setExportedToApi();
|
|
96
|
-
|
|
96
|
+
const someMethodArgs = someMethod.getArgsModel();
|
|
97
97
|
someMethodArgs.addModelField('someInputModel', 'objectField').setRequired();
|
|
98
|
-
|
|
98
|
+
const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
99
99
|
(0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someSecondInputModel.build(), someInputModel.build(), someMethodArgs.build()]);
|
|
100
100
|
});
|
|
101
|
-
it('throws if args model has link to output model',
|
|
102
|
-
|
|
101
|
+
it('throws if args model has link to output model', () => {
|
|
102
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
103
103
|
addUnusedModels(service);
|
|
104
|
-
|
|
104
|
+
const someOutputModel = service.addOutputModel('someOutputModel');
|
|
105
105
|
someOutputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
106
|
-
|
|
106
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
107
107
|
someMethod.setExportedToApi();
|
|
108
|
-
|
|
108
|
+
const someMethodArgs = someMethod.getArgsModel();
|
|
109
109
|
someMethodArgs.addModelField('someOutputModel', 'objectField').setRequired();
|
|
110
|
-
(0, jest_without_globals_1.expect)(
|
|
110
|
+
(0, jest_without_globals_1.expect)(() => (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()))
|
|
111
111
|
.toThrow(new Error('Can\'t find model "someOutputModel", models: unusedGeneralModel, unusedInputModel, someMethodArgs'));
|
|
112
112
|
});
|
|
113
113
|
});
|
|
114
|
-
describe('for return model',
|
|
115
|
-
it('returns return model and general model for return model with link to general model',
|
|
116
|
-
|
|
114
|
+
describe('for return model', () => {
|
|
115
|
+
it('returns return model and general model for return model with link to general model', () => {
|
|
116
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
117
117
|
addUnusedModels(service);
|
|
118
|
-
|
|
118
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
119
119
|
someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
|
|
120
|
-
|
|
120
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
121
121
|
someMethod.setExportedToApi();
|
|
122
|
-
|
|
122
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
123
123
|
someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
124
|
-
|
|
124
|
+
const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
125
125
|
(0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someGerenalModel.build(), someMethodReturn.build()]);
|
|
126
126
|
});
|
|
127
|
-
it('returns return model and output model for return model with link to output model',
|
|
128
|
-
|
|
127
|
+
it('returns return model and output model for return model with link to output model', () => {
|
|
128
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
129
129
|
addUnusedModels(service);
|
|
130
|
-
|
|
130
|
+
const someOutputModel = service.addOutputModel('someOutputModel');
|
|
131
131
|
someOutputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
132
|
-
|
|
132
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
133
133
|
someMethod.setExportedToApi();
|
|
134
|
-
|
|
134
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
135
135
|
someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
|
|
136
|
-
|
|
136
|
+
const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
137
137
|
(0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someOutputModel.build(), someMethodReturn.build()]);
|
|
138
138
|
});
|
|
139
|
-
it('returns return model and two general models for return model with link to general model that itself has link to another general model',
|
|
140
|
-
|
|
139
|
+
it('returns return model and two general models for return model with link to general model that itself has link to another general model', () => {
|
|
140
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
141
141
|
addUnusedModels(service);
|
|
142
|
-
|
|
142
|
+
const someSecondGerenalModel = service.addGeneralModel('someSecondGerenalModel');
|
|
143
143
|
someSecondGerenalModel.addField('fieldOfModel').setType('string').setRequired();
|
|
144
|
-
|
|
144
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
145
145
|
someGerenalModel.addModelField('someSecondGerenalModel', 'objectField').setRequired();
|
|
146
|
-
|
|
146
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
147
147
|
someMethod.setExportedToApi();
|
|
148
|
-
|
|
148
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
149
149
|
someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
150
|
-
|
|
150
|
+
const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
151
151
|
(0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someGerenalModel.build(), someSecondGerenalModel.build(), someMethodReturn.build()]);
|
|
152
152
|
});
|
|
153
|
-
it('returns return model, general and output models for return model with link to general model that itself has link to another output model',
|
|
154
|
-
|
|
153
|
+
it('returns return model, general and output models for return model with link to general model that itself has link to another output model', () => {
|
|
154
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
155
155
|
addUnusedModels(service);
|
|
156
|
-
|
|
156
|
+
const someOutputModel = service.addOutputModel('someOutputModel');
|
|
157
157
|
someOutputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
158
|
-
|
|
158
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
159
159
|
someGerenalModel.addModelField('someOutputModel', 'objectField').setRequired();
|
|
160
|
-
|
|
160
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
161
161
|
someMethod.setExportedToApi();
|
|
162
|
-
|
|
162
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
163
163
|
someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
164
|
-
|
|
164
|
+
const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
165
165
|
(0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someGerenalModel.build(), someOutputModel.build(), someMethodReturn.build()]);
|
|
166
166
|
});
|
|
167
|
-
it('returns return model, general and output models for return model with link to output model that itself has link to general model',
|
|
168
|
-
|
|
167
|
+
it('returns return model, general and output models for return model with link to output model that itself has link to general model', () => {
|
|
168
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
169
169
|
addUnusedModels(service);
|
|
170
|
-
|
|
170
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
171
171
|
someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
|
|
172
|
-
|
|
172
|
+
const someOutputModel = service.addOutputModel('someOutputModel');
|
|
173
173
|
someOutputModel.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
174
|
-
|
|
174
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
175
175
|
someMethod.setExportedToApi();
|
|
176
|
-
|
|
176
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
177
177
|
someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
|
|
178
|
-
|
|
178
|
+
const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
179
179
|
(0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someGerenalModel.build(), someOutputModel.build(), someMethodReturn.build()]);
|
|
180
180
|
});
|
|
181
|
-
it('returns return model and two output models for return model with link to output model that itself has link to another output model',
|
|
182
|
-
|
|
181
|
+
it('returns return model and two output models for return model with link to output model that itself has link to another output model', () => {
|
|
182
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
183
183
|
addUnusedModels(service);
|
|
184
|
-
|
|
184
|
+
const someSecondOutputModel = service.addOutputModel('someSecondOutputModel');
|
|
185
185
|
someSecondOutputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
186
|
-
|
|
186
|
+
const someOutputModel = service.addOutputModel('someOutputModel');
|
|
187
187
|
someOutputModel.addModelField('someSecondOutputModel', 'objectField').setRequired();
|
|
188
|
-
|
|
188
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
189
189
|
someMethod.setExportedToApi();
|
|
190
|
-
|
|
190
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
191
191
|
someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
|
|
192
|
-
|
|
192
|
+
const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
193
193
|
(0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someSecondOutputModel.build(), someOutputModel.build(), someMethodReturn.build()]);
|
|
194
194
|
});
|
|
195
|
-
it('throws if return model has link to input model',
|
|
196
|
-
|
|
195
|
+
it('throws if return model has link to input model', () => {
|
|
196
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
197
197
|
addUnusedModels(service);
|
|
198
|
-
|
|
198
|
+
const someInputModel = service.addInputModel('someInputModel');
|
|
199
199
|
someInputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
200
|
-
|
|
200
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
201
201
|
someMethod.setExportedToApi();
|
|
202
|
-
|
|
202
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
203
203
|
someMethodReturn.addModelField('someInputModel', 'objectField').setRequired();
|
|
204
|
-
(0, jest_without_globals_1.expect)(
|
|
204
|
+
(0, jest_without_globals_1.expect)(() => (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()))
|
|
205
205
|
.toThrow(new Error('Can\'t find model "someInputModel", models: unusedGeneralModel, unusedOutputModel, someMethodResult'));
|
|
206
206
|
});
|
|
207
207
|
});
|
|
208
|
-
describe('handling general models',
|
|
209
|
-
it('returns general model for return model with link to general model',
|
|
210
|
-
|
|
208
|
+
describe('handling general models', () => {
|
|
209
|
+
it('returns general model for return model with link to general model', () => {
|
|
210
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
211
211
|
addUnusedModels(service);
|
|
212
|
-
|
|
212
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
213
213
|
someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
|
|
214
|
-
|
|
214
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
215
215
|
someMethod.setExportedToApi();
|
|
216
|
-
|
|
216
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
217
217
|
someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
218
|
-
|
|
218
|
+
const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
219
219
|
(0, jest_without_globals_1.expect)(generalModels).toIncludeSameMembers([someGerenalModel.build()]);
|
|
220
220
|
});
|
|
221
|
-
it('returns empty array for return model with link to output model',
|
|
222
|
-
|
|
221
|
+
it('returns empty array for return model with link to output model', () => {
|
|
222
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
223
223
|
addUnusedModels(service);
|
|
224
|
-
|
|
224
|
+
const someOutputModel = service.addOutputModel('someOutputModel');
|
|
225
225
|
someOutputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
226
|
-
|
|
226
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
227
227
|
someMethod.setExportedToApi();
|
|
228
|
-
|
|
228
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
229
229
|
someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
|
|
230
|
-
|
|
230
|
+
const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
231
231
|
(0, jest_without_globals_1.expect)(generalModels).toBeEmpty();
|
|
232
232
|
});
|
|
233
|
-
it('returns two general models for return model with link to general model that itself has link to another general model',
|
|
234
|
-
|
|
233
|
+
it('returns two general models for return model with link to general model that itself has link to another general model', () => {
|
|
234
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
235
235
|
addUnusedModels(service);
|
|
236
|
-
|
|
236
|
+
const someSecondGerenalModel = service.addGeneralModel('someSecondGerenalModel');
|
|
237
237
|
someSecondGerenalModel.addField('fieldOfModel').setType('string').setRequired();
|
|
238
|
-
|
|
238
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
239
239
|
someGerenalModel.addModelField('someSecondGerenalModel', 'objectField').setRequired();
|
|
240
|
-
|
|
240
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
241
241
|
someMethod.setExportedToApi();
|
|
242
|
-
|
|
242
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
243
243
|
someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
244
|
-
|
|
244
|
+
const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
245
245
|
(0, jest_without_globals_1.expect)(generalModels).toIncludeSameMembers([someGerenalModel.build(), someSecondGerenalModel.build()]);
|
|
246
246
|
});
|
|
247
|
-
it('returns general model for return model with link to general model that itself has link to another output model',
|
|
248
|
-
|
|
247
|
+
it('returns general model for return model with link to general model that itself has link to another output model', () => {
|
|
248
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
249
249
|
addUnusedModels(service);
|
|
250
|
-
|
|
250
|
+
const someOutputModel = service.addOutputModel('someOutputModel');
|
|
251
251
|
someOutputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
252
|
-
|
|
252
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
253
253
|
someGerenalModel.addModelField('someOutputModel', 'objectField').setRequired();
|
|
254
|
-
|
|
254
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
255
255
|
someMethod.setExportedToApi();
|
|
256
|
-
|
|
256
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
257
257
|
someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
258
|
-
|
|
258
|
+
const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
259
259
|
(0, jest_without_globals_1.expect)(generalModels).toIncludeSameMembers([someGerenalModel.build()]);
|
|
260
260
|
});
|
|
261
|
-
it('returns general model for return model with link to output model that itself has link to general model',
|
|
262
|
-
|
|
261
|
+
it('returns general model for return model with link to output model that itself has link to general model', () => {
|
|
262
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
263
263
|
addUnusedModels(service);
|
|
264
|
-
|
|
264
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
265
265
|
someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
|
|
266
|
-
|
|
266
|
+
const someOutputModel = service.addOutputModel('someOutputModel');
|
|
267
267
|
someOutputModel.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
268
|
-
|
|
268
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
269
269
|
someMethod.setExportedToApi();
|
|
270
|
-
|
|
270
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
271
271
|
someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
|
|
272
|
-
|
|
272
|
+
const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
273
273
|
(0, jest_without_globals_1.expect)(generalModels).toIncludeSameMembers([someGerenalModel.build()]);
|
|
274
274
|
});
|
|
275
|
-
it('returns empty array for return model with link to output model that itself has link to another output model',
|
|
276
|
-
|
|
275
|
+
it('returns empty array for return model with link to output model that itself has link to another output model', () => {
|
|
276
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
277
277
|
addUnusedModels(service);
|
|
278
|
-
|
|
278
|
+
const someSecondOutputModel = service.addOutputModel('someSecondOutputModel');
|
|
279
279
|
someSecondOutputModel.addField('fieldOfModel').setType('string').setRequired();
|
|
280
|
-
|
|
280
|
+
const someOutputModel = service.addOutputModel('someOutputModel');
|
|
281
281
|
someOutputModel.addModelField('someSecondOutputModel', 'objectField').setRequired();
|
|
282
|
-
|
|
282
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
283
283
|
someMethod.setExportedToApi();
|
|
284
|
-
|
|
284
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
285
285
|
someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
|
|
286
|
-
|
|
286
|
+
const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
287
287
|
(0, jest_without_globals_1.expect)(generalModels).toBeEmpty();
|
|
288
288
|
});
|
|
289
289
|
});
|
|
290
|
-
describe('for return and args model',
|
|
291
|
-
it('returns return model and general model for return model with link to general model',
|
|
292
|
-
|
|
290
|
+
describe('for return and args model', () => {
|
|
291
|
+
it('returns return model and general model for return model with link to general model', () => {
|
|
292
|
+
const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
|
|
293
293
|
addUnusedModels(service);
|
|
294
|
-
|
|
294
|
+
const someGerenalModel = service.addGeneralModel('someGerenalModel');
|
|
295
295
|
someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
|
|
296
|
-
|
|
296
|
+
const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
|
|
297
297
|
someMethod.setExportedToApi();
|
|
298
|
-
|
|
298
|
+
const someMethodReturn = someMethod.getReturnModel();
|
|
299
299
|
someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
300
|
-
|
|
300
|
+
const someMethodArgs = someMethod.getArgsModel();
|
|
301
301
|
someMethodArgs.addModelField('someGerenalModel', 'objectField').setRequired();
|
|
302
|
-
|
|
302
|
+
const { inputModels, outputModels, } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
|
|
303
303
|
(0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someGerenalModel.build(), someMethodArgs.build()]);
|
|
304
304
|
(0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someGerenalModel.build(), someMethodReturn.build()]);
|
|
305
305
|
});
|
|
306
306
|
});
|
|
307
307
|
});
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0VXNlZE1vZGVsc0ZvclNlcnZpY2Uuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wcm9qZWN0c0dlbmVyYXRpb24vZ2VuZXJhdG9ycy9ncmFwaC91dGlscy9zZXJ2aWNlTW9kZWxzL2dldFVzZWRNb2RlbHNGb3JTZXJ2aWNlLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2REFBNkM7QUFDN0MscUVBQW1FO0FBQ25FLGtFQUErRDtBQUMvRCwyR0FBcUY7QUFFckYsc0RBQXNEO0FBRXRELElBQU0sZUFBZSxHQUFHLFVBQUMsT0FBaUM7SUFDeEQsSUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDekUsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU1RSxJQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTFFLElBQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDN0UsQ0FBQyxDQUFBO0FBRUQsUUFBUSxDQUFDLHlCQUF5QixFQUFFO0lBQ2xDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtRQUN6QixFQUFFLENBQUMsMEVBQTBFLEVBQUU7WUFDN0UsSUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxD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
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0VXNlZE1vZGVsc0ZvclNlcnZpY2Uuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wcm9qZWN0c0dlbmVyYXRpb24vZ2VuZXJhdG9ycy9ncmFwaC91dGlscy9zZXJ2aWNlTW9kZWxzL2dldFVzZWRNb2RlbHNGb3JTZXJ2aWNlLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrREFBNkM7QUFDN0MsdUVBQW1FO0FBQ25FLG9FQUErRDtBQUMvRCw2R0FBcUY7QUFFckYsc0RBQXNEO0FBRXRELE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBaUMsRUFBRSxFQUFFO0lBQzVELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3pFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFNUUsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbkUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUUxRSxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN0RSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzdFLENBQUMsQ0FBQTtBQUVELFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7SUFDdkMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtRQUM5QixFQUFFLENBQUMsMEVBQTBFLEVBQUUsR0FBRyxFQUFFO1lBQ2xGLE1BQU0sT0FBTyxHQUFHLElBQUksa0NBQXdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWxFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6QixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNyRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTFFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLHlCQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3BGLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTlCLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNqRCxjQUFjLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTlFLE1BQU0sRUFBQyxXQUFXLEVBQUMsR0FBRyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRS9ELElBQUEsNkJBQU0sRUFBQyxXQUFXLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0VBQXNFLEVBQUUsR0FBRyxFQUFFO1lBQzlFLE1BQU0sT0FBTyxHQUFHLElBQUksa0NBQXdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWxFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6QixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDL0QsY0FBYyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFeEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUseUJBQVUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEYsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2pELGNBQWMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFNUUsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLElBQUEsaURBQXVCLEVBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFL0QsSUFBQSw2QkFBTSxFQUFDLFdBQVcsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNkhBQTZILEVBQUUsR0FBRyxFQUFFO1lBQ3JJLE1BQU0sT0FBTyxHQUFHLElBQUksa0NBQXdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWxFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6QixNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUNqRixzQkFBc0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRWhGLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3JFLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV0RixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSx5QkFBVSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNwRixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUU5QixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakQsY0FBYyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUU5RSxNQUFNLEVBQUMsV0FBVyxFQUFDLEdBQUcsSUFBQSxpREFBdUIsRUFBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUUvRCxJQUFBLDZCQUFNLEVBQUMsV0FBVyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9ILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhIQUE4SCxFQUFFLEdBQUcsRUFBRTtZQUN0SSxNQUFNLE9BQU8sR0FBRyxJQUFJLGtDQUF3QixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVsRSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFekIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQy9ELGNBQWMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXhFLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3JFLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUU5RSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSx5QkFBVSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNwRixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUU5QixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakQsY0FBYyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUU5RSxNQUFNLEVBQUMsV0FBVyxFQUFDLEdBQUcsSUFBQSxpREFBdUIsRUFBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUUvRCxJQUFBLDZCQUFNLEVBQUMsV0FBVyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2SCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzSEFBc0gsRUFBRSxHQUFHLEVBQUU7WUFDOUgsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3JFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFMUUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQy9ELGNBQWMsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFOUUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUseUJBQVUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEYsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2pELGNBQWMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFNUUsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLElBQUEsaURBQXVCLEVBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFL0QsSUFBQSw2QkFBTSxFQUFDLFdBQVcsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkgsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUhBQXVILEVBQUUsR0FBRyxFQUFFO1lBQy9ILE1BQU0sT0FBTyxHQUFHLElBQUksa0NBQXdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWxFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6QixNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMzRSxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTlFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMvRCxjQUFjLENBQUMsYUFBYSxDQUFDLHNCQUFzQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRWxGLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLHlCQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3BGLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTlCLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNqRCxjQUFjLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTVFLE1BQU0sRUFBQyxXQUFXLEVBQUMsR0FBRyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRS9ELElBQUEsNkJBQU0sRUFBQyxXQUFXLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtZQUN2RCxNQUFNLE9BQU8sR0FBRyxJQUFJLGtDQUF3QixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVsRSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFekIsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xFLGVBQWUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXpFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLHlCQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3BGLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTlCLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNqRCxjQUFjLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTdFLElBQUEsNkJBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2lCQUNuRCxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsbUdBQW1HLENBQUMsQ0FBQyxDQUFDO1FBQzdILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLEVBQUUsQ0FBQyxvRkFBb0YsRUFBRSxHQUFHLEVBQUU7WUFDNUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3JFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFMUUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUseUJBQVUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEYsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRWhGLE1BQU0sRUFBQyxZQUFZLEVBQUMsR0FBRyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRWhFLElBQUEsNkJBQU0sRUFBQyxZQUFZLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxFQUFFLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrRkFBa0YsRUFBRSxHQUFHLEVBQUU7WUFDMUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpCLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNsRSxlQUFlLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV6RSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSx5QkFBVSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNwRixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUU5QixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNyRCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFL0UsTUFBTSxFQUFDLFlBQVksRUFBQyxHQUFHLElBQUEsaURBQXVCLEVBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFaEUsSUFBQSw2QkFBTSxFQUFDLFlBQVksQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxFQUFFLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1SUFBdUksRUFBRSxHQUFHLEVBQUU7WUFDL0ksTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpCLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ2pGLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFaEYsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDckUsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLHdCQUF3QixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXRGLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLHlCQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3BGLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTlCLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JELGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVoRixNQUFNLEVBQUMsWUFBWSxFQUFDLEdBQUcsSUFBQSxpREFBdUIsRUFBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUVoRSxJQUFBLDZCQUFNLEVBQUMsWUFBWSxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEksQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMElBQTBJLEVBQUUsR0FBRyxFQUFFO1lBQ2xKLE1BQU0sT0FBTyxHQUFHLElBQUksa0NBQXdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWxFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6QixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFekUsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDckUsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRS9FLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLHlCQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3BGLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTlCLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JELGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVoRixNQUFNLEVBQUMsWUFBWSxFQUFDLEdBQUcsSUFBQSxpREFBdUIsRUFBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUVoRSxJQUFBLDZCQUFNLEVBQUMsWUFBWSxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxlQUFlLENBQUMsS0FBSyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtJQUFrSSxFQUFFLEdBQUcsRUFBRTtZQUMxSSxNQUFNLE9BQU8sR0FBRyxJQUFJLGtDQUF3QixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVsRSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFekIsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDckUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUUxRSxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUUvRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSx5QkFBVSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNwRixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUU5QixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNyRCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFL0UsTUFBTSxFQUFDLFlBQVksRUFBQyxHQUFHLElBQUEsaURBQXVCLEVBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFaEUsSUFBQSw2QkFBTSxFQUFDLFlBQVksQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUUsZUFBZSxDQUFDLEtBQUssRUFBRSxFQUFFLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzSCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvSUFBb0ksRUFBRSxHQUFHLEVBQUU7WUFDNUksTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpCLE1BQU0scUJBQXFCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzlFLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFL0UsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xFLGVBQWUsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFcEYsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUseUJBQVUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEYsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRS9FLE1BQU0sRUFBQyxZQUFZLEVBQUMsR0FBRyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRWhFLElBQUEsNkJBQU0sRUFBQyxZQUFZLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxFQUFFLGVBQWUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEksQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO1lBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksa0NBQXdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWxFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6QixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDL0QsY0FBYyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFeEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUseUJBQVUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEYsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTlFLElBQUEsNkJBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2lCQUNuRCxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMscUdBQXFHLENBQUMsQ0FBQyxDQUFDO1FBQy9ILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO1FBQ3ZDLEVBQUUsQ0FBQyxtRUFBbUUsRUFBRSxHQUFHLEVBQUU7WUFDM0UsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3JFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFMUUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUseUJBQVUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEYsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRWhGLE1BQU0sRUFBQyxhQUFhLEVBQUMsR0FBRyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRWpFLElBQUEsNkJBQU0sRUFBQyxhQUFhLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRSxHQUFHLEVBQUU7WUFDeEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpCLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNsRSxlQUFlLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV6RSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSx5QkFBVSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNwRixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUU5QixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNyRCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFL0UsTUFBTSxFQUFDLGFBQWEsRUFBQyxHQUFHLElBQUEsaURBQXVCLEVBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFakUsSUFBQSw2QkFBTSxFQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNIQUFzSCxFQUFFLEdBQUcsRUFBRTtZQUM5SCxNQUFNLE9BQU8sR0FBRyxJQUFJLGtDQUF3QixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVsRSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFekIsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDakYsc0JBQXNCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVoRixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNyRSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFdEYsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUseUJBQVUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEYsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRWhGLE1BQU0sRUFBQyxhQUFhLEVBQUMsR0FBRyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRWpFLElBQUEsNkJBQU0sRUFBQyxhQUFhLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxFQUFFLHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnSEFBZ0gsRUFBRSxHQUFHLEVBQUU7WUFDeEgsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpCLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNsRSxlQUFlLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV6RSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNyRSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFL0UsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUseUJBQVUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEYsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRWhGLE1BQU0sRUFBQyxhQUFhLEVBQUMsR0FBRyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRWpFLElBQUEsNkJBQU0sRUFBQyxhQUFhLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx3R0FBd0csRUFBRSxHQUFHLEVBQUU7WUFDaEgsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3JFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFMUUsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xFLGVBQWUsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFL0UsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUseUJBQVUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEYsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRS9FLE1BQU0sRUFBQyxhQUFhLEVBQUMsR0FBRyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRWpFLElBQUEsNkJBQU0sRUFBQyxhQUFhLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2R0FBNkcsRUFBRSxHQUFHLEVBQUU7WUFDckgsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFbEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXpCLE1BQU0scUJBQXFCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzlFLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFL0UsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xFLGVBQWUsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEVBQUUsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFcEYsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUseUJBQVUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEYsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRS9FLE1BQU0sRUFBQyxhQUFhLEVBQUMsR0FBRyxJQUFBLGlEQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRWpFLElBQUEsNkJBQU0sRUFBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxFQUFFLENBQUMsb0ZBQW9GLEVBQUUsR0FBRyxFQUFFO1lBQzVGLE1BQU0sT0FBTyxHQUFHLElBQUksa0NBQXdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWxFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6QixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNyRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTFFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLHlCQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3BGLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTlCLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JELGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVoRixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakQsY0FBYyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUU5RSxNQUFNLEVBQ0osV0FBVyxFQUNYLFlBQVksR0FDYixHQUFHLElBQUEsaURBQXVCLEVBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFN0MsSUFBQSw2QkFBTSxFQUFDLFdBQVcsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RixJQUFBLDZCQUFNLEVBQUMsWUFBWSxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
|