From 519923010ac2271bd8d4c02084ad8cc51236927e Mon Sep 17 00:00:00 2001 From: Archana Ramini Date: Fri, 26 Apr 2024 14:46:03 -0700 Subject: [PATCH 1/9] Added - Support for Shared Resources feature --- examples/metering_computation/usage/main.tf | 19 ++----------------- .../metering_computation_usage_resource.go | 16 ++++++++++++++++ .../metering_computation_usage.html.markdown | 2 ++ 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/examples/metering_computation/usage/main.tf b/examples/metering_computation/usage/main.tf index 41fadb4216e..606791d580a 100644 --- a/examples/metering_computation/usage/main.tf +++ b/examples/metering_computation/usage/main.tf @@ -5,27 +5,12 @@ variable "tenancy_ocid" { } -variable "user_ocid" { -} - -variable "fingerprint" { -} - -variable "private_key_path" { -} - -variable "compartment_ocid" { -} - variable "region" { } provider "oci" { - region = var.region - tenancy_ocid = var.tenancy_ocid - user_ocid = var.user_ocid - fingerprint = var.fingerprint - private_key_path = var.private_key_path + auth = "SecurityToken" + config_file_profile = "terraform-federation-test" } variable "time_usage_ended" { diff --git a/internal/service/metering_computation/metering_computation_usage_resource.go b/internal/service/metering_computation/metering_computation_usage_resource.go index e4576c35114..2f778338c09 100644 --- a/internal/service/metering_computation/metering_computation_usage_resource.go +++ b/internal/service/metering_computation/metering_computation_usage_resource.go @@ -169,6 +169,14 @@ func MeteringComputationUsageResource() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "attributed_cost": { + Type: schema.TypeString, + Computed: true, + }, + "attributed_usage": { + Type: schema.TypeString, + Computed: true, + }, "compartment_id": { Type: schema.TypeString, Computed: true, @@ -522,6 +530,14 @@ func UsageSummaryToMap(obj oci_metering_computation.UsageSummary) map[string]int result["ad"] = string(*obj.Ad) } + if obj.AttributedCost != nil { + result["attributed_cost"] = string(*obj.AttributedCost) + } + + if obj.AttributedUsage != nil { + result["attributed_usage"] = string(*obj.AttributedUsage) + } + if obj.CompartmentId != nil { result["compartment_id"] = string(*obj.CompartmentId) } diff --git a/website/docs/r/metering_computation_usage.html.markdown b/website/docs/r/metering_computation_usage.html.markdown index 958880f633e..65b9bd02a78 100644 --- a/website/docs/r/metering_computation_usage.html.markdown +++ b/website/docs/r/metering_computation_usage.html.markdown @@ -80,6 +80,8 @@ The following attributes are exported: * `group_by` - Aggregate the result by. * `items` - A list of usage items. * `ad` - The availability domain of the usage. + * `attributed_cost` - The attributed cost with a max value of 9999999999.999999999999 and a minimum value of 0. + * `attributed_usage` - The attributed usage with a max value of 9999999999.999999999999 and a minimum value of 0. * `compartment_id` - The compartment OCID. * `compartment_name` - The compartment name. * `compartment_path` - The compartment path, starting from root. From fd6149456d3160ce1be8f9aa14510e94a5ef1a82 Mon Sep 17 00:00:00 2001 From: Gaurav Taneja Date: Thu, 30 May 2024 01:57:10 +0000 Subject: [PATCH 2/9] Added - Support for Support Dynamic list of ZDM parameters for Oracle<>Oracle migrations --- .../databasemigration/migration/migration.tf | 110 ++++++++++++- .../database_migration_migration_test.go | 154 ++++++++++-------- .../database_migration_connection_resource.go | 2 +- ...atabase_migration_migration_data_source.go | 6 + .../database_migration_migration_resource.go | 105 ++++++++++++ ...atabase_migration_connection.html.markdown | 2 +- ...tabase_migration_connections.html.markdown | 2 +- .../d/database_migration_job.html.markdown | 2 +- ...migration_job_advisor_report.html.markdown | 2 +- .../d/database_migration_jobs.html.markdown | 2 +- ...database_migration_migration.html.markdown | 6 +- ...ation_migration_object_types.html.markdown | 2 +- ...atabase_migration_migrations.html.markdown | 6 +- ...atabase_migration_connection.html.markdown | 2 +- .../r/database_migration_job.html.markdown | 2 +- ...database_migration_migration.html.markdown | 17 +- 16 files changed, 341 insertions(+), 81 deletions(-) diff --git a/examples/databasemigration/migration/migration.tf b/examples/databasemigration/migration/migration.tf index c579c8742ce..cc63c6c222f 100644 --- a/examples/databasemigration/migration/migration.tf +++ b/examples/databasemigration/migration/migration.tf @@ -103,13 +103,14 @@ data "oci_database_migration_job" "test_job" { job_id = var.jobId } -data "oci_database_migration_agent" "test_agent" { - agent_id = "agentId" -} + +variable "migration_id" { + default = "" +} data "oci_database_migration_migrations" "test_migrations" { #Required - compartment_id = var.compartment_id + migration_id = var.migration_id } data "oci_database_migration_job_advisor_report" "test_job_advisor_report" { @@ -123,8 +124,43 @@ data "oci_database_migration_job_output" "test_job_output" { data "oci_database_migration_migration_object_types" "test_migration_object_types" { connection_type = "MYSQL" } +variable "connection_string" { + default = "" +} +variable "nsg_ids" { + default = "" +} +resource "oci_database_migration_connection" "test_connection_rds_source" { + compartment_id = var.compartment_id + display_name = "TF_display_test_rds_source" + connection_type = "ORACLE" + key_id = var.kms_key_id + vault_id = var.kms_vault_id + connection_string = var.connection_string + password = "BEstrO0ng_#11" + technology_type = "AMAZON_RDS_ORACLE" + username = "ggfe" + nsg_ids = var.nsg_ids + replication_password="replicationPassword" + replication_username="replicationUsername" +} -data "oci_database_migration_agent_images" "test_agent_images" {} +variable "database_autonomous_id" { + default = "" +} +resource "oci_database_migration_connection" "test_connection_rds_target" { + compartment_id = var.compartment_id + display_name = "TF_display_test_rds_target" + connection_type = "ORACLE" + key_id = var.kms_key_id + vault_id = var.kms_vault_id + database_id = var.database_autonomous_id + password = "BEstrO0ng_#11" + technology_type = "OCI_AUTONOMOUS_DATABASE" + username = "ggfe" + replication_password="replicationPassword" + replication_username="replicationUsername" +} resource "oci_database_migration_connection" "test_connection_target" { compartment_id = var.compartment_id @@ -200,6 +236,70 @@ resource "oci_database_migration_migration" "test_migration" { display_name = "displayName" } +resource "oci_database_migration_migration" "test_offline_migration" { + compartment_id = var.compartment_id + database_combination = "MYSQL" + source_database_connection_id = var.source_connection_mysql_id + target_database_connection_id = var.target_connection_mysql_id + type = "OFFLINE" + display_name = "displayName" +} + +variable "source_connection_oracle_id" { + default = "" +} +variable "source_connection_container_oracle_id" { + default = "" +} +variable "target_connection_oracle_id" { + default = "" +} +variable "bucket_oracle_id" { + default = "" +} +resource "oci_database_migration_migration" "test_oracle_migration" { + compartment_id = var.compartment_id + database_combination = "ORACLE" + source_database_connection_id = var.source_connection_oracle_id + source_container_database_connection_id = var.source_connection_container_oracle_id + target_database_connection_id = var.target_connection_oracle_id + advanced_parameters { + data_type = "STRING" + name = "DATAPUMPSETTINGS_METADATAONLY" + value = "True" + } + data_transfer_medium_details { + type = "OBJECT_STORAGE" + object_storage_bucket { + bucket = var.bucket_oracle_id + namespace = "namespace" + } + } + type = "ONLINE" + display_name = "displayName" +} + +resource "oci_database_migration_migration" "test_oracle_rds_migration" { + compartment_id = var.compartment_id + database_combination = "ORACLE" + source_database_connection_id = oci_database_migration_connection.test_connection_rds_source.id + target_database_connection_id = oci_database_migration_connection.test_connection_rds_target.id + + data_transfer_medium_details { + type = "AWS_S3" + name = "rdsbucket" + region = "us-east-1" + secret_access_key = "12345/12345" + access_key_id = "12345" + object_storage_bucket { + bucket = var.bucket_oracle_id + namespace = "namespace" + } + } + type = "ONLINE" + display_name = "displayName" +} + output "password" { sensitive = true value = random_string.autonomous_database_admin_password.result diff --git a/internal/integrationtest/database_migration_migration_test.go b/internal/integrationtest/database_migration_migration_test.go index d0c0281752c..c197bb09271 100644 --- a/internal/integrationtest/database_migration_migration_test.go +++ b/internal/integrationtest/database_migration_migration_test.go @@ -1,5 +1,5 @@ -// // Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved. -// // Licensed under the Mozilla Public License v2.0 +// // // Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved. +// // // Licensed under the Mozilla Public License v2.0 package integrationtest import ( @@ -40,6 +40,23 @@ var ( } DatabaseMigrationMigrationRepresentation = map[string]interface{}{ + "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, + "database_combination": acctest.Representation{RepType: acctest.Required, Create: `ORACLE`}, + "source_database_connection_id": acctest.Representation{RepType: acctest.Required, Create: `${var.source_connection_oracle_id}`}, + "target_database_connection_id": acctest.Representation{RepType: acctest.Required, Create: `${var.target_connection_oracle_id}`}, + "type": acctest.Representation{RepType: acctest.Required, Create: `ONLINE`, Update: `OFFLINE`}, + "advanced_parameters": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationAdvancedParametersRepresentation}, + "advisor_settings": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationAdvisorSettingsRepresentation}, + "bulk_include_exclude_data": acctest.Representation{RepType: acctest.Optional, Create: `bulkIncludeExcludeData`}, + "data_transfer_medium_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationDataTransferMediumDetailsRepresentation}, + "description": acctest.Representation{RepType: acctest.Optional, Create: `description`, Update: `description2`}, + "display_name": acctest.Representation{RepType: acctest.Required, Create: `displayName`, Update: `displayName2`}, + "include_objects": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationIncludeObjectsRepresentation}, + "initial_load_settings": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationInitialLoadSettingsOracleRepresentation}, + "source_container_database_connection_id": acctest.Representation{RepType: acctest.Required, Create: `${var.source_connection_container_oracle_id}`}, + } + + DatabaseMigrationMigrationRepresentationMySQL = map[string]interface{}{ "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`}, "database_combination": acctest.Representation{RepType: acctest.Required, Create: `MYSQL`}, "source_database_connection_id": acctest.Representation{RepType: acctest.Required, Create: `${var.source_connection_mysql_id}`}, @@ -54,7 +71,11 @@ var ( "include_objects": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationIncludeObjectsRepresentation}, "initial_load_settings": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationInitialLoadSettingsRepresentation}, } - + DatabaseMigrationMigrationAdvancedParametersRepresentation = map[string]interface{}{ + "data_type": acctest.Representation{RepType: acctest.Required, Create: `STRING`, Update: `INTEGER`}, + "name": acctest.Representation{RepType: acctest.Required, Create: `DATAPUMPSETTINGS_METADATAONLY`, Update: `DATAPUMPSETTINGS_DUMPFILESIZE`}, + "value": acctest.Representation{RepType: acctest.Required, Create: `True`, Update: `5000`}, + } DatabaseMigrationMigrationAdvisorSettingsRepresentation = map[string]interface{}{ "is_ignore_errors": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, "is_skip_advisor": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, @@ -64,11 +85,11 @@ var ( "object_storage_bucket": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationDataTransferMediumDetailsObjectStorageBucketRepresentation}, } DatabaseMigrationMigrationExcludeObjectsRepresentation = map[string]interface{}{ - "object": acctest.Representation{RepType: acctest.Required, Create: `object`}, + "object": acctest.Representation{RepType: acctest.Required, Create: `.*`}, "is_omit_excluded_table_from_replication": acctest.Representation{RepType: acctest.Optional, Create: `false`}, "owner": acctest.Representation{RepType: acctest.Optional, Create: `owner`}, "schema": acctest.Representation{RepType: acctest.Optional, Create: `schema`}, - "type": acctest.Representation{RepType: acctest.Optional, Create: `type`}, + "type": acctest.Representation{RepType: acctest.Optional, Create: `ALL`}, } DatabaseMigrationMigrationGgsDetailsRepresentation = map[string]interface{}{ "acceptable_lag": acctest.Representation{RepType: acctest.Optional, Create: `10`, Update: `11`}, @@ -84,11 +105,11 @@ var ( "replicat": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationHubDetailsReplicatRepresentation}, } DatabaseMigrationMigrationIncludeObjectsRepresentation = map[string]interface{}{ - "object": acctest.Representation{RepType: acctest.Required, Create: `object`}, + "object": acctest.Representation{RepType: acctest.Required, Create: `.*`}, "is_omit_excluded_table_from_replication": acctest.Representation{RepType: acctest.Optional, Create: `false`}, "owner": acctest.Representation{RepType: acctest.Optional, Create: `owner`}, "schema": acctest.Representation{RepType: acctest.Optional, Create: `schema`}, - "type": acctest.Representation{RepType: acctest.Optional, Create: `type`}, + "type": acctest.Representation{RepType: acctest.Optional, Create: `ALL`}, } DatabaseMigrationMigrationInitialLoadSettingsRepresentation = map[string]interface{}{ "job_mode": acctest.Representation{RepType: acctest.Required, Create: `FULL`, Update: `SCHEMA`}, @@ -97,6 +118,11 @@ var ( "is_ignore_existing_objects": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, "is_tz_utc": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, } + DatabaseMigrationMigrationInitialLoadSettingsOracleRepresentation = map[string]interface{}{ + "job_mode": acctest.Representation{RepType: acctest.Required, Create: `SCHEMA`, Update: `SCHEMA`}, + "data_pump_parameters": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationInitialLoadSettingsDataPumpParametersRepresentation}, + "export_directory_object": acctest.RepresentationGroup{RepType: acctest.Optional, Group: DatabaseMigrationMigrationInitialLoadSettingsExportDirectoryObjectRepresentation}, + } DatabaseMigrationMigrationDataTransferMediumDetailsObjectStorageBucketRepresentation = map[string]interface{}{ "bucket": acctest.Representation{RepType: acctest.Optional, Create: `${var.bucket_mysql_id}`, Update: `${var.bucket_mysql_id}`}, "namespace": acctest.Representation{RepType: acctest.Optional, Create: `namespace`, Update: `namespace2`}, @@ -131,7 +157,6 @@ var ( } DatabaseMigrationMigrationInitialLoadSettingsDataPumpParametersRepresentation = map[string]interface{}{ "estimate": acctest.Representation{RepType: acctest.Optional, Create: `BLOCKS`, Update: `STATISTICS`}, - "exclude_parameters": acctest.Representation{RepType: acctest.Optional, Create: []string{`excludeParameters`}, Update: []string{`excludeParameters2`}}, "export_parallelism_degree": acctest.Representation{RepType: acctest.Optional, Create: `10`, Update: `11`}, "import_parallelism_degree": acctest.Representation{RepType: acctest.Optional, Create: `10`, Update: `11`}, "is_cluster": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`}, @@ -139,7 +164,7 @@ var ( } DatabaseMigrationMigrationInitialLoadSettingsExportDirectoryObjectRepresentation = map[string]interface{}{ "name": acctest.Representation{RepType: acctest.Optional, Create: `name`, Update: `name2`}, - "path": acctest.Representation{RepType: acctest.Optional, Create: `path`, Update: `path2`}, + "path": acctest.Representation{RepType: acctest.Optional, Create: `/u01/app/oracle/dumpdir`, Update: `/u01/app/oracle/dumpdir2`}, } DatabaseMigrationMigrationInitialLoadSettingsImportDirectoryObjectRepresentation = map[string]interface{}{ "name": acctest.Representation{RepType: acctest.Optional, Create: `name`, Update: `name2`}, @@ -185,6 +210,15 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { targetConnectionId := utils.GetEnvSettingWithBlankDefault("target_connection_mysql_id") targetConnectionIdVariableStr := fmt.Sprintf("variable \"target_connection_mysql_id\" { default = \"%s\" }\n", targetConnectionId) + sourceConnectionOracleId := utils.GetEnvSettingWithBlankDefault("source_connection_oracle_id") + sourceConnectionOracleIdVariableStr := fmt.Sprintf("variable \"source_connection_oracle_id\" { default = \"%s\" }\n", sourceConnectionOracleId) + + sourceConnectionContainerOracleId := utils.GetEnvSettingWithBlankDefault("source_connection_container_oracle_id") + sourceConnectionContainerOracleIdVariableStr := fmt.Sprintf("variable \"source_connection_container_oracle_id\" { default = \"%s\" }\n", sourceConnectionContainerOracleId) + + targetConnectionOracleId := utils.GetEnvSettingWithBlankDefault("target_connection_oracle_id") + targetConnectionOracleIdVariableStr := fmt.Sprintf("variable \"target_connection_oracle_id\" { default = \"%s\" }\n", targetConnectionOracleId) + bucketId := utils.GetEnvSettingWithBlankDefault("bucket_mysql_id") bucketIdVariableStr := fmt.Sprintf("variable \"bucket_mysql_id\" { default = \"%s\" }\n", bucketId) @@ -194,17 +228,17 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { var resId, resId2 string // Save TF content to Create resource with optional properties. This has to be exactly the same as the config part in the "create with optionals" step in the test. - acctest.SaveConfigContent(config+compartmentIdVariableStr+kmsKeyIdVariableStr+kmsVaultIdVariableStr+sourceConnectionIdVariableStr+targetConnectionIdVariableStr+bucketIdVariableStr+ + acctest.SaveConfigContent(config+compartmentIdVariableStr+kmsKeyIdVariableStr+kmsVaultIdVariableStr+sourceConnectionIdVariableStr+targetConnectionIdVariableStr+bucketIdVariableStr+sourceConnectionOracleIdVariableStr+sourceConnectionContainerOracleIdVariableStr+targetConnectionOracleIdVariableStr+ acctest.GenerateResourceFromRepresentationMap("oci_database_migration_migration", "test_migration", acctest.Optional, acctest.Create, DatabaseMigrationMigrationRepresentation), "databasemigration", "migration", t) acctest.ResourceTest(t, testAccCheckDatabaseMigrationMigrationDestroy, []resource.TestStep{ // verify Create { - Config: config + compartmentIdVariableStr + kmsKeyIdVariableStr + kmsVaultIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + + Config: config + compartmentIdVariableStr + kmsKeyIdVariableStr + kmsVaultIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + sourceConnectionOracleIdVariableStr + sourceConnectionContainerOracleIdVariableStr + targetConnectionOracleIdVariableStr + acctest.GenerateResourceFromRepresentationMap("oci_database_migration_migration", "test_migration", acctest.Required, acctest.Create, DatabaseMigrationMigrationRepresentation), Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), - resource.TestCheckResourceAttr(resourceName, "database_combination", "MYSQL"), + resource.TestCheckResourceAttr(resourceName, "database_combination", "ORACLE"), resource.TestCheckResourceAttrSet(resourceName, "source_database_connection_id"), resource.TestCheckResourceAttrSet(resourceName, "target_database_connection_id"), resource.TestCheckResourceAttr(resourceName, "type", "ONLINE"), @@ -221,9 +255,13 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { }, // verify Create with optionals { - Config: config + compartmentIdVariableStr + kmsKeyIdVariableStr + kmsVaultIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + + Config: config + compartmentIdVariableStr + kmsKeyIdVariableStr + kmsVaultIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + sourceConnectionOracleIdVariableStr + sourceConnectionContainerOracleIdVariableStr + targetConnectionOracleIdVariableStr + acctest.GenerateResourceFromRepresentationMap("oci_database_migration_migration", "test_migration", acctest.Optional, acctest.Create, DatabaseMigrationMigrationRepresentation), Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.#", "1"), + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.0.data_type", "STRING"), + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.0.name", "DATAPUMPSETTINGS_METADATAONLY"), + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.0.value", "True"), resource.TestCheckResourceAttr(resourceName, "advisor_settings.#", "1"), resource.TestCheckResourceAttr(resourceName, "advisor_settings.0.is_ignore_errors", "false"), resource.TestCheckResourceAttr(resourceName, "advisor_settings.0.is_skip_advisor", "false"), @@ -233,25 +271,21 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "data_transfer_medium_details.0.object_storage_bucket.#", "1"), resource.TestCheckResourceAttr(resourceName, "data_transfer_medium_details.0.object_storage_bucket.0.namespace", "namespace"), resource.TestCheckResourceAttr(resourceName, "data_transfer_medium_details.0.type", "OBJECT_STORAGE"), - resource.TestCheckResourceAttr(resourceName, "database_combination", "MYSQL"), + resource.TestCheckResourceAttr(resourceName, "database_combination", "ORACLE"), resource.TestCheckResourceAttr(resourceName, "description", "description"), resource.TestCheckResourceAttr(resourceName, "display_name", "displayName"), - resource.TestCheckResourceAttr(resourceName, "exclude_objects.#", "1"), - acctest.CheckResourceSetContainsElementWithProperties(resourceName, "exclude_objects", map[string]string{ - "is_omit_excluded_table_from_replication": "false", - "object": "object", - "owner": "owner", - "schema": "schema", - "type": "type", - }, - []string{}), resource.TestCheckResourceAttrSet(resourceName, "id"), + resource.TestCheckResourceAttr(resourceName, "initial_load_settings.#", "1"), + resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_consistent", "false"), + resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_ignore_existing_objects", "false"), + resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_tz_utc", "false"), + resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.job_mode", "SCHEMA"), resource.TestCheckResourceAttr(resourceName, "include_objects.#", "1"), resource.TestCheckResourceAttr(resourceName, "include_objects.0.is_omit_excluded_table_from_replication", "false"), - resource.TestCheckResourceAttr(resourceName, "include_objects.0.object", "object"), + resource.TestCheckResourceAttr(resourceName, "include_objects.0.object", ".*"), resource.TestCheckResourceAttr(resourceName, "include_objects.0.owner", "owner"), resource.TestCheckResourceAttr(resourceName, "include_objects.0.schema", "schema"), - resource.TestCheckResourceAttr(resourceName, "include_objects.0.type", "type"), + resource.TestCheckResourceAttr(resourceName, "include_objects.0.type", "ALL"), resource.TestCheckResourceAttrSet(resourceName, "source_database_connection_id"), resource.TestCheckResourceAttrSet(resourceName, "state"), resource.TestCheckResourceAttrSet(resourceName, "target_database_connection_id"), @@ -268,12 +302,16 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { // verify Update to the compartment (the compartment will be switched back in the next step) { - Config: config + compartmentIdVariableStr + compartmentIdUVariableStr + kmsKeyIdVariableStr + kmsVaultIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + + Config: config + compartmentIdVariableStr + compartmentIdUVariableStr + kmsKeyIdVariableStr + kmsVaultIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + sourceConnectionOracleIdVariableStr + sourceConnectionContainerOracleIdVariableStr + targetConnectionOracleIdVariableStr + acctest.GenerateResourceFromRepresentationMap("oci_database_migration_migration", "test_migration", acctest.Optional, acctest.Create, acctest.RepresentationCopyWithNewProperties(DatabaseMigrationMigrationRepresentation, map[string]interface{}{ "compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id_for_update}`}, })), Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.#", "1"), + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.0.data_type", "STRING"), + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.0.name", "DATAPUMPSETTINGS_METADATAONLY"), + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.0.value", "True"), resource.TestCheckResourceAttr(resourceName, "advisor_settings.#", "1"), resource.TestCheckResourceAttr(resourceName, "advisor_settings.0.is_ignore_errors", "false"), resource.TestCheckResourceAttr(resourceName, "advisor_settings.0.is_skip_advisor", "false"), @@ -283,31 +321,22 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "data_transfer_medium_details.0.object_storage_bucket.#", "1"), resource.TestCheckResourceAttr(resourceName, "data_transfer_medium_details.0.object_storage_bucket.0.namespace", "namespace"), resource.TestCheckResourceAttr(resourceName, "data_transfer_medium_details.0.type", "OBJECT_STORAGE"), - resource.TestCheckResourceAttr(resourceName, "database_combination", "MYSQL"), + resource.TestCheckResourceAttr(resourceName, "database_combination", "ORACLE"), resource.TestCheckResourceAttr(resourceName, "description", "description"), resource.TestCheckResourceAttr(resourceName, "display_name", "displayName"), - resource.TestCheckResourceAttr(resourceName, "exclude_objects.#", "1"), - acctest.CheckResourceSetContainsElementWithProperties(resourceName, "exclude_objects", map[string]string{ - "is_omit_excluded_table_from_replication": "false", - "object": "object", - "owner": "owner", - "schema": "schema", - "type": "type", - }, - []string{}), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "include_objects.#", "1"), resource.TestCheckResourceAttr(resourceName, "include_objects.0.is_omit_excluded_table_from_replication", "false"), - resource.TestCheckResourceAttr(resourceName, "include_objects.0.object", "object"), + resource.TestCheckResourceAttr(resourceName, "include_objects.0.object", ".*"), resource.TestCheckResourceAttr(resourceName, "include_objects.0.owner", "owner"), resource.TestCheckResourceAttr(resourceName, "include_objects.0.schema", "schema"), - resource.TestCheckResourceAttr(resourceName, "include_objects.0.type", "type"), + resource.TestCheckResourceAttr(resourceName, "include_objects.0.type", "ALL"), resource.TestCheckResourceAttr(resourceName, "initial_load_settings.#", "1"), - resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.handle_grant_errors", "ABORT"), + resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_consistent", "false"), resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_ignore_existing_objects", "false"), resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_tz_utc", "false"), - resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.job_mode", "FULL"), + resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.job_mode", "SCHEMA"), resource.TestCheckResourceAttrSet(resourceName, "source_database_connection_id"), resource.TestCheckResourceAttrSet(resourceName, "state"), resource.TestCheckResourceAttrSet(resourceName, "target_database_connection_id"), @@ -326,9 +355,13 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { // verify updates to updatable parameters { - Config: config + compartmentIdVariableStr + kmsKeyIdVariableStr + kmsVaultIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + + Config: config + compartmentIdVariableStr + kmsKeyIdVariableStr + kmsVaultIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + sourceConnectionOracleIdVariableStr + sourceConnectionContainerOracleIdVariableStr + targetConnectionOracleIdVariableStr + acctest.GenerateResourceFromRepresentationMap("oci_database_migration_migration", "test_migration", acctest.Optional, acctest.Update, DatabaseMigrationMigrationRepresentation), Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.#", "1"), + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.0.data_type", "INTEGER"), + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.0.name", "DATAPUMPSETTINGS_DUMPFILESIZE"), + resource.TestCheckResourceAttr(resourceName, "advanced_parameters.0.value", "5000"), resource.TestCheckResourceAttr(resourceName, "advisor_settings.#", "1"), resource.TestCheckResourceAttr(resourceName, "advisor_settings.0.is_ignore_errors", "true"), resource.TestCheckResourceAttr(resourceName, "advisor_settings.0.is_skip_advisor", "true"), @@ -338,31 +371,21 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "data_transfer_medium_details.0.object_storage_bucket.#", "1"), resource.TestCheckResourceAttr(resourceName, "data_transfer_medium_details.0.object_storage_bucket.0.namespace", "namespace2"), resource.TestCheckResourceAttr(resourceName, "data_transfer_medium_details.0.type", "OBJECT_STORAGE"), - resource.TestCheckResourceAttr(resourceName, "database_combination", "MYSQL"), + resource.TestCheckResourceAttr(resourceName, "database_combination", "ORACLE"), resource.TestCheckResourceAttr(resourceName, "description", "description2"), resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"), - resource.TestCheckResourceAttr(resourceName, "exclude_objects.#", "1"), - acctest.CheckResourceSetContainsElementWithProperties(resourceName, "exclude_objects", map[string]string{ - "is_omit_excluded_table_from_replication": "false", - "object": "object", - "owner": "owner", - "schema": "schema", - "type": "type", - }, - []string{}), resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "include_objects.#", "1"), resource.TestCheckResourceAttr(resourceName, "include_objects.0.is_omit_excluded_table_from_replication", "false"), - resource.TestCheckResourceAttr(resourceName, "include_objects.0.object", "object"), + resource.TestCheckResourceAttr(resourceName, "include_objects.0.object", ".*"), resource.TestCheckResourceAttr(resourceName, "include_objects.0.owner", "owner"), resource.TestCheckResourceAttr(resourceName, "include_objects.0.schema", "schema"), - resource.TestCheckResourceAttr(resourceName, "include_objects.0.type", "type"), + resource.TestCheckResourceAttr(resourceName, "include_objects.0.type", "ALL"), resource.TestCheckResourceAttr(resourceName, "initial_load_settings.#", "1"), - resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.handle_grant_errors", "DROP_ACCOUNT"), - resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_consistent", "true"), - resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_ignore_existing_objects", "true"), - resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_tz_utc", "true"), + resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_consistent", "false"), + resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_ignore_existing_objects", "false"), + resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.is_tz_utc", "false"), resource.TestCheckResourceAttr(resourceName, "initial_load_settings.0.job_mode", "SCHEMA"), resource.TestCheckResourceAttrSet(resourceName, "source_database_connection_id"), resource.TestCheckResourceAttrSet(resourceName, "state"), @@ -383,7 +406,7 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { { Config: config + acctest.GenerateDataSourceFromRepresentationMap("oci_database_migration_migrations", "test_migrations", acctest.Optional, acctest.Update, DatabaseMigrationMigrationDataSourceRepresentation) + - compartmentIdVariableStr + kmsKeyIdVariableStr + kmsVaultIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + + compartmentIdVariableStr + kmsKeyIdVariableStr + kmsVaultIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + sourceConnectionOracleIdVariableStr + sourceConnectionContainerOracleIdVariableStr + targetConnectionOracleIdVariableStr + acctest.GenerateResourceFromRepresentationMap("oci_database_migration_migration", "test_migration", acctest.Optional, acctest.Update, DatabaseMigrationMigrationRepresentation), Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId), @@ -394,10 +417,14 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { { Config: config + acctest.GenerateDataSourceFromRepresentationMap("oci_database_migration_migration", "test_migration", acctest.Required, acctest.Create, DatabaseMigrationMigrationSingularDataSourceRepresentation) + - compartmentIdVariableStr + kmsKeyIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + kmsVaultIdVariableStr + DatabaseMigrationMigrationResourceConfig, + compartmentIdVariableStr + kmsKeyIdVariableStr + sourceConnectionIdVariableStr + targetConnectionIdVariableStr + bucketIdVariableStr + kmsVaultIdVariableStr + sourceConnectionOracleIdVariableStr + sourceConnectionContainerOracleIdVariableStr + targetConnectionOracleIdVariableStr + DatabaseMigrationMigrationResourceConfig, Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttrSet(singularDatasourceName, "migration_id"), + resource.TestCheckResourceAttr(singularDatasourceName, "advanced_parameters.#", "1"), + resource.TestCheckResourceAttr(singularDatasourceName, "advanced_parameters.0.data_type", "INTEGER"), + resource.TestCheckResourceAttr(singularDatasourceName, "advanced_parameters.0.name", "DATAPUMPSETTINGS_DUMPFILESIZE"), + resource.TestCheckResourceAttr(singularDatasourceName, "advanced_parameters.0.value", "5000"), resource.TestCheckResourceAttr(singularDatasourceName, "advisor_settings.#", "1"), resource.TestCheckResourceAttr(singularDatasourceName, "advisor_settings.0.is_ignore_errors", "true"), resource.TestCheckResourceAttr(singularDatasourceName, "advisor_settings.0.is_skip_advisor", "true"), @@ -406,15 +433,14 @@ func TestDatabaseMigrationMigrationResource_basic(t *testing.T) { resource.TestCheckResourceAttr(singularDatasourceName, "data_transfer_medium_details.0.object_storage_bucket.#", "1"), resource.TestCheckResourceAttr(singularDatasourceName, "data_transfer_medium_details.0.object_storage_bucket.0.namespace", "namespace2"), resource.TestCheckResourceAttr(singularDatasourceName, "data_transfer_medium_details.0.type", "OBJECT_STORAGE"), - resource.TestCheckResourceAttr(singularDatasourceName, "database_combination", "MYSQL"), + resource.TestCheckResourceAttr(singularDatasourceName, "database_combination", "ORACLE"), resource.TestCheckResourceAttr(singularDatasourceName, "description", "description2"), resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"), resource.TestCheckResourceAttrSet(singularDatasourceName, "id"), resource.TestCheckResourceAttr(singularDatasourceName, "initial_load_settings.#", "1"), - resource.TestCheckResourceAttr(singularDatasourceName, "initial_load_settings.0.handle_grant_errors", "DROP_ACCOUNT"), - resource.TestCheckResourceAttr(singularDatasourceName, "initial_load_settings.0.is_consistent", "true"), - resource.TestCheckResourceAttr(singularDatasourceName, "initial_load_settings.0.is_ignore_existing_objects", "true"), - resource.TestCheckResourceAttr(singularDatasourceName, "initial_load_settings.0.is_tz_utc", "true"), + resource.TestCheckResourceAttr(singularDatasourceName, "initial_load_settings.0.is_consistent", "false"), + resource.TestCheckResourceAttr(singularDatasourceName, "initial_load_settings.0.is_ignore_existing_objects", "false"), + resource.TestCheckResourceAttr(singularDatasourceName, "initial_load_settings.0.is_tz_utc", "false"), resource.TestCheckResourceAttr(singularDatasourceName, "initial_load_settings.0.job_mode", "SCHEMA"), resource.TestCheckResourceAttrSet(singularDatasourceName, "state"), resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"), diff --git a/internal/service/database_migration/database_migration_connection_resource.go b/internal/service/database_migration/database_migration_connection_resource.go index a1dfc1bab1a..e0100e0a617 100644 --- a/internal/service/database_migration/database_migration_connection_resource.go +++ b/internal/service/database_migration/database_migration_connection_resource.go @@ -622,7 +622,7 @@ func (s *DatabaseMigrationConnectionResourceCrud) SetData() error { nsgIds = append(nsgIds, item) } //s.D.Set("nsg_ids", schema.NewSet(tfresource.LiteralTypeHashCodeForSets, nsgIds)) - s.D.Set("nsg_ids", v.NsgIds) + s.D.Set("nsg_ids", nsgIds) if v.Password != nil { s.D.Set("password", *v.Password) diff --git a/internal/service/database_migration/database_migration_migration_data_source.go b/internal/service/database_migration/database_migration_migration_data_source.go index 527b66df203..7a304bdbcb2 100644 --- a/internal/service/database_migration/database_migration_migration_data_source.go +++ b/internal/service/database_migration/database_migration_migration_data_source.go @@ -159,6 +159,12 @@ func (s *DatabaseMigrationMigrationDataSourceCrud) SetData() error { case oci_database_migration.OracleMigration: s.D.Set("database_combination", "ORACLE") + advancedParameters := []interface{}{} + for _, item := range v.AdvancedParameters { + advancedParameters = append(advancedParameters, migrationParameterDetailsToMap(item)) + } + s.D.Set("advanced_parameters", advancedParameters) + if v.AdvisorSettings != nil { s.D.Set("advisor_settings", []interface{}{OracleAdvisorSettingsToMap(v.AdvisorSettings)}) } else { diff --git a/internal/service/database_migration/database_migration_migration_resource.go b/internal/service/database_migration/database_migration_migration_resource.go index 9228f3f20cf..05e1c2d7a13 100644 --- a/internal/service/database_migration/database_migration_migration_resource.go +++ b/internal/service/database_migration/database_migration_migration_resource.go @@ -62,6 +62,35 @@ func DatabaseMigrationMigrationResource() *schema.Resource { }, // Optional + "advanced_parameters": { + Type: schema.TypeList, + Optional: true, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + // Required + + // Optional + "data_type": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "name": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "value": { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + + // Computed + }, + }, + }, "advisor_settings": { Type: schema.TypeList, Optional: true, @@ -1221,6 +1250,14 @@ func (s *DatabaseMigrationMigrationResourceCrud) SetData() error { case oci_database_migration.OracleMigration: s.D.Set("database_combination", "ORACLE") + if v.AdvancedParameters != nil { + advancedParameters := []interface{}{} + for _, item := range v.AdvancedParameters { + advancedParameters = append(advancedParameters, migrationParameterDetailsToMap(item)) + } + s.D.Set("advanced_parameters", advancedParameters) + } + if v.AdvisorSettings != nil { s.D.Set("advisor_settings", []interface{}{OracleAdvisorSettingsToMap(v.AdvisorSettings)}) } else { @@ -1323,6 +1360,22 @@ func (s *DatabaseMigrationMigrationResourceCrud) SetData() error { return nil } +func migrationParameterDetailsToMap(obj oci_database_migration.MigrationParameterDetails) map[string]interface{} { + result := map[string]interface{}{} + + if obj.Name != nil { + result["name"] = string(*obj.Name) + } + + if obj.Value != nil { + result["value"] = string(*obj.Value) + } + + result["data_type"] = obj.DataType + + return result +} + func (s *DatabaseMigrationMigrationResourceCrud) mapToAdminCredentials(fieldKeyFormat string) (oci_database_migration.AdminCredentials, error) { result := oci_database_migration.AdminCredentials{} @@ -2710,6 +2763,26 @@ func MetadataRemapToMap(obj oci_database_migration.MetadataRemap) map[string]int return result } +func (s *DatabaseMigrationMigrationResourceCrud) mapToMigrationParameterDetails(fieldKeyFormat string) (oci_database_migration.MigrationParameterDetails, error) { + result := oci_database_migration.MigrationParameterDetails{} + + if dataType, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "data_type")); ok { + result.DataType = oci_database_migration.AdvancedParameterDataTypesEnum(dataType.(string)) + } + + if name, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "name")); ok { + tmp := name.(string) + result.Name = &tmp + } + + if value, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "value")); ok { + tmp := value.(string) + result.Value = &tmp + } + + return result, nil +} + func MigrationSummaryToMap(obj oci_database_migration.MigrationSummary) map[string]interface{} { result := map[string]interface{}{} switch v := (obj).(type) { @@ -4783,6 +4856,22 @@ func (s *DatabaseMigrationMigrationResourceCrud) populateTopLevelPolymorphicCrea request.CreateMigrationDetails = details case strings.ToLower("ORACLE"): details := oci_database_migration.CreateOracleMigrationDetails{} + if advancedParameters, ok := s.D.GetOkExists("advanced_parameters"); ok { + interfaces := advancedParameters.([]interface{}) + tmp := make([]oci_database_migration.MigrationParameterDetails, len(interfaces)) + for i := range interfaces { + stateDataIndex := i + fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "advanced_parameters", stateDataIndex) + converted, err := s.mapToMigrationParameterDetails(fieldKeyFormat) + if err != nil { + return err + } + tmp[i] = converted + } + if len(tmp) != 0 || s.D.HasChange("advanced_parameters") { + details.AdvancedParameters = tmp + } + } if advisorSettings, ok := s.D.GetOkExists("advisor_settings"); ok { if tmpList := advisorSettings.([]interface{}); len(tmpList) > 0 { fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "advisor_settings", 0) @@ -5010,6 +5099,22 @@ func (s *DatabaseMigrationMigrationResourceCrud) populateTopLevelPolymorphicUpda request.UpdateMigrationDetails = details case strings.ToLower("ORACLE"): details := oci_database_migration.UpdateOracleMigrationDetails{} + if advancedParameters, ok := s.D.GetOkExists("advanced_parameters"); ok { + interfaces := advancedParameters.([]interface{}) + tmp := make([]oci_database_migration.MigrationParameterDetails, len(interfaces)) + for i := range interfaces { + stateDataIndex := i + fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "advanced_parameters", stateDataIndex) + converted, err := s.mapToMigrationParameterDetails(fieldKeyFormat) + if err != nil { + return err + } + tmp[i] = converted + } + if len(tmp) != 0 || s.D.HasChange("advanced_parameters") { + details.AdvancedParameters = tmp + } + } if advisorSettings, ok := s.D.GetOkExists("advisor_settings"); ok { if tmpList := advisorSettings.([]interface{}); len(tmpList) > 0 { fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "advisor_settings", 0) diff --git a/website/docs/d/database_migration_connection.html.markdown b/website/docs/d/database_migration_connection.html.markdown index ef12abf9eb2..09f1d6f351b 100644 --- a/website/docs/d/database_migration_connection.html.markdown +++ b/website/docs/d/database_migration_connection.html.markdown @@ -12,7 +12,7 @@ This data source provides details about a specific Connection resource in Oracle Display Database Connection details. -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage diff --git a/website/docs/d/database_migration_connections.html.markdown b/website/docs/d/database_migration_connections.html.markdown index fe84abc9076..bcd99664f5c 100644 --- a/website/docs/d/database_migration_connections.html.markdown +++ b/website/docs/d/database_migration_connections.html.markdown @@ -12,7 +12,7 @@ This data source provides the list of Connections in Oracle Cloud Infrastructure List all Database Connections. -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage diff --git a/website/docs/d/database_migration_job.html.markdown b/website/docs/d/database_migration_job.html.markdown index c9877e43944..37f9ba6cd15 100644 --- a/website/docs/d/database_migration_job.html.markdown +++ b/website/docs/d/database_migration_job.html.markdown @@ -12,7 +12,7 @@ This data source provides details about a specific Job resource in Oracle Cloud Get a migration job. -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage diff --git a/website/docs/d/database_migration_job_advisor_report.html.markdown b/website/docs/d/database_migration_job_advisor_report.html.markdown index 2371cc4d409..2f846fda9df 100644 --- a/website/docs/d/database_migration_job_advisor_report.html.markdown +++ b/website/docs/d/database_migration_job_advisor_report.html.markdown @@ -12,7 +12,7 @@ This data source provides details about a specific Job Advisor Report resource i Get the Pre-Migration Advisor report details -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage diff --git a/website/docs/d/database_migration_jobs.html.markdown b/website/docs/d/database_migration_jobs.html.markdown index b049439fd5a..1db3cd74c2d 100644 --- a/website/docs/d/database_migration_jobs.html.markdown +++ b/website/docs/d/database_migration_jobs.html.markdown @@ -13,7 +13,7 @@ This data source provides the list of Jobs in Oracle Cloud Infrastructure Databa List all the names of the Migration jobs associated to the specified migration site. -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage diff --git a/website/docs/d/database_migration_migration.html.markdown b/website/docs/d/database_migration_migration.html.markdown index e75c03b1614..a0af86b989d 100644 --- a/website/docs/d/database_migration_migration.html.markdown +++ b/website/docs/d/database_migration_migration.html.markdown @@ -12,7 +12,7 @@ This data source provides details about a specific Migration resource in Oracle Display Migration details. -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage @@ -34,6 +34,10 @@ The following arguments are supported: The following attributes are exported: +* `advanced_parameters` - List of Migration Parameter objects. + * `data_type` - Parameter data type. + * `name` - Parameter name. + * `value` - If a STRING data type then the value should be an array of characters, if a INTEGER data type then the value should be an integer value, if a FLOAT data type then the value should be an float value, if a BOOLEAN data type then the value should be TRUE or FALSE. * `advisor_settings` - Details about Oracle Advisor Settings. * `is_ignore_errors` - True to not interrupt migration execution due to Pre-Migration Advisor errors. Default is false. * `is_skip_advisor` - True to skip the Pre-Migration Advisor execution. Default is false. diff --git a/website/docs/d/database_migration_migration_object_types.html.markdown b/website/docs/d/database_migration_migration_object_types.html.markdown index 188d9b13b99..850ce716303 100644 --- a/website/docs/d/database_migration_migration_object_types.html.markdown +++ b/website/docs/d/database_migration_migration_object_types.html.markdown @@ -12,7 +12,7 @@ This data source provides the list of Migration Object Types in Oracle Cloud Inf Display sample object types to exclude or include for a Migration. -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage diff --git a/website/docs/d/database_migration_migrations.html.markdown b/website/docs/d/database_migration_migrations.html.markdown index 5fa46ae0ddf..26f42da9127 100644 --- a/website/docs/d/database_migration_migrations.html.markdown +++ b/website/docs/d/database_migration_migrations.html.markdown @@ -12,7 +12,7 @@ This data source provides the list of Migrations in Oracle Cloud Infrastructure List all Migrations. -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage @@ -48,6 +48,10 @@ The following attributes are exported: The following attributes are exported: +* `advanced_parameters` - List of Migration Parameter objects. + * `data_type` - Parameter data type. + * `name` - Parameter name. + * `value` - If a STRING data type then the value should be an array of characters, if a INTEGER data type then the value should be an integer value, if a FLOAT data type then the value should be an float value, if a BOOLEAN data type then the value should be TRUE or FALSE. * `advisor_settings` - Details about Oracle Advisor Settings. * `is_ignore_errors` - True to not interrupt migration execution due to Pre-Migration Advisor errors. Default is false. * `is_skip_advisor` - True to skip the Pre-Migration Advisor execution. Default is false. diff --git a/website/docs/r/database_migration_connection.html.markdown b/website/docs/r/database_migration_connection.html.markdown index 9277ebe8651..2b54aa1937a 100644 --- a/website/docs/r/database_migration_connection.html.markdown +++ b/website/docs/r/database_migration_connection.html.markdown @@ -13,7 +13,7 @@ This resource provides the Connection resource in Oracle Cloud Infrastructure Da Create a Database Connection resource that contains the details to connect to either a Source or Target Database in the migration. -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage diff --git a/website/docs/r/database_migration_job.html.markdown b/website/docs/r/database_migration_job.html.markdown index 0b51cc3f70e..4a1147306b8 100644 --- a/website/docs/r/database_migration_job.html.markdown +++ b/website/docs/r/database_migration_job.html.markdown @@ -12,7 +12,7 @@ This resource provides the Job resource in Oracle Cloud Infrastructure Database Update Migration Job resource details. -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage diff --git a/website/docs/r/database_migration_migration.html.markdown b/website/docs/r/database_migration_migration.html.markdown index 571cfaec32e..575ceb1fd9f 100644 --- a/website/docs/r/database_migration_migration.html.markdown +++ b/website/docs/r/database_migration_migration.html.markdown @@ -14,7 +14,7 @@ Create a Migration resource that contains all the details to perform the database migration operation, such as source and destination database details, credentials, etc. -Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.46.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 +Note: If you wish to use the DMS deprecated API version /20210929 it is necessary to pin the Terraform Provider version to v5.47.0. Newer Terraform provider versions will not support the DMS deprecated API version /20210929 ## Example Usage @@ -29,6 +29,13 @@ resource "oci_database_migration_migration" "test_migration" { type = var.migration_type #Optional + advanced_parameters { + + #Optional + data_type = var.migration_advanced_parameters_data_type + name = var.migration_advanced_parameters_name + value = var.migration_advanced_parameters_value + } advisor_settings { #Optional @@ -195,6 +202,10 @@ resource "oci_database_migration_migration" "test_migration" { The following arguments are supported: +* `advanced_parameters` - (Applicable when database_combination=ORACLE) (Updatable) List of Migration Parameter objects. + * `data_type` - (Required when database_combination=ORACLE) (Updatable) Parameter data type. + * `name` - (Required when database_combination=ORACLE) (Updatable) Parameter name. + * `value` - (Required when database_combination=ORACLE) (Updatable) If a STRING data type then the value should be an array of characters, if a INTEGER data type then the value should be an integer value, if a FLOAT data type then the value should be an float value, if a BOOLEAN data type then the value should be TRUE or FALSE. * `advisor_settings` - (Optional) (Updatable) Optional Pre-Migration advisor settings. * `is_ignore_errors` - (Optional) (Updatable) True to not interrupt migration execution due to Pre-Migration Advisor errors. Default is false. * `is_skip_advisor` - (Optional) (Updatable) True to skip the Pre-Migration Advisor execution. Default is false. @@ -301,6 +312,10 @@ Any change to a property that does not support update will force the destruction The following attributes are exported: +* `advanced_parameters` - List of Migration Parameter objects. + * `data_type` - Parameter data type. + * `name` - Parameter name. + * `value` - If a STRING data type then the value should be an array of characters, if a INTEGER data type then the value should be an integer value, if a FLOAT data type then the value should be an float value, if a BOOLEAN data type then the value should be TRUE or FALSE. * `advisor_settings` - Details about Oracle Advisor Settings. * `is_ignore_errors` - True to not interrupt migration execution due to Pre-Migration Advisor errors. Default is false. * `is_skip_advisor` - True to skip the Pre-Migration Advisor execution. Default is false. From 0fc9196f06a0514028e34f05d4c213a3b1099bf0 Mon Sep 17 00:00:00 2001 From: Raghav Ravishankar <> Date: Mon, 24 Jun 2024 13:40:27 -0700 Subject: [PATCH 3/9] BugFix - Add zero-value check for kms_key during instance updation --- .../integrationtest/core_instance_test.go | 53 ++++++++++++++++--- .../service/core/core_instance_resource.go | 4 +- 2 files changed, 49 insertions(+), 8 deletions(-) diff --git a/internal/integrationtest/core_instance_test.go b/internal/integrationtest/core_instance_test.go index de0d3fd2187..b869851da74 100644 --- a/internal/integrationtest/core_instance_test.go +++ b/internal/integrationtest/core_instance_test.go @@ -331,8 +331,12 @@ var ( "source_type": acctest.Representation{RepType: acctest.Required, Create: `bootVolume`}, "is_preserve_boot_volume_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`}, } - CoreInstanceSourceDetailsUpdateImageIdRepresentation = map[string]interface{}{ - "source_id": acctest.Representation{RepType: acctest.Required, Create: `${var.InstanceImageOCIDShieldedCompatible[var.region]}`}, + CoreInstanceSourceDetailsUpdateImageIdRequiredRepresentation = map[string]interface{}{ + "source_id": acctest.Representation{RepType: acctest.Required, Create: `${var.InstanceImageOCIDShieldedCompatible[var.region]}`}, + "source_type": acctest.Representation{RepType: acctest.Required, Create: `image`}, + } + CoreInstanceSourceDetailsUpdateImageIdOptionalRepresentation = map[string]interface{}{ + "source_id": acctest.Representation{RepType: acctest.Required, Create: `${var.InstanceImageOCID[var.region]}`}, "source_type": acctest.Representation{RepType: acctest.Required, Create: `image`}, "is_preserve_boot_volume_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`}, "kms_key_id": acctest.Representation{RepType: acctest.Optional, Create: `${lookup(data.oci_kms_keys.test_keys_dependency.keys[0], "id")}`}, @@ -2896,6 +2900,7 @@ func TestAccResourceCoreInstance_UpdateSourceDetails(t *testing.T) { config := ` provider oci { + alias = "boot-volume-replacement" test_time_maintenance_reboot_due = "2030-01-01 00:00:00" } ` + acctest.CommonTestVariables() @@ -2918,7 +2923,11 @@ func TestAccResourceCoreInstance_UpdateSourceDetails(t *testing.T) { { Config: acctest.ProviderTestConfig() + compartmentIdVariableStr + CoreInstanceBootVolumeSwapResourceDependencies + acctest.GenerateResourceFromRepresentationMap("oci_core_instance", "test_instance", acctest.Optional, acctest.Create, - acctest.RepresentationCopyWithRemovedProperties(CoreInstanceRepresentation, []string{"dedicated_vm_host_id", "launch_options", "image"})), + acctest.RepresentationCopyWithRemovedProperties( + // SourceDetails w/o kms_key + acctest.GetUpdatedRepresentationCopy("source_details", acctest.RepresentationGroup{RepType: acctest.Required, + Group: instanceSourceDetailsSansKmsRepresentation}, CoreInstanceRepresentation), + []string{"dedicated_vm_host_id", "launch_options", "image"})), Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttrSet(resourceName, "availability_domain"), resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), @@ -2936,13 +2945,43 @@ func TestAccResourceCoreInstance_UpdateSourceDetails(t *testing.T) { ), }, - // Step 1: verify updates to existing source_details property does not destroy the resource - Update the imageId associated with source details + // Step 1: verify updates to existing source_details property does not destroy the resource - Update only imageId associated with source details { Config: config + compartmentIdVariableStr + CoreInstanceBootVolumeSwapResourceDependencies + utils.DefinedShieldedImageOCIDs + acctest.GenerateResourceFromRepresentationMap("oci_core_instance", "test_instance", acctest.Optional, acctest.Create, acctest.RepresentationCopyWithRemovedProperties( - acctest.GetUpdatedRepresentationCopy("source_details", acctest.RepresentationGroup{RepType: acctest.Optional, Group: CoreInstanceSourceDetailsUpdateImageIdRepresentation}, - CoreInstanceRepresentation), + // Updating source_details with only required properties + acctest.GetUpdatedRepresentationCopy("source_details", acctest.RepresentationGroup{RepType: acctest.Required, + Group: CoreInstanceSourceDetailsUpdateImageIdRequiredRepresentation}, CoreInstanceRepresentation), + []string{"dedicated_vm_host_id", "launch_options", "image"})), + Check: acctest.ComposeAggregateTestCheckFuncWrapper( + resource.TestCheckResourceAttrSet(resourceName, "availability_domain"), + resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId), + resource.TestCheckResourceAttr(resourceName, "shape", "VM.Standard2.1"), + resource.TestCheckResourceAttrSet(resourceName, "subnet_id"), + resource.TestCheckResourceAttr(resourceName, "source_details.#", "1"), + resource.TestCheckResourceAttrSet(resourceName, "source_details.0.source_id"), + resource.TestCheckResourceAttr(resourceName, "source_details.0.source_type", "image"), + resource.TestCheckResourceAttr(resourceName, "source_details.0.boot_volume_size_in_gbs", "60"), + + func(s *terraform.State) (err error) { + resId2, err = acctest.FromInstanceState(s, resourceName, "id") + if resId != resId2 { + return fmt.Errorf("Resource recreated when it was supposed to be updated.") + } + return err + }, + ), + }, + + // Step 2: verify updates to all optional properties associated with source_details - kmsKey, bootVolumeSize etc. + { + Config: config + compartmentIdVariableStr + CoreInstanceBootVolumeSwapResourceDependencies + utils.DefinedShieldedImageOCIDs + + acctest.GenerateResourceFromRepresentationMap("oci_core_instance", "test_instance", acctest.Optional, acctest.Create, + acctest.RepresentationCopyWithRemovedProperties( + // Updating source_details with only required properties + acctest.GetUpdatedRepresentationCopy("source_details", acctest.RepresentationGroup{RepType: acctest.Optional, + Group: CoreInstanceSourceDetailsUpdateImageIdOptionalRepresentation}, CoreInstanceRepresentation), []string{"dedicated_vm_host_id", "launch_options", "image"})), Check: acctest.ComposeAggregateTestCheckFuncWrapper( resource.TestCheckResourceAttrSet(resourceName, "availability_domain"), @@ -2965,7 +3004,7 @@ func TestAccResourceCoreInstance_UpdateSourceDetails(t *testing.T) { ), }, - // Step 2: verify updates to existing source_details property does not destroy the resource - Update the bootVolumeId associated with the source details + // Step 3: verify updates to existing source_details property does not destroy the resource - Update the bootVolumeId associated with the source details { Config: config + compartmentIdVariableStr + CoreInstanceBootVolumeSwapResourceDependencies + acctest.GenerateResourceFromRepresentationMap("oci_core_instance", "test_instance", acctest.Optional, acctest.Create, diff --git a/internal/service/core/core_instance_resource.go b/internal/service/core/core_instance_resource.go index 5e29b8dffe6..723c0136aaa 100644 --- a/internal/service/core/core_instance_resource.go +++ b/internal/service/core/core_instance_resource.go @@ -2250,7 +2250,9 @@ func (s *CoreInstanceResourceCrud) mapToUpdateInstanceSourceDetails(fieldKeyForm } details.BootVolumeSizeInGBs = &tmpInt64 } - if kmsKeyId, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "kms_key_id")); ok { + // Use getOk for kmsKeyId as it is validated at the spec layer to ensure non-zero value; GetOk checks + // for non-zero value: https://pkg.go.dev/github.com/hashicorp/terraform/helper/schema#section-readme + if kmsKeyId, ok := s.D.GetOk(fmt.Sprintf(fieldKeyFormat, "kms_key_id")); ok { tmp := kmsKeyId.(string) details.KmsKeyId = &tmp } From 8801ec6625d287bbbc517d1153aae52f3cda7d9f Mon Sep 17 00:00:00 2001 From: Eshan Vaid Date: Tue, 25 Jun 2024 15:38:07 +0530 Subject: [PATCH 4/9] Bug Fix Update current_version_number on secret_content update --- internal/service/vault/vault_secret_resource.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/internal/service/vault/vault_secret_resource.go b/internal/service/vault/vault_secret_resource.go index 98660a1964f..205c2767313 100644 --- a/internal/service/vault/vault_secret_resource.go +++ b/internal/service/vault/vault_secret_resource.go @@ -11,6 +11,8 @@ import ( "strings" "time" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" @@ -260,6 +262,11 @@ func VaultSecretResource() *schema.Resource { Computed: true, }, }, + CustomizeDiff: customdiff.All( + customdiff.ComputedIf("current_version_number", func(_ context.Context, diff *schema.ResourceDiff, meta interface{}) bool { + return diff.HasChange("secret_content") + }), + ), } } From 7e6ce232b2a33264f56ec423031c78f0ec498c78 Mon Sep 17 00:00:00 2001 From: Ravi Prakash Bharti Date: Fri, 5 Jul 2024 16:27:27 +0530 Subject: [PATCH 5/9] Vendored - oci-go-sdk v65.69.1 changes for existing & new services --- go.mod | 2 +- go.sum | 2 - ...re_details_are_correct_request_response.go | 102 ++++++++++++++++++ .../v65/database/create_database_details.go | 3 + .../v65/database/database_client.go | 63 +++++++++++ .../oci-go-sdk/v65/database/key_store.go | 16 +-- .../v65/database/key_store_summary.go | 16 +-- .../oci-go-sdk/v65/usageapi/usage_summary.go | 6 ++ vendor/modules.txt | 2 +- 9 files changed, 196 insertions(+), 16 deletions(-) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v65/database/confirm_key_store_details_are_correct_request_response.go diff --git a/go.mod b/go.mod index cdf6cfe445b..177ac39d482 100644 --- a/go.mod +++ b/go.mod @@ -68,6 +68,6 @@ require ( ) // Uncomment this line to get OCI Go SDK from local source instead of github -//replace github.com/oracle/oci-go-sdk => ../../oracle/oci-go-sdk +replace github.com/oracle/oci-go-sdk/v65 v65.69.0 => ./vendor/github.com/oracle/oci-go-sdk go 1.21 diff --git a/go.sum b/go.sum index 782fd12154f..1cccc9418da 100644 --- a/go.sum +++ b/go.sum @@ -140,8 +140,6 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/oracle/oci-go-sdk/v65 v65.69.0 h1:DbrRf5qcpwl7V3ixk6dxDYfHtOs3aMmlsHFld3oBjMk= -github.com/oracle/oci-go-sdk/v65 v65.69.0/go.mod h1:IBEV9l1qBzUpo7zgGaRUhbB05BVfcDGYRFBCPlTcPp0= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/database/confirm_key_store_details_are_correct_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v65/database/confirm_key_store_details_are_correct_request_response.go new file mode 100644 index 00000000000..58173140515 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v65/database/confirm_key_store_details_are_correct_request_response.go @@ -0,0 +1,102 @@ +// Copyright (c) 2016, 2018, 2024, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package database + +import ( + "fmt" + "github.com/oracle/oci-go-sdk/v65/common" + "net/http" + "strings" +) + +// ConfirmKeyStoreDetailsAreCorrectRequest wrapper for the ConfirmKeyStoreDetailsAreCorrect operation +// +// # See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/database/ConfirmKeyStoreDetailsAreCorrect.go.html to see an example of how to use ConfirmKeyStoreDetailsAreCorrectRequest. +type ConfirmKeyStoreDetailsAreCorrectRequest struct { + + // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the key store. + KeyStoreId *string `mandatory:"true" contributesTo:"path" name:"keyStoreId"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // Unique identifier for the request. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // will be updated or deleted only if the etag you provide matches the resource's current etag value. + IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request ConfirmKeyStoreDetailsAreCorrectRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request ConfirmKeyStoreDetailsAreCorrectRequest) HTTPRequest(method, path string, binaryRequestBody *common.OCIReadSeekCloser, extraHeaders map[string]string) (http.Request, error) { + + _, err := request.ValidateEnumValue() + if err != nil { + return http.Request{}, err + } + return common.MakeDefaultHTTPRequestWithTaggedStructAndExtraHeaders(method, path, request, extraHeaders) +} + +// BinaryRequestBody implements the OCIRequest interface +func (request ConfirmKeyStoreDetailsAreCorrectRequest) BinaryRequestBody() (*common.OCIReadSeekCloser, bool) { + + return nil, false + +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request ConfirmKeyStoreDetailsAreCorrectRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// ValidateEnumValue returns an error when providing an unsupported enum value +// This function is being called during constructing API request process +// Not recommended for calling this function directly +func (request ConfirmKeyStoreDetailsAreCorrectRequest) ValidateEnumValue() (bool, error) { + errMessage := []string{} + if len(errMessage) > 0 { + return true, fmt.Errorf(strings.Join(errMessage, "\n")) + } + return false, nil +} + +// ConfirmKeyStoreDetailsAreCorrectResponse wrapper for the ConfirmKeyStoreDetailsAreCorrect operation +type ConfirmKeyStoreDetailsAreCorrectResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the work request. Multiple OCID values are returned in a comma-separated list. Use GetWorkRequest with a work request OCID to track the status of the request. + OpcWorkRequestId *string `presentIn:"header" name:"opc-work-request-id"` + + // Unique Oracle-assigned identifier for the request. If you need to contact Oracle about + // a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response ConfirmKeyStoreDetailsAreCorrectResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response ConfirmKeyStoreDetailsAreCorrectResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/database/create_database_details.go b/vendor/github.com/oracle/oci-go-sdk/v65/database/create_database_details.go index 72d4d8e46a6..199687fa6a8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/database/create_database_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/database/create_database_details.go @@ -72,6 +72,9 @@ type CreateDatabaseDetails struct { // Specifies a prefix for the `Oracle SID` of the database to be created. SidPrefix *string `mandatory:"false" json:"sidPrefix"` + + // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the key store of Oracle Vault. + KeyStoreId *string `mandatory:"false" json:"keyStoreId"` } func (m CreateDatabaseDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/database/database_client.go b/vendor/github.com/oracle/oci-go-sdk/v65/database/database_client.go index 69e04212cce..0bc800c911d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/database/database_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/database/database_client.go @@ -2217,6 +2217,69 @@ func (client DatabaseClient) configureSaasAdminUser(ctx context.Context, request return response, err } +// ConfirmKeyStoreDetailsAreCorrect This is for user to confirm to DBaaS that the Oracle Key Valut (OKV) connection IPs, username and password are all correct. This operation will put +// the Key Store back into Active state. If details are incorrect, your OKV account may get locked after some unsuccessful attempts to connect. +// +// # See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/database/ConfirmKeyStoreDetailsAreCorrect.go.html to see an example of how to use ConfirmKeyStoreDetailsAreCorrect API. +func (client DatabaseClient) ConfirmKeyStoreDetailsAreCorrect(ctx context.Context, request ConfirmKeyStoreDetailsAreCorrectRequest) (response ConfirmKeyStoreDetailsAreCorrectResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.confirmKeyStoreDetailsAreCorrect, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = ConfirmKeyStoreDetailsAreCorrectResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = ConfirmKeyStoreDetailsAreCorrectResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(ConfirmKeyStoreDetailsAreCorrectResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into ConfirmKeyStoreDetailsAreCorrectResponse") + } + return +} + +// confirmKeyStoreDetailsAreCorrect implements the OCIOperation interface (enables retrying operations) +func (client DatabaseClient) confirmKeyStoreDetailsAreCorrect(ctx context.Context, request common.OCIRequest, binaryReqBody *common.OCIReadSeekCloser, extraHeaders map[string]string) (common.OCIResponse, error) { + + httpRequest, err := request.HTTPRequest(http.MethodPost, "/keyStores/{keyStoreId}/actions/confirmDetailsAreCorrect", binaryReqBody, extraHeaders) + if err != nil { + return nil, err + } + + var response ConfirmKeyStoreDetailsAreCorrectResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + apiReferenceLink := "https://docs.oracle.com/iaas/api/#/en/database/20160918/KeyStore/ConfirmKeyStoreDetailsAreCorrect" + err = common.PostProcessServiceError(err, "Database", "ConfirmKeyStoreDetailsAreCorrect", apiReferenceLink) + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // ConvertToPdb Converts a non-container database to a pluggable database. // // # See also diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/database/key_store.go b/vendor/github.com/oracle/oci-go-sdk/v65/database/key_store.go index 3e3d1382e2f..391e30e3e26 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/database/key_store.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/database/key_store.go @@ -127,18 +127,21 @@ type KeyStoreLifecycleStateEnum string // Set of constants representing the allowable values for KeyStoreLifecycleStateEnum const ( - KeyStoreLifecycleStateActive KeyStoreLifecycleStateEnum = "ACTIVE" - KeyStoreLifecycleStateDeleted KeyStoreLifecycleStateEnum = "DELETED" + KeyStoreLifecycleStateActive KeyStoreLifecycleStateEnum = "ACTIVE" + KeyStoreLifecycleStateDeleted KeyStoreLifecycleStateEnum = "DELETED" + KeyStoreLifecycleStateNeedsAttention KeyStoreLifecycleStateEnum = "NEEDS_ATTENTION" ) var mappingKeyStoreLifecycleStateEnum = map[string]KeyStoreLifecycleStateEnum{ - "ACTIVE": KeyStoreLifecycleStateActive, - "DELETED": KeyStoreLifecycleStateDeleted, + "ACTIVE": KeyStoreLifecycleStateActive, + "DELETED": KeyStoreLifecycleStateDeleted, + "NEEDS_ATTENTION": KeyStoreLifecycleStateNeedsAttention, } var mappingKeyStoreLifecycleStateEnumLowerCase = map[string]KeyStoreLifecycleStateEnum{ - "active": KeyStoreLifecycleStateActive, - "deleted": KeyStoreLifecycleStateDeleted, + "active": KeyStoreLifecycleStateActive, + "deleted": KeyStoreLifecycleStateDeleted, + "needs_attention": KeyStoreLifecycleStateNeedsAttention, } // GetKeyStoreLifecycleStateEnumValues Enumerates the set of values for KeyStoreLifecycleStateEnum @@ -155,6 +158,7 @@ func GetKeyStoreLifecycleStateEnumStringValues() []string { return []string{ "ACTIVE", "DELETED", + "NEEDS_ATTENTION", } } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/database/key_store_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/database/key_store_summary.go index cce838f4d19..15d66b34d6b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/database/key_store_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/database/key_store_summary.go @@ -127,18 +127,21 @@ type KeyStoreSummaryLifecycleStateEnum string // Set of constants representing the allowable values for KeyStoreSummaryLifecycleStateEnum const ( - KeyStoreSummaryLifecycleStateActive KeyStoreSummaryLifecycleStateEnum = "ACTIVE" - KeyStoreSummaryLifecycleStateDeleted KeyStoreSummaryLifecycleStateEnum = "DELETED" + KeyStoreSummaryLifecycleStateActive KeyStoreSummaryLifecycleStateEnum = "ACTIVE" + KeyStoreSummaryLifecycleStateDeleted KeyStoreSummaryLifecycleStateEnum = "DELETED" + KeyStoreSummaryLifecycleStateNeedsAttention KeyStoreSummaryLifecycleStateEnum = "NEEDS_ATTENTION" ) var mappingKeyStoreSummaryLifecycleStateEnum = map[string]KeyStoreSummaryLifecycleStateEnum{ - "ACTIVE": KeyStoreSummaryLifecycleStateActive, - "DELETED": KeyStoreSummaryLifecycleStateDeleted, + "ACTIVE": KeyStoreSummaryLifecycleStateActive, + "DELETED": KeyStoreSummaryLifecycleStateDeleted, + "NEEDS_ATTENTION": KeyStoreSummaryLifecycleStateNeedsAttention, } var mappingKeyStoreSummaryLifecycleStateEnumLowerCase = map[string]KeyStoreSummaryLifecycleStateEnum{ - "active": KeyStoreSummaryLifecycleStateActive, - "deleted": KeyStoreSummaryLifecycleStateDeleted, + "active": KeyStoreSummaryLifecycleStateActive, + "deleted": KeyStoreSummaryLifecycleStateDeleted, + "needs_attention": KeyStoreSummaryLifecycleStateNeedsAttention, } // GetKeyStoreSummaryLifecycleStateEnumValues Enumerates the set of values for KeyStoreSummaryLifecycleStateEnum @@ -155,6 +158,7 @@ func GetKeyStoreSummaryLifecycleStateEnumStringValues() []string { return []string{ "ACTIVE", "DELETED", + "NEEDS_ATTENTION", } } diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/usageapi/usage_summary.go b/vendor/github.com/oracle/oci-go-sdk/v65/usageapi/usage_summary.go index e33ed8b26ee..7bdbc99cde2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/usageapi/usage_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/usageapi/usage_summary.go @@ -84,6 +84,12 @@ type UsageSummary struct { // The usage number. ComputedQuantity *float32 `mandatory:"false" json:"computedQuantity"` + // The attributed cost with a max value of 9999999999.999999999999 and a minimum value of 0. + AttributedCost *string `mandatory:"false" json:"attributedCost"` + + // The attributed usage with a max value of 9999999999.999999999999 and a minimum value of 0. + AttributedUsage *string `mandatory:"false" json:"attributedUsage"` + // The SPM OverageFlag. OveragesFlag *string `mandatory:"false" json:"overagesFlag"` diff --git a/vendor/modules.txt b/vendor/modules.txt index 9da87a3a0f3..76d637ef49c 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -225,7 +225,7 @@ github.com/mitchellh/reflectwalk # github.com/oklog/run v1.0.0 ## explicit github.com/oklog/run -# github.com/oracle/oci-go-sdk/v65 v65.69.0 +# github.com/oracle/oci-go-sdk/v65 v65.69.0 => ./vendor/github.com/oracle/oci-go-sdk ## explicit; go 1.13 github.com/oracle/oci-go-sdk/v65/adm github.com/oracle/oci-go-sdk/v65/aianomalydetection From cfbb0049afc4932013e904ddd04fe9a50148d497 Mon Sep 17 00:00:00 2001 From: Ravi Prakash Bharti Date: Fri, 5 Jul 2024 17:10:47 +0530 Subject: [PATCH 6/9] Finalize changelog and release for version v6.2.0 --- CHANGELOG.md | 8 ++++++++ internal/globalvar/version.go | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcf5d99ef3f..578dab26d83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## 6.2.0 (Unreleased) + +### Added +- Support for Support Dynamic list of ZDM parameters for Oracle<>Oracle migrations +- Support for Shared Resources feature +### Bug Fix +- Update current_version_number on secret_content update + ## 6.1.0 (July 02, 2024) ### Added diff --git a/internal/globalvar/version.go b/internal/globalvar/version.go index 05b9874b125..d4cf204fe30 100644 --- a/internal/globalvar/version.go +++ b/internal/globalvar/version.go @@ -7,8 +7,8 @@ import ( "log" ) -const Version = "6.1.0" -const ReleaseDate = "2024-07-03" +const Version = "6.2.0" +const ReleaseDate = "2024-07-10" func PrintVersion() { log.Printf("[INFO] terraform-provider-oci %s\n", Version) From d3f68e63539a3bb3835b9368bca8f9839990f390 Mon Sep 17 00:00:00 2001 From: vsin12 Date: Wed, 10 Jul 2024 03:14:36 +0000 Subject: [PATCH 7/9] Vendored - oci-go-sdk for release version v65 --- go.mod | 4 ++-- go.sum | 2 ++ vendor/github.com/oracle/oci-go-sdk/v65/common/version.go | 2 +- vendor/modules.txt | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 177ac39d482..051c25e2897 100644 --- a/go.mod +++ b/go.mod @@ -52,7 +52,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/oklog/run v1.0.0 // indirect - github.com/oracle/oci-go-sdk/v65 v65.69.0 + github.com/oracle/oci-go-sdk/v65 v65.69.1 github.com/pmezard/go-difflib v1.0.0 // indirect github.com/sony/gobreaker v0.5.0 // indirect github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect @@ -68,6 +68,6 @@ require ( ) // Uncomment this line to get OCI Go SDK from local source instead of github -replace github.com/oracle/oci-go-sdk/v65 v65.69.0 => ./vendor/github.com/oracle/oci-go-sdk +//replace github.com/oracle/oci-go-sdk => ../../oracle/oci-go-sdk go 1.21 diff --git a/go.sum b/go.sum index 1cccc9418da..55d774ab9a8 100644 --- a/go.sum +++ b/go.sum @@ -140,6 +140,8 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/oracle/oci-go-sdk/v65 v65.69.1 h1:X3vNSw9tXOxML96L3wBxrK7cwESgP/H1IgR8rTH5Ab4= +github.com/oracle/oci-go-sdk/v65 v65.69.1/go.mod h1:IBEV9l1qBzUpo7zgGaRUhbB05BVfcDGYRFBCPlTcPp0= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= diff --git a/vendor/github.com/oracle/oci-go-sdk/v65/common/version.go b/vendor/github.com/oracle/oci-go-sdk/v65/common/version.go index c8849f7ff68..fb230b51254 100644 --- a/vendor/github.com/oracle/oci-go-sdk/v65/common/version.go +++ b/vendor/github.com/oracle/oci-go-sdk/v65/common/version.go @@ -13,7 +13,7 @@ import ( const ( major = "65" minor = "69" - patch = "0" + patch = "1" tag = "" ) diff --git a/vendor/modules.txt b/vendor/modules.txt index 76d637ef49c..197f4b5fb88 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -225,7 +225,7 @@ github.com/mitchellh/reflectwalk # github.com/oklog/run v1.0.0 ## explicit github.com/oklog/run -# github.com/oracle/oci-go-sdk/v65 v65.69.0 => ./vendor/github.com/oracle/oci-go-sdk +# github.com/oracle/oci-go-sdk/v65 v65.69.1 ## explicit; go 1.13 github.com/oracle/oci-go-sdk/v65/adm github.com/oracle/oci-go-sdk/v65/aianomalydetection From 3404697fca42a92d7de4870efe389da31e6d449c Mon Sep 17 00:00:00 2001 From: Ravi Prakash Bharti Date: Wed, 10 Jul 2024 09:31:49 +0530 Subject: [PATCH 8/9] Added - Release for v6.2.0 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 578dab26d83..cc40aededaf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 6.2.0 (Unreleased) +## 6.2.0 (July 10, 2024) ### Added - Support for Support Dynamic list of ZDM parameters for Oracle<>Oracle migrations From 5f2ac33097268d8581f2beabc14226529617cc5d Mon Sep 17 00:00:00 2001 From: tf-oci-pub Date: Wed, 10 Jul 2024 04:02:26 +0000 Subject: [PATCH 9/9] Added - README.md of service examples with magic button --- examples/zips/adm.zip | Bin 3439 -> 3439 bytes examples/zips/aiAnomalyDetection.zip | Bin 3302 -> 3302 bytes examples/zips/aiDocument.zip | Bin 1793 -> 1793 bytes examples/zips/aiLanguage.zip | Bin 1682 -> 1682 bytes examples/zips/aiVision.zip | Bin 1655 -> 1655 bytes examples/zips/always_free.zip | Bin 3850 -> 3850 bytes examples/zips/analytics.zip | Bin 2766 -> 2766 bytes examples/zips/announcements_service.zip | Bin 2718 -> 2718 bytes examples/zips/api_gateway.zip | Bin 27065 -> 27065 bytes examples/zips/apm.zip | Bin 21727 -> 21727 bytes examples/zips/appmgmt_control.zip | Bin 2681 -> 2681 bytes examples/zips/artifacts.zip | Bin 7102 -> 7102 bytes examples/zips/audit.zip | Bin 1804 -> 1804 bytes examples/zips/autoscaling.zip | Bin 5681 -> 5681 bytes examples/zips/bastion.zip | Bin 4998 -> 4998 bytes examples/zips/big_data_service.zip | Bin 12573 -> 12573 bytes examples/zips/blockchain.zip | Bin 1898 -> 1898 bytes examples/zips/budget.zip | Bin 3741 -> 3741 bytes examples/zips/capacity_management.zip | Bin 10741 -> 10741 bytes examples/zips/certificatesManagement.zip | Bin 10431 -> 10431 bytes examples/zips/cloudBridge.zip | Bin 9949 -> 9949 bytes examples/zips/cloudMigrations.zip | Bin 8429 -> 8429 bytes examples/zips/cloudguard.zip | Bin 26197 -> 26197 bytes examples/zips/cluster_placement_groups.zip | Bin 3160 -> 3160 bytes examples/zips/compute.zip | Bin 54430 -> 54430 bytes examples/zips/computecloudatcustomer.zip | Bin 4199 -> 4199 bytes examples/zips/computeinstanceagent.zip | Bin 3311 -> 3311 bytes examples/zips/concepts.zip | Bin 4864 -> 4864 bytes examples/zips/container_engine.zip | Bin 21973 -> 21973 bytes examples/zips/container_instances.zip | Bin 3326 -> 3326 bytes examples/zips/database.zip | Bin 156895 -> 156895 bytes examples/zips/databaseTools.zip | Bin 6461 -> 6461 bytes examples/zips/databasemanagement.zip | Bin 19040 -> 19040 bytes examples/zips/databasemigration.zip | Bin 3115 -> 3503 bytes examples/zips/datacatalog.zip | Bin 3256 -> 3256 bytes examples/zips/dataflow.zip | Bin 3618 -> 3618 bytes examples/zips/dataintegration.zip | Bin 18640 -> 18640 bytes examples/zips/datalabeling.zip | Bin 2175 -> 2175 bytes examples/zips/datasafe.zip | Bin 74366 -> 74366 bytes examples/zips/datascience.zip | Bin 50964 -> 50964 bytes examples/zips/demand_signal.zip | Bin 2083 -> 2083 bytes examples/zips/devops.zip | Bin 43498 -> 43498 bytes examples/zips/disaster_recovery.zip | Bin 12743 -> 12743 bytes examples/zips/dns.zip | Bin 12059 -> 12059 bytes examples/zips/em_warehouse.zip | Bin 2424 -> 2424 bytes examples/zips/email.zip | Bin 5650 -> 5650 bytes examples/zips/events.zip | Bin 1807 -> 1807 bytes examples/zips/fast_connect.zip | Bin 8373 -> 8373 bytes examples/zips/functions.zip | Bin 3475 -> 3475 bytes examples/zips/fusionapps.zip | Bin 12253 -> 12253 bytes examples/zips/generative_ai.zip | Bin 4777 -> 4777 bytes examples/zips/goldengate.zip | Bin 7368 -> 7368 bytes examples/zips/health_checks.zip | Bin 8826 -> 8826 bytes examples/zips/id6.zip | Bin 1003 -> 1003 bytes examples/zips/identity.zip | Bin 16317 -> 16317 bytes examples/zips/identity_data_plane.zip | Bin 1948 -> 1948 bytes examples/zips/identity_domains.zip | Bin 67420 -> 67420 bytes examples/zips/integration.zip | Bin 2012 -> 2012 bytes examples/zips/jms.zip | Bin 14240 -> 14240 bytes examples/zips/jms_java_downloads.zip | Bin 6918 -> 6918 bytes examples/zips/kms.zip | Bin 9520 -> 9520 bytes examples/zips/license_manager.zip | Bin 5213 -> 5213 bytes examples/zips/limits.zip | Bin 2522 -> 2522 bytes examples/zips/load_balancer.zip | Bin 6724 -> 6724 bytes examples/zips/log_analytics.zip | Bin 18960 -> 18960 bytes examples/zips/logging.zip | Bin 9908 -> 9908 bytes examples/zips/management_agent.zip | Bin 4134 -> 4134 bytes examples/zips/management_dashboard.zip | Bin 5585 -> 5585 bytes examples/zips/marketplace.zip | Bin 3062 -> 3062 bytes examples/zips/media_services.zip | Bin 9090 -> 9090 bytes examples/zips/metering_computation.zip | Bin 7286 -> 7270 bytes examples/zips/monitoring.zip | Bin 5197 -> 5197 bytes examples/zips/mysql.zip | Bin 7694 -> 7694 bytes examples/zips/network_firewall.zip | Bin 11985 -> 11985 bytes examples/zips/network_load_balancer.zip | Bin 7103 -> 7103 bytes examples/zips/networking.zip | Bin 40243 -> 40243 bytes examples/zips/nosql.zip | Bin 5136 -> 5136 bytes examples/zips/notifications.zip | Bin 6649 -> 6649 bytes examples/zips/object_storage.zip | Bin 10827 -> 10827 bytes examples/zips/ocvp.zip | Bin 4736 -> 4736 bytes examples/zips/onesubscription.zip | Bin 7807 -> 7807 bytes examples/zips/opa.zip | Bin 1703 -> 1703 bytes examples/zips/opensearch.zip | Bin 2613 -> 2613 bytes examples/zips/operator_access_control.zip | Bin 6928 -> 6928 bytes examples/zips/opsi.zip | Bin 29142 -> 29142 bytes examples/zips/optimizer.zip | Bin 2339 -> 2339 bytes .../zips/oracle_cloud_vmware_solution.zip | Bin 3979 -> 3979 bytes examples/zips/oracle_content_experience.zip | Bin 2090 -> 2090 bytes examples/zips/oracle_digital_assistant.zip | Bin 3038 -> 3038 bytes examples/zips/os_management_hub.zip | Bin 15557 -> 15557 bytes examples/zips/osmanagement.zip | Bin 8224 -> 8224 bytes examples/zips/osp_gateway.zip | Bin 3540 -> 3540 bytes examples/zips/osub_billing_schedule.zip | Bin 1704 -> 1704 bytes .../zips/osub_organization_subscription.zip | Bin 1757 -> 1757 bytes examples/zips/osub_subscription.zip | Bin 1795 -> 1795 bytes examples/zips/osub_usage.zip | Bin 1749 -> 1749 bytes examples/zips/pic.zip | Bin 8004 -> 8004 bytes examples/zips/psql.zip | Bin 3348 -> 3348 bytes examples/zips/queue.zip | Bin 2767 -> 2767 bytes examples/zips/recovery.zip | Bin 4314 -> 4314 bytes examples/zips/redis.zip | Bin 2280 -> 2280 bytes examples/zips/resourcemanager.zip | Bin 6565 -> 6565 bytes examples/zips/resourcescheduler.zip | Bin 1616 -> 2123 bytes examples/zips/serviceManagerProxy.zip | Bin 1691 -> 1691 bytes examples/zips/service_catalog.zip | Bin 3854 -> 3854 bytes examples/zips/service_connector_hub.zip | Bin 2891 -> 2891 bytes examples/zips/service_mesh.zip | Bin 9180 -> 9180 bytes examples/zips/stack_monitoring.zip | Bin 20682 -> 20682 bytes examples/zips/storage.zip | Bin 26701 -> 26701 bytes examples/zips/streaming.zip | Bin 2116 -> 2116 bytes examples/zips/usage_proxy.zip | Bin 3238 -> 3238 bytes examples/zips/vault_secret.zip | Bin 1999 -> 1999 bytes examples/zips/vbs_inst.zip | Bin 1788 -> 1788 bytes examples/zips/visual_builder.zip | Bin 1860 -> 1860 bytes examples/zips/vn_monitoring.zip | Bin 3703 -> 3703 bytes .../zips/vulnerability_scanning_service.zip | Bin 2339 -> 2339 bytes examples/zips/web_app_acceleration.zip | Bin 2374 -> 2374 bytes examples/zips/web_app_firewall.zip | Bin 2814 -> 2814 bytes ..._application_acceleration_and_security.zip | Bin 6483 -> 6483 bytes 119 files changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/zips/adm.zip b/examples/zips/adm.zip index 043cc21018ba559cdf836364659309ae1aa49e70..b4f95a6f608caf4bf89be929eed18f89139bc1ff 100644 GIT binary patch delta 296 zcmaDa^}D`! zo2RfFLJT~?WylP)U~(L{7$@A#lcl*GprSHh(`vchQTWfetx)(*JoZ>jSO_Dv2UuOQ zB|AtR5N}-kl${xS%} T3ZI3?6NR78;|Jy+;86nrNC`J% delta 178 zcmaDR`Am{Gz?+$civa{=<~^FoYoxLwvL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRjp zOLmYtAl|t6DLXSz>*Q_@Yna&PvmB9(U_nhT2bkdG0Wj|P~gw=u>sBy9Yn+%wLj@2H8ug~U)!k@(E2Ik*pQv(1# C)i#>| diff --git a/examples/zips/aiLanguage.zip b/examples/zips/aiLanguage.zip index c17fe3d36bbee0da98d565c847545a7219e50b01..2e4ad6b0aa925266813cc8716f94bf63ed7ba2ae 100644 GIT binary patch delta 174 zcmbQlJBgP!z?+$civa|@6<$r`)nY%#-j{ZPy>FtO6f;O9+7K)P6x}%a4x=DYC}Q5M z7dcjp3=F1B3=Fc91zE%=PiNwTsoK1TDTEQEb22lF1x#?V6Uzax7%Qs{joD7ta-9Y#T*P{h1h zFLJCH85m5N7#L(H3$ln$p3cMvQ?+>wQwSqS=VWFU3z*Ft86f;O9QXeb=6y4Z=g%Kn)IgQB> zCboGVQ!qsE3$qzaaIzuGKCr@1EN09=jgz%mWx#wdR$CPQN>+OmJ{Ow{m>#D7vx#3L{8pavGB% zOlyqOQ@MdP=VgLbeg;x`Kwb{?H_oZE6@0(~Z#S9XOF#?MKMK@0M;sOaxe#B)0 z6Wc7y9m)t6EakC;2~OV1a}X?6$!p0B)Hu1CPX^4t!s~#-H{)|c;m_i82lJossR00k C6g1NS delta 156 zcmeB@>yqOQ@MdP=VgLb|d5ndQOx#z?+$civa|@6<$r`)nq@%-j{ZPy>Fte6f;O9$^a|^6x}#cf(0Zrc@2vZ zOlndQOx#z?+$civa{=<~^FotI571vL$VGWXnWbDQ1vJlmS=-D7tZ?1Pe%L@){N+ znAqm0EJ2K5K`SO_Dv2UuO2 z4Le935N})=z|0KPI{6Q?9ZYPqBTF(PSa3P3GfZ&uN7j>IvAt}rFtN>?>?sh11su-I jK+`5q;FJL?y2{~&!gu8KLE*3G3`F58aRr0<6s delta 215 zcmbOyI!}~0z?+$civa{=<~^FoYpSv$vL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRj3 z8+MR7Al|q#fSDPnb@Cr(JDAvJN0wwpu;6l5XPDsRkE|!bVtd(KVPcy(*;6123pkva jfu>EKz$pV(bd|#kh40AegTi0W8HmDH;tB@yE4b7E8YM}q diff --git a/examples/zips/api_gateway.zip b/examples/zips/api_gateway.zip index b09bc3f2694665d7ee942a4d439ce5b5a15b811e..145412640e538b78427d93673047dead0af7396c 100644 GIT binary patch delta 1191 zcmdmanQ`Z3M&1B#W)?065b#!bHIY}F{TzE=+6DH$$rHInI1v&tR!9<3%pkS99Kk|B z^_!U(S=m5hleyT<(A7;&VYh`VT){q%8LZHg8=@Ox6WGAX>$pAO3jcDma)1@Gia21H zm?`28SGZk7j~i;W+GIWj0c6E|Kqo~^{Bu1=paWT*9&7>e%%X5}426HgA+~@NIz`w(6gI|Kf}(Bm!*m(2Q|`ogfcXm(Abhu2 ze-!zs1nJ3_Vl`3J$i{i2sOgG>=z*E>J1z`GzBt|wMgQaYP!##71Q!(f0|}_+>n6IP z$WKi~)z6a@fFfU)6pq6Gp5%nWk4|<6^I>5in=U>1ezGBo8l#j*6g6v8Y*FNSQk_xc z3sW6YA}eIlQKL}q_Z<1UWOTeH^UW0-X#-a I+~iC(0NbFwB>(^b delta 1191 zcmdmanQ`Z3M&1B#W)?065RjSoXdNhhnva*51CUdcyp{tvm!fp#!xPpBiGgzS~H$*qYCa{5%*KvEm75?RB-2Y zF;m1Hu5i1E9yio#waI)60?3N_fKG~-`0HNCbw&mTXV%I2?9xCb+>`$&aB^`nFoS#w za($b^M@Fy_RZ14f+QDMiln{2QC~FIX1%phSFcj`E@q{~y!?c+Ntgz401TJ{eG8AHs zqO~PVaB`yc0kFb+KefqgY=kHGo3LV-+-BnqQ@{C!jR?f#_YV3P3Y{EH;R@><=P-dy zmUS`4P*~yuiB6F3x4I-iqC~>O218+mhcn#7LmsPGp>DOqP&lbc(QnC~S z7p6L*$X`i?ge%MryEHEp`BiCwDEej7eNg1P(}R)aCuMk|NM~n2ybLq`ZiXw0yh|p; IxXGDn0Hg=nzyJUM diff --git a/examples/zips/apm.zip b/examples/zips/apm.zip index d415fba1cd4418862c479c4682b841962c92511e..95470dad00e24e366f4c49e430c240500982931a 100644 GIT binary patch delta 1624 zcmZvbUr1AN6vyvvo7bG?{;0!kjOJpZ&Z%KmwlUe}{@rbDb1N;#qBJ4|D+PmI><>tU zv3`(INYLBBit5S!_Ygh=YL5}25Iz`4L=Z?X?f#DU?jCP@yXX7)p6@y5-mMhal>%Fp z;#KMjM)>i&f8?ti+#)wUyv$9Lyt9TZTgp_$GFj3$klR77GMC-SsQw4ExG9idGRXX9 z>eaA*S}WRKB-xicXi=-~Qh-BhuLKsmatty6@ z*5;qt$OZ=^2ytcQT`C&q(|Qzf548a)Ze4pGz@ybJsd%$G$x`=MU58jCM*TdkE$Q8| zj-^Z44GCG@tQQ9Sa{0u+F?^P5a((w7BkxDBL;kpaj11Ho{_SzBUDTpa=do!Ue{A1_1o* z?-2fzE@mN#-bTdS?TsRa z4aJZ?5=x`z)lfHj_Jn=NKO6R-=fC0Oh@XgDL3&*jb`W=(iVh=P7xN?kSPbS9Z?zhW zAU(!Io~SSIJ*eMm@dm+oEAo&y>?nE!#-6~;XaY0e6UR`G!Q?o~`I8(#`h~-nkY1KL viS((|RiwMp_`S@eaX&-mH1f}6`jEe}?+DVb_l+RknDrw4Vivxg`Ki0`Ne+O(3esgf$q+laRM&t**zIm39V`)$}Jc274x1b4UIDbA*I&gfxtF6N_t9zeIbg{Y&Ae3Okd%KvVL`8hsl z*aQ4U;|@{d%Cc^A7x@&c-uzj>d*5ZM+;`ek;*&67Wj28C?Ry+;~xVsb!J%$sLDCbWihxF6?&LX`k wc?9V*$qPugrSN;1P2qmp^fBb0O%Eb}?cjc-=Lg4-uFJTQekKFoPAOyk2MVrvWdHyG diff --git a/examples/zips/appmgmt_control.zip b/examples/zips/appmgmt_control.zip index 6eec76b081eb250c472904a91bfdddb826f0e513..e7c56a3d247b8241b578618f81094da558618a44 100644 GIT binary patch delta 268 zcmew<@>7I2z?+$civa|@6<$r`)n`A)-j{ZPy>GHVvlKH(D8T|O1QgylKZ+3~H2Dvs zElg~(1Jfa}7%Q_gy4J}#%w8~coA)xeLNvRwdSWQt#2Nrs$jRmdQ5eB)%M7%25{C@f vg6-^X$Xt02ZwOaxasekBSVa#7I2z?+$civa{=<~^FotIxh7vL$VGWXoiKW+`TnP=W4!(kh$_4-Vm+iRC0zRtN6qj2jWf+=28Oyr~hDh diff --git a/examples/zips/artifacts.zip b/examples/zips/artifacts.zip index 9b3bf0cb0186225876f5f816097df004eafd50fb..482608fbdaed7e88dab589d5a41d11305cbe3b32 100644 GIT binary patch delta 575 zcmdmIzR#RDz?+$civa|@6<$r`)nq@%-j{ZPy>Fte6f;O9$^s@bc^(@?Xqy*U2&ix~ zJEIU2NZDi=W;1kklgpSLU)gA+VpDk>F--i$6AM$fIgVF~1+1`IunZ_u-F_S zh`WKI0Q2)C;V780&56S05Q}e%m@@+dVX~ow*kl1oHn3h3Q8%cV48$za2n;o1VlF6Z zYQ+3d_;17lG4#ZXd!wj1Bc6o950G#`;ct>~#V|us(jP@lmt-~yUtFpML(g6*RJZ9$ LXMokrkX8c#xy8W# delta 575 zcmdmIzR#RDz?+$civa{=<~^FotI571vL$VGWXnWbDQ1vJlm$#=@;o+(&^9ly5K!S} zc19s4kg~}#%x387CYLcgz!Xm2%j^kO$I0Rh6Wbij!UEA8#b%44c{f`KT%j2I7l=Y$ zE+e?08&?1$*vOgO<}ks@*SU9t#isH&Vwm`gCl;n|a~!V}3s_;bU>Qts@(;m*3=K@MdP=VgLbeg;x`KRaMTh_oZC`;?fFk21b^b%nS@H^*~vWIuRhv0ah2L z!wymh#2Y(1n3#cDCyOxa!NfLuGW#=v1!uDu!vrT^W!ViDo6Ks=4AeOJB&!UV|AN&D Th3~>*3=K@MdP=VgLb|d5VdK#bs|8T1FSAg zhaIF2h&Oh2FfjwQP8MO-gNbeSWcFtS3(jUSh6zr-%CZ|QHks9!8K`mcNmdy!{{^cR T3g3mz28F+f%@NFh#-;`Uyx=>c diff --git a/examples/zips/autoscaling.zip b/examples/zips/autoscaling.zip index 3a46997626e5ba91b9f2cb120d4d9759b62b7fc8..bb8f524af2d825807049d4453f76eafd2b362328 100644 GIT binary patch delta 340 zcmdm}vr&gPz?+$civa|@6<$r`)n-4(-j{ZPy>Ftu6f;O9#vCjH6x}#0lL;g=nT^>L zCbrp$c?Ant@GZL~Tu_%|6-4DNE)%$*D0cuOSY-x}8BB2UQl5uku})sN?#U;4_d>+@ z5Y`;!kc{8tIKg7iOLYB-x2Tm3ckpb)cCFF|2PZV}W;U5!rN8#&>IHB+- Zi@2che~O^0PZC8n@3^QVSUtCx8UU@Lb6EfY delta 340 zcmdm}vr&gPz?+$civa{=<~^FotIfV5vL$VGWXnW*DQ1vJj5$~YD7tZ0CKE_#G8?lg zOl-3g^9mNQ;9GV}xS%e_Du~KkTqbZqQSJanu*wV`GnnAyr92P8Vx7Ej-IGu9?uCf) zA*?yd#|<&@vVbv6^JZSbeu#OUM<4pD65%!apYLj>6X$0eS;T b|6~yt6#h>URP{-ssOB9Pbp)&D7E=QNRI7XL diff --git a/examples/zips/bastion.zip b/examples/zips/bastion.zip index 41e130c2250890e71cdc09ebdce373a42315e971..4dcdaff844f2d9a7f26c45475ba62ff0767e6808 100644 GIT binary patch delta 303 zcmZouZ&T+D@MdP=VgLbeg;x`K)!EOn_oZE6@0(~X#S9XOFa(PLMK?}(zyuPST+FNs z6Pvu8`7l^4m&FJsws{%La)`nJb_2LzJG(z4SmjL)xQUwuIel2bf(g8)FqM<%@a_VO zMe-pOPUL$F(cLIu$_#YN{0lZg4QVfX@U+Y{2zjLDEtT^RQ)@JoKfWE Kgdy??!fF5k&}@SM delta 303 zcmZouZ&T+D@MdP=VgLb|d5;`bbc6NV8u*#bpa1%ERa{91<1rvBpVJauj;oSum zi{wKnoXGbUqPtPRlo{xj$^V69z>01N*rV_*1+7u|(*zw*_&)^gQ1}r-sQPybIitwS K2}9%)gw+6h8gwK8 diff --git a/examples/zips/big_data_service.zip b/examples/zips/big_data_service.zip index 8793eb4e5a7776ad049fabaf74c1341dd1810830..27fb5aeb8d12e3dad97c2a8fd4324fffe139290e 100644 GIT binary patch delta 696 zcmbQ6G&hMiz?+$civa|@6<$r`HDEu--j{ZPy>H?|5l)17q9sCHiW#JGp95F~sCqLi z<5fnG*yOuRPH4&|J2QL2)lFt*Vgjq1!D|iP< zcL?kOD|8pMMz>{|AjD#j-uHr&AhxuKxTC9kFX9I?ZnKN1E+^Q$XG+?W1@w7%LPIzi znBl&c;sg39!uDtWz17SN45FNq1C|ByC{ag()md{E4rspE;Fo<$d8KFm2~x}hlYZ*^l(^k?gNp~zp?3q+Hb fo}8+$kD_LqKB^i`0|+1L<;imlBEagu8>j&QZF~8y delta 696 zcmbQ6G&hMiz?+$civa{=<~^FoYrwuDvL$VGWXr^bBAf{EL`#IY6f;QWJ_oP}Q1xb3 z#;c4VvB`ItoY0g_c4qd3tDDTs!~|A1gVh`^c#ZWO2Uu`9AH)ujiO=~WAtpKt*uhjz z?hx1mR_HEhjc&^_L5Rg5z3&AlL2PLeaYtA8Uc?V(+-4V1T~4rh&y=($3+VIkgobc3 zFvEQ>#Rv3JgzeA#d#jll7(_WI2P!K7m5Fje6@jdhlRwG~HNpnnDmP_kxK$IBk3rN$ zszU_9;R_DO$p_TE;OYc5lp)?W*R%tFtO6f;O9+7K)P6x}#^Clg3$vOlvi zOl)%}a{wb)@D7UwOmMO^>wd7{joD7ta-P9~7hWPfI3 znAqk{<^V>p;2jnVnBZh-*8O0yyQ~(>K#h~{u*rb==4|#T{26SHDE!}SZeYF(yBYv3 C4>|7u diff --git a/examples/zips/budget.zip b/examples/zips/budget.zip index 11ea2e73c16b1f38965b340bbdd32e04e029d7ae..14e84b19900a85b7b96ed0f1030a0fcc7951e0f2 100644 GIT binary patch delta 262 zcmbO$J6D!Bz?+$civa|@6<$r`RbxNL-j{ZPy>FtG6f;O9To*3V4G~#k0u}+P+xYk~ zGf2_olPnf!swS(l+QXD>&Sw1%QJ2c84;P%x>Bk7x{Duo|;AC~~-C(h&+$PLG3nt&? qkpc6qd91|yTM{lxlNdX7EHd& qBLn7J^H_uVl~Dc+9w!v}KRj+I@+rK&DE!O3wkUifK8XHuJ~aTNh+``N diff --git a/examples/zips/capacity_management.zip b/examples/zips/capacity_management.zip index aa84fc1fac3dea9ace67457cdef257446e5e4ccb..91c80aeeea227928cc4d45fb5b62cedbf2bde85f 100644 GIT binary patch delta 646 zcmeww{56<2z?+$civa|@6<$r`HD*7@-j{ZPy>IeEei2TDM2a_(gcLJK?d3GE5K#SQ z2Sy=Qkl5rQ`G`2q+V8N;UuIQR4|KpE>D~uPI#RyjTM=%Ikp&-!22#w8qD)kr{ z81^wSFvL%MXg1kFh;#COAq}|hcS0Tz-IgLYaKRdpaERbF(P(5NA&wMlhbw$6_7tM< zw1gu}aI&!E5wOBrlI|FqU8Uk+>Nc;E5@P`?JS-QCq0mac9IkMO{6mN>a}*t!fdMx8 zqmtO<0u?r}=KqS3P%#-Wze=eDg)gA&fuW~LIT%IFd*uuaHI*s}C~AJIG^6krsCr@O s;Ze&(Q8Qg_Dhl6E-5*2Ge)UikHD($)7;27aB%-Ks*K7sz&ugjy0F&nM0ssI2 delta 646 zcmeww{56<2z?+$civa{=<~^FoYs|hPvL$VGWXt4-{34tPi4<=n2`Off+RJHRA)xxr z4va#qAhF4zY*ui=X>5Nuz=BixUC}j9{>L8$R~RoaixI5wk6;k8LP4O35gMEKRO&G@ zFzjPuV2Gdi&}_1U5a;CmLK<-0?}R)cx-CU);DR+G;Sj-VqS44kLL4d94p;bC>?uUy zX$eP|;ACORBVdKMB;7GIyGq5u)NNiRCB_0)cvvnNL!p&?Ib7im`G*i&<|sNc0|RXG zMD_OyU4^iHfE4$x-XKb6jZFSB7apW97WzwITwY0SJ@Xuy^l&Diu`_+coe>aY7mP0EvkMf@+xXkDDn%` d5>Vuo)EiLbeN?0;-&Z$7QDd$Fv2&(|8UWez{^kGx delta 748 zcmdlVxId6Lz?+$civa{=<~^FoYsS7JvL$VGWXt46c9Ds3Y|J3hbYCP;i#sh4BIxAr3bdbAbs?t`j>b2=q(@I7py`*5r?z zDx!%_rFkhism1!CA)E}%h+qN-$mC_>J}@&j{}hj70(&${DhR^`7o>{d3O%LMVNNxi z>@Ca7gVks$S%jO5WVb04yzOQbEqQ+bUV&_Z^H2_0i5gGsh diff --git a/examples/zips/cloudBridge.zip b/examples/zips/cloudBridge.zip index 8ee631c6077b607c86b0e922307e0a857ea6ea11..57939928729b0230d43acaefe11c66a6a7840b35 100644 GIT binary patch delta 765 zcmccXd)JpYz?+$civa|@6<$r`)n-4(-j{ZPy>H?|5l)17j2%K;iW#JGUocn%sCu&m zqZt!OY;qv81)8$SYnk2Q>V7l#F@n|gu$rT*d(P?%S7*rf9ilFfS#6RMKNlwhGu%;N z%O|&UxWQFl;oyMSexJ((E-1wv1Ti9?#|Yi3qdZn{b!@zM*}+bFCSnN_oUA5#04(-W z)EZr{hnO!++2%Q7nJ_!lCnuMeV}48VEzR8L<}`&6s0HYDQKgpt5yibQ1?l}6-7;?VjzZ^ zGm35~YD|_ delta 765 zcmccXd)JpYz?+$civa{=<~^FotIfV5vL$VGWXr^bBAf{E7(0Zx6f;QWzF@EjQ1xaB zMl&Xm*yKQF3p8bu*D|}q)%|AfV+5<~VKqlr_ng%kuFjC{J49U|v)UvjelAW1X1Jrk zmQQZyaD%J9!odNt{XUloTu_QT2x3G&j}f|6M|rH^>ezVivV)!UOvDl4buvdweEGGTV8Pfk$fz~at034~SiC4yj~q&`_kjSq|R0BJ;E&68GR2D{?8 zoF&NnlMCg=Ccjf<1B)ri`#{BH!2AjFi5P0mC`wP(Q_x0HSFI3=q3)A{D~g&(#Xt-- zXB6E~)R-uRpzv2IIbrDGQ+7a6Q=sgD!oQ{Lj-kg{#S=x%I+bV)HGIm_ligHRQPlOS X!pug55y<~SYN-B?SA+O}yP6sRC6OIU diff --git a/examples/zips/cloudMigrations.zip b/examples/zips/cloudMigrations.zip index 6f3a80e2a6e69bee53b87ea5e2cfa167b2171e40..fa4848301abc6acb34248775e1514531a53d20da 100644 GIT binary patch delta 611 zcmaFs_|}m(z?+$civa|@6<$r`)mJ&k-j{X(h)XND85mh!GBYr+)B|Nv)g{=lL)A^T z7nfoNX+7W#76J-y7Gexy1Bp#eXSYXJH~AEMAY7pmhc^>gVF8yNhQdo+{&0mF+&h`U z3ZL*qESXpoHIlL(7;2hjLomdC%DQ2QCCYiDm~~Dr3PX*Td^L)i=kh@q NYN8b~!D7c1)Bv`V){+1K delta 611 zcmaFs_|}m(z?+$civa{=<~^FotFN*mvL$Ub5SLbPGcdBeWM*JssRzoUs!On8hpL-w zFD}Il(t5xfECdwZEW{YZ1`?Z`&TfycZt^MiK)6CB4sRx~!U8Tk4274t{NV~UxOXyx z6+Yp!!cgeM?*>=c&u;`V@ra-WT##8Ph!LziLf952IC+ln0kBxSh!2K|=S6a1>NY!z zu7ha)BIbgjFh)EYu5h2YDa7h;lD5piV3@pKP6lj4sFW9!FE;suEF@$ON=2fmv61%0 zP_tS(9z~6gj1PvISu(LGY9wVnFw`{5hG2;Oly$=pOO*3QG3%UM6owiv`Dzq3&*g(K O)I=*}g2j$2r~v@YKIG*9 diff --git a/examples/zips/cloudguard.zip b/examples/zips/cloudguard.zip index b5f95f7597a72c32f6a9a124b2c44369fedf455d..0232445a06b3eb8cf3dcd046837e480809a40ef7 100644 GIT binary patch delta 1260 zcmcb5hVkkdM&1B#W)?065b#!bHIY|~{TzE=+6DH$i3>$I5#rJI2yrQ9kji~wU=g6| z&C-m5%pkGJ`YdK>$|iTR1i;ljV41=KR#(m$imvVhXAE3jFqblpNg>w|#Oiq_s5WAOoSfZ@7H#Wthy76pm5Q-YdI5!kCR>p;)@D<}7QTQ$K z5cRNddK2%8A|ITP0OrHwuO>j;3=2p9#CR0>3yCf$`puG1-M1>q6GdJ$IRi!i{A70& ld5#p+cyf%Bp1d+e8%52xlq3{0s#2X$4^ zo23~AnL%Qc^;yi&luhnr34p76z%qpetgf6h6kXj1&KS75U@mudu)4W|R_N+}3r4`z zMF};tfz>^ba7I_>F6jkVH$&0|V%~iPLv(c}if(Xqjf#sP=IOJjPKx8<2@T<7V1@?= z*xQpEG+f~7PirJV{H>>Bfo^V>jt5-bO&wK;Iz|IyxS+Lx4n;p%EEWrFCAQUx@ac(GPtc(jo;VZ^FqVQYd zA?jh_^d{aFMLswo0nCTVUrm6x85WNIiSa1%7ZP1i^qVE2x^GpICyKmiat4b2`N{4m l@*F9s@#GjMJ$Yq{Hj0{WDM=`1RHZth$lpu#1M~IM)Bro^>HGiy diff --git a/examples/zips/cluster_placement_groups.zip b/examples/zips/cluster_placement_groups.zip index 38727d0d85934f8f5d8f4b9ee9919e64aa66ca97..07052dbbd6eccb53a7919136492177c2ded8f1db 100644 GIT binary patch delta 230 zcmca1aYKSPz?+$civa|@6<$r`wO~KT-j{ZPy>FtA6f;O9(;h4W6y3Pqnh7K{`7M(r zOl-3*GgL5})e$bZnKhmftWuO6u6uJdy9Y#Y8HXE8<>b#CN5KkrbGk7Dt(fe~Ed%B& fbNQn1Cvmx>@PBjpqwsUMQPtn(4gt#>@u&d+1@KNs delta 230 zcmca1aYKSPz?+$civa{=<~^FoYr(!EvL$VGWXnV!DQ1vJraf2$D7taIH4{i^@>?cL znAm1rW~g8`t0P=+Giy8}SfwaCT=(W^b`OZ)G7dMG%E_NOj)E2L=5%8QS~1y|TL#Qm f=JG}1PvUY%;s56HN8#siqpH8n9Rij&;!y(tjLK91 diff --git a/examples/zips/compute.zip b/examples/zips/compute.zip index c0f26f5f63464a1b1aa6bb8dacfb56222960744d..8bcf638f6263478348419465622296a80f975fed 100644 GIT binary patch delta 2425 zcmZuxT}+#082#WY(84MfS=92AQc|!Ac1ECcg~>n$8?(>?vqKqc#6j#by2z3ls~a&> zS&(&mNnDIh5`zme7qBzL78nKALjRzEnJ!)!y~8CMiAJUuw(sNjwhyd#=e*}R&+pf( zBmC77UfNjCi&DAhuU@f!Nm`f^N*Or5oH9V{s?19b$$XSGY2sKprAD8lR75=f>yS7~ zkpYQT;2Z(T-zk*z%62m{Ib$x3l7So`Aq_PoPvq7xVNb3(kqW<8>|>-NZ#03DA!SS{ z&))^g7ggm{8E^TOs*Xkft7_qCbhA1ZJ)~Aa^ukjyGP9@^@|-F*u<*rV1(5fiF5Z@> zLQ~3wZ)y~DW<=kqBs1rHwVozN@=OPT2aBh4m16r?%2i;>5V>R|vA z?W|d{(e9)LjU6kY!uT{|b2SS#nm55w-??X-@Oo!#7KvRV*pkFjv`u)#Qo$TQwOr<9 zk)t!Yz2A23PU5)p=^U3s5^Ot(%_1gk-C`y^(QSm}?w)72c|LYJc3{U&+hLRvOa8+r z%qKMuTwS#dTp}xVylwmce(v@uiPM*vidRhw{7BmSQ(iL1RmnI`OTxO$h%kecoqe1Y zc=)Ui@*0}*iB*+K&IOVld^W$G-^-#(-n$43@x1>6BV`|WfV|rW-)Het#4llAb;v4&%7GND`(V4S0!85 zBK$)VgM-ygK6aGQxUeJkP37HON_;4Kufg@{ACe;zOOudx^`q1`cS6pZd456(BkORM zM*lU4!JkddT+RxLd#3=)U9||m>#9L`-L)UZ8z%t^@y^L6q}NO}AUre$??V2a(+AOe z@AP4WH>a`R$y*rza;u%{1;36N9g26)RHOF-cO81SyW7xv`Yh;$etKqKMf%NI6T)xI z;eM?CEW*z}i8KxKuOJ+pe+l9JxA!9a#cf=3nx_iAcY6#J3qAkr!95-F;-388Jt)3# zp&sGEg?-3R9nK;div>v2x(Is|a{3pyc>1tMXeEmb`-+gqhVNyR$Lhzob;o}Q>1zT; zq>p;81+b?ws7IR1K|ISpf?ded7HUCwV+($L=>U5FZVA^|zTAl3Z!907SeT1C4090f nr$3B$^H&)6*s%idLVRcizCQtLS8=|PReU?jHMqYsYX$!Skfy}b delta 2425 zcmZuxT}+#06#k&4Yhe|OENUsFloYIjoe}6qLSWYt|;Pa!NU$qf}Hp`s<)L zMv)ICI-YZdB!6$Aq+hm!k)n*5G)jiDfrK>FkUWu7&4k@KmSigYLAjfe%3Nm>B^Ok2 zr95vtC|^{UQDvg#*Xmjp{ja)7K%*Nq@#sN~8lvZ(ij$dzEs*DUk&%VZ7b$_f_jJ*w zJmuOFCVW$?q%$Li4i%a5KC-o`QNju0GlgdFm(;O{`chj8t!zdQHi<1L%9@z)WSLe- zg1Ib?tV zjJ2_5$y%G67Bq6Wm)euK-G2*W zTQ2Jv`N`#UDLtBNL-D_hdqYJ~j^ausQ@(cPK4dZ31v-n6<9^!8aV0d%d8d-et~=j? z8}@dq$kLF6w2r{?6I<#Xfy0Y#jRZzMrv=zX*)++wqve$Qb2P3i{l-JN*m7gOwiU_7 zwebIt#OPvmlaF1+G%n(be^a^F7n2`~-D~*n2`9o|;-o<0qFzMt;tSCM{w+KliU zGq@jHFpCIgpG2Cv*;fz_&%T84o}0T6{^BOCIn7sz-n)E8ius=J_;61L{J5u}eS_t?G+?|l5iGJJnL)~(=t!z=i9RI6}*Cs*_T11*LB3IG5A diff --git a/examples/zips/computecloudatcustomer.zip b/examples/zips/computecloudatcustomer.zip index 6957dfb8c4b6b3bc686f80793cc1d57bfc11de37..7435912079d94091e9840902f253f18a91173e43 100644 GIT binary patch delta 287 zcmaE^@LYj6z?+$civa|@6<$r`HDf==-j{ZPy>FtI6f;O9JrFLkA0l!m4J-mwx7m}? zlLe$|@>JGfG-Z={*s|d2YT4E@gVpJB*~0~kxgr_Cg6FwiV1kpSc#eU^9`m>`18tb> z$R`8ld-BFZ`C^}9?~6tB4Sx_sR6q>?g12J0 diff --git a/examples/zips/computeinstanceagent.zip b/examples/zips/computeinstanceagent.zip index c05cf080663307d2cf9676c19d45cdc6d9ee2895..e7872f9e35e6ea86423c123db75a81f35d0bda5c 100644 GIT binary patch delta 253 zcmaDa`CgJYz?+$civa|@6<$r`HBmXo-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuOI zEjvgZ5N})=$;b@UI+>Np2_`n#kLeItOqki*h#2!CV$~nUcd;=r{1awi@SCj2Y%%!+ zvmDI0&2O2Pv4PE-#^uBeG;i{4E*UWY7ne5*Kb<=O%-_Wgk-y0ui6S4uQv~Lpuv&;Sa;2 yY6`y>vZ_e}fyms+#RB#y{3`-3SPZcebVgA%U(g4I&nx7I!mkyI0`qSPsR00s0-N6e delta 472 zcmZorYf$42@MdP=VgLb|d5FV#7UlZh+r_E8A#>ihx}rk@Zg!en$I69Dg)Lk!ykr4 y)f9d&WL1*{0+G3siv{da_*Vp6uoz+`=!~LjzMu~ZpI68agSvW5?>kKcFe#CoP04@2JDd&-fm#Npbvy^;Ny$JpYP*}qMpqc!iTBP_4PrK zzwH}@qTk;y5=H)$Unq*aqkjwvf4{#w3ST1t)%Nhhp{$mG;O=jUVhYLD!Zs!6E{t<=2Uj>p#EK29@TQatx-F9(rM=+_ zCrc-@fEE6fcgIkeqTmNtxKn|V1FUebh9z9^uSO^%STIxzZujI_S_i;lvDyw8CLYxG zf@>DiF=PfSbkp~N3(nO4$^;giXoRr)nUMoTP}9^GuCms2Aw*Eo0^yxviyB5gV5mhX z`rMRtVPs%(lyxqWjK_3X;z{eMbKi|g{MLnA@gb!1n>+6Fe zf7>?*MZdpaB#Qhgzfcr;NBO_Dv2UuN- z6+1{B5N}-igPj?ub@BoZ8<^PU#~k5|U_o0hN0{K`R<5I9F<)*+W}wE&6S-x;{0-b5 TD10d%FBE*NI-HZZZxk2%5_!GgA2jxfQ=tz1XJV!qst%s`EkCvwYx`5U-B TQ20_jUMT!F9)B?Z29Fv5;srec diff --git a/examples/zips/database.zip b/examples/zips/database.zip index 61ddb999f06ccbd5b3e12762216c3c6f4ac4b02b..144d75d379b49b22c5adffb5eb959704689bfdee 100644 GIT binary patch delta 8175 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 delta 8175 zcmZ`-d0bXi8sRE0x#@9I z5Y1e23Ho$ywism1q$xP2PG+FFFQbzgnWg>ae&^hK?mg#Y{KG$+DGyzAxCapz0N zon7-s**mz{S^xRgUD@C|$Z5~SS7z>;_=@ykn8${EM|%aub#)LZZFA|?y=c6%oxLvL zWBqkQLmGLbz>UA`vv*UVk~zCRAM^v*+3j$Uw!h|OeTtKkk(-P9S`n4QJ>hq-zL#z} zrfUi;QBHw~fD@ckH4rzrgNO8^=Lzz|a+ehC2TPNS$)14G4+Eugx89xlC#ASeWG`yn zCes(cyJs^nr`LVzNs@;y`L@ST)RT3dS(+s8$){dr+7Ffi-q}=dm9LqAltDs})atu} z36AR*>`dbbjxh*Ysdl$AM>3)QmoEJ)CbRRH#)M2^DnAHWNzx=GM9g5|p$rp9Mjw?1^X8Ne@fn zyI9TOi?<;JulGV8o%`&T!roa*Q-HjY$}`4jURVxggwi}*9Q|Iv>EY!VuQh3jS==x9b2%^hqw5X&& z({DLYGM5_lDIaDdxU@Wn37#mQO@ofB9L~T$S7y`K$LEaHK*?+FV`AE)iuof|R-GaZ zXAWEzTI*D<5jO^NV<~Gu z%iv`d)W>zp<7@}%v-jzD|VC4=%BsMRDKwJ}uJf+jG zbulQ{hL804wQ?;MseE-7pHl$ z5Ba;Vvz=Xfpp>8MjW36y0K6g$Icq&{HU8vCJRMhY$7so_t`iB7J$^hEkb(ZmOBe$=dCWZ==a~&JJ>pA{qLw_*885`H&gGm(s3C5 zFxi+V!r%IbdcU_ntRYy%&$K&La)>u^;ZaFZ$jyefMh-vEal&Hz_*7Y zcSG$+e|_>L@paPENzDAmPya;BZ;S&59^M4c5=+<-0doq^M9^q`kA3W6wx$5Dv4th~hmCKJ8*u_G{A*V1Oaz^5+3?jot!#2N}}y>mX&@TiMza4y?fBf^fJ_ zy-$n)R^nFg&*9QY=uT2p6$$M8l0S@u>qHN(kJa-jUyFq#nz;e-K>Np zfM|^a`I`jDr*Lp0gcF!{5gXGLKL_Ia66lH}Qos$rp9sdiM20N>HW5mh#^faU5)pb9 zz3nr@U%7iv*(+V)#gzCl(Qzq|M2)Xc1vXaX%c)RCVPzjD7<{7EwwQt42J&??Or^5f z8G1d)J2If1!mBcYZ4dcGCOoC^i7d#_{LtqZA^A}@Jfr<2$B%?_^o3il{z5L!g?)7U zbt!}-8yBY)LNQa(TnJ}rLN*rxy_1xL;7O&>U$&nBUR1qbu^Os1S*69`M`7#7hLt&b z!59ZzhdFZSS!KX2@2aue4G+mdUd9Rxnh5u4F1|7!fqqIZQtk1}iQtdTrO=yssJN0q z&AnA-DAcQEu$nqPuN>H3mcJ+mdZgjVN|h4BR>B)AA&+UkQweTV#qZPg87G&{fIaji zQTodoo&%1U1AT0GoHYk3nXc1wz=`Vmt_mV-WW%csX{)M+Ui6}>nGf_zv-0}Md{|4< zHfD*MHY>b#2^^yFk5~%vnnApBDSS*SLb=N57&Y?0-8H?vtAm|gRW~W^hzXl(zyr4} z1Ge~cRoB2S@*#rztOfmWi*oXp*Q^CZBV4;)9}WBjYucc93iru} z8#aQ?H=owU_|1)wX+v4ZMp ?h&pGARj)Y&^a+uG9M;`)@Y9*}54<(mbwP9*AAG zLN6N|=Bp)j@}DH z==81F57o@z+5NDa=y>UXzJuiR2jDCfKG10J82WC#1zIRvaTwScFMoU( z#!$GMY?x_yF~Be=fq!0mzpiYlD#q|Ii%;6FAyKg+pD@7#`VdgE+aNvAoO@H#C|@ zZn&XQ1YriZmnjD4^*|B4;L#pv7LR22L`6Juw5N@XI~vc+eCm#>2*M1uPg4xe=!If= z!H;^O*LlHNy^)zmj`v10_*eNJsG3LGJ(Fg(mZUeCs93jP*t(ydTHCMFP`&P&qHt?1L(Kgm_D3_O6(+?H%2=YS(JhIpiP2iDxeqy-O`-{lM{vrWI{%8cR=M#Umh*=K8 z2B6`*%(?+$d;Bp#Y=-9oRD|id9H72p$k;$Mk7#Ddr9d%_r9r5Iw|*%I&E#Lr8i>kx znHvMqtGtZT>FGT3AQ)xy$fOXF)iWWY=7K>ekAKxXNX*XAP?6_@p=cs`rH_~}vC#H~ ziFpqijHd9mb`BOR$~zoQ;$=35t2M@K^&KKIRyRZ(Rox?0pV_NdMPyT?YKn<0j}%?* zh!oX47bTK5UOQP7Y%2YF9 zwkvqwZa(L^1m{A%**tnURj*@tU6xjK6vA{wz&|F^G;S8}< zB8IC7Q@?w-I9=T`#aZ!krpS1g5$c3t{4O4W@_FkwN1!Yo8JnfbFzd}(Xe2K)I9puk zA7qR3BxI!OGt;wnq&hj7KMzKVvCqvB=gGG@Vq)`i)mh3kx8{m*rH?|Tyw9JFQX7!H zBDFPrv{+k*N2B@VDHF^dgNE_S-W?;-=9(uiw*`43ZQtjiOkT6H%1pRyEQ;aPH;xsj ze0aWy?9LZATu^~n@O1@ZC6NIcQ>YF|7U7n0iXXLwD1rCmmqN6PcUTcDxdh*rOtAU1ANF?x|Vc&=EirQs#wsQjQr zoIx=Y#bJJMB3jC8&YdLAvactJwh||cb=x>uyg-JQiXFPMRLtstGI4h+ITQv`_bFoi zzcfW0bsba04xKwy?7pj0)hc7Tm{Kk-j@EKFtU6f;O9&IBPMGWom!8(4Ik16UNO zcH`frtRSJuOWDj|Vw)eag)o8zEjg^PXrDZt!xOIdImdS*)-b`z$~^nQVo!N2 zu<3W?b%iP2+{^nBqQ6nV7@OJ~0(Nkk3o4xtI4NM1P}zF*da~1nl5yWd)m=!R9U&v1SH3e)2;R84!Pxs1ulbQ5?*j zoFeLn!oMQwf~zH;o_6+g>@%R;6%ttF@sd^ zwFQd+b!=v2RAB~*fm90QrX=ZyhHx@4!_AW71Ik4#l6$wakd=X9k<{cuex=FlSp?wv zkFj*Kg7vRa(&aBmM%NCOTFYevSO0;lj1erD$zu%{T+I^-5oG3bfC*0a;@b~(m>z#g zB36Ub_z@mi#Xkw=5i_tE;IIJuck)bOgu1)J>zH8XPTnKNfv)z27(%U%_#}wC4oW~A zi)5yPq!Y}kn=>UHIKgJFQ8Gn0k5w7rc@O0th#NtHm0yh2PX_7;^~LI!AZ`T*ZYoyw z3$+mHpJ-i$n7>EQ3f&!2`i^k-0%I8xX}e6!(bb8X+QHRDnSO!zKhPXv36lRenmfbQ z{WjkVap!I;3v~0ut?l9JVy(p>>dI^#Kxu69Mkg6?xLt6Pp8VNX6D(Hf2obZh^Ttqf z%nntJpgpRZKv(I>Gwn4{%z13@g~IoD@I>M7a`3~j$JG(lo(Ybq_JG_g;e@It*$G{Z z3yM8v&ZzQ>ol)Jv=MsS84v=4FyP*2zsSCs}uy6}>bw;scn=87!^kiE%R5RM$P}O{P u^FT2p*4-b)9p~I#QRGcMd{E>Ud!U9dzh@wde3PdeivCxgzF@wUml^<`M7(eS delta 1227 zcmaDbh4H}@M&1B#W)?065RjSoXd`-;exwAGO<6BmeZ!o?@s3+qmtz=@EPVg{++ zYYP?u>e$T4sKN{q1F00qO-a%Z4dG;9hMOhD2b7CgB=>G-Au9vJBB{xR{7RG8vk1WT zA7kle1?yjWkGcLEH)s+*GXU z7iuBYKhe4hF@KMq6}mg5^c~^u1;#QY(sr4cqpK4&wS%jRGW`Paf1o+U5+wg`GsGbL3>m+fv(b%XWDC^nDf})3x)6R;EBTD<=}^5kEWpH?Hdl0c>B+WksAjagp{n`p u=7C~Hth+yoJI=YgqR5+i_@Kxy_CO6^e$PM@`6f>{6#cI}eZhPyFEs!Y;@S%U diff --git a/examples/zips/databasemigration.zip b/examples/zips/databasemigration.zip index 44f50726f31287da0aedd90bbe61131fd5f5851b..e10a72cb245f8575682457b6f4212bb9a302c569 100644 GIT binary patch delta 1926 zcma)-dpHyNAIE27vk4>j>HLPtB_|S^?4h4qG~_Usb12HS1d>z z2KaKYNM5G&5!4XmcJRn<#l}ei#Kh-80Dw4Y*Zq=H*u5q9a)HMoUvj(ka~Vzyv^z@s zBxdzTk9Gpc+Uo&97RLYNJ#W*Fu^TTW0Dx@-0C0o`2kFvOq-01?0O;$Mzy5}=>K8F- zw)}=garHMV`8i1ES^W)63*q&-=tYCeMlpuKZ=b^u1vtl3WQ$qWe>d(K`sDiQyh#l> z49_64w=Cb@d(oo5y(p!#W z*Mqj7E3~CJXd263wrKxG?Rk=sqjh#ehGh8?v~A8mR6Qt$HWZ{btDuXBxnn`!CzZ-Y zvfYydlDP`N)qA11>$oo;Hg%^^@Xwac;NW<#>`%A|pfgMiu zuGnr|Pc&d>NO-&_rJC zRMjE_tq7%blX_gfF}3&LgKkZr;%jpXq;uW*g6+HJ0*2;zYB8hBrg8JG8Pzp6nQptB z#`6^*U#L-CO%*eD=vwb4YA9r8pX2P+TqXeIsBK=2QZ#~-Y8Yi&KR`g*E@D0+x>m#~ z3eNSxk1LRF46?z|Uu$&Hpry; zp$8Q9E2-LTh18G5_lXb($#O*mIy?iFbLr=4{JhQVB_|CgF z|9jqAz3w@+j!KMv_rTgZpy0`=xzcL*GyXW~+s#6^e_PWuDhwFzisc@Y=QPes%Q$U9dc2Hz2BG!WwbPM7n_)Q_&c!tW&S5!Tg($Xx{bJv~h&rrh4ncT!{M=I*4k{%?yDjF6{GgNH!X)1MzDS5q*ISEz}RWU_U z?K8`QDH%iiJT-z(%YNL)7{8U;YhID&RYNb@>PKRwYa@unOJV&HhGH1=;LOj=X`xdY zbV>D2e3O0?0x$cyFikW`bZ6mk!tANHx<9Bq_4O?bZ9Xa_0oSg_k`8ZARiB7htxilw zE4yiRM4yOwigKG*@i}~*%car};g6F}s!v4ZXypVvku%v^Oj0QD_1)}w#5s#;Et+x` z5qmhx{Kz)b?>YjkF@_Hzk7FOX3sV!2l4&?RL(qW1%nerwtS`HZOKDBW34MP&j`+o# zFXKXbNlOMVR91HB=&(bkjX`I^qsJJs?oGdn-5GAb`+PYpJkp3~A(5%NO(KzpWr{N+?n&wDx{R?f^Cr*Uq_yFHDHjCFwwzRFKdySu`OvxWV$x`^ zz=?1)GKG-FT`rJ9sHDGlXN0ytYq>%ba>iFz>7$-D360x3=L6UDy=!N=as2KLRusM= zN)1e&nomD^Vu2gC(Eo7aI_c##i(56`7t&rrVo{xgdWW|CXKNdqt-az8^!s&;>$KV5 ze^ayX;g)=|j|mN%<0}WP22{UqNm( zZsedOjW;Z@`E#h-d$H`)?aca8`cIsy}k zt7ftWuiDQRFMQrH*YswVb=Y+-qB`Z(#cc-?kvv%!m+AFEf2>Do%@w?ausyi)iiIs+ z)aoaH@TXE$y<+xSR89LkB9S#s)DXV^xP%dXg%ac|m1ydcrvC^_v{*^oKN-|18NSCL zL#WjkiqI}W)%SD;)Zzd1C#dsRtwcKm1Mg)BFvmYKGP`X1A3V{fVW<8U$4Vi9G$?Ha mc3@vvM4+JuPGS#Sf3B?G^%wVi8c#}PZ(L#@5?sE=-QNLla%W8d delta 1493 zcmZ24y;_1dz?+$civa{=<~^FoYskJLvL$VGWXt3`oKnmnp(HD?5KwsI;t)oV(Bxl? z_As%@4ov&OVoc1|$XW$~>LRx8xnml@!oV<9fPukqvH-Kjw>b0|QGv&;@VBee-XdeR&t}s4<=Q#hNBQhhqT5-E=d8)(zwNp}B`VE#qL!y- zLHED!d))&!rDzsSdux=yB{2E@?Dv!BoIT;MWuGzcoz73Sf75iHcbl(&@c+{%(Vdq~ z#Cif|o|&R{N6Kk?biJO%)-ygQw+bBjD7k26;;xjFB}TI+n)c5$(NS#mnW0v8{KVQ{ zXId9L+1J6+pUoAdxBT)g%~R{K^NOT-EKg29$(D|6=t?{@?evtFF~ynH z7H5OjrSS6{QJtf7XS4H+;N7nUk7%7^CRK-BGGt-0*fB3JvFH!NLUWfkE?pYqWb*6Ev{xcN64N>4 z8Ww+Fd$G`>%x3njz?zUFzaKvSetv;)vC5n$QB!4#O&bD~Crl{Q68aOy^2GOc!h)=# zNk7&v$~xe1$?Ke%CpVAF@|Q0<{SG?RdvYJxwqKM}E+Qr)kN^GEc_$ezIi7crpt$FsX(v<0>vO^EJ{t$doKM)lZ9^Q!P0C#Urk=j_Iz) zOhUeQ>Daoga4*oB@S}F(^SOIZMxI&uLFV|}tE|ioS~IT+Oc#s&5L+Qw!p~6Gb|Py* zQT=4s-HtF+R*3vSEvwJ%WW2Qd ziQCJ7%`us`KY8(gc2ZaD*2;-1X}LZ@oXd7y$QQv|Q5pP}udUy)y#Dn52D@OF;;z4s zAAbM(li}xzv=7- z@9R0U1D3`Zzt~iNFy)GAOUUJW*%p2EIec|DwilRk%-;Qew#J*|+b?9ie`dt1FV=nF z?92-FsR1t+23FKo|9yT}t>*h@=Nm7Mbq39zzbsm8OMh+G4b8_@2R{8i{qoZ%_8dKq zVDtx^<(T+f0iy=Kqt3<+O6x{ohVecI$!@VS-O$9u7GSPu2f4*G_*hHORX5L!D8Tv;0$;>Vh7ldAi%uu1YV_ zpXJfexg+P#{U__}^Sjr5O;{ECZ;Af~w^hacTot#>H4cPdyPHzo zy1+{`7p@$z*k&$!P(d|$1CQ8be;zilmO#B>^19=rWLPJ==Wh2Z=1(4PkcY@yq01L+iAl74$0Fn$0j6l4kF$1K_6l_>0 LuL7F_CrAnau%Vzd diff --git a/examples/zips/datacatalog.zip b/examples/zips/datacatalog.zip index 45e551879c8915a7e3448098b727c44b25b53fbd..8e82849e255666638605f7d838fc42984db9719a 100644 GIT binary patch delta 265 zcmdlXxkHjSz?+$civa|@6<$r`)n-4(-j{ZPy>Ftu6f;O9#t19|6x}%W4iiXdatX6J zOlO0V@jRazNp4=5j^hOL4oP@Ef?DQ20-{-BI|yJP`RwJZb=Hj#}ve delta 265 zcmdlXxkHjSz?+$civa{=<~^FotIfV5vL$VGWXnW*DQ1vJj1gD_D7ta#9VU>_ug{~ayAPT>6 uS~3G|ot(%m16CBs<$%K9%;k#0m*RFo;WuzQq41w@yQA=Zc_8wWc+>#aJYkjq diff --git a/examples/zips/dataflow.zip b/examples/zips/dataflow.zip index 44b1cb5fd7fcccbd9a2fc93afae590302db5a465..9be5472a6e1a8f946157bc2479075662a2837e45 100644 GIT binary patch delta 225 zcmZ1^vq*+Fz?+$civa|@6<$r`)nGrz-j{ZPy>Ft86f;O9QXeb=6y4Zg#|aXeEWl+5 z6Wi>;6~YJ>oX>3r6P$d9dmmVAE{~ZK$hgu9ZU#n{m&^a}W^HMzZ delta 225 zcmZ1^vq*+Fz?+$civa{=<~^FotHHh^vL$VGWXnVwDQ1vJq&`>#D7vw~juRv_S%AwB zCbrpwD})g&IG@`LCOG*H_dc-LTplweka49I+zgB?FPRw_Sn7cm1$Z+u$uWxnSsWls bCx7L!B}Q2YuRSr!w(`0#11+8WhgS^%;@UvQ diff --git a/examples/zips/dataintegration.zip b/examples/zips/dataintegration.zip index f21387c6d6cc01600ee620fcf60d810efe156bd4..094792070cb6c52ec14867dd044caaf314de2dc7 100644 GIT binary patch delta 1255 zcmcaGk@3PrM&1B#W)?065b#!bHIY}J{TzE=+6DH$$rntdm_b4bW?&(p@W#16nLt95 zXEM8?E1S&B5(iVaIfKQ58LV(Idmv13vc90gWND6@VDax9ju-~SaQeX2uIKy#R=0{P z1SYnbmHQgR_Itd(7@Gb0vf&C3^6@|vUJ!_Y2?A~Z2{ut%$O0y|IZG&r5iGc0*cK)@ znOS6yAkdEy;2?n#nv(@t)Fv;m=iuUGU`7j{$*Q8EFwL7AMIAZ7CLWdbf(wet2|}#V zl6L|NB8Bec3Gxun08O0?^Ywj&Ft}zL#raTQEBj+;4pfPPDTI4)ooWG0Y_qCbD3w2aZR3RpgFn9U10Jl11=!V zH+g{>2h5Vq>&%)mlG;f-^DGJ%99 z&t!H(S2mfMB@U);a|VkAGg#qb_CT26WPL$}$F3?lT}4SVVXBLiaK(DO*|^=1s4>P6NFf! zCGP|lL<-%>6XYSD0h&4)=Ii?kVQ|ehiu0kqR`$ox9H1>mAK0*g#Xehxps2~T%0c0Ow~EKm zQ(^6oqUNP_6be7pCJ95&OPgpEHEFh$D11h{G!%ZPof``Oqn$UDk8pdOy)TNIv-Zg- z{2+%23_WKY0#MZ0Iik92w_^&19!IBG6g>x=GEn$l&UF}iUOB_U0220jF1aXr{j-p1vtq6s`(Or7-c{g_qeHQMh`Zl_w+HL9qF=v&B8UQ5+?j`^L diff --git a/examples/zips/datalabeling.zip b/examples/zips/datalabeling.zip index 2426a48c4d01bdb5d9bae2cecf731732fc450b8e..507169dd082014e521fbbaa5416f1e2f5b641d5d 100644 GIT binary patch delta 193 zcmew_@Lzy8z?+$civa|@6<$r`)nPx!-j{ZPy>Fs}6f;O9))*`T6x}%eJ0nPF@NnL;3fDlAqo!O5vC`@ss;S#4lqo3mI2Aqwl*teAnOO_pPq0V}%2=7_?#Wp_s5 RFJkvV;q!2Kf%%afY5*^uL@odT diff --git a/examples/zips/datasafe.zip b/examples/zips/datasafe.zip index dd88ffadf48de72f1abf3e6a804e785f3c0e4b27..cd0b348965b4aa289d6192a2b34b253dc76cfcbe 100644 GIT binary patch delta 6449 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 AhyVZp delta 6449 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 diff --git a/examples/zips/datascience.zip b/examples/zips/datascience.zip index b8a1db248e7cb4cf36dcbabfa3ff92b20ca0fc26..eb5a52a89b7d431c9ab40644d9aa2e45aa03c91c 100644 GIT binary patch delta 914 zcmbQz$2_HvnK!_jnT3l11iTeqP2|;PKgZsec7eTb^22^9W{^;fIamlN3=-PB)n-;_f7IeyhI0h61O&NP3VwqNO-Edcb$<_x8A_d=M_Z+x2sII=yZii$- z1{0Fg+PX~PQir;3vVd)z*KdPi_`iO5*Z~a}*_=3`NEWR4+FF0O2|DWxIKYDO+k9by zVAaRBePIJj?AvPz3Z%)2`((g;$$hRU{Dyr_DEue;{GfcX$pQxo4tt>3G2yT+ u3jh6KOtYho_+Z#~;)pYfKHZ~UDEyg6Vg5(hEqE*zMa_g`(O~|&V`=~reQWXn delta 914 zcmbQz$2_HvnK!_jnT3l11Z3ttn#iloz9O@=kt|s8wYC0m6Li)YaDWBlxB0>Z z!K#mM`@#m6*tgdb6iAa3_sM|ylKWgy_znAjUm6{3Qp1G4x0t^hZ(CuuppO(u3+4>fRmn#1M--1al|CU3(9~>_mvE9ri%6W5Quu u6#o0em}W;E@xid~#1Ur{eY!`zQ1~;C!u*f0Tku#cikb<>qQU%k$J79w_JHsJ diff --git a/examples/zips/demand_signal.zip b/examples/zips/demand_signal.zip index 1e3d748f55b74e8eb0359e08f754d9fd20801b14..ae6ab8cb0b3390079a43ff7a7039048a2850fe88 100644 GIT binary patch delta 156 zcmZ21uvmaMz?+$civa|@6<$r`)nz}&-j{ZPy>FtU6f;O9&I~L96x}#Ggb^e(`4gix zOl-0V(?PJ<4<<*L*k%W2D`v1@Et@qnP~&7pb{R1L7MlwS-+|o|g}<8JAI$&Dt_A>$ CVKfZ@ delta 156 zcmZ21uvmaMz?+$civa{=<~^FotINJ3vL$VGWXnWHDQ1vJoEcaID7tZW2qQ>n@+U@X znAl_!rh{OyA54xgvCR(5R?J|*S~hEDpvK9H>@r~fEjAYvz5}}_3V$`bKbZfQT@3)N CsyE&M diff --git a/examples/zips/devops.zip b/examples/zips/devops.zip index 3e7b5cb7cc038aabd970b206854336e20a7a856c..70fb8a9aaa364f0c86a69941a0c2655777a37b67 100644 GIT binary patch delta 2675 zcmZuxZA?>F7;b5ytC7+TMkaT5R>WmE=++g7K^Q1lq*Y`VNBw}xNAW_TNaw7}Pz>R# zmC|x5Dt^%dMYp((blDF#MU!nmT(aN{nnlS>%znt9ElZYVjAZLQr}x~wyY@$u_kEt{ zJ@0wm_uR#M35)judWsmm74vO=+Gz= zaaDI_t%$gkDR@M$9?TM&r&njQcZ$>xvzzEK#tqG+pP8H*5iuvXo+qO3O;fm?BHb}Q z7rm+LC*pEFB}QlT{}40T>;h!VQ?0DFC?ztw3-KvucO7hL(lsy zKa&hJy>Oq1c)IWeB{D??q+*U!i#j~1Xs9?vB)C<)gBPH*k_f)tjS^xuw|r~29GBtb zL|LUsoW9LU#k@5dqcD|I#@({#W1CxpA4L4G6rD61pY4au)F`UwG7C%g(EKe~hlzIu z;#{2{HyGMYCXXLm+~9SVKE7ad#?no065G&`kR0hQz4YuZuGP>Lq67cRDlDaD?{?Bf zOPxUEyJ)cO5!tk0J3_m#9;_fki8SmI5i=Ue1LutQG^z;kyj@4tckPu@6=$e+?eCk$ zV}>fF=y7{GY6`1Y#P=(vMYV^nV@nuTFPuTXKj<)9Eac)g&9g>&L}ts2WOEBzw~2^T zt#n(Wf3+q_@o=>doZfb+L?TO+NH(C`hE%kfU5RvUX|!fV+W@IK-)<0U#v96UZWVIz zhJsED760nIPK-FrYSHYp3jG{W@t6JYtko{^$T{G5n6J@$ngzIebO_+Hqg4Rc zpVk@v&|qbI|ujT(YZqaw~uv#cxjBxk@whpp5Xj>uUsIW^Z2J1 zf>_Vv3tk4DxCrO^^di)_FOfO(HRPA!9MR=Q(9^2%9&pCZ@mhcvh2X9~2o(Z+V|WYD zkA;gtyd2&M_>PHcfIpeA0NgqWXL5hC67Y>v@Vwbk27NcR5!BE`>ValC%%B^Qw*cpb jX|m6}xBlr0fGIVRm5dD=++g7K^Qo&2vuYjNBw}xN3l>S(mCrg6oY)V z0xh?qq9QF&aK>$<%YL{inr!>w{^$&vMaj&}e#oCKOO|DfWb1ox-}~LFB8fbb-J>G5<8TmM4hUt zp~+6w(->URo@8XykCF~hVo`EY9430#=+RuNh9S#2CnX=_5=m9>no5SKQ17EeyIK*8 ztGd#v8RAl!=n=iTKV58|Ufq_lgHb=sXrRX!HZ+ocW;3f8VrEvYKt$h{P2qO(wMT_q z_=dKZh)Z;o7@pPrL(H^gu5WOmqy7P1&=-F2`-%X@&)3#fPZ?y zkM#n+;Nj5mi*T+_FG7uLjLcc6A-@FYh%VKGo>q-_firH5R|7mh0C)XCAP?XhgIj=p zG*|%Q<=_s$w@*|8{K#Tb9%r8Cx28G*=)zP4PxwfZY!9?W(%HBh~NZXSFj+^Lohc@ z{>d8+R~XGVgBfhsH$gv`Aka~glT(Dwg2hdQLt)~ZCkT5%+;CSk1SW{;2384sxP-UF zL9hw@k`S*UJE2T65~dCjE-R#cV1n>)c_tGM6Wi<}D+6(BvVt#MaJzy8lOQluBl@qj zt@dYPU~pzm;M_eRPvh_!o42p?riL_Ijx9+@zO|qQ_c43WdL2KNW>L7<}~C#MLV1&f;qhr+}+PZ0KkxZ$p72uu*w4XhIOa0zdT zgJ2W*B_Uozc0!qCBupJ5TvkZ?zy#sp@=PWiCbro{RtDnMWCdTi;C2NGCP84RM)Y54 zTkX%pz~Iczz+elE5rfGB%A#;(@Zg)F8Uz>osCotxN(a>KK`}RZqpsLw2W>X6vlTVm zp<*&%ewRip3ZGLm0EJ(z8HmDvrx}jIPuB`V;osNtfbtP`dTIxwsM)8TiNg2Pi9z8X z*GWd<`{*X2@Gt24Liq?g?DbIHxk)b_MUS<96bgU4ekuyz&LA3vzuO=Yg>Pq=0Ol_= GR09AgE=05d diff --git a/examples/zips/dns.zip b/examples/zips/dns.zip index 2da62b562e8fb8288713302cbc331423b29948ab..0f141e4f0b9a7f86d0065fb3a6c4a9e8b08c7d16 100644 GIT binary patch delta 924 zcmbOoH#?3uz?+$civa|@6<$r`RaQC2-j{X(h)XND85mh!GBYr+)B|Nv)rDvir*5$c zJJh_1_oSFXHvF~+ivUG8J2J{Lg2W~#G9d()Gg(0dpD;VaRqC;PVFIgEWj91KaB>y9 z1zg=uc0Y(ZE-o9mAl#ZCL=kS>E-JzbHu0PkB*Z}B z!ztYY(LO=e9j1NpJz0p@LwO^Z*k&mO5r`WN6?M_w)1-(naIfNRi00WU@Q?t;f+*wU z_o`fA>;I@4GJ`z0P(zFpo+>8$t65?ZU8Uv(6_o+&3&-F(qEZ9!1vy z4L20NhNc$^e~Kom{2xts6!}ywD-`}gEtvVpK2p-QKv7kr4O0d2%Ux|}6nQ5dR9CFi kLG`+gCj`08c|WL;wH) delta 924 zcmbOoH#?3uz?+$civa{=<~^FotE{pjvL$Ub5SLbPGcdBeWM*JssRzoUsteI3PTgV? zcBpw1?@2L(Z1`;t76FQGc4U-g1c^;fWI_loXR?9_K4Er-tJGup!UR^S%5I2e;N&WH z3%I(S?0yh+TwFGALAW)!+;EkX*KmIW8@QCm60Yzm&rXQd3;A^5f>-$bAcCp_5UYVM zpByW&6RcZOPz$UO7+z5SO->htE89F@ungiH2@zAcfpF)Ph$7s$T~ve>Y~nd7NQi;L zhf}%*qJ4s_J52lHd$JI*hw?@+vCUEnA`mwkD(a%Ur%4fE;9kYs5Y4ky;2{Bw1yRPy z?^U_L*8fp8WCnR~p@tYIJXK8gSF^+-x=PInDk=lk%ct&(!mmZ+zfljwVoJP*J&LXa z8g3|j4NWf;{uE7A`9GTODDtUVRw(>~S}^mGeWavqfugEL8>R~4m%G}|DDqA^sIFM2 kgX(u7-B1+uow^QCKC-Q^b*)iUdFY{Fs}6f;O9))XuP6x}#8oDn26`7@(6 zOl-3$(|i`N;B_`DnBZgy_5)zC+w4}%K#h}YIb^_ma}H+|{u~ZZ6h1qr2bdqksRjTN C=`^(f delta 156 zcmew%^h1a@z?+$civa{=<~^FotHZt`vL$U*WXnVcDQ1vJtSMLoD7tZGI3q}C@@GbC znAm1hrui&j!Ru^RFu}<7SNx7n?jff^^*a>#)B<{Zu_{5c$+D13HK4=_K7Qw;z! CB{+ou diff --git a/examples/zips/email.zip b/examples/zips/email.zip index ebad777498fc8b7d83ab143d0e748924e1ad4886..a6290c5b2cccd6c26ac6efedcb6f58e39e8b54a7 100644 GIT binary patch delta 489 zcmbQFGf9Uxz?+$civa|@6<$r`RaH61-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuO0 zIXg%l5O17vn~@o)b#f7tDNJngI;JyVv07$rnAqm^%ugT+r?Kk61y8g3Lj+~n4d8+y z>@|$MKqDhKCwNyZ0NFWtKeyQA@4^CHoD9rRdnfa9?gHC!iqizHla*^N#JH{8#&E&+ z+&mD$e>^%c!O4ca=fJv|`1E07n=SYnAPRT$>%s-!^Us9{_6r(=?4CSPNCvF)iJ&VA z-&@ETg}*__5{1t#Y=gqj6t+X*pA>dP;p>Pvq3|b&pvr$1u|kpe7qvy*OLPQ<&J~bxdc#VztcLFtN?+nV&!uPGi-B3!Y~6hX~5D8^8ra z*lQShfksAfPVlZ+0J3xPer~bJ--QLZI2o9s_D<&I+y%Dd6sHMXCo9)lh;duFjp2gt zxp^Rh|9Es@f|Ct-&w+I_@#(|FHe2vDKosug*M$qd=bsA^>=!f!**$rpkPKMo6G2xL zzPFGw3V(x;B?_Ng*an54DQt(rKPl{p!q*XTLg7ykL6!e3Vud2_FKUazUngn}=D!hD F0{}PVu|)s? diff --git a/examples/zips/events.zip b/examples/zips/events.zip index 202937f18be3fbbc549baa156a356121876a667d..da64ad29e4a9929ad9fc015a72518dc7bcf235c6 100644 GIT binary patch delta 156 zcmeC@>*wPQ@MdP=VgLbeg;x`K)!5Im_oZE6@0(~P#S9V&*9VILMK|{PGlGOB-)A&| ziA|Pb+65N7&ZG+y+sw_}!UPta#A?C})Hu0^O$N+=!D@@bcV}}#;jd=12J>ICsR00J Cq%?d0 delta 156 zcmeC@>*wPQ@MdP=VgLb|d5vFs}6f;O9)(I>E6y3PYfe|D$`6Z(( zOl-0#({r$xJTqL~<_zXMX0YH*HVc@-%@XW;AiA$}_`w7x>u~-9E7avOg^6v>n8WV_7u?U!1`#|V;0qI+EF<^^ zteacN4koraKqv*`^6jEFaKT@qLQG(l{1ONwlO(o5jFgtLVg?4zJ zQo$(vIB8V*3({^V@)j~NDEw_Q&M16oSyvQ(ldJ~{|BY-Q3O`;h3Wa}LE*ga&A@762 RKPK;m!Z%WY=; zSU0zj9ZYO3PH0#Nub zrGioTanh*r7o^=#gTr>(lLf!|3 Re@xyBg>R$)(ciD21^`(5)s+AM diff --git a/examples/zips/functions.zip b/examples/zips/functions.zip index 94c2d169876ddf60b4a5d6b32a09e1965ec6f789..c01f0145a5372933b684fd8b76e7cd5ea2f64e51 100644 GIT binary patch delta 193 zcmbO%Jz1JJz?+$civa|@6<$r`)nq@%-j{ZPy>Fte6f;O9$^a|^6x}${j1?p_`4p=u zOl&h7n-DWtP@2;SE*QcYzz7yx&Sef0ocxq)FIa3Tw>dM=w8{6mWx)J@+;%AZI38yd S{$U;m6uv62E0~|ls|El82tp44 delta 193 zcmbO%Jz1JJz?+$civa{=<~^FotI571vL$VGWXnWbDQ1vJlmS=-D7tZ?87oL=@+nqR znAm1EHX&xPpfsluTrh+)fDtUXoXZ?0IQc2pUa;6wZgXa!X_N1B%Yga+xb0B*aXii_ S{KGsBD1233S1>=9R}BEeAx6{y diff --git a/examples/zips/fusionapps.zip b/examples/zips/fusionapps.zip index 8843181837a605813065edcaae770964798be188..0c617e2f91dfa93017b4980364817cee34ab4d18 100644 GIT binary patch delta 1003 zcmcZ`e>a{tz?+$civa|@6<$r`)nY%#-j{ZPy>IeHRuN8wM6@fCgcLJK?U7Wl5K#SQ z1IFi!AhF3(%)#jDCQoE;hAEt^$fv#8jYS@!c)z6C4>6FK+6k5O^sGOhS*;%HxzxT y+R+$l9%(nDs4-BLp1erM6hqxl9n>&r*Tpo8MGw`im3na)=4k47gT=P%s{sJ%sBzx_ delta 1003 zcmcZ`e>a{tz?+$civa{=<~^FotHr(|vL$U*WXt4@tRkEUiD*|O2`Off+9Ro8A)xxr z28_=cL1L4on1j*PO`gcy3{yB+kxzTG8;d+d@qS6O$@5rwFf^QFje}{}Y|Lg2QC!IG zjiK-Xdm&t51cx>g*a>Z1{ul~>a#g_6t#c}P7>P(5fbyo&}$@K3RAXuoj4!FFZ(5(Fchjv zAws81>JmiZK{4~mXLN9 zfOvJ9k_E`r$rqJmz|Q}m6b$8yP5z+41{OK!O*N;Q%&)cn+#gdw(8(-B3VfR-1Ani{Qm46(mjZYcUv ywWBfAJkoAPQDdMgJ$aFiDTcbAI;dgLu8V0Fiyo?3EA`?q%+b{E28(UiR|5dUzlpN| diff --git a/examples/zips/generative_ai.zip b/examples/zips/generative_ai.zip index 9df9b2a7e80a78db68b166daee2bc6a46bbd2b06..efe8a98e9fb174772c1862a0f0e16a562bd55824 100644 GIT binary patch delta 303 zcmZ3fx>A)lz?+$civa|@6<$r`)nz}&-j{ZPy>FtU6f;O9&H^j~6x}%Y93x0*avqZl zOl8Lg1>8~iEP~D`{7gX?6#jWZRP)S* KJi+qKLTUi^<7<}y delta 303 zcmZ3fx>A)lz?+$civa{=<~^FotINJ3vL$VGWXnWHDQ1vJoCR0}D7ta(IYyAsOs^n<%UCSog3nlHK?IxGOyPq2*{-vIwa?@>g9~2c4uPoD<%QcbIfwTxSYZsG zHB8~;d3*=KVoChg%s{tHUcfH{=I`fsL*c6n1flR}3%H~3Sp=O?_?dz(DE#w+sOFgq Kd4lDeh139Tg>yIn diff --git a/examples/zips/goldengate.zip b/examples/zips/goldengate.zip index 3a6ab262155e8bb2977f2953a6791d4bd337497c..9cf6dd2a80f32a66a25cb4bc8941dbb900cf7905 100644 GIT binary patch delta 644 zcmX?MdBT!6z?+$civa|@6<$r`)nY%#-j{ZPy>H?|5l*=HBmyMfmf-IklY z2wPLFepuCWEY?OS5knBlYtrJ0U(}ykY^8AcLT2}x-B<( z5w^(iy@0rgUC~7h3%2lf!!iwJ6mQO&>g(23=9TfxA4n|PM#ye z1J}J?L6B;8QVGLphHYq}K7EQq_ArQI>i$&vO$G3TC`^yKf-Mi}b6Wgz}r HB%=lZ&=2X! diff --git a/examples/zips/health_checks.zip b/examples/zips/health_checks.zip index b016600e9c5550bf85d7c459bfe007fa33e182c5..1d2f9ed0e14db8c69473d5acc5b6822f3ee26164 100644 GIT binary patch delta 728 zcmez6^2>!cz?+$civa|@6<$r`)nz}&-j{ZPy>FtU6f;O9&IT^B5F)bA2P^_qw^@*} znGvLF@^mIAG-Z?jGDX7G#WJ5~0;|(!GlL7}u!X@i8%?g4<>lgJV1`)^v1+n52f~bQ zjwMWjK)WJrzMTkJ3UsdkBLjo#WJUq0$pvx(FwH;%CYNyU2U}*wV}!cz?+$civa{=<~^FotINJ3vL$VGWXnWHDQ1vJoDE!LAw*=K4_E}KZnGd` zGb2dV7%ge>dzznk-V%21A4ul!q z97~u4fp$gMd^-`c6zE<7Mg|7e$&3P0lMCboV48sjOfKQx54OyV#|qt1Q+PaK_D_yw zmfrlIXEMZLW;_~`_sR3ai~$9}LMc9wbywb>xGw;0F-p2=$!1W`=^yCq&Y2Cn6h@Hdzi4|E5rizC!^iSsanHP4i?28GOILm9Ej z_3~_Bv2RjdP%#-WKS??YLyf(x^yHt?rYPzHWYSUiH)UL~=nFtmvr!gRkCmJ!hMuKz w9w>VF<-;-5bjYKs`GiGHzM}NxHU*e}A%1(TkcDAZzG4`Pea{skYC@FM0Hy*7VgLXD diff --git a/examples/zips/id6.zip b/examples/zips/id6.zip index 61e69f5a81307b79ab3c8747e626dd0137c1f9d2..1fbca2b67bf35afa24584576550479c6e9d4cdd5 100644 GIT binary patch delta 141 zcmaFO{+gXPz?+$civa|@6<$r`RaQC2-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuN* z4m(I45N~V`WMl?voqU_o5GFQRm}wta>TB4rUoJU!B$jA)TI{7xEAxvztFw;J;*cB#2W}uqM9LzFczB;oN3cs1z9?U<=tOfvN CeJno! diff --git a/examples/zips/identity.zip b/examples/zips/identity.zip index f9f2d9e859f3e0297db05196dd015717b6bbffc3..a402b381b73d4b7aba558d1a0700466647cb539b 100644 GIT binary patch delta 1001 zcmdm6zqg(@z?+$civa|@6<$r`)nGrz-j{ZPy>GI-q7*YoC{iCR1Qg!bZ^{Z1ntYtq z5GJrSTKd%4<PuEzRDO$X2#We&w&5uJV!J>T{xdt& OP;s~S1MuwV+iA53uaPWGo@v4tF#FtN=KIV_mKf->CxFu}=1+_%AE0Xz;cvCY$Y z@*xU2`4QGQ@&`bynId2eS9wmL1|sMy1b5`-W+5kt_7fsTaFvXrwh)z$VrDSG$#r78 z!Is;I+rh*(H;QvX6!uBL6>dH)!2>b!mXrZprJ(eBh~Qyaggt*`??D9bDp-S6B8B8+ z8$~C$?pDP=%wWq~RNdi%msB$$mfNYrgJ|;O_Dv2UuN- z4Le935N})_%g7AWI+>lx5hga-pXnf2OqkgnCbl_|xrzxac#qYQ8K`mce>NE~-;vD= Tg};`~AB8W+9t!4{v8w?9tHU>G delta 178 zcmbQkKZl<;z?+$civa{=<~^FoYpk*&vL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRiu z8+MR7Al|qHe|pow z-*oW0d^5)fsk|SveyBzlAK9&S6kUj?&qW>+}E5!HfY|a5~yTl;mHp0_EPw6_mUaX@-8{VzMb|k0}7MXK@}S zBVr>UXHFa=>*7uaDAm_2&7jJLrEXp!_a!g$lfrCgs5G2xfE4km7XO2^Gqnduo54WI z!-iu(=4Q~mLQTdIC2e9RO)J?me+FTck*)3<<4@540u!6`3)3m+D%$c6ty64S6gbDb zWU(^3uve{8-3=5HEPCO*^+l@bv;GSuT!kws8M?M+meR~GpPKw+>-rtA;GIP&eonev z)DF?rC9J{zk|v0**u+M;w5b=AKWs^+;n%iUiPGSN^PZS5yWp%^s43D5=^kCsEEVUo znzXre1JQZsxb|byjoq^B6XDygNMWu$gl0;xAA#=vC`DkLxlTz)oZlfcUDu)~? zpp2?FcN^KL%xvD7}l!uzxpZR*T?;jP@!g3b3dlq1F?Dgd! zyN+|vw{!dbG_QY!kEUKzMAz@XkML@@72$4oHo|WW7a-g`Y(n^zk#`ZU8d;6-k497=3!tu3_@O+wa-0zO@T$Il} z16wCPMDP6*HiQcvFGu*?V_Yxc3GV0clN_YidT{(k&l>bTGwm=)3Fy delta 2353 zcmZ8g3rtg281Cu4w8*S;uS~!IVSvmbfyFTxNC}UE1uZhQ6|-#a0mHpD8dfk$1Rsmk zz}1`#?|lFJ>s5z% z)gc-R^93yQTaI4H1V0jYizAyn1!dD!+lMZbQD_t5d!w zC>$i9~f z7#SHC2|07)IoS~ZU4UAB?b1x9Y+mXXRdRpIGCwKJb%x3#DMm<%PZAo9#PXKWwErfJ?l6KqfLBupPG(A{|n4~(htq2p{p3nYphPGWpUs< z?~-YCOmV+fqqz|%C0Zh+bJi!BX2AL{lyDWVVr1z0x;bhy-@a@1lO6Bvgaz*^N%eE` zk0o6YU0cQ*94u>v=&H?plna~tLHXs@6c&DYtCgq?PC9SWLd6B&Yo)r92r0v32%4i2 zd{&dUly4*k?;MxEYW;nWB6~;rtT#%UZx3Oa675HzyWc9({iGCH*`-c#t&-VRetBCV zY_Dbq_wB$ApCuMob4Qg|6Hr#}=9{^+`z+Ksus6?NN4~N58Blum@ztc(`mEdH$YRP{ zj#N;_)^l=Gy%lo)EO9%yT?^zT2f{&Zp?tdyvm`%HvVV6(&qa|#kTXDrR^Vs`36rgyT~tg>=D%4 zW?qUbYFCc-et?ugGAk-G4)%h=ThC1(OMCf&PxboNo8Fhi`mE?14OZ>- z(J;S`bJ(|Y`|WhEf2Fsk7pkHwx7Q)O#%)FTqB{rSS4N5uZW}Qp{M_hDglk6EAUrj? z9^uc&UPpLjtQg^qcQF3vP9b`?-OWe%!reCz&K_TZusn|AqwnGP`g?dj-30D;=R_XL z=bnYFlW(H;!ATp!MfaB@eD*%Bm-qnp)AS%0>Gd8Qzsa)}z2EW_AZ&Yx@B8aReBXjc z_&%;jxc}@aoWFAl*I)GCDpapw7B)=deQ%$}^NvriM)74c*bjfqm>z#WXd=iD2fGN0 zr^$pM!_sC#PzI{k5_A$;r6s5*I-w=V)O3SD&=qKpKv0|1C=#?+>J$k&B#jQ3mBSG* aD~F&XXxFqtN3tIup8lnSPHB>!#QYD!?e!c0 diff --git a/examples/zips/integration.zip b/examples/zips/integration.zip index be351d2ce28c17e3ca318167b2d7859b529f5211..1b798461db0f71ed133aeca4926e0c225ba5b284 100644 GIT binary patch delta 155 zcmcb^e}|tpz?+$civa|@6<$r`)n-4(-j{ZPy>Ftu6f;O9#t19|6x}#gml-59`6#mq zOl%X24jka!R~~@&tZ25^S8090RTb~ BGT8tC delta 155 zcmcb^e}|tpz?+$civa{=<~^FotIfV5vL$VGWXnW*DQ1vJj1gD_D7tZ~E;C4I@=<0J znAj#3A4ag4KdU87Y;r&APOz9anGIikO(J2BE%6%LW&urcBcne2&jHD z2jekDkl5slOeW~+CTlWV!xd&TPlYIa&#yYUo|Tg)G=!6Z8DS;ZX}&hQJhW*5*16QTUY`;tPn6A=W4I_`?-$ z=P_jl`|LfxF@}k50tk1u3uHn}{48jWq0mpr4sPOPA$N$vyTUqfK>-mzh+v|qAxv=c zOwk=+tLtTzC!Z1HoZKMBied6fF$M<`@gNQWqV&o4K*TTv9*dR|}( zibxC>R?lQ)V7NRvKtKejLO?h-F*8rEBn_TYKt5nqYK9oot*nJ?1lX}RmEmEySy1H_ z#0US>AdW!xL6o{Z+^Y-Jy&xvO)i4Al$jOSDGGNmjH2uMRLn8=(qh=V2yrz~DihQq@ zCyKn4sq|!FZ8a1%(b^s;YL04$qsZIo#G%OV(}_lrx7JNUk>9TiaTCmq=6bOx@*p={ z)I)WHq&}(}n)O{#?0BW`gTjw6utMQ)F|bFmqtHZpvVoxrikdP*HxxDZ3BQF$rQ{zAs{UAFI8>8C6X@Y7;p$WuYu&}s8Llv${ca zJYn<1FglPu0H$!VHkZuiBkVIEisLzbF%)0m41p=$tj%>CqVOv>#1{}BL#$8a@rNti z&ST09_St)WV+<4B1Q70Q7s!N|_*u{#L!qCL9o)ppLhcZScZGG}f&wCb5Wz%ILzv*? znW8(uR@ciaPd+2YIk`cM6~p9}Viqv{XCK+$C-nE_F_RLTZJ zA*-}A+(dtAT_&g#AkIP#rYo`ttA*tvAtvU_V=6o%k5I_0kPcD!o?mWqx1uPr^}N6o z6pOAkdqZPWx%F6X!?WshDH$nM$Ir3c}*=R6!~5) zPZW78Q|ZaV+G;3jqP0Cx)Ew0gN0GPFi9?a!rxT4LZ>^hzBEMf3;wG3I&GlkYfpVqlMAN1=)IWCKGL6g6drZYXN*83v%p2N*&8 z4GZg&MqViLrpAFN`ayOaHb%9B(*)IyLKBF)U}13yP2S4X5yg(Vrl{e-Zf1cZpJ;~a U&qHPq`(Wm4nfrp(SDC8;0J_HSLI3~& diff --git a/examples/zips/jms_java_downloads.zip b/examples/zips/jms_java_downloads.zip index 9cd64fbd881845d4cb714a5cee99645eaa02c2ae..0d8dd7badd8600705ab3fde34bf4d7e3c1f95aa7 100644 GIT binary patch delta 596 zcmZoOYct~w@MdP=VgLbeg;x`Kjo8nz_oZE6@0)y(O@tF6ksN>|A;k<*dp#d41XRD- zm+=TANNlnQvj@7m$qmf$aD~s9JDH#gZ6^naad2@mFe5Akn>+a)8$!JcyB);fRt^UY zgI{v^!wt6QjDaYe$7Kx{e83e45p?8%=muIfxr65**abek?ieO+=Z%GHmgXyA5(N4w z0vtF{!e(Nj%H%mx(v$BCuwv-u5G;o4ZW8-&)QX|1;Su*kk*^VtMdAMz_e9~RNkG)Y+;~kQ6h+=w XG8@c?$={MpK#`A;Y6SBiNT~q;Qnk!Y delta 596 zcmZoOYct~w@MdP=VgLb|d5HIcQQd0+D;A-O_Dv2UuN* z5j#j75O3_g&BP4UIyswJohZGNw=tW;G;jXGe2o#T`z)&|T#%D34kDPvt^*UCJeU0~ zSYa=R30&+1$8xY(5hvU^lUH-@0gGjE>BH1*UclAG3>MVogB!RxflnS{OB25VOy%UA z{Ow?c&H{QcvCS0%iy#VRg%G*}g!~|a3x(k-CtnkO2-dwz#1N)?@+XlUV6nBLnlQ1= zcSU6&n*WF)Ow<>bfCzd?Xu(xhOF$htR}!vr@&(B=U?b;C>B1FWmU;rwy-P+LCOG+x zOea`jg{&bnFsddS%FBTHr)3?Wd@)XV+)vh(GeuF=BIk<2e=X;X!Vi$QLgBBGcS7L{ zD8Oui*jl7uiz0tf0ad@Qq8*BSuc8eK|Ft5jdUqvM`K3zsDC*gi%~AOA%BcExD_fw* Vi>jc?7phpJ$e&ZO1oOF6)c|Vn6+i$0 delta 826 zcmdnswZV%wz?+$civa{=<~^FotE{pjvL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRiq zBX*EFAl}$}n~52yb#gYdI#GHjZ(}xxY2N&W`5Gfw_gPj`xF9E697HgST?ZyOc`o}~ zu)n)0~X8T(ub+rynw5V87!#F2RCqY0-rp@mL`4!n99jJ z`P;z?odxt@Vw)=j7C{us3L$g{2>C$-7Yf5wPQE7m5UhKbh#^e(#xSy;mXNsb#Ma~t4|60x&g&!bqg~DGW?}Wk^ zP=MJ2v9(CS7DfJ|0;+ypMLQJvUPT)e{%b{4_3lcj@=KNMQPi_3o1^gKl~MKYR<=Nq W7ga%(FI2Hckw2$m3FdRDssR94EGb3+ diff --git a/examples/zips/license_manager.zip b/examples/zips/license_manager.zip index aa9ce22ad69701b16f530386b35021fef1d2eb6a..af95fcccbe39a8e9451019f46af686fe6f5fdc81 100644 GIT binary patch delta 468 zcmcbsaaV&kz?+$civa|@6<$r`)mJ&k-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuM~ z6gx;A5KlaKf*GiDau1_DOla~Y#=~H-8BBg~vA0aq!D8*q7BI2R$Cv{c!Ge;kR&c>6 z*2xgT4{WwD!O14IUQhPo9(!2AO`N`_JRpc z=HpogR=Ax9Zs6wsJkKBsU+~#71HCp`Q9uT)$elj}g@2LX7lrR25QDmJEns4sk1+=@f(0d6t>A)D ztdk*vAJ}YRf|E_ycYzgtWOsy%S#tD)#ZGg?!o~DCkAlU%b2`ApHrsL4Kn&c=?FAE@ z%*V3~tZ+LI+`!HMd7eQOzTmTE26}C>qJRuokvo3|3jZR%FACp5AO?lMPrwa@uO{e$ m!k-}Mjl%yc=#RqB6Us*6{}%E?;b#j+pzxmxL-d=Ar~v@5nXD@S diff --git a/examples/zips/limits.zip b/examples/zips/limits.zip index 6de70db641f64ace32dfac270d165e3e23fc6655..1b5b099dda95e65c2b1ac68e308aba0e4486dd9b 100644 GIT binary patch delta 193 zcmca5d`p-&z?+$civa|@6<$r`RbxNL-j{ZPy>FtG6f;O9Tpug~6y4bC&j=Ele4kMd zCbn6Gsel$8=5OIt0{{b&Kkfhk delta 193 zcmca5d`p-&z?+$civa{=<~^FotH!<}vL$VGWXnV=DQ1vJxIS0}D7vxNpAjT9`97l_ zOl-3VQvowru$@&GF1VZ31EP|R-2^5$*^zxWSmA$m6K0@klLI(q!2D1STNM5l4jUA{ R5T`W?KcCYH%-_PP1^~sXM6&<@ diff --git a/examples/zips/load_balancer.zip b/examples/zips/load_balancer.zip index e9b11526a9b728a39cc4e2b251ff8329bc57aeb3..0c56368cbeac5ac8aee5cc7090d761c9db9db640 100644 GIT binary patch delta 283 zcmX?Na>Rr;z?+$civa|@6<$r`)nz}&-j{ZPy>FtU6f;O9&H^DK!YKk&#{pKk%M~mR zRK1yvQJ4j!cCrks8C)=uHG~l?xPi?YCOG*M+di<^W_DAorcUPJu!kw$9K^xN4^|x~ zZp{p|XYzdsvB?RNY+$k7;%-ne88Ba2A{d1~L&61x|4+gb!;DNxXB0K(Bz?hrIVm*& DT@YS5 delta 283 zcmX?Na>Rr;z?+$civa{=<~^FotINJ3vL$VGWXnWHDQ1vJoCQKegi{2ljsvW6mn&Et zsCqLSqc96d?PM8NGq_+RYX~D)a08n)OmOliwtZl+&FrRFO`XicVGmQhIf#RkAFMh~ z+?p9^&*b|OVv`dj*}!7E#oeG{GGM;4L@)|}hJ*_W|DS{>h8dZX&M0cmN&15Ma#Csl D2pDAO diff --git a/examples/zips/log_analytics.zip b/examples/zips/log_analytics.zip index 217d25a014f6bfaed8cf76eb15b5e9e53f4dda26..325d27c85f72f0c3f612199c3109fdbd31bc8a3d 100644 GIT binary patch delta 1342 zcmbO*g>k|ZM&1B#W)?065b#!bHIY}B{TzE=+6DH$iH=gtAdxsrgow!GIw3Z&=x%qg zC{XQYPDVy1kl18iW)qm;Vh?7Bm^Z5p7VVQ)v--l6ZvM~e&j{8Z$Zmm6?OJwMxZ0oW zuOQ|=<1&K_DszWI45;R@#b&@A9v8S;b>8>PV9O*0tzm+bqXiFu#pHw_Hi3N)_v_?# zp?H|m&2NRQAr8OP439FfqXmJH5%G{Kit|1b1A`zR1B3qLiK0?K zwfvJMRr%ls>8bvN7!=5^F?pQ^H&18?hEZVK+cXg2cTr;zL{pizBiJM~=ik;2hg)E& z69kEuK3!*oT5zhG{8iTzNeJxXt*moe%~=^3K-gijqKU!e1$q)N!zMb4Y`&~#3keQk zlW3Uu=28*&|FuMBaC^Ah_B9a~Bq{kEUB&gTid`Lfni@ zZ-WD-*{Y7YC~CGi!u)~ouY?n(eXUL*DEfXoVcMVXoQ>h8Kh7Q~`qEr5!|9R>%$<-p zP_&btoaCyFVb*$An4J)H%5MG`YNoiQqSz*|SO5S3 delta 1342 zcmbO*g>k|ZM&1B#W)?065RjSoXdh8IEZQfpX7zb&on!Inu1TEheoTT+{_(7oVgX+<<7wg%AV&OG8|RW=1_nVs1_u4f6Gf$f zYWXKis`9}N(o_8jF({B-WAZu;Zl2H(45Prdw`m~4@1n*ch^8`aN3cm~&cCf44!6Kk zCkPTReY(yFwcu1W`Kzuck`UO%TUqC{nzJ%6fUv`4MH7R`3-lylhD~%7*?d{g77`r7 zCebkQ&7~$X5C=^$vqzYSh`jG+L2$JJ<}NH?A5FKm28G$=i4HPg{ugU^C|_)HgB>`9 zPmZ+-#Spt<skLFgqdYl->L>)J$IeHHYsM1P=p>>2q?UNcA&n=peFX0zF2C_Kj&30J7cuEPOV7|U+}7o5Vc3bAI7pb=c~tKc?9 zu*!A978piyiFm^m#)w>nC^Qi>g$ovl&4CE=OF&$S5NBvP0p|S8~8GgHhQHMNOu1BntnDvNMJr kPZgM3AnsqK;*Ft3Tou*sa#c?ZHILBLIH^I@^r@)<0AcLnaR2}S delta 665 zcmdnuyTz9`z?+$civa{=<~^FotIob6vL$VGWXt4@Y*Nf1p$I*&5KwqyuPhTtX!2Sn zZFFUm|1cTC)NM9lHem)U%x1I4PU55j#FqYo{E;xl>6=KaEK_j@}SHW$J zV3q5HEijDa67hyBj1jpCQD`D&3KuL8n*$N#mw>nu$%B(qBy8adS4jMUDD0M1n*4!{ zW%5}mE)45_OIgD;*h+gt9NR4m@d2{Q_hk_Z73DTTOui;>$_xz5$qGs`U=Qgk*g*MW zlO0spz+&ABmMChTDcEDEaaZ(3QL{}k9ffbNWQW3^ujGJX2BWeYikeL2NEH4PWoHaM ko+>c6K-|Ad#T!G7xGJjM<*J?-Y967faZ-b*=~Gh!0Nt+gtN;K2 diff --git a/examples/zips/management_agent.zip b/examples/zips/management_agent.zip index 8f487540ff17cb5a5e9cce1eca244bbe1db87fcd..964cc3b86f4115362f2a8558edbf2cf3e1743b8c 100644 GIT binary patch delta 286 zcmZ3cuuOqBz?+$civa|@6<$r`HBdRn-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuNV z06Rz>5Kr9kh#9DJ@?1tsn9%0CjKPdxL1SirxL_x95k&AGiycgGvNP*mutH`wXPDS# zU$!h(u;4CkxGj?fc_7w&TOni^AW>=Yzu6;SWUN M&*ul5H%UMZ0B~|#y8r+H delta 286 zcmZ3cuuOqBz?+$civa{=<~^FoYoM|svL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRk! z0Ctc%AfCA65i?Nd+V&M>jf zzHC{nV8LD7a9bt|@<6Ql#$(3}v~{uqpA1+{7;hX3{~E753g4bD7KOi$&j*FC!ykyk MpU)3AZ<2r-0O0UrXaE2J diff --git a/examples/zips/management_dashboard.zip b/examples/zips/management_dashboard.zip index 9e48347678b6b4755e01b543e9edd8398dc64b2a..4effedfc323832760737274f6545962a6db4db24 100644 GIT binary patch delta 252 zcmcbpeNme?z?+$civa|@6<$r`HBmXo-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuOI zH9JTh5N}-mnvof(b@Egudzjef+f06JU_l*DxWdhOoT}_#!D#}vaFw?N!XesCgq&c4 xlWT*T3S_As%{x0(Fdz=ArQaD|)mI91ufg3|IdZRw-tXP>c~+2q?U9Y8?|uXtEfy z2~2ErAhSOsSa30mB}{PgW0pOFK!p)tbD@OdVeh=cr!A| WF~fa1S(w`uMOzhjFqnUVTMYmtV^rS& delta 276 zcmew+{!N@Wz?+$civa{=<~^FotIfV5vL$VGWXt3StWwM%p%^2u5KwsI)H)`R&}1=Y z6PVcMKxThNu;5}AOPJu~$1HmUfeItQ=0XX@$s1WDCa>e>;Ry}lWMD?KX7XQFSD5zA zo@}8EkOz=cXP>r`A;|3vM{$Rinc25U@-pzw;BLb_F9<$ diff --git a/examples/zips/media_services.zip b/examples/zips/media_services.zip index 97e508fd7266606046dd3a7275124d56a8e286d4..e39b021e4527f8b540c7e133fc7856869a063933 100644 GIT binary patch delta 572 zcmZp2Z*u1i@MdP=VgLbeg;x`K^;FKW_oZC`;?fFk21b^b%nS@H^*~vWIuRhv0ah1p z!wymh#2XiVVqykrojje{117fl8M8Y?(16VeE?CK?#SB)tjME1$_>*%NBUo@7cK}?F zmq!;OXv=F37p&$rVG;yd6ruID&F&o|1H)Ms1_txVilWk!?{o7{?o|-t;$&ckx@t3< z00+bcfZz=VY)M-U#HAJ742&!VdK#bs|8T1FSCI zh8?61h&L|!#Ka8LI(a&?2TW}9GiG;)paGi`T(FW&iy5qP8K)0i@F(XkMzG*E?f|$T zFOM!n(3aO6E?CWL!XyZ^C_?LPo83D`28OdN3=HOz6-A{d-{*~4{*i=BoTsVeCP6P#Qm z`5UaTK*|{=wt1ISG1T|6HXsL0c9fR^E9#T=LgD|C4MX7<$pxVBpU6d_@Dt?YQ1}nz sT~YY%3ehP1BMMn4`~XE%_1hIu-J`7Ji=uv#QV0s4Lpc!4k5N_w0FEikKL7v# diff --git a/examples/zips/metering_computation.zip b/examples/zips/metering_computation.zip index 1f7639cb4b0ad83a5613ec201bd7eefd9db433da..1125d0cbc3d3c478ab892aa87754dd56097d5c8c 100644 GIT binary patch delta 1407 zcmexn@yvoZz?+$civa|@6<$r`HBmXo-j{X(h)XND85mh!GBYr+)B|Nv)uno~L)A^T z=9gjyX}uBz76J-y)@7W_2ojromMIWfogh#w;`p_#aDk13ZeT(FWW0^*J< z+)gmT$+A2L!3rPpM1#eEeuepAasqD>Ox@;_ym}DLzxb?>74m^R5zv{FKMUvyclOEa z*iP|^7-|hRo@O`nH@{VhjnJJ%A9tQuB)I0QXd-1P* zKdShQ4?h-Z)Hb}twnVpKeVEbIJM~G1Et#{NM8g{nGM$w=YQW*9Jj4E?*tI(z`+PPw z?7y{?DQRwM)KXO)L6&t(oEY~ogk)!KITdg-jANX?5Mx%5M2l7dQTz)sgK&sH8*o}=8JR};&!wa-xh&A)@w zei~l;{_^nKubB<2Hs5_WSFzUe<}J@B<;Sm;GrH8j>1q=#T*UM8)>1E}M@8>)N?(3m zYH*&z>rzfl7ytJkkCr$(p6`5kYUv%})kn9^e))F&{dviv6LVEuXLnt>w&85S`*Me6 zd+#?ce0{s5?#*opruery-|v3dvZ!X-(!6# z^LBTn>)6Juer-K3k^h_CqG_y0YwrB$l;cV}y=qJPZRHkM|ATA$exKQ`$XcpgeSuZ* zN__MF8EsE|XXm~$^?AXyX5pdVUOZWQ#4Nv^)H?cIxiqG#>xI#$`V=?mD|6M|cH2Z% ziTXa6__JPCQaO6U%cBc5~SMP_CSuFD(PkQ`bZzp?tB)>m=B~Vu4}_C~7W? z#bc-m5l=%=b4T0*Lyen+KZe+L32zKB70Cb;v!+RAVyID+DnLrWRG|hlX%6Fr!&Gc`=(KT+eGZcV@62Q!ZP$U?o=s#2Ht( zonV5KWqA&Q6+YyN28#i`3iHC`1l}Z=y3Hqf^&pym@mV1&vIVP`T zQ(2-IsUszQh^LJ+#$}TlY~q^ZY~S3*MdIH}}%_ zpVxyUGUU`aV%&n4I?mwvQKc(%u%0(fc!oOXl;1`dW-PpyWb$#(OOa{kx3uV9Z?adN zanOFMx?oGz=0GFO2b_wBwoZ^>JkRhnEJM{?qjz)btyHb+idQ)}Wz<60u1MLw4`4a7 z;E9nAlW14R!E?8FpPZv6bw1#=MCqzllV%y$?ML)}bh}O{`fQ`2Af|c!Sf6#@IzzE~ zuWJuOR{U|t+0&Aj5%1-tNR-6={|zB9aJX61DXFI!}Hf7c56 zcR?me&5rXvN-$3mbQ3k)6+BP9O+aGhar@8d>HmIS`mTTK{E_c}?cey$Idfs5obxPM z*Demvw33F%4NpD$nCCb;#_N=IY`rA$>C6`WWghkI5%-_-Z@+$=(JSrjtGUj+igf@l`Zi?{mvD z6IX4gGUNS!zs{B|$!Q8(n6I%@f7!Nm(_dV>cBXx6>7mV+^@2{fsegI*%k0pWkY8uC zb0=M3yzuJNr{ndHmZwLC@ds;Wl!vl zN#01bnU=?Qa&^a+1=>O@_OewQZatAbYu%SD)e_!oe^~ZCcUga^_(<4AGi_P>zAKuN zl8aWK_`h*&xMBa+QZsuQgQN>N7OXG^J98FX!+glMajjwOVL-#wyj@DroY=8j*{6YhYLaS6mnMCA>;zjD$K$$kPMq7>IBNAljEgjz^AtoXjfMQmgWG03h zL8$^1HD|=7C-0NeMOKHN?IomLP_)!ZOEX0YO->Y7n7mt>4_PPJ*RO%nyJ6CtlRpS? Tvay0ow8;)K3T(-upz;?0F-usl diff --git a/examples/zips/monitoring.zip b/examples/zips/monitoring.zip index 6704209771a7034d61cecc9f7440c73bc93df05e..731bd488fa6360697894ebddebce9a6dbe8dbd1c 100644 GIT binary patch delta 357 zcmX@BaaMyjz?+$civa|@6<$r`)nY%#-j{ZPy>FtO6f;O9+6X2xS)UCew9y7E1XQ^3 zOBoYL)#O}eW0=_H<;?z!V8Nd(7BIod7OZ=~V&7Q}(aoFe!)66jx4D<;FUSTKixKp~5IZ60h#{se!*`#xSwX%bEQd!Gb?oEMS6@Em-$}#lEu|qMJ9_hs_G6ZgVf&0amcW03KTm zg&TRi;R=~~XEB2nE)cL_20CT3y|4_J|4YCD$`_lwUyuzf79;3|A$CI05kpK{$PLA; c$wKxRYQ6}0ps0xx_Qp_iS~wCcrY@oe0A0+2>i_@% diff --git a/examples/zips/mysql.zip b/examples/zips/mysql.zip index b67f4defe39738898ff447774649217598bc37ff..069088b08e2940ec9e83ef3e5172d4b4e974b22f 100644 GIT binary patch delta 478 zcmeCP>9gSt@MdP=VgLbeg;x`KRoTz6_oZE6@0+}VRf-uT6s7|f0t#>J{J;Vdn(Qc` zF!?Pj2Ty1SCj&E@`pIWmO<)=}bFj^a=vc+22N%506~qWO#)QWhCOA2dXE#_(hu0D; zhU9|DoxBb(b(=5n<}pFtpo^h!k^sW$vjU0`t3QgEV<_|ywS${DQS>4+*u+#xV~}Si zua}Vl^LI&FLHS~n`=!~yVudo&lMSU5P}CJmIic{cOWC0CO{E<%%$XtWj-rN9#t%bH dp^P<(nsYKRdl2q1l66HFn` delta 478 zcmeCP>9gSt@MdP=VgLb|d5Na2C&0~VPK^H^eBmsogX9W}?R(}*R$57}aY6mxQqUc3tu!*UX#vsp3 zUN0j9=I@fUg7U>C_e-;Z#R_GlCmTvBpr|XBazf!>m$E_On@T%km@`A#9YqbJj30)Y dLK$lmHRoht_8{D2B)ftwf2TFb}` zG;i{4wj{Wq3%dssSg@b704~VJ)xiuFoXDF67i8jts`M4ehYKDSD2AA6DO3s<+$!`6 zV&)>zY`CC^*mH==f8u#?!D5Mn5J7XPBDmlNDItjMM`aNfS)e^}KY%(vBp@J-ahP~_J@`7n7E z^(GYcC)5j2_)!{lDEwa<6)5~Enzbl=W36Ts{tc~46n?RG4GLdSrvZh(SqIg;Al-Tt S`OmuUDEt^bA25Hlo*Dqh5$&}A delta 717 zcmcZ@doh+bz?+$civa{=<~^FoYoM|svL$U55SLbPGcdBeWM*JssRzoUs!MbPt6Pm- zod{4p2iUx09_%3VfOxYgV+=DN(2fX@T@WzwqQN9N4$aUIP6lR>GD5~pe!x-!H!qsC zmXR4~-sIbCNpL|Ib`K`7U_WO8T#${cgBdJ1kv9u2$ixR#=_`;A7d$Lb3^CJEs1z=^ zRp=GO%tfNva6u8V=Ma_u#Pi^S#S#Z0g62|1aKQ~yLJ-@J$|5YXmb(v8DXUNjS24aE%1{+MnBe4DD#yScN>;T41>EFbH5oAfu&O_pZ>tC4o2Z4M$ghF& zVe%^KO(^P5s28B{qcrMJ_`ftNQ20|cYf<>dTFof@8(Nhp{9^4I6uzKN0}6k$4yt)U Vy7egXpLN|)_%V7uVE$@7H2_ef{p$b# diff --git a/examples/zips/network_load_balancer.zip b/examples/zips/network_load_balancer.zip index b21921662eead12039fe0c02a89c351632a06d67..bec26ae0c76745d31f48cd1189544e1fcba23138 100644 GIT binary patch delta 278 zcmdmQzTccTz?+$civa|@6<$r`HDy1?-j{ZPy>D_3vlKH(D9sKm1Qg!5I*t(}G?|CV z874M4jOj2~OorJLUF+md=6IO8&F`7z*ue?~xC1a0ws1$o6+YuG;{hv-mvCkV+B*5a vqzssUM8XG!ZzLHA<%@B`eK2{cWH^c{IjLMMs@6)yp{UZ8&II#kN~-|?K6zeq delta 278 zcmdmQzTccTz?+$civa{=<~^FoYs$VNvL$VGWXt3nW+`TnP?{ZB2q?U9bsQr|Xfh9z zGfZr97}H^}m<+Qgy4J~^%<(XFo8L3bv4a%~a0g&0Y~hZED}2UX#sgLuFX7A#v~}`- vNf|Kzh=dOc-$*hL$`|8=`(W}?$#4`^a#FciRIQbYLs6wGoeAd8lvV=(?PO&l diff --git a/examples/zips/networking.zip b/examples/zips/networking.zip index 28461c66f1d0779fb96a5afd67fb42b88be60a60..3073d3856dc5c62ba24cf9ac4868978edaa4d362 100644 GIT binary patch delta 2402 zcmZuxZA_C_6n^2YG_5V#g|)#pkw^;4&u_!HQu@<#tS(S+_%&40g$akd_ zs`ZM9VEjl7i7_$QL=pFq&HYkmX5t_GST!-(Vssh)QIl|qrvHA@yy8oRcD24P$Pj%w`;_)a?s{p?yJnGPt3H#KQ~ z`kd4vR`pG)9i(SFj3gLP&0n$9uz^+VHH;?BZbj&$QqD8LzI3TWB>fWL!>vZrmZggu z;#QV}k!wDhlu`26rjJ=LbF~vD6P9)^#}LO5&2chtUhZ80%goXeedZ5gi7f^BB9eSp z@I7tST(~NZ@qQuPxZoGX+Cg9xR(4 zVC2{lr&^`=Ro<2d!rMFYg%1~L?={ecJ?8PSs(zZqe!`0EiSwMS2?j%Fjwxufnm7#qrW^i-n!n;y_D&gl+R zqkK!3p8OHWL>#MoF~|8{Jc}y06XAnFE8-MpQ}p54ynVY+O|%bY6?J{lUxqjy^ji?# z6oP$=_eVl_uJ<9(DCT{~T&VuZu>**I|8eLi_J4G|2IU`j=t*NZ3vt{GV~?0ll%V{{ z6W{?+LlVIn_Yu7NXT*W(t4_k*ikj}uIhPKAhs69(1GT9B(^I&9{1o<_d2l_#4-A&m zv#57^5PSHm)7ugL)tvL5A>9AP&<=$E>!M?jP0v=MI G&G;WXJ%(Ta delta 2402 zcmZuxTTD|~6uodOq_tH$(Kgs7njwV|(TY|CtPTaCSd|vESjuS0#43syH9jNAt5!+@ ztw&@K937JhMokPhQHSvnN59mW#AJSaR*i|qs1bkE#25E$?z!ERel$6Iuf6u#`>b=r z1M%U3c$H%bFH>;BPyhR~kSZRb? z%!T~Tz+$aCC0ImgW={bnsug{F$j7IY2f&!lZa6$bJ;q#FI^>a3FS zZ&~j^yY9tvqjk}CoAwS={4e9UH!6-xr|qsT9!q|-{lL`Dx4nhCNw>oriFTsjE;;0` zeJpq?QeuhjqY}nCxBSBmS3Jj=NWVr$j7}|SC>_Uobe3*~QiYQ_o9L^P!+V{Tka)UM zdQB!*DFg%VWsKsHTMsfnuVxhCWu9ypJy0o?Kde*(^4*$@Xr0s*1>PJ+>Gyh|&&zf2 z=%Xhuu3Ex?C#q5bcx!_c)K>=~c)CVX`L(7Hg4WH&th{&gMG#cBT`FhNpYM>$vv%&5 zjT6>MKZf*=IJ`R2(W4eE678iF_l_ImhrHA`^o`7V9)Q(v$K7@_!W%na z-{Sp|4m{VV4$vs(y$77A{^5abh=1!r=qL8Sf3OVYA2jJmO(+d<{1w6;F&@fC`NN06 z1EPimf;Da=c=u0;9o3f{hPxFt-5zl+=mZam`Rkn(sD9xQTz}~Z_MEBfXN2$UDxzmm z@3$`O;Vr+FBmCmz>EFdJqq2NT=u#S+K}7M#aw3=^DugLM~JY$}^MnsJjqu-UPmS7A?i-@8#4nPJUKx?Z1Q|T zHn1IX0`^cb88E+Izzv1}T)+l}?<(ksVa5tUR}?k;LOvL3YK1IO)Z7qqz))i)?1Z9b Mp0FpF|4LX50BQ4-ga7~l delta 444 zcmbQBF+qbjz?+$civa{=<~^FotE#dhvL$Ub5SLbPGcdBeWM*JssRzoUstYq@hpL;{ zC&diXx!M9O0uz?+$civa|@6<$r`)nz}&-j{ZPy>FtU6f;O9&I~L96x}#GfDt4#`5mJ* zOl-0N(;l$cdnPM1os)f;Jz>f=&t={T(HqI?3Kv|;`j-i;c_{}%@FRyHM39x+5w6mg zTMMGSipL)=c!8&%Q4r{!2(as+gzRKNL50Z^_*lWp5dN6Flg|#W^B*4*#13Xbh^v9V z+YGm(P{;$W@_^7ph{Yiy*33XvlNXB1fStTi#07;fF6s&8i*dq(b8?fY2a2jUqTwj~ vRIy+b{w*}Vzqmh&`~mS;C?DAtdkIGrRf{BiQ1}9psII7z3z?+$civa{=<~^FotINJ3vL$VGWXnWHDQ1vJoEcaID7tZW03%3f@;gRr znAl_krafS>_e@r3Iw$)wd%~1$p3A%wqBoM&6)w1x^)C}x^HL6k;71NYh#)JsBV45~ zw-!Wu6^}n$@B&Xiqae^d5n$It3E9blf(nx-@UeoGA^b6UC!ZZ$=RZCsh#ky=5LW|z zw;66np^yh${99;ze{p{l`2*syP(HFP_7aXLsuoH3pzsAGQC(3b83vZWEU5+n5-+*& diff --git a/examples/zips/object_storage.zip b/examples/zips/object_storage.zip index a21bfc264511e460b5ee023aa52b70c0555382dc..1c1ed5576ae665dfa05265465052cdffcfb8d79c 100644 GIT binary patch delta 730 zcmX>dayo=Jz?+$civa|@6<$r`)nh-$-j{ZPy>D{8fD|)GDBc__1Qgyl_ckL)XmT}^ z8@jT|PnmpS>NZ<4mokGDZe$C92~NJp@60Izw1xv@(c}w!37&Q zJ0XHR+;9hM_TmnM2rlNagsXhavjrkJi_ZooIQcH$ey|JX^IO2h?(utq#k2(cz+ydUo5m$&{j~K!|r^Mc}fK~32Mp*q$rZ{Mdayo=Jz?+$civa{=<~^FotH-_~vL$U*WXt4w0V!sXP`o)<2q?U9?rlbp(Bx_+ zH*{r_pECKv)NQt8E@cKQ+{hLH6P$dH-!J~>}m25g#%k}H%i#tDzF$+MM0P*e#jN2Boj zl;cqNd@4RD{2CPx6#g?6m@N=neO292VdK#bs|8T1FSAo zn;oPMh&Q&g@G%3mPVVE=g^6uG#OKcl78DUMf(cIc71#|H;}$ex25Ow_ASeUo#|v7b S@OKGXqwvLr9Kif2AvFL}N;p{n diff --git a/examples/zips/onesubscription.zip b/examples/zips/onesubscription.zip index 8019b75986eb935c0c471dc23a03bb38b90cbbc7..6145211c7aac1f1264fa5206de793964b53027a8 100644 GIT binary patch delta 775 zcmexw^WTOyz?+$civa|@6<$r`)mJ&k-j{X(h)XND85mh!GBYr+)B|Nv)g=V7L)A^z zVU=PAX}uZ&76J-yHerls1c^rOk@v+E8NXq4N+*xX#p3k;0%EXp69ZK2~HN~J^*&(HEvf76YY5*wtze{iHDyF ztZ)gRH-b*3lv4u$u&Da- delta 775 zcmexw^WTOyz?+$civa{=<~^FotFN*mvL$Ub5SLbPGcdBeWM*JssRzoUs!IrDhpL;b z!z#rL(t0%lECdwZY{D4N2ojq-jmZ;T-DGCw0Jy>^=6s04Gc1u93O!j9;0iae+Cdb4 zWb?sLn8+RsSGb$K8lupW(*iD7!5IP(JkMnd6Pzr}eE{snYuv6FCff5rYyo*@5)VHU zSm6>rZw!UP{6R1SH|Ow2Lu@%E;EtitRL~EuuuHI%Q4knB5#V5l61I~CnRO=H2uosU ztrU)eYrQ2L3$epW)Rr0Oy2*l)Vv{F`vVk2qQ#2kbCIjY6iKStvStJ&YqDERg4nxgs z@pKe5DiV1ZYPLv3p{OyCOhn;tmUKhmOG|lUn9(5>jH2eR6wFM7pDLvzQPg~qPQWmy bOePdX&0Com3^m!ZsP20wn*ml6DW?ViCo>Hu diff --git a/examples/zips/opa.zip b/examples/zips/opa.zip index 30b542638f3ce0ab881b88f4563144bf8a1dee22..9cea904abc4f1058bfd40a8d244568c7e9649234 100644 GIT binary patch delta 178 zcmZ3^yPTIdz?+$civa|@6<$r`RaQC2-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuN* z7CT5C5N~WXVqykroxF=l2PU@pEt5YZSkRuu5GFXeoMjJK%#78L8K`lx0-Fq&-^pr$ S!hg(ag~GRIvj_7V+0+1SpEXJV delta 178 zcmZ3^yPTIdz?+$civa{=<~^FotE{pjvL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRiq zEq0JPAl}$&#Ka8LI(Zk94oqzGTPA--u%JDQAxv;`Im;ffm>H`fGf?AX1vVKlzmwGh Th5wk<3WaaaW)J2!vZ(<8nq@f~ diff --git a/examples/zips/opensearch.zip b/examples/zips/opensearch.zip index 9cdf0172cd346fc35cdff3bacf327b45b207c53a..e068d9f1a850337fa6e3a8bb7a19a58ac9bf0750 100644 GIT binary patch delta 197 zcmdlgvQ>mPz?+$civa|@6<$r`)nY%#-j{ZPy>FtO6f;O9+7>P{A0o2H1uOzox0#)> zmj$G1@^n^XxZp+BKt`~jD!TR!L9mzxhXpfG=j00mPz?+$civa{=<~^FotHr(|vL$VGWXnW5DQ1vJv@Kj@K15`X3s?lGZZkV$ zFAGT3B8ak_!|{9I}P-6}?t diff --git a/examples/zips/operator_access_control.zip b/examples/zips/operator_access_control.zip index beb10c6867d4641d6a5770507c8167168902a37a..a9ae3ee83b242163de825fbf66ab9eac12f78d8a 100644 GIT binary patch delta 504 zcmbPWHo=THz?+$civa|@6<$r`HD^D^-j{ZPy>Fto6f;O9!yP6v*_Ih1bU6|%1XQ@$ zm~ky5NZI7aOu^{tCPy(B!WCX(e!&7(xR=8LF37?e57C{*<%gmB23I;teW7r;fxSXsAU3y%xPmlKP7s#?YkVyd3g&+hgYc6?(^2I`6H(;z#OhJ_{NjEn s>g&a0P~`uLm!il|kqASP=aI}r;ZK(gMp4fr6@nt)B$W#0zmie|0E*DES^xk5 delta 504 zcmbPWHo=THz?+$civa{=<~^FoYtFtRvL$VGWXnWvDQ1vJhC57TvMn=2=yD`j2&izg zG2>cBkg~~-nS#;PO^#wNge$zn{DK9na4&}gT#$t`9-=#q%MU~M4X$*!LN{)Eh{6sY z4-AE0c%tD7!+0Z^1%d8~NDir1Tm|%$6e9zJ{=|nWldnq(aB(s)gM0_Xlm7`E0XyfY zpc{sP`aCZfpaiPfX<`NjQE s)Yps0pveCfFGZ1`A`yln&m)KWt;)t$r5^FGAT@-69MBOe9J9KrEWjLeY3Tru6Kon~5njk4e za_i&<-T)*Sh?~Cf=E04~to!afHNxQTZiN+1eDTp;NVl6oNle9EN|uF%O<5901(&p-?lUwEd#6$X1XKuo;m z8-c7)5SY3nk`jG-xLFt&g83O3(kC~1Doxf4mYqD`58@k;%dh#VLhSh$6ppMN96pu7 z)o^=$2Ny#W7DjktD7+U@09P0q$qR8%YK##m4NYcDmI0f#GsYf;FBKaI<|oEMtpAd(l{(eFYihONiGKxG?QX2|? zRZ<9wdWGZ^6!~Sz9VqevDLyFj`%+Nd=aCwKBEKuO07bt~S}2PA;j}6getfz$iuyh2 zRw(ik8Qv)T)(jUE{_6|}6#c%Lktp&fGMiB3bF%DEm zEXWuH76Y2JIg3$`87w%P#SvZMB-UWKx+vCIh`L=IcIfIR%Wy`)71naDfGE`9H9=B{ z@Z_T%nVz9>m?no`D!9zVJ+eD-8B(fS7pA zHv(CqATV`DBqjRvaI-Kl1oJa6q)%@2RGO?8EIWC=AH+8xmtXT!h1l~iC>&WkID9ID ztKs(i4laf$ER68PP1;#3iE02c$?(mWww;QBxS7fuiPjyb}sPJ|PZ8{r!X*6#3f3WE6R(q&5`( zs-zGU^$N);DDumaJ5b~UQhZS4_obk^&m%PeMSfRm0g8T~v``fJ!)aA0{P=Wh6!m-3 ztx)78GQ3gvtr;#T{MQ){DEfUfBT?i}WHzD5=VaNT$e+oA_zxDxR@u%d^7FI9Q1pxE zK;jq{=QDHaQRJ<1<5BeQ&MiWb_s>g1k-whTjUwNYpNb;SUC@alzpWq~MP9$K4$R+B Gs0IKRa&dFte6f;O9$^a|^6x}$niUlMznUB>7 zCbrp~HINZ3IGfEJCOG*f+di<^EOv7xka49I+zgB?FPRw_Sn7cm1$Z+u$uWxnSsWls bCx2$QBSu*;hXXOnwsN>K11+8WmqQHz$ml$$ delta 225 zcmZ21v{;BYz?+$civa{=<~^FotI571vL$VGWXnWbDQ1vJlmS=-D7tZC6$?mcG9RlE zOl-3|Yak<7a5kGcOmOl|wtZl+S?uOYAmd6axEUB(UNSQbGD z6WeUd9nT0BoX_J06P)~k=P+1o8?P5LP~+s+d@^9Z5?>$+e=1)v3ZIKV0?be4R|5bO CLN;Ci delta 156 zcmeB{@0RBc@MdP=VgLb|d5kJkFif-I)&IJ;h{E^EQ zCbrp@JDw3NIG@K0COG*6&tb6GHeN4gpvK9s`DDO+CB8ru{#3qT6h0S!1el-7uLb}# C06H%K diff --git a/examples/zips/oracle_content_experience.zip b/examples/zips/oracle_content_experience.zip index 1c158494578041d1962dc1718c5de3ef2831080f..f54506a1e77560185828530734d39d447631b971 100644 GIT binary patch delta 156 zcmZ1_uu6b8z?+$civa|@6<$r`wPZiX-j{ZPy>Ftg6f;O9%KD7tauM<$TaQSdW0k64~6Dff^_Gvde(^r`Y^Z_*U!zDEu|-phZ+Dv C5IJ4| diff --git a/examples/zips/oracle_digital_assistant.zip b/examples/zips/oracle_digital_assistant.zip index 187cb3f3fc920ef12de378e02a665c56a19aef04..eac7060ad9361e64cf9075fe6b4661cba96e9626 100644 GIT binary patch delta 193 zcmca7eove?z?+$civa|@6<$r`wO~KT-j{ZPy>FtA6f;O9(;h4W6y3P~6f;O@at(_k zOlpc0!KOmK2O+aa)+3A+pr-j{X(h)XND85mh!GBYr+)B|Nv)g?KxL)A^b z$1lYU(t5%ZECdwZEWtRF1td0k3#$jZy2%P`{&0n5Z2KSz&ADAL6wc@NhAaHYy^I-b z;w*k!428e>A(}x}y9vZHf)y?kbi`1|Ed+56NMV$a6gya9t*Xu>DGr{{5KabWG(Szg zBIy8kg0$2Qh+D78xnr2@DDMYXI8ELIqVS=z6Nd;krm=z*b{N@% zd_7sgRBZACBQ~(uOQQg&m<*U7Z5)oF=8AC`iW(o2SPV6%O@dI=*qcUTsM%%ejiN@~ z45kO+p4n#pC~A1jVRj?b?6H)dJl|XgMcrF-KMea~EkaS$T(O8j;RjiIVCdOn>5igC l)e6(xsaCEiYW`UHpzyP-eKE|v2^WKevxiLxSj~JJH2@QjMOgp< delta 923 zcmX?Fd9;!@z?+$civa{=<~^FoYpAj!vL$U55SLbPGcdBeWM*JssRzoUs!MWWhpL-= zk6(%zr1gX+SO_S*S%PsU3rKA87FG{*b(0m?{NW1A*!Dpbnsd8gD4fsj4OjS)dl@s> z#992d7z%&$Lo|b|b`ywY1S?!7=!l_^TL|JDkisY-DR!{JT2-A%QXD*?A)E}%XnvY} zMbZK81Zk-q5Vu~FbH^~*QQi-(aGJaaMBzhaE4ZMNN(97RwW^jFx^Jl>tWi{Z1X0MQ zVUD3NQNs>y;xdgrOkfYBYTLsEC$H8%2o}rNfrtSk5*9&|FX_0!)NPj6O=ATs>@czi z`FgT~so3NPMr>fQmqr0lF&QvF+Bh6T%@yM?6g563u^4Jjn*^b#u{VvxP_xU_8%2$} z8B7ntJ+saHQPl95!|X<=*<&d^dA_+0in_Pvei-(}T7;sgxndE6!Vj|az|gbD(j7&O lsuiZWQ>|Q4)cmpXLE&dv`(l`T6D|e`XAheYu$uWcY5=T5TSWi> diff --git a/examples/zips/osmanagement.zip b/examples/zips/osmanagement.zip index 48690438c9dd60d284f0ad10937a4f74985f182d..0aed09b81d3dd7f2467c912aa957bd9be8d24802 100644 GIT binary patch delta 686 zcmZ4Bu)u*gz?+$civa|@6<$r`)nPx!-j{ZPy>IeFQ7LASP;3yAkjUf-Vr*dH%aLGV zpz6)WjHekvVv`w}jp2gU%oo_ff_&WG*bJCl%MCFYWWqJ>)r@>V6C%Rvq)wVMGB8*& zO->M%nY@~p4{qQA-av>gBK%e`!O5Zgd%%{62za4eA_y`sYwMiqZ9wx{*%=tDCq6Wr zd{2xQrg`%%feR25*9!Td>js-DD;x}0TrPYYqBvC46iG2Sj3%!WwSy^~{8`il>TmVQ z2gKwj7l^SUsfP#P5}Ov zd<7{-3_UXP(v#;&*`cWWCxvQGgS0b>{8MQU40HTtB2d(vl!?bs<0Tt~qUM-vB8D1I cIhb7tf31`A!B8h7ABketba{xIf61!>0K~TC>Hq)$ delta 686 zcmZ4Bu)u*gz?+$civa{=<~^FotHZt`vL$VGWXt4Xmm|T# zK-HU#8Ba5U#3nN`8^Z;ynJ=(|1^KwWu^BMAmK$O)$b@U$s~P!#CPakSNu4xjWMHsl znw%giGkG;HAKbtLynzr~MEI>>f|En}_kb-C5%5B{L=a?N*48=I+kob^vNJGPPkd-L z`JNarO!MYj0v8}At`+h@*9|sRRyY{0xLo))L~*F7DUxDv7)@R$Y6nv|`Ln1A)Zglp z4~WT6E)ZiyQV$Qn$uq?e{{JL)1Y-D32`gq`fJ|nT5}WKG2M+1UqLK+vF&VJI(GBXa|B_b&04OWFtu6f;O9##jX^l2%&5&A`a=l9_>l zr5>mrq*DY)bAWYjwgT$}s@?b{mkFeGatgBvOlBPMI| ZxS_~THTnAqm|%pr_m!EY>|eP=2>icU=t_CsM%!ZmE~t9r|O4>a569xO_Dv2UuO2 z4Le935N}-B$;b@UI@y%T4kos_iYXo4 delta 178 zcmZ3%yMmWDz?+$civa{=<~^FoYpSv$vL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRj3 z8+MR7Al|sLlaU#yb+Rdw9ZYO<6;nJ!@D8&xOmMOq%Q3LR_bkrLK#h|ZvdVz@A*@~~ S`~$2$D11G(Krp|FO$`7UQ9E`3 diff --git a/examples/zips/osub_organization_subscription.zip b/examples/zips/osub_organization_subscription.zip index 62c24ed26fb0c749b6ab7ba2130fd40a4118fe0c..8a5d1ae370bf6b9d44c8bc7df9cc82f1d11b38a6 100644 GIT binary patch delta 177 zcmcc1dzY6tz?+$civa|@6<$r`wNp9A-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuOc zD?3OX5O3UF%*YJXI@yrP9VWK9o+%L`_?X!TCOFxQ zS9Xv(Al|sUn2{N%b+RFoJ4|eIJyRk?@G-LwOmMOp%W;sxNvuB1Kz)<_S!KZb@>qjW S_>WmbQTS18QDFXdHZ=eYI6DCV diff --git a/examples/zips/osub_subscription.zip b/examples/zips/osub_subscription.zip index 0d64f1b239cceb4aa25a4e10d25c750ff1643129..8fef8b3e6a1b15fe70f78cd54a6f6f5c6da58f0a 100644 GIT binary patch delta 196 zcmZqXYv$t(@MdP=VgLbeg;x`K4UNvR_oZC`;?fFk21b^b%nS@H^*~vWIuRhv0a6zs zxKE((HzNZ>B|8Iy(&R)Ixru!|>>!;$ym6r@6EjfJyII{(_{wY^DEwYFUoihJn;HPhFFSq! delta 196 zcmZqXYv$t(@MdP=VgLb|d5VdK#bs|8T1EelO zaGyZmZ$<`&N_GYYrOAmbaufS_*g-mhc;iA*CT5_b$vc^>U}BqpF@-UL1%p}aVSo@Riv-Q24!UzF_`cHZ=eR+CNVK diff --git a/examples/zips/osub_usage.zip b/examples/zips/osub_usage.zip index 38bc8caf6e338c72af889342b128cb85d10147c5..4ae82b49b1248c8df48befde4ee98762560c9fe0 100644 GIT binary patch delta 225 zcmcc0dzF_rz?+$civa|@6<$r`)nY%#-j{ZPy>FtO6f;O9+7K)P6x}#kjtL|*c?**< zOl4xHKuagDXHx?J_i8)0 delta 225 zcmcc0dzF_rz?+$civa{=<~^FotHr(|vL$VGWXnW5DQ1vJv>{joD7ta791}=r@)jmz znAqlbOks>*L3b7lnBe3#mi=Hc4^|5$ka49I+zgB?FPRw_Sn7cm1$Z+u$uWxnSsWls bCof{PCq@}FnIeCb`eg5M2IeugcLJK?b0}~5K#SQ zF2-m^kl5r5CJVS=6ki!5!i33cEZXQsOfF?HLsDJ?F~g9}5iVHC#sv{iLjeUIH9 zt}u!Zs(UeKG+dCC%LAf2fLjMH*v#z%5xm4>2os#l#k(Es{v*5wU@=Glfc-gHg3lVJ zZZq7PoBZBzL2UsmCW!BatT1#R6AFbZR1*Hc0#+z0VaN;&x5*2o#U{r~ut79SSVP5R z!2F{UIVk*KNjD5VyCp4A)QCyBpzv#?{4w;rm2yH+6DaMA!apFLiNg1mu|nZ5m$8TP j5pL&@wL?*pA?u04zbqSxp~p|o14YdaxnwY3PF@WF#UtYt delta 665 zcmX?Ncf^i2z?+$civa{=<~^FotIWP4vL$VGWXt4(>>`{9i4a{R2`Off+NE(|A)xxr zT#V6-AhF3AOcrp#D84dAgb91*}k1!jKslZj%>Ei%pJ~V1sCuu!f4s zfcZxya!~lel5QA!c1v2Ks1cKLLE+a(`D5sLE9HcuCQ#ZJg?~Ug6NT?BV}-(BE@Kbn jBizm*YlosHL)H_8e_1vXLyw=F2a1{-!6oV*$U+Hdnu diff --git a/examples/zips/psql.zip b/examples/zips/psql.zip index 4425ca19fb25f66fd97c8dc19d0696f2642099e6..ad137d8014b70df765c51ba87a178c2ee6a09517 100644 GIT binary patch delta 236 zcmbOtHARXyz?+$civa|@6<$r`RbfBJ-j{ZPy>Ie=HYsM1P^dOo2q?Ug_wAQ%ZM3h!{kOD8L&nj kZc7w?JGV6o{|UDPlrP2!cl~5H9t#vz3wXT2{C7NR0J=F(T>t<8 delta 236 zcmbOtHARXyz?+$civa{=<~^FotHQn_vL$VGWXt6LY*Nf1p-^qG5KwqydmA%IXtDr{ zE=+8*3ris*Sa1ic5lnFMN7h?lv2$!%=;lq9VYh{;+nm5&3Ni5pmk~42hRKaQGGL85 k+?FW(c5Z7F{u6EoC|`^d?)u4YJQgUb7Vvn3`R{nt0A2W17XSbN diff --git a/examples/zips/queue.zip b/examples/zips/queue.zip index 6ba6c6fa841a33cccf37e4da5dd6c14a19124a96..59826631c2739dd17fa0678ad6f3ac2192c6e395 100644 GIT binary patch delta 251 zcmX>vdR~+_z?+$civa|@6<$r`RaH61-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuO0 z4m(I45O3^MVP*zuoxFkB5GJPVSTKTB4=&it8VC`5$YuZ&oGig!4^}vf-54%* xg?%4bY$}H_Gth>~r#WQ6{8t=SD10|gdlde1P8$?HE0-M#Kb6Z7%wNf+1^_vOQkeh% delta 251 zcmX>vdR~+_z?+$civa{=<~^FotE#dhvL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRi~ z9d?j9Al}%i!pscRI(Y-LAxv!Z3+7x#uwVqM9$c`OH4q~Bkj(%lI9YH?Ik%<9p%pk!?2ZW#$SY)p|SOlna zGdJTpCXm?VJ<#Yc%sFFJp6pDck&>&4wAQPLIn9 zU0n~CBV64TE<1?DqP%9zK$lGRlm_#u4uDEzH_E-3n?`8`qO W+xP=eO_Dv2UuO0 z9y>@K5O3@bWMl?voqV6s7$!DZl4%cE>;{uDQRYq7XSRZA-dw=k%?#H4kIk4FXv5?P q4jC{%nB4}2zmeTh3FHb4mohTRF~j{dS%kw8MO!(C2bh0|Lk$3sZAfPT delta 258 zcmaDM_(G63z?+$civa{=<~^FotE#dhvL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRi~ zJ$8^fAl}#=$jA)TI{7}MF-&Z-B-0+S*bOFQqRgAD&uj(Lyt#n6n;ES8ADb~V(1yto q95P^jFuM&3e11_hZ+Fpq)jaV diff --git a/examples/zips/resourcemanager.zip b/examples/zips/resourcemanager.zip index 0ce97e3262944de702f3e0d49d9401987fde89e0..1a69af566aab748721e563c69398854999869ae3 100644 GIT binary patch delta 318 zcmZ2#ywsRCz?+$civa|@6<$r`)mJ&k-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuN# z89PWF5O19OpNSc$b@F^>Cz#mg7tB*2g7s`}aKSTdhgiTWCvscB1ut-WFoFf8d2L~W zljC`}fyE^FJYiysGx*rRV%Z}8FtN=CMG_#IRm5zWfo_>3DFas1EarmDeJK`z%#9Wg eLFQf*cSGh{N_Zo4mq~;pbLAytLEOppl4=0FO=*7s delta 318 zcmZ2#ywsRCz?+$civa{=<~^FotFN*mvL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRie zGj@*V>&PB5{}FPNu51nb${;DTq^4zYk$PUNb6S8mz?+$civa|@6<$r`HB>pr-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuN_ z1v^L`5N}+V%Pa`g8Zp&w;XPwU1_lQv1_qUh1#9d=jOX@7QI>X3fQVA9(Iy15x!<)t>PbNkxlJdx4WEg*hhC+}vJ0rQJk-C%so$eR3uRYwph rwphWj1=o9vRhoG!E5l?(79Aak6nZ2Ec(byBQVtaDj(6z?+$civa{=<~^FoYpAj!vL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRi; z3wDq?Al|qzmzf!;b@C!sdzjed7p&VMVr=%zKsA$n*k!MQI+OW1gf&4XW7y8h22{tu41^Xy#Z0Uq9soYJG9CZ` diff --git a/examples/zips/serviceManagerProxy.zip b/examples/zips/serviceManagerProxy.zip index 9558e24730e574ab9a31471ef28b4d0118695aaf..ed9d11f3553c37a0a0429d62fac6575975d92415 100644 GIT binary patch delta 178 zcmbQuJDZm`z?+$civa|@6<$r`HC8#t-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuN- z6+1{B5N}*MpOG1;b+S8?4NPov7gI1q@ByKbT+2rUn49@irO& delta 178 zcmbQuJDZm`z?+$civa{=<~^FoYpk*&vL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRiu zD|V1NAl|riJ|ituH(8<^PUE~a3J-~(nynBZg$mi=IbuUH(Jff^_4vC4q?zN{W7 S{Ozn>D12o$e=xt4O$`9vw>j$o diff --git a/examples/zips/service_catalog.zip b/examples/zips/service_catalog.zip index c37cc2cc2a6f2c4aae313304de36514eef1cce22..4c5b6140d3a394aeefab1f9d912497b76ef2c2f8 100644 GIT binary patch delta 326 zcmeB^>yzUR@MdP=VgLbeg;x`K^;OQX_oZC`;?fFk21b^b%nS@H^*~vWIuRhv0alk_ z#tu>k#2e>YF){Bz|7Sv_2fD7iZ1VL0DWOalKa5eiYr%Y_h3yzUR@MdP=VgLb|d5Z`1XY)M-U#HAJ742&!VdK#bs|8T1FSB= zj2)y7h&Rr)Vq^wtoqUVY6(+V>jfsT`EU3$30T;|+34*9R$m$3eLmkS}7$fXGp?B%v)20CVPBd-it=NoPp6n+p-Fbe-Tj~fbK ZpVuFSzkt^ph0n_ujl%DO@?Y?&0RVOQaSZ?f diff --git a/examples/zips/service_connector_hub.zip b/examples/zips/service_connector_hub.zip index d55afa498584fe39688f7a112b39c5b817aad037..63a7c413ecbcfc1874446fea4e29a8bd47f51c2b 100644 GIT binary patch delta 178 zcmX>tc3O-#z?+$civa|@6<$r`HB~vs-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuO2 z4Le935N}**%Ek=TI{6`+9ZYPq8haEYSg@JH874USEXN_R*d$J8W}wE&H#lX${O_Dz TDEwqD9~AyYu0Swfm0Jw}UZOcv delta 178 zcmX>tc3O-#z?+$civa{=<~^FoYpSv$vL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRj3 z8+MR7Al|srl#Lmvb@D?tJDAvJHTEb*uwXNXGfZ&uS&lFs}6f;O9))*`T6x}#Ih7lw*`5U7h zOl-3?lL9kXFpkv=F1VicBokP$n!^SzxR1jEBKVWb5iaP+Z3Pjm<3(sc&+7*fR1mO$ zshk`y(7*?@JYthX$;}gt3=A(=Co?k1Ojh9LnB1?(!^O$K401RSZ&nw41aT*iuqjOY zW)I;Yh~QiiE12Nqdm?+l&YUZXu;-3wBUmg!%o(O`^D42mY+%7CS!i@13h$5e*>vI#TyQ<>NhYvhHHQsca36;SMDQn=2c>A*}#HPveq!c$#Z0V!D4S@ ztw2^!4pfi<^F8DoQTVInd{Fq3@)0Qf$?{$({QvU)DEtBiRQ0bE+)(6$6j9ATpy-Su bud3vM!tYl?)&E^75Jf&q*%Qp)rmO}49%;+F diff --git a/examples/zips/stack_monitoring.zip b/examples/zips/stack_monitoring.zip index b2b4630d575e350ef4701bbb570e326661fa23b2..3bef7c3eab34056531caf107c88a9a4b8170e5ab 100644 GIT binary patch delta 1398 zcmX@Lknz+)M&1B#W)?065b#!bHIdgq9*0WO>QVz`#-ultopSXwME+ zH#uHiiW#K!h(A~eD7;yU@jnwtY_beXAiBEA6IqJk3b|Qx8Nmvx*%B}m{%322E9_zN}f1iR^CMDVWdj0_A?EDQ`7&hei~69>+Ws`8kf0 zQRD-if>7j-I;ErV{hZy=)Jspk1G!%JT*M1cFcdh{_@(FIqDEy~x zJ}ByAy`?ATx!a(qIpbc4q9)$M8&%#T5=GwKGX_QesAmm|e6m*{iu^UNR22DG?{HLk zZ&dp;eOyuGFZlSO=y&kVN0GniyAVZwiXX(iuz2S8FGG=E?w^37Uo)Tr%wH0q1^^O` B?Z*HB delta 1398 zcmX@Lknz+)M&1B#W)?065RjSoXd_uYGJ+LWvn60C{Lj`3SJ=%S z%m!BYkk3t3f|hW>aKTWBH4k~UCx37jGZ zi29cz5g4|miZ;R(z7@R%vF((E6NW+q$xyh$9?24Bu=|;1?O=kFJ!JQT#d@^tCogbk z$L6YXxn!8~%@5_WAeQ+l+G1F?UeOz_kWpz3#Q7VP{g4$30;43tJ#ATRA`=6Hyf6bp z#AHEP*~tx_a+77elwj6_B5=A&HN+}Wb!TJ~z|O5v4~JWIOMN{=VULz4hQgm(2*)RD zZ-gim*E2^}2zJxOh~Qn@85tO)SQr?zz;2qWCknS?r`|<~cX|yHF|@9I{Az1H&^zxr z7#M0NJ6gz17Vr_89AJnD`Zb1~5SuMbAVCC7+^|GDdAUgj+#WI0B@l&s&4ZBb0ejlm zA`7l?iN$ADu;45^J5V~BtmrEP=Kr$u1@j%$ixB#OMdXAFw`QO_C_`DCv^6!~jjsVMTX-r=b7 z-l+Cx`naOVU-0om(eL1!k0O83cOi=W6hDZ2Ve!oGUxp&T+&=+Dzh*!Mn7<@I4FHU+ B4?_R| diff --git a/examples/zips/storage.zip b/examples/zips/storage.zip index 8b5c05c16b18fe9d044275e512789059c2c629b6..e94ba293c044a12bce67ef16e1bc978e23f858d0 100644 GIT binary patch delta 1572 zcmX?mf${7GM&1B#W)?065b#!bHIY}H{TzE=+6DH$$+pT;%pjo%1F#TKcw@gmBS>iS zLq=UAsIs)u3T_5QmY2*73@r6PLr{#10GkUXv?nKeicFp$CNTL=6eq8KXb2|*Gn!qK zr!$4aEZh8*DW4f^TRNLHx}zo^WAlb9lwh}pC=BDW!ce${%L%UVFV_neu!%4DJ&^=U zm^ZHxE@l)2`V7Uv%1{RjX(GE7uZJhsi#q8O6*8<&lbED{AtS{w`68RjWPv!o$rIwZ zxu9VJG-9&3m{>Bz?Gy076A%X`?%;185P0AsH z@bsJ0=xC9g*jZMuw^zoSg_H-9xiy?!4;yN-w9!+kJDr(UQl>)SeovVWMN?V zHF=(o%w+piuL-MxnNJY*2xn*AA;>D@p6FMvD@n!#EvOGCUC*?J{k}w{_;b( z+uGk85_F|Oki-oNi|s*+ASz=*;gPXX!6218L(@r zBJH4jvB`Q-Y+$ilk=7Vu=28AA`c_1xVyMxN_C!%LD>@QGjcAMqikkYE02Kbmm~ad| zS+VXIVwYoK`Vj7Rjf2?-@!Ns8Pz-(M@lGiA&5lRaBbE??BHxqXjA6#d1WOb(K8dJ) z+LjoGBCnSOb3epg)05m#f&+ iQ1rW|p{ie*hHAfXI%>SurNhDm;-AOqj$rfDGt>ZSo+8Qs delta 1572 zcmX?mf${7GM&1B#W)?065RjSoXd{W@BTG|*UKG1@MG0=sZ6}9(50{)?%2Tb#31AToaa8O#j z(0e_Bk%2*)oq+)qloFG(Qn>l`O48t=2{L1m;VOs&{EaQ(X7m~BLj(_)n85}Anv_EX z%gqo@*kLBc1a|9H3v;+iVasfGuwbKuJzVg(gDXTkzZ1etAE(JoyrA&pur%Ez$-=1T(t&=BsJ_OrQ;^hFhW4G5eh#gaWOyGj&eKa6W{N;ym zx3#}HBBG2s|` zvSQsa#4g9e^da2s8V9ov;~od=gRp zv@J0VMP4rn=6;B~rYE_f$p24rLE)z+qndX<*%d|JEX5avzcd9^KX)psAM;aD<*%mt jq3Cx_Lsh>r4b^_(bkumQONWIC#6OSI9l_?QXQ%-Ho9aax diff --git a/examples/zips/streaming.zip b/examples/zips/streaming.zip index 0201a980695a305ad7767c027ebeb053e2c2990c..5b448c68474e42d225f69a1366e174b26555e4ff 100644 GIT binary patch delta 225 zcmX>ia72JNz?+$civa|@6<$r`)nq@%-j{ZPy>Fte6f;O9$^a|^6x}#+E;C4IvLTBR zOl)%&O8_HSa4)MlOmOmV*1ce{-E8JcAmd6axEUB(UNSQia72JNz?+$civa{=<~^FotI571vL$VGWXnWbDQ1vJlmS=-D7tatTxO8aWJ4As znAqklmHFtu6f;O9#t19|6x}#=IU`7DvOSXt zOl)%%QwT)xBC{n-aIzrFKCr?|EY4`gO}1q9f+^eF#aaQ;%gXMEt}ct+1Fmi-do$Ex zPD^H>Lnb?N$$-tD#p!^;|HJ8o!cX9Ghw{ZHAK+pG>p964h@!@ZI|4(^Hg10uHR?QJ JV15IS8UT?OXLA4m delta 308 zcmZ1`xlEEbz?+$civa{=<~^FotIfV5vL$VGWXnW*DQ1vJj1gD_D7ta#az>EQWP2tP znAqkjrVxnWMP^Hw;ABCTePD%`Se(&}n{3JI1yi=Ui?srxmzCWSU0oKt2VC7w_GYNX zoR-W$hfH?lk^!4Pi_-yx|A*5Fg`dFX4&{qYKETBW)^n085Jim*cLau-ZQTASYSekc J!2AXtH2^h5Zx#Rm diff --git a/examples/zips/vault_secret.zip b/examples/zips/vault_secret.zip index c10e68b8873931b84499543413eadb49e41d3559..d2fa6e8305e5bba8fd2a0d5620a866c3e5cb4520 100644 GIT binary patch delta 156 zcmX@lf1aN=z?+$civa|@6<$r`)nPx!-j{ZPy>Fs}6f;O9))*`T6x}$Tiy0&|c?q*A zOlwd796`K_^P~&8Kb{Q~#8k-{u|0kO>3O|nB1I%B^t_A>s ChcnOs delta 156 zcmX@lf1aN=z?+$civa{=<~^FotHZt`vL$VGWXnVcDQ1vJtT9*wD7tYv7c)p`@)BlK znAqkA%pr_mL336snBe3J*8N~HD>f@;pvKAe>@r~fG&V;R{!cb%6n-4L2bjN-T@3)D CMK_@U diff --git a/examples/zips/vbs_inst.zip b/examples/zips/vbs_inst.zip index 585d17ab81580ab3696de875dd88037faff10a86..4ee515853aec12903451efe31f122f2f7b3d90fd 100644 GIT binary patch delta 156 zcmeyv`-hh|z?+$civa|@6<$r`)nGrz-j{ZPy>Ft86f;O9QXeb=6y4Y#$pjLb{F=!S zCbn6bIgk-7Sk7Vw6P&z-#D7vvfk_jX<`8AUv zOl-3O_Dv2UuOa zDLY6V5O18F!^8~KI+=^v945BegE@>5EVz)x1|~T93CjVn*m71IW}wE&-fS{pJ}a9u T3O|d@6@`D1%?r$zV^;$JrcgEK delta 178 zcmX@YcZ82Oz?+$civa{=<~^FotEaLevL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRj- zQ+AL#Al^7Thlv@ebut&TIZSM`2Xh!BSa2bW4NP$I6P5#DvE{5b%s`Ekz1d{Id{#DR T6n++)D+>Q2n-`cb$F2qd(-t|n diff --git a/examples/zips/vn_monitoring.zip b/examples/zips/vn_monitoring.zip index 24442b206c9b24c92f1c63b59a34ed67b22d05ad..4739f9edee1ab6a2633372cd5ea00ec768e81673 100644 GIT binary patch delta 287 zcmew^^Ie8Fz?+$civa|@6<$r`)nz}&-j{ZPy>FtU6f;O9&H*7J!YKk&#{pJ($Q>*W zRJ~b%F`gNuc5)GmHCDxwFS0nnRZFoRhp2wSVFnje4rWx%Suc|x(MI>h6NqDq%H0EIuF*9C>o$_G&&$fpJX+gVzj delta 287 zcmew^^Ie8Fz?+$civa{=<~^FotINJ3vL$VGWXnWHDQ1vJoC88cgi{2ljsvXnkULl$ zsCu&iV>~lR?c^dBYpjYVUu1EDtCnIt4pIGt!wfE{$QjBAHlmUXVg%6K$-B7@fW_*# zt(igm23|2vxKk(J=Jtb%%79gQ^Mqnib%@6kMU^gZ01AITuL}yFl@FpmkWUQ&kX&I* diff --git a/examples/zips/vulnerability_scanning_service.zip b/examples/zips/vulnerability_scanning_service.zip index 2eeed2459a1b1f072bd55aa1728f255e84f2aa05..4f2c65c8e1adcca7ec6de2ec03e1980c973eadad 100644 GIT binary patch delta 178 zcmZ21v{;BYz?+$civa|@6<$r`wNp9A-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuOc zD?3OX5O3VQiatfGf?B?Mh+P;e+zps T3SW~W6otQlBMQv_%b^AU4%j$6 delta 178 zcmZ21v{;BYz?+$civa{=<~^FoYp1dzvL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRj> zS9Xv(Al|rp7c(*NX+cbM4bV=Re`U_mW5ADH0eTDD_gF*kM}W}wE&jT|yy{ucIN T6uu@$C<=c8M--UmbWDghz?+$civa|@6<$r`HBmXo-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuOI zH9JTh5N}*=#=;ELI{5*MElg~)3TreYSg?uB2_`uCG}~dY*hF?GW}wE&jvO*z{#SNS T6n+ASHwynOM*x_wz^MiR3C%Z2 delta 178 zcmX>mbWDghz?+$civa{=<~^FoYof9uvL$Ub5SLbPGcdBeWM*JssRzn})QJFT4zRjZ zYj%)2Al|s#jD;Dfb@BriTbS5p71n4*uwWCL6HIXOX|}^)v5D+X%s`Ek9XVvc{IBeu TDEtHtZxsGnjsP%Ufm00tHj_IV diff --git a/examples/zips/web_app_firewall.zip b/examples/zips/web_app_firewall.zip index d317fdc8b368e296c4c5701c437dd453e854c67c..4211abd1b2d10a227d27d52a5dc17520c7d109ec 100644 GIT binary patch delta 177 zcmew-`cITMz?+$civa|@6<$r`HBdRn-j{X(h)XND85mh!GBYr+)B|Nf>O_Dv2UuOA zB|AtR5N})uOlYzz(-Dx+WFBT~nAm1NW)?QEU?`^@Gf>~;|C};l{#H(R T6uumn4+_7B%M;AM!KDTO2fjOj diff --git a/examples/zips/web_application_acceleration_and_security.zip b/examples/zips/web_application_acceleration_and_security.zip index 10934b745f3c5f772f3abb94c31cb76603fbc6b3..554b18262818fa06bc2fae85365c3151ccf16ae2 100644 GIT binary patch delta 156 zcmca?blHeEz?+$civa|@6<$r`^<+QC-j{ZPy>DWy6f;PqDhMnB6y10^ixDI=*?}n> zCN_B<(@C&c7IP>}Z1XYZ8ey=Yt9UpwP~&7p2^lbdpLhZa-$5c3g@0Tk8O+y}R09A| ChBcG` delta 156 zcmca?blHeEz?+$civa{=<~^Fo>&d<%vL$U*WXr@@DQ1vJRS;MND7x`-79&V#vIA2% zOl