diff --git a/.release-please-manifest-submodules.json b/.release-please-manifest-submodules.json index e7a3d7964455..ddaeed200ee5 100644 --- a/.release-please-manifest-submodules.json +++ b/.release-please-manifest-submodules.json @@ -84,6 +84,7 @@ "language": "1.14.5", "licensemanager": "0.1.0", "lifesciences": "0.10.6", + "locationfinder": "0.0.0", "longrunning": "0.6.7", "lustre": "0.2.0", "maintenance": "0.1.1", diff --git a/go.work b/go.work index 26df0eb572ab..fc77cf320fb0 100644 --- a/go.work +++ b/go.work @@ -109,6 +109,7 @@ use ( ./language ./licensemanager ./lifesciences + ./locationfinder ./logging ./longrunning ./lustre diff --git a/internal/.repo-metadata-full.json b/internal/.repo-metadata-full.json index c6761bd1bebf..134d3771e979 100644 --- a/internal/.repo-metadata-full.json +++ b/internal/.repo-metadata-full.json @@ -1709,6 +1709,16 @@ "release_level": "preview", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/locationfinder/apiv1": { + "api_shortname": "cloudlocationfinder", + "distribution_name": "cloud.google.com/go/locationfinder/apiv1", + "description": "Cloud Location Finder API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/locationfinder/latest/apiv1", + "release_level": "preview", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/logging": { "api_shortname": "logging", "distribution_name": "cloud.google.com/go/logging", diff --git a/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json b/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json index 3c07e9ca7c20..741dec1fc8f2 100644 --- a/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json +++ b/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/aiplatform/apiv1", - "version": "1.101.0", + "version": "1.102.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json b/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json index b5e98be72c6a..54054c1cea6b 100644 --- a/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json +++ b/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/aiplatform/apiv1beta1", - "version": "1.101.0", + "version": "1.102.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/clouddms/apiv1/snippet_metadata.google.cloud.clouddms.v1.json b/internal/generated/snippets/clouddms/apiv1/snippet_metadata.google.cloud.clouddms.v1.json index 651a10d0d981..6bf61c4a341e 100644 --- a/internal/generated/snippets/clouddms/apiv1/snippet_metadata.google.cloud.clouddms.v1.json +++ b/internal/generated/snippets/clouddms/apiv1/snippet_metadata.google.cloud.clouddms.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/clouddms/apiv1", - "version": "1.8.7", + "version": "1.8.8", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/commerce/consumer/procurement/apiv1/snippet_metadata.google.cloud.commerce.consumer.procurement.v1.json b/internal/generated/snippets/commerce/consumer/procurement/apiv1/snippet_metadata.google.cloud.commerce.consumer.procurement.v1.json index 4804b319019c..e1ddad5fafae 100644 --- a/internal/generated/snippets/commerce/consumer/procurement/apiv1/snippet_metadata.google.cloud.commerce.consumer.procurement.v1.json +++ b/internal/generated/snippets/commerce/consumer/procurement/apiv1/snippet_metadata.google.cloud.commerce.consumer.procurement.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/commerce/consumer/procurement/apiv1", - "version": "1.2.5", + "version": "1.2.6", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json b/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json index 929174e9c5b0..2c3bea348414 100644 --- a/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json +++ b/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/compute/apiv1", - "version": "1.46.0", + "version": "1.47.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/compute/apiv1beta/snippet_metadata.google.cloud.compute.v1beta.json b/internal/generated/snippets/compute/apiv1beta/snippet_metadata.google.cloud.compute.v1beta.json index f5c65271f0ab..fc062ce4a60a 100644 --- a/internal/generated/snippets/compute/apiv1beta/snippet_metadata.google.cloud.compute.v1beta.json +++ b/internal/generated/snippets/compute/apiv1beta/snippet_metadata.google.cloud.compute.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/compute/apiv1beta", - "version": "1.46.0", + "version": "1.47.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/confidentialcomputing/apiv1/snippet_metadata.google.cloud.confidentialcomputing.v1.json b/internal/generated/snippets/confidentialcomputing/apiv1/snippet_metadata.google.cloud.confidentialcomputing.v1.json index 03ac1a9fe829..ef038febbc9a 100644 --- a/internal/generated/snippets/confidentialcomputing/apiv1/snippet_metadata.google.cloud.confidentialcomputing.v1.json +++ b/internal/generated/snippets/confidentialcomputing/apiv1/snippet_metadata.google.cloud.confidentialcomputing.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/confidentialcomputing/apiv1", - "version": "1.10.0", + "version": "1.10.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/confidentialcomputing/apiv1alpha1/snippet_metadata.google.cloud.confidentialcomputing.v1alpha1.json b/internal/generated/snippets/confidentialcomputing/apiv1alpha1/snippet_metadata.google.cloud.confidentialcomputing.v1alpha1.json index cb7bb70f364b..3933437e4797 100644 --- a/internal/generated/snippets/confidentialcomputing/apiv1alpha1/snippet_metadata.google.cloud.confidentialcomputing.v1alpha1.json +++ b/internal/generated/snippets/confidentialcomputing/apiv1alpha1/snippet_metadata.google.cloud.confidentialcomputing.v1alpha1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/confidentialcomputing/apiv1alpha1", - "version": "1.10.0", + "version": "1.10.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/config/apiv1/snippet_metadata.google.cloud.config.v1.json b/internal/generated/snippets/config/apiv1/snippet_metadata.google.cloud.config.v1.json index 0356edd10835..4a9df17bafc2 100644 --- a/internal/generated/snippets/config/apiv1/snippet_metadata.google.cloud.config.v1.json +++ b/internal/generated/snippets/config/apiv1/snippet_metadata.google.cloud.config.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/config/apiv1", - "version": "1.5.0", + "version": "1.5.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/configdelivery/apiv1/snippet_metadata.google.cloud.configdelivery.v1.json b/internal/generated/snippets/configdelivery/apiv1/snippet_metadata.google.cloud.configdelivery.v1.json index 59038f95fd34..ae8eb40a21c1 100644 --- a/internal/generated/snippets/configdelivery/apiv1/snippet_metadata.google.cloud.configdelivery.v1.json +++ b/internal/generated/snippets/configdelivery/apiv1/snippet_metadata.google.cloud.configdelivery.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/configdelivery/apiv1", - "version": "0.1.0", + "version": "0.1.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/configdelivery/apiv1beta/snippet_metadata.google.cloud.configdelivery.v1beta.json b/internal/generated/snippets/configdelivery/apiv1beta/snippet_metadata.google.cloud.configdelivery.v1beta.json index 808ab0547c7c..6b416f6a4f31 100644 --- a/internal/generated/snippets/configdelivery/apiv1beta/snippet_metadata.google.cloud.configdelivery.v1beta.json +++ b/internal/generated/snippets/configdelivery/apiv1beta/snippet_metadata.google.cloud.configdelivery.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/configdelivery/apiv1beta", - "version": "0.1.0", + "version": "0.1.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json b/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json index af4b148921b5..5add8baf448e 100644 --- a/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json +++ b/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/contactcenterinsights/apiv1", - "version": "1.17.3", + "version": "1.17.4", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json b/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json index d5193eab5a68..fe7e6483ce49 100644 --- a/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json +++ b/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datacatalog/apiv1", - "version": "1.26.0", + "version": "1.26.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json b/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json index cbfa0ab0b3a2..5356b2bdb36b 100644 --- a/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json +++ b/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datacatalog/apiv1beta1", - "version": "1.26.0", + "version": "1.26.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json b/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json index 190d186ac13f..591ebbe80246 100644 --- a/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json +++ b/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datacatalog/lineage/apiv1", - "version": "1.26.0", + "version": "1.26.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dataform/apiv1/snippet_metadata.google.cloud.dataform.v1.json b/internal/generated/snippets/dataform/apiv1/snippet_metadata.google.cloud.dataform.v1.json index da60fa8cbb85..eac627a0c68c 100644 --- a/internal/generated/snippets/dataform/apiv1/snippet_metadata.google.cloud.dataform.v1.json +++ b/internal/generated/snippets/dataform/apiv1/snippet_metadata.google.cloud.dataform.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dataform/apiv1", - "version": "0.12.0", + "version": "0.12.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dataform/apiv1beta1/snippet_metadata.google.cloud.dataform.v1beta1.json b/internal/generated/snippets/dataform/apiv1beta1/snippet_metadata.google.cloud.dataform.v1beta1.json index ded7cbd08381..54848ab6444f 100644 --- a/internal/generated/snippets/dataform/apiv1beta1/snippet_metadata.google.cloud.dataform.v1beta1.json +++ b/internal/generated/snippets/dataform/apiv1beta1/snippet_metadata.google.cloud.dataform.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dataform/apiv1beta1", - "version": "0.12.0", + "version": "0.12.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datafusion/apiv1/snippet_metadata.google.cloud.datafusion.v1.json b/internal/generated/snippets/datafusion/apiv1/snippet_metadata.google.cloud.datafusion.v1.json index 60046dd4e8d6..8dde1183ef30 100644 --- a/internal/generated/snippets/datafusion/apiv1/snippet_metadata.google.cloud.datafusion.v1.json +++ b/internal/generated/snippets/datafusion/apiv1/snippet_metadata.google.cloud.datafusion.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datafusion/apiv1", - "version": "1.8.6", + "version": "1.8.7", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datalabeling/apiv1beta1/snippet_metadata.google.cloud.datalabeling.v1beta1.json b/internal/generated/snippets/datalabeling/apiv1beta1/snippet_metadata.google.cloud.datalabeling.v1beta1.json index 5aa4d64bcf4c..675a49df1e06 100644 --- a/internal/generated/snippets/datalabeling/apiv1beta1/snippet_metadata.google.cloud.datalabeling.v1beta1.json +++ b/internal/generated/snippets/datalabeling/apiv1beta1/snippet_metadata.google.cloud.datalabeling.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datalabeling/apiv1beta1", - "version": "0.9.6", + "version": "0.9.7", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json b/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json index 1d70bf82aa14..c0c578c0c14e 100644 --- a/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json +++ b/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dataplex/apiv1", - "version": "1.27.0", + "version": "1.27.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dataproc/apiv1/snippet_metadata.google.cloud.dataproc.v1.json b/internal/generated/snippets/dataproc/apiv1/snippet_metadata.google.cloud.dataproc.v1.json index 61a92d8197a7..f00349ff57eb 100644 --- a/internal/generated/snippets/dataproc/apiv1/snippet_metadata.google.cloud.dataproc.v1.json +++ b/internal/generated/snippets/dataproc/apiv1/snippet_metadata.google.cloud.dataproc.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dataproc/v2/apiv1", - "version": "2.14.0", + "version": "2.14.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datastream/apiv1/snippet_metadata.google.cloud.datastream.v1.json b/internal/generated/snippets/datastream/apiv1/snippet_metadata.google.cloud.datastream.v1.json index f5835e7720c1..8a43160614c8 100644 --- a/internal/generated/snippets/datastream/apiv1/snippet_metadata.google.cloud.datastream.v1.json +++ b/internal/generated/snippets/datastream/apiv1/snippet_metadata.google.cloud.datastream.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datastream/apiv1", - "version": "1.15.0", + "version": "1.15.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datastream/apiv1alpha1/snippet_metadata.google.cloud.datastream.v1alpha1.json b/internal/generated/snippets/datastream/apiv1alpha1/snippet_metadata.google.cloud.datastream.v1alpha1.json index 7e4bba909421..6a98acf8a26b 100644 --- a/internal/generated/snippets/datastream/apiv1alpha1/snippet_metadata.google.cloud.datastream.v1alpha1.json +++ b/internal/generated/snippets/datastream/apiv1alpha1/snippet_metadata.google.cloud.datastream.v1alpha1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datastream/apiv1alpha1", - "version": "1.15.0", + "version": "1.15.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json b/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json index 1935113bcde2..a7e5591803d1 100644 --- a/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json +++ b/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/deploy/apiv1", - "version": "1.27.2", + "version": "1.27.3", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/developerconnect/apiv1/snippet_metadata.google.cloud.developerconnect.v1.json b/internal/generated/snippets/developerconnect/apiv1/snippet_metadata.google.cloud.developerconnect.v1.json index f811457cd7af..80fe5374c810 100644 --- a/internal/generated/snippets/developerconnect/apiv1/snippet_metadata.google.cloud.developerconnect.v1.json +++ b/internal/generated/snippets/developerconnect/apiv1/snippet_metadata.google.cloud.developerconnect.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/developerconnect/apiv1", - "version": "0.4.0", + "version": "0.4.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/devicestreaming/apiv1/snippet_metadata.google.cloud.devicestreaming.v1.json b/internal/generated/snippets/devicestreaming/apiv1/snippet_metadata.google.cloud.devicestreaming.v1.json index ef8ea46fdc0d..05322ff48ab1 100644 --- a/internal/generated/snippets/devicestreaming/apiv1/snippet_metadata.google.cloud.devicestreaming.v1.json +++ b/internal/generated/snippets/devicestreaming/apiv1/snippet_metadata.google.cloud.devicestreaming.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/devicestreaming/apiv1", - "version": "0.1.0", + "version": "0.1.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json b/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json index 33634354f07c..66971cb1f9bb 100644 --- a/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json +++ b/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/apiv2", - "version": "1.69.0", + "version": "1.69.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json b/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json index fa733ad79b24..f7bc2dd32f82 100644 --- a/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json +++ b/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/apiv2beta1", - "version": "1.69.0", + "version": "1.69.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json b/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json index a397cda1c111..c83b97e27caf 100644 --- a/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json +++ b/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/cx/apiv3", - "version": "1.69.0", + "version": "1.69.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json b/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json index a07f772fb0d6..5a4938cf1421 100644 --- a/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json +++ b/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/cx/apiv3beta1", - "version": "1.69.0", + "version": "1.69.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/discoveryengine/apiv1/snippet_metadata.google.cloud.discoveryengine.v1.json b/internal/generated/snippets/discoveryengine/apiv1/snippet_metadata.google.cloud.discoveryengine.v1.json index f87c7ccbaeaa..84ce74bcc675 100644 --- a/internal/generated/snippets/discoveryengine/apiv1/snippet_metadata.google.cloud.discoveryengine.v1.json +++ b/internal/generated/snippets/discoveryengine/apiv1/snippet_metadata.google.cloud.discoveryengine.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/discoveryengine/apiv1", - "version": "1.21.0", + "version": "1.21.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/discoveryengine/apiv1alpha/snippet_metadata.google.cloud.discoveryengine.v1alpha.json b/internal/generated/snippets/discoveryengine/apiv1alpha/snippet_metadata.google.cloud.discoveryengine.v1alpha.json index 96035d28ee87..9cfa6704b391 100644 --- a/internal/generated/snippets/discoveryengine/apiv1alpha/snippet_metadata.google.cloud.discoveryengine.v1alpha.json +++ b/internal/generated/snippets/discoveryengine/apiv1alpha/snippet_metadata.google.cloud.discoveryengine.v1alpha.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/discoveryengine/apiv1alpha", - "version": "1.21.0", + "version": "1.21.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/discoveryengine/apiv1beta/snippet_metadata.google.cloud.discoveryengine.v1beta.json b/internal/generated/snippets/discoveryengine/apiv1beta/snippet_metadata.google.cloud.discoveryengine.v1beta.json index f20bfc42f749..b995ef2093ad 100644 --- a/internal/generated/snippets/discoveryengine/apiv1beta/snippet_metadata.google.cloud.discoveryengine.v1beta.json +++ b/internal/generated/snippets/discoveryengine/apiv1beta/snippet_metadata.google.cloud.discoveryengine.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/discoveryengine/apiv1beta", - "version": "1.21.0", + "version": "1.21.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/documentai/apiv1/snippet_metadata.google.cloud.documentai.v1.json b/internal/generated/snippets/documentai/apiv1/snippet_metadata.google.cloud.documentai.v1.json index a5b05e5b1a05..eab6ee3eceb0 100644 --- a/internal/generated/snippets/documentai/apiv1/snippet_metadata.google.cloud.documentai.v1.json +++ b/internal/generated/snippets/documentai/apiv1/snippet_metadata.google.cloud.documentai.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/documentai/apiv1", - "version": "1.38.0", + "version": "1.38.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/documentai/apiv1beta3/snippet_metadata.google.cloud.documentai.v1beta3.json b/internal/generated/snippets/documentai/apiv1beta3/snippet_metadata.google.cloud.documentai.v1beta3.json index 13e88a4b4c85..eb258d66be59 100644 --- a/internal/generated/snippets/documentai/apiv1beta3/snippet_metadata.google.cloud.documentai.v1beta3.json +++ b/internal/generated/snippets/documentai/apiv1beta3/snippet_metadata.google.cloud.documentai.v1beta3.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/documentai/apiv1beta3", - "version": "1.38.0", + "version": "1.38.1", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/domains/apiv1beta1/snippet_metadata.google.cloud.domains.v1beta1.json b/internal/generated/snippets/domains/apiv1beta1/snippet_metadata.google.cloud.domains.v1beta1.json index 276ced771a00..a9db4254ad2e 100644 --- a/internal/generated/snippets/domains/apiv1beta1/snippet_metadata.google.cloud.domains.v1beta1.json +++ b/internal/generated/snippets/domains/apiv1beta1/snippet_metadata.google.cloud.domains.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/domains/apiv1beta1", - "version": "0.10.6", + "version": "0.10.7", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/edgecontainer/apiv1/snippet_metadata.google.cloud.edgecontainer.v1.json b/internal/generated/snippets/edgecontainer/apiv1/snippet_metadata.google.cloud.edgecontainer.v1.json index f36524a26b7f..52cf6fdd21be 100644 --- a/internal/generated/snippets/edgecontainer/apiv1/snippet_metadata.google.cloud.edgecontainer.v1.json +++ b/internal/generated/snippets/edgecontainer/apiv1/snippet_metadata.google.cloud.edgecontainer.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/edgecontainer/apiv1", - "version": "1.4.3", + "version": "1.4.4", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/edgenetwork/apiv1/snippet_metadata.google.cloud.edgenetwork.v1.json b/internal/generated/snippets/edgenetwork/apiv1/snippet_metadata.google.cloud.edgenetwork.v1.json index 059d99e3a9a5..0af0598fba31 100644 --- a/internal/generated/snippets/edgenetwork/apiv1/snippet_metadata.google.cloud.edgenetwork.v1.json +++ b/internal/generated/snippets/edgenetwork/apiv1/snippet_metadata.google.cloud.edgenetwork.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/edgenetwork/apiv1", - "version": "1.2.6", + "version": "1.2.7", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/essentialcontacts/apiv1/snippet_metadata.google.cloud.essentialcontacts.v1.json b/internal/generated/snippets/essentialcontacts/apiv1/snippet_metadata.google.cloud.essentialcontacts.v1.json index f31ae0d6434e..ee9b9613da3c 100644 --- a/internal/generated/snippets/essentialcontacts/apiv1/snippet_metadata.google.cloud.essentialcontacts.v1.json +++ b/internal/generated/snippets/essentialcontacts/apiv1/snippet_metadata.google.cloud.essentialcontacts.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/essentialcontacts/apiv1", - "version": "1.7.6", + "version": "1.7.7", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/eventarc/apiv1/snippet_metadata.google.cloud.eventarc.v1.json b/internal/generated/snippets/eventarc/apiv1/snippet_metadata.google.cloud.eventarc.v1.json index 369d8be226e0..0e9b4ef766d1 100644 --- a/internal/generated/snippets/eventarc/apiv1/snippet_metadata.google.cloud.eventarc.v1.json +++ b/internal/generated/snippets/eventarc/apiv1/snippet_metadata.google.cloud.eventarc.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/eventarc/apiv1", - "version": "1.15.5", + "version": "1.16.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/eventarc/publishing/apiv1/snippet_metadata.google.cloud.eventarc.publishing.v1.json b/internal/generated/snippets/eventarc/publishing/apiv1/snippet_metadata.google.cloud.eventarc.publishing.v1.json index fa9cb2a2ed71..7dc9e71633be 100644 --- a/internal/generated/snippets/eventarc/publishing/apiv1/snippet_metadata.google.cloud.eventarc.publishing.v1.json +++ b/internal/generated/snippets/eventarc/publishing/apiv1/snippet_metadata.google.cloud.eventarc.publishing.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/eventarc/publishing/apiv1", - "version": "1.15.5", + "version": "1.16.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/gkehub/apiv1beta1/snippet_metadata.google.cloud.gkehub.v1beta1.json b/internal/generated/snippets/gkehub/apiv1beta1/snippet_metadata.google.cloud.gkehub.v1beta1.json index 8a9137a4578f..0da10b0115b0 100644 --- a/internal/generated/snippets/gkehub/apiv1beta1/snippet_metadata.google.cloud.gkehub.v1beta1.json +++ b/internal/generated/snippets/gkehub/apiv1beta1/snippet_metadata.google.cloud.gkehub.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/gkehub/apiv1beta1", - "version": "0.15.6", + "version": "0.16.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/go.mod b/internal/generated/snippets/go.mod index 1d265882f5b3..a3faa0448c55 100644 --- a/internal/generated/snippets/go.mod +++ b/internal/generated/snippets/go.mod @@ -564,3 +564,5 @@ replace cloud.google.com/go/licensemanager => ../../../licensemanager replace cloud.google.com/go/geminidataanalytics => ../../../geminidataanalytics replace cloud.google.com/go/capacityplanner => ../../../capacityplanner + +replace cloud.google.com/go/locationfinder => ../../../locationfinder diff --git a/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/GetCloudLocation/main.go b/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/GetCloudLocation/main.go new file mode 100644 index 000000000000..b4eda8493b30 --- /dev/null +++ b/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/GetCloudLocation/main.go @@ -0,0 +1,53 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudlocationfinder_v1_generated_CloudLocationFinder_GetCloudLocation_sync] + +package main + +import ( + "context" + + locationfinder "cloud.google.com/go/locationfinder/apiv1" + locationfinderpb "cloud.google.com/go/locationfinder/apiv1/locationfinderpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationfinderpb.GetCloudLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/locationfinder/apiv1/locationfinderpb#GetCloudLocationRequest. + } + resp, err := c.GetCloudLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudlocationfinder_v1_generated_CloudLocationFinder_GetCloudLocation_sync] diff --git a/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/GetLocation/main.go b/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/GetLocation/main.go new file mode 100644 index 000000000000..c2a22c9670fb --- /dev/null +++ b/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/GetLocation/main.go @@ -0,0 +1,53 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudlocationfinder_v1_generated_CloudLocationFinder_GetLocation_sync] + +package main + +import ( + "context" + + locationfinder "cloud.google.com/go/locationfinder/apiv1" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudlocationfinder_v1_generated_CloudLocationFinder_GetLocation_sync] diff --git a/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/ListCloudLocations/main.go b/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/ListCloudLocations/main.go new file mode 100644 index 000000000000..c81c1d003371 --- /dev/null +++ b/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/ListCloudLocations/main.go @@ -0,0 +1,66 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudlocationfinder_v1_generated_CloudLocationFinder_ListCloudLocations_sync] + +package main + +import ( + "context" + + locationfinder "cloud.google.com/go/locationfinder/apiv1" + locationfinderpb "cloud.google.com/go/locationfinder/apiv1/locationfinderpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationfinderpb.ListCloudLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/locationfinder/apiv1/locationfinderpb#ListCloudLocationsRequest. + } + it := c.ListCloudLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationfinderpb.ListCloudLocationsResponse) + } +} + +// [END cloudlocationfinder_v1_generated_CloudLocationFinder_ListCloudLocations_sync] diff --git a/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/ListLocations/main.go b/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/ListLocations/main.go new file mode 100644 index 000000000000..0d426f3ac5cd --- /dev/null +++ b/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/ListLocations/main.go @@ -0,0 +1,66 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudlocationfinder_v1_generated_CloudLocationFinder_ListLocations_sync] + +package main + +import ( + "context" + + locationfinder "cloud.google.com/go/locationfinder/apiv1" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +// [END cloudlocationfinder_v1_generated_CloudLocationFinder_ListLocations_sync] diff --git a/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/SearchCloudLocations/main.go b/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/SearchCloudLocations/main.go new file mode 100644 index 000000000000..a77af818cca3 --- /dev/null +++ b/internal/generated/snippets/locationfinder/apiv1/CloudLocationFinderClient/SearchCloudLocations/main.go @@ -0,0 +1,66 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudlocationfinder_v1_generated_CloudLocationFinder_SearchCloudLocations_sync] + +package main + +import ( + "context" + + locationfinder "cloud.google.com/go/locationfinder/apiv1" + locationfinderpb "cloud.google.com/go/locationfinder/apiv1/locationfinderpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationfinderpb.SearchCloudLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/locationfinder/apiv1/locationfinderpb#SearchCloudLocationsRequest. + } + it := c.SearchCloudLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationfinderpb.SearchCloudLocationsResponse) + } +} + +// [END cloudlocationfinder_v1_generated_CloudLocationFinder_SearchCloudLocations_sync] diff --git a/internal/generated/snippets/locationfinder/apiv1/snippet_metadata.google.cloud.locationfinder.v1.json b/internal/generated/snippets/locationfinder/apiv1/snippet_metadata.google.cloud.locationfinder.v1.json new file mode 100644 index 000000000000..d67b7e4cb666 --- /dev/null +++ b/internal/generated/snippets/locationfinder/apiv1/snippet_metadata.google.cloud.locationfinder.v1.json @@ -0,0 +1,245 @@ +{ + "clientLibrary": { + "name": "cloud.google.com/go/locationfinder/apiv1", + "version": "0.0.0", + "language": "GO", + "apis": [ + { + "id": "google.cloud.locationfinder.v1", + "version": "v1" + } + ] + }, + "snippets": [ + { + "regionTag": "cloudlocationfinder_v1_generated_CloudLocationFinder_GetCloudLocation_sync", + "title": "cloudlocationfinder GetCloudLocation Sample", + "description": "GetCloudLocation retrieves a resource containing information about a cloud location.", + "file": "CloudLocationFinderClient/GetCloudLocation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetCloudLocation", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinderClient.GetCloudLocation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationfinderpb.GetCloudLocationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*locationfinderpb.CloudLocation", + "client": { + "shortName": "CloudLocationFinderClient", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinderClient" + }, + "method": { + "shortName": "GetCloudLocation", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinder.GetCloudLocation", + "service": { + "shortName": "CloudLocationFinder", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinder" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudlocationfinder_v1_generated_CloudLocationFinder_GetLocation_sync", + "title": "cloudlocationfinder GetLocation Sample", + "description": "GetLocation gets information about a location.", + "file": "CloudLocationFinderClient/GetLocation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetLocation", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinderClient.GetLocation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.GetLocationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*locationpb.Location", + "client": { + "shortName": "CloudLocationFinderClient", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinderClient" + }, + "method": { + "shortName": "GetLocation", + "fullName": "google.cloud.location.Locations.GetLocation", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudlocationfinder_v1_generated_CloudLocationFinder_ListCloudLocations_sync", + "title": "cloudlocationfinder ListCloudLocations Sample", + "description": "ListCloudLocations lists cloud locations under a given project and location.", + "file": "CloudLocationFinderClient/ListCloudLocations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListCloudLocations", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinderClient.ListCloudLocations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationfinderpb.ListCloudLocationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "CloudLocationIterator", + "client": { + "shortName": "CloudLocationFinderClient", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinderClient" + }, + "method": { + "shortName": "ListCloudLocations", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinder.ListCloudLocations", + "service": { + "shortName": "CloudLocationFinder", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinder" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudlocationfinder_v1_generated_CloudLocationFinder_ListLocations_sync", + "title": "cloudlocationfinder ListLocations Sample", + "description": "ListLocations lists information about the supported locations for this service.", + "file": "CloudLocationFinderClient/ListLocations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListLocations", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinderClient.ListLocations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.ListLocationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "LocationIterator", + "client": { + "shortName": "CloudLocationFinderClient", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinderClient" + }, + "method": { + "shortName": "ListLocations", + "fullName": "google.cloud.location.Locations.ListLocations", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudlocationfinder_v1_generated_CloudLocationFinder_SearchCloudLocations_sync", + "title": "cloudlocationfinder SearchCloudLocations Sample", + "description": "SearchCloudLocations searches for cloud locations from a given source location.", + "file": "CloudLocationFinderClient/SearchCloudLocations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "SearchCloudLocations", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinderClient.SearchCloudLocations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationfinderpb.SearchCloudLocationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "CloudLocationIterator", + "client": { + "shortName": "CloudLocationFinderClient", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinderClient" + }, + "method": { + "shortName": "SearchCloudLocations", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinder.SearchCloudLocations", + "service": { + "shortName": "CloudLocationFinder", + "fullName": "google.cloud.locationfinder.v1.CloudLocationFinder" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + } + ] +} \ No newline at end of file diff --git a/internal/generated/snippets/video/livestream/apiv1/Client/PreviewInput/main.go b/internal/generated/snippets/video/livestream/apiv1/Client/PreviewInput/main.go new file mode 100644 index 000000000000..a642be5963e8 --- /dev/null +++ b/internal/generated/snippets/video/livestream/apiv1/Client/PreviewInput/main.go @@ -0,0 +1,53 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START livestream_v1_generated_LivestreamService_PreviewInput_sync] + +package main + +import ( + "context" + + livestream "cloud.google.com/go/video/livestream/apiv1" + livestreampb "cloud.google.com/go/video/livestream/apiv1/livestreampb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := livestream.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &livestreampb.PreviewInputRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/video/livestream/apiv1/livestreampb#PreviewInputRequest. + } + resp, err := c.PreviewInput(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END livestream_v1_generated_LivestreamService_PreviewInput_sync] diff --git a/internal/generated/snippets/video/livestream/apiv1/Client/StartDistribution/main.go b/internal/generated/snippets/video/livestream/apiv1/Client/StartDistribution/main.go new file mode 100644 index 000000000000..f9d7a91860b7 --- /dev/null +++ b/internal/generated/snippets/video/livestream/apiv1/Client/StartDistribution/main.go @@ -0,0 +1,58 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START livestream_v1_generated_LivestreamService_StartDistribution_sync] + +package main + +import ( + "context" + + livestream "cloud.google.com/go/video/livestream/apiv1" + livestreampb "cloud.google.com/go/video/livestream/apiv1/livestreampb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := livestream.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &livestreampb.StartDistributionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/video/livestream/apiv1/livestreampb#StartDistributionRequest. + } + op, err := c.StartDistribution(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END livestream_v1_generated_LivestreamService_StartDistribution_sync] diff --git a/internal/generated/snippets/video/livestream/apiv1/Client/StopDistribution/main.go b/internal/generated/snippets/video/livestream/apiv1/Client/StopDistribution/main.go new file mode 100644 index 000000000000..d836342f63ae --- /dev/null +++ b/internal/generated/snippets/video/livestream/apiv1/Client/StopDistribution/main.go @@ -0,0 +1,58 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START livestream_v1_generated_LivestreamService_StopDistribution_sync] + +package main + +import ( + "context" + + livestream "cloud.google.com/go/video/livestream/apiv1" + livestreampb "cloud.google.com/go/video/livestream/apiv1/livestreampb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := livestream.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &livestreampb.StopDistributionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/video/livestream/apiv1/livestreampb#StopDistributionRequest. + } + op, err := c.StopDistribution(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END livestream_v1_generated_LivestreamService_StopDistribution_sync] diff --git a/internal/generated/snippets/video/livestream/apiv1/snippet_metadata.google.cloud.video.livestream.v1.json b/internal/generated/snippets/video/livestream/apiv1/snippet_metadata.google.cloud.video.livestream.v1.json index 8551d53828b7..095c187c40e7 100644 --- a/internal/generated/snippets/video/livestream/apiv1/snippet_metadata.google.cloud.video.livestream.v1.json +++ b/internal/generated/snippets/video/livestream/apiv1/snippet_metadata.google.cloud.video.livestream.v1.json @@ -1434,6 +1434,52 @@ } ] }, + { + "regionTag": "livestream_v1_generated_LivestreamService_PreviewInput_sync", + "title": "livestream PreviewInput Sample", + "description": "PreviewInput preview the streaming content of the specified input.", + "file": "Client/PreviewInput/main.go", + "language": "GO", + "clientMethod": { + "shortName": "PreviewInput", + "fullName": "google.cloud.video.livestream.v1.Client.PreviewInput", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "livestreampb.PreviewInputRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*livestreampb.PreviewInputResponse", + "client": { + "shortName": "Client", + "fullName": "google.cloud.video.livestream.v1.Client" + }, + "method": { + "shortName": "PreviewInput", + "fullName": "google.cloud.video.livestream.v1.LivestreamService.PreviewInput", + "service": { + "shortName": "LivestreamService", + "fullName": "google.cloud.video.livestream.v1.LivestreamService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, { "regionTag": "livestream_v1_generated_LivestreamService_StartChannel_sync", "title": "livestream StartChannel Sample", @@ -1480,6 +1526,52 @@ } ] }, + { + "regionTag": "livestream_v1_generated_LivestreamService_StartDistribution_sync", + "title": "livestream StartDistribution Sample", + "description": "StartDistribution starts distribution which delivers outputs to the destination indicated by\nthe Distribution configuration.", + "file": "Client/StartDistribution/main.go", + "language": "GO", + "clientMethod": { + "shortName": "StartDistribution", + "fullName": "google.cloud.video.livestream.v1.Client.StartDistribution", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "livestreampb.StartDistributionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "StartDistributionOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.video.livestream.v1.Client" + }, + "method": { + "shortName": "StartDistribution", + "fullName": "google.cloud.video.livestream.v1.LivestreamService.StartDistribution", + "service": { + "shortName": "LivestreamService", + "fullName": "google.cloud.video.livestream.v1.LivestreamService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, { "regionTag": "livestream_v1_generated_LivestreamService_StopChannel_sync", "title": "livestream StopChannel Sample", @@ -1526,6 +1618,52 @@ } ] }, + { + "regionTag": "livestream_v1_generated_LivestreamService_StopDistribution_sync", + "title": "livestream StopDistribution Sample", + "description": "StopDistribution stops the specified distribution.", + "file": "Client/StopDistribution/main.go", + "language": "GO", + "clientMethod": { + "shortName": "StopDistribution", + "fullName": "google.cloud.video.livestream.v1.Client.StopDistribution", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "livestreampb.StopDistributionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "StopDistributionOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.video.livestream.v1.Client" + }, + "method": { + "shortName": "StopDistribution", + "fullName": "google.cloud.video.livestream.v1.LivestreamService.StopDistribution", + "service": { + "shortName": "LivestreamService", + "fullName": "google.cloud.video.livestream.v1.LivestreamService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, { "regionTag": "livestream_v1_generated_LivestreamService_UpdateChannel_sync", "title": "livestream UpdateChannel Sample", diff --git a/locationfinder/CHANGES.md b/locationfinder/CHANGES.md new file mode 100644 index 000000000000..b671f0bbcdd2 --- /dev/null +++ b/locationfinder/CHANGES.md @@ -0,0 +1 @@ +# Changes diff --git a/locationfinder/README.md b/locationfinder/README.md new file mode 100644 index 000000000000..9ae7ebf6e66a --- /dev/null +++ b/locationfinder/README.md @@ -0,0 +1,55 @@ +# Cloud Location Finder API + +[![Go Reference](https://pkg.go.dev/badge/cloud.google.com/go/locationfinder.svg)](https://pkg.go.dev/cloud.google.com/go/locationfinder) + +Go Client Library for Cloud Location Finder API. + +## Install + +```bash +go get cloud.google.com/go/locationfinder +``` + +## Stability + +The stability of this module is indicated by SemVer. + +However, a `v1+` module may have breaking changes in two scenarios: + +* Packages with `alpha` or `beta` in the import path +* The GoDoc has an explicit stability disclaimer (for example, for an experimental feature). + +### Which package to use? + +Generated client library surfaces can be found in packages who's import path +ends in `.../apivXXX`. The `XXX` could be something like `1` or `2` in the case +of a stable service backend or may be like `1beta2` or `2beta` in the case of a +more experimental service backend. Because of this fact, a given module can have +multiple clients for different service backends. In these cases it is generally +recommend to use clients with stable service backends, with import suffixes like +`apiv1`, unless you need to use features that are only present in a beta backend +or there is not yet a stable backend available. + +## Google Cloud Samples + +To browse ready to use code samples check [Google Cloud Samples](https://cloud.google.com/docs/samples?l=go). + +## Go Version Support + +See the [Go Versions Supported](https://github.com/googleapis/google-cloud-go#go-versions-supported) +section in the root directory's README. + +## Authorization + +See the [Authorization](https://github.com/googleapis/google-cloud-go#authorization) +section in the root directory's README. + +## Contributing + +Contributions are welcome. Please, see the [CONTRIBUTING](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/main/CONTRIBUTING.md) +document for details. + +Please note that this project is released with a Contributor Code of Conduct. +By participating in this project you agree to abide by its terms. See +[Contributor Code of Conduct](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/main/CONTRIBUTING.md#contributor-code-of-conduct) +for more information. diff --git a/locationfinder/apiv1/auxiliary.go b/locationfinder/apiv1/auxiliary.go new file mode 100755 index 000000000000..a9f0999063ae --- /dev/null +++ b/locationfinder/apiv1/auxiliary.go @@ -0,0 +1,117 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package locationfinder + +import ( + locationfinderpb "cloud.google.com/go/locationfinder/apiv1/locationfinderpb" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +// CloudLocationIterator manages a stream of *locationfinderpb.CloudLocation. +type CloudLocationIterator struct { + items []*locationfinderpb.CloudLocation + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*locationfinderpb.CloudLocation, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *CloudLocationIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *CloudLocationIterator) Next() (*locationfinderpb.CloudLocation, error) { + var item *locationfinderpb.CloudLocation + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *CloudLocationIterator) bufLen() int { + return len(it.items) +} + +func (it *CloudLocationIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// LocationIterator manages a stream of *locationpb.Location. +type LocationIterator struct { + items []*locationpb.Location + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*locationpb.Location, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *LocationIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *LocationIterator) Next() (*locationpb.Location, error) { + var item *locationpb.Location + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *LocationIterator) bufLen() int { + return len(it.items) +} + +func (it *LocationIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} diff --git a/locationfinder/apiv1/auxiliary_go123.go b/locationfinder/apiv1/auxiliary_go123.go new file mode 100755 index 000000000000..dace4fe43a5e --- /dev/null +++ b/locationfinder/apiv1/auxiliary_go123.go @@ -0,0 +1,39 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +//go:build go1.23 + +package locationfinder + +import ( + "iter" + + locationfinderpb "cloud.google.com/go/locationfinder/apiv1/locationfinderpb" + "github.com/googleapis/gax-go/v2/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *CloudLocationIterator) All() iter.Seq2[*locationfinderpb.CloudLocation, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *LocationIterator) All() iter.Seq2[*locationpb.Location, error] { + return iterator.RangeAdapter(it.Next) +} diff --git a/locationfinder/apiv1/cloud_location_finder_client.go b/locationfinder/apiv1/cloud_location_finder_client.go new file mode 100755 index 000000000000..02e6bf6a6dfb --- /dev/null +++ b/locationfinder/apiv1/cloud_location_finder_client.go @@ -0,0 +1,895 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package locationfinder + +import ( + "context" + "fmt" + "log/slog" + "math" + "net/http" + "net/url" + "time" + + locationfinderpb "cloud.google.com/go/locationfinder/apiv1/locationfinderpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/iterator" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + httptransport "google.golang.org/api/transport/http" + locationpb "google.golang.org/genproto/googleapis/cloud/location" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" +) + +var newCloudLocationFinderClientHook clientHook + +// CloudLocationFinderCallOptions contains the retry settings for each method of CloudLocationFinderClient. +type CloudLocationFinderCallOptions struct { + ListCloudLocations []gax.CallOption + GetCloudLocation []gax.CallOption + SearchCloudLocations []gax.CallOption + GetLocation []gax.CallOption + ListLocations []gax.CallOption +} + +func defaultCloudLocationFinderGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("cloudlocationfinder.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("cloudlocationfinder.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("cloudlocationfinder.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudlocationfinder.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + internaloption.EnableNewAuthLibrary(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultCloudLocationFinderCallOptions() *CloudLocationFinderCallOptions { + return &CloudLocationFinderCallOptions{ + ListCloudLocations: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetCloudLocation: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + SearchCloudLocations: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + } +} + +func defaultCloudLocationFinderRESTCallOptions() *CloudLocationFinderCallOptions { + return &CloudLocationFinderCallOptions{ + ListCloudLocations: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetCloudLocation: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + SearchCloudLocations: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + } +} + +// internalCloudLocationFinderClient is an interface that defines the methods available from Cloud Location Finder API. +type internalCloudLocationFinderClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + ListCloudLocations(context.Context, *locationfinderpb.ListCloudLocationsRequest, ...gax.CallOption) *CloudLocationIterator + GetCloudLocation(context.Context, *locationfinderpb.GetCloudLocationRequest, ...gax.CallOption) (*locationfinderpb.CloudLocation, error) + SearchCloudLocations(context.Context, *locationfinderpb.SearchCloudLocationsRequest, ...gax.CallOption) *CloudLocationIterator + GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error) + ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator +} + +// CloudLocationFinderClient is a client for interacting with Cloud Location Finder API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// Service describing handlers for resources +type CloudLocationFinderClient struct { + // The internal transport-dependent client. + internalClient internalCloudLocationFinderClient + + // The call options for this service. + CallOptions *CloudLocationFinderCallOptions +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *CloudLocationFinderClient) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *CloudLocationFinderClient) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *CloudLocationFinderClient) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// ListCloudLocations lists cloud locations under a given project and location. +func (c *CloudLocationFinderClient) ListCloudLocations(ctx context.Context, req *locationfinderpb.ListCloudLocationsRequest, opts ...gax.CallOption) *CloudLocationIterator { + return c.internalClient.ListCloudLocations(ctx, req, opts...) +} + +// GetCloudLocation retrieves a resource containing information about a cloud location. +func (c *CloudLocationFinderClient) GetCloudLocation(ctx context.Context, req *locationfinderpb.GetCloudLocationRequest, opts ...gax.CallOption) (*locationfinderpb.CloudLocation, error) { + return c.internalClient.GetCloudLocation(ctx, req, opts...) +} + +// SearchCloudLocations searches for cloud locations from a given source location. +func (c *CloudLocationFinderClient) SearchCloudLocations(ctx context.Context, req *locationfinderpb.SearchCloudLocationsRequest, opts ...gax.CallOption) *CloudLocationIterator { + return c.internalClient.SearchCloudLocations(ctx, req, opts...) +} + +// GetLocation gets information about a location. +func (c *CloudLocationFinderClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + return c.internalClient.GetLocation(ctx, req, opts...) +} + +// ListLocations lists information about the supported locations for this service. +func (c *CloudLocationFinderClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + return c.internalClient.ListLocations(ctx, req, opts...) +} + +// cloudLocationFinderGRPCClient is a client for interacting with Cloud Location Finder API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type cloudLocationFinderGRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing CloudLocationFinderClient + CallOptions **CloudLocationFinderCallOptions + + // The gRPC API client. + cloudLocationFinderClient locationfinderpb.CloudLocationFinderClient + + locationsClient locationpb.LocationsClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string + + logger *slog.Logger +} + +// NewCloudLocationFinderClient creates a new cloud location finder client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// Service describing handlers for resources +func NewCloudLocationFinderClient(ctx context.Context, opts ...option.ClientOption) (*CloudLocationFinderClient, error) { + clientOpts := defaultCloudLocationFinderGRPCClientOptions() + if newCloudLocationFinderClientHook != nil { + hookOpts, err := newCloudLocationFinderClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := CloudLocationFinderClient{CallOptions: defaultCloudLocationFinderCallOptions()} + + c := &cloudLocationFinderGRPCClient{ + connPool: connPool, + cloudLocationFinderClient: locationfinderpb.NewCloudLocationFinderClient(connPool), + CallOptions: &client.CallOptions, + logger: internaloption.GetLogger(opts), + locationsClient: locationpb.NewLocationsClient(connPool), + } + c.setGoogleClientInfo() + + client.internalClient = c + + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *cloudLocationFinderGRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *cloudLocationFinderGRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version, "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *cloudLocationFinderGRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type cloudLocationFinderRESTClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing CloudLocationFinderClient + CallOptions **CloudLocationFinderCallOptions + + logger *slog.Logger +} + +// NewCloudLocationFinderRESTClient creates a new cloud location finder rest client. +// +// Service describing handlers for resources +func NewCloudLocationFinderRESTClient(ctx context.Context, opts ...option.ClientOption) (*CloudLocationFinderClient, error) { + clientOpts := append(defaultCloudLocationFinderRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultCloudLocationFinderRESTCallOptions() + c := &cloudLocationFinderRESTClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + logger: internaloption.GetLogger(opts), + } + c.setGoogleClientInfo() + + return &CloudLocationFinderClient{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultCloudLocationFinderRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://cloudlocationfinder.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://cloudlocationfinder.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://cloudlocationfinder.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudlocationfinder.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableNewAuthLibrary(), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *cloudLocationFinderRESTClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN", "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *cloudLocationFinderRESTClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *cloudLocationFinderRESTClient) Connection() *grpc.ClientConn { + return nil +} +func (c *cloudLocationFinderGRPCClient) ListCloudLocations(ctx context.Context, req *locationfinderpb.ListCloudLocationsRequest, opts ...gax.CallOption) *CloudLocationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListCloudLocations[0:len((*c.CallOptions).ListCloudLocations):len((*c.CallOptions).ListCloudLocations)], opts...) + it := &CloudLocationIterator{} + req = proto.Clone(req).(*locationfinderpb.ListCloudLocationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationfinderpb.CloudLocation, string, error) { + resp := &locationfinderpb.ListCloudLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.cloudLocationFinderClient.ListCloudLocations, req, settings.GRPC, c.logger, "ListCloudLocations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetCloudLocations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *cloudLocationFinderGRPCClient) GetCloudLocation(ctx context.Context, req *locationfinderpb.GetCloudLocationRequest, opts ...gax.CallOption) (*locationfinderpb.CloudLocation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetCloudLocation[0:len((*c.CallOptions).GetCloudLocation):len((*c.CallOptions).GetCloudLocation)], opts...) + var resp *locationfinderpb.CloudLocation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.cloudLocationFinderClient.GetCloudLocation, req, settings.GRPC, c.logger, "GetCloudLocation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *cloudLocationFinderGRPCClient) SearchCloudLocations(ctx context.Context, req *locationfinderpb.SearchCloudLocationsRequest, opts ...gax.CallOption) *CloudLocationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).SearchCloudLocations[0:len((*c.CallOptions).SearchCloudLocations):len((*c.CallOptions).SearchCloudLocations)], opts...) + it := &CloudLocationIterator{} + req = proto.Clone(req).(*locationfinderpb.SearchCloudLocationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationfinderpb.CloudLocation, string, error) { + resp := &locationfinderpb.SearchCloudLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.cloudLocationFinderClient.SearchCloudLocations, req, settings.GRPC, c.logger, "SearchCloudLocations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetCloudLocations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *cloudLocationFinderGRPCClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + var resp *locationpb.Location + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.GetLocation, req, settings.GRPC, c.logger, "GetLocation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *cloudLocationFinderGRPCClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListLocations[0:len((*c.CallOptions).ListLocations):len((*c.CallOptions).ListLocations)], opts...) + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.ListLocations, req, settings.GRPC, c.logger, "ListLocations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// ListCloudLocations lists cloud locations under a given project and location. +func (c *cloudLocationFinderRESTClient) ListCloudLocations(ctx context.Context, req *locationfinderpb.ListCloudLocationsRequest, opts ...gax.CallOption) *CloudLocationIterator { + it := &CloudLocationIterator{} + req = proto.Clone(req).(*locationfinderpb.ListCloudLocationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationfinderpb.CloudLocation, string, error) { + resp := &locationfinderpb.ListCloudLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/cloudLocations", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListCloudLocations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetCloudLocations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetCloudLocation retrieves a resource containing information about a cloud location. +func (c *cloudLocationFinderRESTClient) GetCloudLocation(ctx context.Context, req *locationfinderpb.GetCloudLocationRequest, opts ...gax.CallOption) (*locationfinderpb.CloudLocation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetCloudLocation[0:len((*c.CallOptions).GetCloudLocation):len((*c.CallOptions).GetCloudLocation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &locationfinderpb.CloudLocation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetCloudLocation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// SearchCloudLocations searches for cloud locations from a given source location. +func (c *cloudLocationFinderRESTClient) SearchCloudLocations(ctx context.Context, req *locationfinderpb.SearchCloudLocationsRequest, opts ...gax.CallOption) *CloudLocationIterator { + it := &CloudLocationIterator{} + req = proto.Clone(req).(*locationfinderpb.SearchCloudLocationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationfinderpb.CloudLocation, string, error) { + resp := &locationfinderpb.SearchCloudLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/cloudLocations:search", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + if req.GetQuery() != "" { + params.Add("query", fmt.Sprintf("%v", req.GetQuery())) + } + params.Add("sourceCloudLocation", fmt.Sprintf("%v", req.GetSourceCloudLocation())) + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "SearchCloudLocations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetCloudLocations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetLocation gets information about a location. +func (c *cloudLocationFinderRESTClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &locationpb.Location{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetLocation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListLocations lists information about the supported locations for this service. +func (c *cloudLocationFinderRESTClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/locations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListLocations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} diff --git a/locationfinder/apiv1/cloud_location_finder_client_example_go123_test.go b/locationfinder/apiv1/cloud_location_finder_client_example_go123_test.go new file mode 100644 index 000000000000..ec3fb1a772f4 --- /dev/null +++ b/locationfinder/apiv1/cloud_location_finder_client_example_go123_test.go @@ -0,0 +1,105 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +//go:build go1.23 + +package locationfinder_test + +import ( + "context" + + locationfinder "cloud.google.com/go/locationfinder/apiv1" + locationfinderpb "cloud.google.com/go/locationfinder/apiv1/locationfinderpb" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleCloudLocationFinderClient_ListCloudLocations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationfinderpb.ListCloudLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/locationfinder/apiv1/locationfinderpb#ListCloudLocationsRequest. + } + for resp, err := range c.ListCloudLocations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleCloudLocationFinderClient_SearchCloudLocations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationfinderpb.SearchCloudLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/locationfinder/apiv1/locationfinderpb#SearchCloudLocationsRequest. + } + for resp, err := range c.SearchCloudLocations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleCloudLocationFinderClient_ListLocations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + for resp, err := range c.ListLocations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} diff --git a/locationfinder/apiv1/cloud_location_finder_client_example_test.go b/locationfinder/apiv1/cloud_location_finder_client_example_test.go new file mode 100644 index 000000000000..29514f16da67 --- /dev/null +++ b/locationfinder/apiv1/cloud_location_finder_client_example_test.go @@ -0,0 +1,221 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package locationfinder_test + +import ( + "context" + + locationfinder "cloud.google.com/go/locationfinder/apiv1" + locationfinderpb "cloud.google.com/go/locationfinder/apiv1/locationfinderpb" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleNewCloudLocationFinderClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleNewCloudLocationFinderRESTClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderRESTClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleCloudLocationFinderClient_GetCloudLocation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationfinderpb.GetCloudLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/locationfinder/apiv1/locationfinderpb#GetCloudLocationRequest. + } + resp, err := c.GetCloudLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleCloudLocationFinderClient_ListCloudLocations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationfinderpb.ListCloudLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/locationfinder/apiv1/locationfinderpb#ListCloudLocationsRequest. + } + it := c.ListCloudLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationfinderpb.ListCloudLocationsResponse) + } +} + +func ExampleCloudLocationFinderClient_SearchCloudLocations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationfinderpb.SearchCloudLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/locationfinder/apiv1/locationfinderpb#SearchCloudLocationsRequest. + } + it := c.SearchCloudLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationfinderpb.SearchCloudLocationsResponse) + } +} + +func ExampleCloudLocationFinderClient_GetLocation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleCloudLocationFinderClient_ListLocations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := locationfinder.NewCloudLocationFinderClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} diff --git a/locationfinder/apiv1/doc.go b/locationfinder/apiv1/doc.go new file mode 100755 index 000000000000..63d9f701b129 --- /dev/null +++ b/locationfinder/apiv1/doc.go @@ -0,0 +1,83 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// Package locationfinder is an auto-generated package for the +// Cloud Location Finder API. +// +// NOTE: This package is in beta. It is not stable, and may be subject to changes. +// +// # General documentation +// +// For information that is relevant for all client libraries please reference +// https://pkg.go.dev/cloud.google.com/go#pkg-overview. Some information on this +// page includes: +// +// - [Authentication and Authorization] +// - [Timeouts and Cancellation] +// - [Testing against Client Libraries] +// - [Debugging Client Libraries] +// - [Inspecting errors] +// +// # Example usage +// +// To get started with this package, create a client. +// +// // go get cloud.google.com/go/locationfinder/apiv1@latest +// ctx := context.Background() +// // This snippet has been automatically generated and should be regarded as a code template only. +// // It will require modifications to work: +// // - It may require correct/in-range values for request initialization. +// // - It may require specifying regional endpoints when creating the service client as shown in: +// // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options +// c, err := locationfinder.NewCloudLocationFinderClient(ctx) +// if err != nil { +// // TODO: Handle error. +// } +// defer c.Close() +// +// The client will use your default application credentials. Clients should be reused instead of created as needed. +// The methods of Client are safe for concurrent use by multiple goroutines. +// The returned client must be Closed when it is done being used. +// +// # Using the Client +// +// The following is an example of making an API call with the newly created client, mentioned above. +// +// req := &locationfinderpb.GetCloudLocationRequest{ +// // TODO: Fill request struct fields. +// // See https://pkg.go.dev/cloud.google.com/go/locationfinder/apiv1/locationfinderpb#GetCloudLocationRequest. +// } +// resp, err := c.GetCloudLocation(ctx, req) +// if err != nil { +// // TODO: Handle error. +// } +// // TODO: Use resp. +// _ = resp +// +// # Use of Context +// +// The ctx passed to NewCloudLocationFinderClient is used for authentication requests and +// for creating the underlying connection, but is not used for subsequent calls. +// Individual methods on the client use the ctx given to them. +// +// To close the open connection, use the Close() method. +// +// [Authentication and Authorization]: https://pkg.go.dev/cloud.google.com/go#hdr-Authentication_and_Authorization +// [Timeouts and Cancellation]: https://pkg.go.dev/cloud.google.com/go#hdr-Timeouts_and_Cancellation +// [Testing against Client Libraries]: https://pkg.go.dev/cloud.google.com/go#hdr-Testing +// [Debugging Client Libraries]: https://pkg.go.dev/cloud.google.com/go#hdr-Debugging +// [Inspecting errors]: https://pkg.go.dev/cloud.google.com/go#hdr-Inspecting_errors +package locationfinder // import "cloud.google.com/go/locationfinder/apiv1" diff --git a/locationfinder/apiv1/gapic_metadata.json b/locationfinder/apiv1/gapic_metadata.json new file mode 100644 index 000000000000..39274d5c18a5 --- /dev/null +++ b/locationfinder/apiv1/gapic_metadata.json @@ -0,0 +1,73 @@ +{ + "schema": "1.0", + "comment": "This file maps proto services/RPCs to the corresponding library clients/methods.", + "language": "go", + "protoPackage": "google.cloud.locationfinder.v1", + "libraryPackage": "cloud.google.com/go/locationfinder/apiv1", + "services": { + "CloudLocationFinder": { + "clients": { + "grpc": { + "libraryClient": "CloudLocationFinderClient", + "rpcs": { + "GetCloudLocation": { + "methods": [ + "GetCloudLocation" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "ListCloudLocations": { + "methods": [ + "ListCloudLocations" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "SearchCloudLocations": { + "methods": [ + "SearchCloudLocations" + ] + } + } + }, + "rest": { + "libraryClient": "CloudLocationFinderClient", + "rpcs": { + "GetCloudLocation": { + "methods": [ + "GetCloudLocation" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "ListCloudLocations": { + "methods": [ + "ListCloudLocations" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "SearchCloudLocations": { + "methods": [ + "SearchCloudLocations" + ] + } + } + } + } + } + } +} diff --git a/locationfinder/apiv1/helpers.go b/locationfinder/apiv1/helpers.go new file mode 100755 index 000000000000..341bc190e587 --- /dev/null +++ b/locationfinder/apiv1/helpers.go @@ -0,0 +1,105 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package locationfinder + +import ( + "context" + "fmt" + "io" + "log/slog" + "net/http" + + "github.com/googleapis/gax-go/v2/internallog" + "github.com/googleapis/gax-go/v2/internallog/grpclog" + "google.golang.org/api/googleapi" + "google.golang.org/api/option" + "google.golang.org/grpc" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/runtime/protoimpl" +) + +const serviceName = "cloudlocationfinder.googleapis.com" + +var protoVersion = fmt.Sprintf("1.%d", protoimpl.MaxVersion) + +// For more information on implementing a client constructor hook, see +// https://github.com/googleapis/google-cloud-go/wiki/Customizing-constructors. +type clientHookParams struct{} +type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) + +var versionClient string + +func getVersionClient() string { + if versionClient == "" { + return "UNKNOWN" + } + return versionClient +} + +// DefaultAuthScopes reports the default set of authentication scopes to use with this package. +func DefaultAuthScopes() []string { + return []string{ + "https://www.googleapis.com/auth/cloud-platform", + } +} + +func executeHTTPRequestWithResponse(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) ([]byte, *http.Response, error) { + logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body)) + resp, err := client.Do(req) + if err != nil { + return nil, nil, err + } + defer resp.Body.Close() + buf, err := io.ReadAll(resp.Body) + if err != nil { + return nil, nil, err + } + logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, buf)) + if err = googleapi.CheckResponseWithBody(resp, buf); err != nil { + return nil, nil, err + } + return buf, resp, nil +} + +func executeHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) ([]byte, error) { + buf, _, err := executeHTTPRequestWithResponse(ctx, client, req, logger, body, rpc) + return buf, err +} + +func executeStreamingHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) (*http.Response, error) { + logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body)) + resp, err := client.Do(req) + if err != nil { + return nil, err + } + logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, nil)) + if err = googleapi.CheckResponse(resp); err != nil { + return nil, err + } + return resp, nil +} + +func executeRPC[I proto.Message, O proto.Message](ctx context.Context, fn func(context.Context, I, ...grpc.CallOption) (O, error), req I, opts []grpc.CallOption, logger *slog.Logger, rpc string) (O, error) { + var zero O + logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", grpclog.ProtoMessageRequest(ctx, req)) + resp, err := fn(ctx, req, opts...) + if err != nil { + return zero, err + } + logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", grpclog.ProtoMessageResponse(resp)) + return resp, err +} diff --git a/locationfinder/apiv1/locationfinderpb/cloud_location.pb.go b/locationfinder/apiv1/locationfinderpb/cloud_location.pb.go new file mode 100755 index 000000000000..0093cd37fb3c --- /dev/null +++ b/locationfinder/apiv1/locationfinderpb/cloud_location.pb.go @@ -0,0 +1,842 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v4.25.7 +// source: google/cloud/locationfinder/v1/cloud_location.proto + +package locationfinderpb + +import ( + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The type of the cloud provider. This enum lists all possible providers of +// cloud locations. +type CloudLocation_CloudProvider int32 + +const ( + // Unspecified type. + CloudLocation_CLOUD_PROVIDER_UNSPECIFIED CloudLocation_CloudProvider = 0 + // Cloud provider type for Google Cloud. + CloudLocation_CLOUD_PROVIDER_GCP CloudLocation_CloudProvider = 1 + // Cloud provider type for AWS. + CloudLocation_CLOUD_PROVIDER_AWS CloudLocation_CloudProvider = 2 + // Cloud provider type for Azure. + CloudLocation_CLOUD_PROVIDER_AZURE CloudLocation_CloudProvider = 3 + // Cloud provider type for OCI. + CloudLocation_CLOUD_PROVIDER_OCI CloudLocation_CloudProvider = 4 +) + +// Enum value maps for CloudLocation_CloudProvider. +var ( + CloudLocation_CloudProvider_name = map[int32]string{ + 0: "CLOUD_PROVIDER_UNSPECIFIED", + 1: "CLOUD_PROVIDER_GCP", + 2: "CLOUD_PROVIDER_AWS", + 3: "CLOUD_PROVIDER_AZURE", + 4: "CLOUD_PROVIDER_OCI", + } + CloudLocation_CloudProvider_value = map[string]int32{ + "CLOUD_PROVIDER_UNSPECIFIED": 0, + "CLOUD_PROVIDER_GCP": 1, + "CLOUD_PROVIDER_AWS": 2, + "CLOUD_PROVIDER_AZURE": 3, + "CLOUD_PROVIDER_OCI": 4, + } +) + +func (x CloudLocation_CloudProvider) Enum() *CloudLocation_CloudProvider { + p := new(CloudLocation_CloudProvider) + *p = x + return p +} + +func (x CloudLocation_CloudProvider) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CloudLocation_CloudProvider) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_locationfinder_v1_cloud_location_proto_enumTypes[0].Descriptor() +} + +func (CloudLocation_CloudProvider) Type() protoreflect.EnumType { + return &file_google_cloud_locationfinder_v1_cloud_location_proto_enumTypes[0] +} + +func (x CloudLocation_CloudProvider) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CloudLocation_CloudProvider.Descriptor instead. +func (CloudLocation_CloudProvider) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescGZIP(), []int{0, 0} +} + +// The type of the cloud location. This enum lists all possible categories of +// cloud locations. +type CloudLocation_CloudLocationType int32 + +const ( + // Unspecified type. + CloudLocation_CLOUD_LOCATION_TYPE_UNSPECIFIED CloudLocation_CloudLocationType = 0 + // CloudLocation type for region. + CloudLocation_CLOUD_LOCATION_TYPE_REGION CloudLocation_CloudLocationType = 1 + // CloudLocation type for zone. + CloudLocation_CLOUD_LOCATION_TYPE_ZONE CloudLocation_CloudLocationType = 2 + // CloudLocation type for region extension. + CloudLocation_CLOUD_LOCATION_TYPE_REGION_EXTENSION CloudLocation_CloudLocationType = 3 + // CloudLocation type for Google Distributed Cloud Connected Zone. + CloudLocation_CLOUD_LOCATION_TYPE_GDCC_ZONE CloudLocation_CloudLocationType = 4 +) + +// Enum value maps for CloudLocation_CloudLocationType. +var ( + CloudLocation_CloudLocationType_name = map[int32]string{ + 0: "CLOUD_LOCATION_TYPE_UNSPECIFIED", + 1: "CLOUD_LOCATION_TYPE_REGION", + 2: "CLOUD_LOCATION_TYPE_ZONE", + 3: "CLOUD_LOCATION_TYPE_REGION_EXTENSION", + 4: "CLOUD_LOCATION_TYPE_GDCC_ZONE", + } + CloudLocation_CloudLocationType_value = map[string]int32{ + "CLOUD_LOCATION_TYPE_UNSPECIFIED": 0, + "CLOUD_LOCATION_TYPE_REGION": 1, + "CLOUD_LOCATION_TYPE_ZONE": 2, + "CLOUD_LOCATION_TYPE_REGION_EXTENSION": 3, + "CLOUD_LOCATION_TYPE_GDCC_ZONE": 4, + } +) + +func (x CloudLocation_CloudLocationType) Enum() *CloudLocation_CloudLocationType { + p := new(CloudLocation_CloudLocationType) + *p = x + return p +} + +func (x CloudLocation_CloudLocationType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CloudLocation_CloudLocationType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_locationfinder_v1_cloud_location_proto_enumTypes[1].Descriptor() +} + +func (CloudLocation_CloudLocationType) Type() protoreflect.EnumType { + return &file_google_cloud_locationfinder_v1_cloud_location_proto_enumTypes[1] +} + +func (x CloudLocation_CloudLocationType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CloudLocation_CloudLocationType.Descriptor instead. +func (CloudLocation_CloudLocationType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescGZIP(), []int{0, 1} +} + +// Represents resource cloud locations. +type CloudLocation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identifier. Name of the cloud location. Unique name of the cloud location + // including project and location using the form: + // `projects/{project_id}/locations/{location}/cloudLocations/{cloud_location}` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. The containing cloud location in the strict nesting hierarchy. + // For example, the containing cloud location of a zone is a region. + ContainingCloudLocation string `protobuf:"bytes,2,opt,name=containing_cloud_location,json=containingCloudLocation,proto3" json:"containing_cloud_location,omitempty"` + // Optional. The human-readable name of the cloud location. Example: + // us-east-2, us-east1. + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Optional. The provider of the cloud location. Values can be Google Cloud or + // third-party providers, including AWS, Azure, or Oracle Cloud + // Infrastructure. + CloudProvider CloudLocation_CloudProvider `protobuf:"varint,4,opt,name=cloud_provider,json=cloudProvider,proto3,enum=google.cloud.locationfinder.v1.CloudLocation_CloudProvider" json:"cloud_provider,omitempty"` + // Optional. The two-letter ISO 3166-1 alpha-2 code of the cloud location. + // Examples: US, JP, KR. + TerritoryCode string `protobuf:"bytes,5,opt,name=territory_code,json=territoryCode,proto3" json:"territory_code,omitempty"` + // Optional. The type of the cloud location. + CloudLocationType CloudLocation_CloudLocationType `protobuf:"varint,6,opt,name=cloud_location_type,json=cloudLocationType,proto3,enum=google.cloud.locationfinder.v1.CloudLocation_CloudLocationType" json:"cloud_location_type,omitempty"` + // Optional. The carbon free energy percentage of the cloud location. This + // represents the average percentage of time customers' application will be + // running on carbon-free energy. See + // https://cloud.google.com/sustainability/region-carbon for more details. + // There is a difference between default value 0 and unset value. 0 means the + // carbon free energy percentage is 0%, while unset value means the carbon + // footprint data is not available. + CarbonFreeEnergyPercentage *float32 `protobuf:"fixed32,7,opt,name=carbon_free_energy_percentage,json=carbonFreeEnergyPercentage,proto3,oneof" json:"carbon_free_energy_percentage,omitempty"` +} + +func (x *CloudLocation) Reset() { + *x = CloudLocation{} + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CloudLocation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudLocation) ProtoMessage() {} + +func (x *CloudLocation) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloudLocation.ProtoReflect.Descriptor instead. +func (*CloudLocation) Descriptor() ([]byte, []int) { + return file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescGZIP(), []int{0} +} + +func (x *CloudLocation) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CloudLocation) GetContainingCloudLocation() string { + if x != nil { + return x.ContainingCloudLocation + } + return "" +} + +func (x *CloudLocation) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *CloudLocation) GetCloudProvider() CloudLocation_CloudProvider { + if x != nil { + return x.CloudProvider + } + return CloudLocation_CLOUD_PROVIDER_UNSPECIFIED +} + +func (x *CloudLocation) GetTerritoryCode() string { + if x != nil { + return x.TerritoryCode + } + return "" +} + +func (x *CloudLocation) GetCloudLocationType() CloudLocation_CloudLocationType { + if x != nil { + return x.CloudLocationType + } + return CloudLocation_CLOUD_LOCATION_TYPE_UNSPECIFIED +} + +func (x *CloudLocation) GetCarbonFreeEnergyPercentage() float32 { + if x != nil && x.CarbonFreeEnergyPercentage != nil { + return *x.CarbonFreeEnergyPercentage + } + return 0 +} + +// Message for requesting list of cloud locations.. +type ListCloudLocationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent, which owns this collection of cloud locations. + // Format: projects/{project}/locations/{location} + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The maximum number of cloud locations to return per page. The + // service might return fewer cloud locations than this value. If unspecified, + // server will pick an appropriate default. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A token identifying a page of results the server should return. + // Provide page token returned by a previous 'ListCloudLocations' call to + // retrieve the next page of results. When paginating, all other parameters + // provided to 'ListCloudLocations' must match the call that provided the page + // token. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. A filter expression that filters resources listed in the + // response. The expression is in the form of field=value. For example, + // 'cloud_location_type=CLOUD_LOCATION_TYPE_REGION'. Multiple filter queries + // are space-separated. For example, + // 'cloud_location_type=CLOUD_LOCATION_TYPE_REGION territory_code="US"' By + // default, each expression is an AND expression. However, you can include AND + // and OR expressions explicitly. + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListCloudLocationsRequest) Reset() { + *x = ListCloudLocationsRequest{} + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListCloudLocationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCloudLocationsRequest) ProtoMessage() {} + +func (x *ListCloudLocationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListCloudLocationsRequest.ProtoReflect.Descriptor instead. +func (*ListCloudLocationsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescGZIP(), []int{1} +} + +func (x *ListCloudLocationsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListCloudLocationsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListCloudLocationsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListCloudLocationsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// Message for response to listing cloud locations. +type ListCloudLocationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. List of cloud locations. + CloudLocations []*CloudLocation `protobuf:"bytes,1,rep,name=cloud_locations,json=cloudLocations,proto3" json:"cloud_locations,omitempty"` + // Output only. The continuation token, used to page through large result + // sets. Provide this value in a subsequent request as page_token in + // subsequent requests to retrieve the next page. If this field is not + // present, there are no subsequent results. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListCloudLocationsResponse) Reset() { + *x = ListCloudLocationsResponse{} + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListCloudLocationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCloudLocationsResponse) ProtoMessage() {} + +func (x *ListCloudLocationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListCloudLocationsResponse.ProtoReflect.Descriptor instead. +func (*ListCloudLocationsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescGZIP(), []int{2} +} + +func (x *ListCloudLocationsResponse) GetCloudLocations() []*CloudLocation { + if x != nil { + return x.CloudLocations + } + return nil +} + +func (x *ListCloudLocationsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Message for getting a cloud location. +type GetCloudLocationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Name of the resource. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetCloudLocationRequest) Reset() { + *x = GetCloudLocationRequest{} + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetCloudLocationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCloudLocationRequest) ProtoMessage() {} + +func (x *GetCloudLocationRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCloudLocationRequest.ProtoReflect.Descriptor instead. +func (*GetCloudLocationRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescGZIP(), []int{3} +} + +func (x *GetCloudLocationRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Message for searching cloud locations from a given source location. +type SearchCloudLocationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent, which owns this collection of cloud locations. + // Format: projects/{project}/locations/{location} + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The source cloud location to search from. + // Example search can be searching nearby cloud locations from the source + // cloud location by latency. + SourceCloudLocation string `protobuf:"bytes,2,opt,name=source_cloud_location,json=sourceCloudLocation,proto3" json:"source_cloud_location,omitempty"` + // Optional. The maximum number of cloud locations to return. The service + // might return fewer cloud locations than this value. If unspecified, server + // will pick an appropriate default. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A token identifying a page of results the server should return. + // Provide Page token returned by a previous 'ListCloudLocations' call to + // retrieve the next page of results. When paginating, all other parameters + // provided to 'ListCloudLocations' must match the call that provided the page + // token. + PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. The query string in search query syntax. While filter is used to + // filter the search results by attributes, query is used to specify the + // search requirements. + Query string `protobuf:"bytes,6,opt,name=query,proto3" json:"query,omitempty"` +} + +func (x *SearchCloudLocationsRequest) Reset() { + *x = SearchCloudLocationsRequest{} + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchCloudLocationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchCloudLocationsRequest) ProtoMessage() {} + +func (x *SearchCloudLocationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchCloudLocationsRequest.ProtoReflect.Descriptor instead. +func (*SearchCloudLocationsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescGZIP(), []int{4} +} + +func (x *SearchCloudLocationsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *SearchCloudLocationsRequest) GetSourceCloudLocation() string { + if x != nil { + return x.SourceCloudLocation + } + return "" +} + +func (x *SearchCloudLocationsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *SearchCloudLocationsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *SearchCloudLocationsRequest) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +// Message for response to searching cloud locations. +type SearchCloudLocationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. List of cloud locations. + CloudLocations []*CloudLocation `protobuf:"bytes,1,rep,name=cloud_locations,json=cloudLocations,proto3" json:"cloud_locations,omitempty"` + // Output only. The continuation token, used to page through large result + // sets. Provide this value in a subsequent request as page_token in + // subsequent requests to retrieve the next page. If this field is not + // present, there are no subsequent results. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *SearchCloudLocationsResponse) Reset() { + *x = SearchCloudLocationsResponse{} + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchCloudLocationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchCloudLocationsResponse) ProtoMessage() {} + +func (x *SearchCloudLocationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchCloudLocationsResponse.ProtoReflect.Descriptor instead. +func (*SearchCloudLocationsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescGZIP(), []int{5} +} + +func (x *SearchCloudLocationsResponse) GetCloudLocations() []*CloudLocation { + if x != nil { + return x.CloudLocations + } + return nil +} + +func (x *SearchCloudLocationsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +var File_google_cloud_locationfinder_v1_cloud_location_proto protoreflect.FileDescriptor + +var file_google_cloud_locationfinder_v1_cloud_location_proto_rawDesc = []byte{ + 0x0a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xbb, 0x08, 0x0a, 0x0d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x74, 0x0a, 0x19, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x38, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x32, 0x0a, 0x30, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x67, 0x0a, 0x0e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x0e, 0x74, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0d, 0x74, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x74, 0x0a, 0x13, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x1d, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, + 0x66, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x48, 0x00, 0x52, 0x1a, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x65, 0x45, + 0x6e, 0x65, 0x72, 0x67, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x88, + 0x01, 0x01, 0x22, 0x91, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x50, 0x52, + 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x50, 0x52, + 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x47, 0x43, 0x50, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, + 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x41, + 0x57, 0x53, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x50, 0x52, + 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, 0x16, + 0x0a, 0x12, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, + 0x5f, 0x4f, 0x43, 0x49, 0x10, 0x04, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, + 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x10, + 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x12, + 0x28, 0x0a, 0x24, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x58, + 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4c, 0x4f, + 0x55, 0x44, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x47, 0x44, 0x43, 0x43, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x3a, 0x9e, 0x01, 0xea, + 0x41, 0x9a, 0x01, 0x0a, 0x30, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2a, 0x0e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x0d, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x20, 0x0a, + 0x1e, 0x5f, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x6e, + 0x65, 0x72, 0x67, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, + 0xd0, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x38, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x32, 0x12, 0x30, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, + 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x22, 0xa6, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x5b, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, + 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x6e, 0x65, + 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x67, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x38, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, 0x0a, 0x30, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xbe, 0x02, 0x0a, 0x1b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x38, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, 0x12, 0x30, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x6c, 0x0a, 0x15, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x38, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, 0x0a, 0x30, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x13, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0xa8, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x42, 0xec, 0x01, 0x0a, 0x22, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x12, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x67, 0x6f, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x70, 0x62, 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x70, 0x62, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x46, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1e, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x46, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x21, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescOnce sync.Once + file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescData = file_google_cloud_locationfinder_v1_cloud_location_proto_rawDesc +) + +func file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescGZIP() []byte { + file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescOnce.Do(func() { + file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescData) + }) + return file_google_cloud_locationfinder_v1_cloud_location_proto_rawDescData +} + +var file_google_cloud_locationfinder_v1_cloud_location_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_google_cloud_locationfinder_v1_cloud_location_proto_goTypes = []any{ + (CloudLocation_CloudProvider)(0), // 0: google.cloud.locationfinder.v1.CloudLocation.CloudProvider + (CloudLocation_CloudLocationType)(0), // 1: google.cloud.locationfinder.v1.CloudLocation.CloudLocationType + (*CloudLocation)(nil), // 2: google.cloud.locationfinder.v1.CloudLocation + (*ListCloudLocationsRequest)(nil), // 3: google.cloud.locationfinder.v1.ListCloudLocationsRequest + (*ListCloudLocationsResponse)(nil), // 4: google.cloud.locationfinder.v1.ListCloudLocationsResponse + (*GetCloudLocationRequest)(nil), // 5: google.cloud.locationfinder.v1.GetCloudLocationRequest + (*SearchCloudLocationsRequest)(nil), // 6: google.cloud.locationfinder.v1.SearchCloudLocationsRequest + (*SearchCloudLocationsResponse)(nil), // 7: google.cloud.locationfinder.v1.SearchCloudLocationsResponse +} +var file_google_cloud_locationfinder_v1_cloud_location_proto_depIdxs = []int32{ + 0, // 0: google.cloud.locationfinder.v1.CloudLocation.cloud_provider:type_name -> google.cloud.locationfinder.v1.CloudLocation.CloudProvider + 1, // 1: google.cloud.locationfinder.v1.CloudLocation.cloud_location_type:type_name -> google.cloud.locationfinder.v1.CloudLocation.CloudLocationType + 2, // 2: google.cloud.locationfinder.v1.ListCloudLocationsResponse.cloud_locations:type_name -> google.cloud.locationfinder.v1.CloudLocation + 2, // 3: google.cloud.locationfinder.v1.SearchCloudLocationsResponse.cloud_locations:type_name -> google.cloud.locationfinder.v1.CloudLocation + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_google_cloud_locationfinder_v1_cloud_location_proto_init() } +func file_google_cloud_locationfinder_v1_cloud_location_proto_init() { + if File_google_cloud_locationfinder_v1_cloud_location_proto != nil { + return + } + file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes[0].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_locationfinder_v1_cloud_location_proto_rawDesc, + NumEnums: 2, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_google_cloud_locationfinder_v1_cloud_location_proto_goTypes, + DependencyIndexes: file_google_cloud_locationfinder_v1_cloud_location_proto_depIdxs, + EnumInfos: file_google_cloud_locationfinder_v1_cloud_location_proto_enumTypes, + MessageInfos: file_google_cloud_locationfinder_v1_cloud_location_proto_msgTypes, + }.Build() + File_google_cloud_locationfinder_v1_cloud_location_proto = out.File + file_google_cloud_locationfinder_v1_cloud_location_proto_rawDesc = nil + file_google_cloud_locationfinder_v1_cloud_location_proto_goTypes = nil + file_google_cloud_locationfinder_v1_cloud_location_proto_depIdxs = nil +} diff --git a/locationfinder/apiv1/locationfinderpb/service.pb.go b/locationfinder/apiv1/locationfinderpb/service.pb.go new file mode 100755 index 000000000000..27aee01d402c --- /dev/null +++ b/locationfinder/apiv1/locationfinderpb/service.pb.go @@ -0,0 +1,324 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v4.25.7 +// source: google/cloud/locationfinder/v1/service.proto + +package locationfinderpb + +import ( + context "context" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var File_google_cloud_locationfinder_v1_service_proto protoreflect.FileDescriptor + +var file_google_cloud_locationfinder_v1_service_proto_rawDesc = []byte{ + 0x0a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2f, 0x76, 0x31, + 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xfc, 0x05, 0x0a, 0x13, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x12, 0xd0, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x43, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x34, 0x12, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xbd, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x41, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x34, 0x12, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf9, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0xda, 0x41, 0x22, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x1a, 0x56, 0xca, 0x41, 0x22, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xe6, 0x01, 0x0a, 0x22, 0x63, 0x6f, + 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x4a, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x70, 0x62, 0x3b, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x70, 0x62, 0xaa, 0x02, 0x1e, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1e, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, + 0x21, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x3a, + 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_google_cloud_locationfinder_v1_service_proto_goTypes = []any{ + (*ListCloudLocationsRequest)(nil), // 0: google.cloud.locationfinder.v1.ListCloudLocationsRequest + (*GetCloudLocationRequest)(nil), // 1: google.cloud.locationfinder.v1.GetCloudLocationRequest + (*SearchCloudLocationsRequest)(nil), // 2: google.cloud.locationfinder.v1.SearchCloudLocationsRequest + (*ListCloudLocationsResponse)(nil), // 3: google.cloud.locationfinder.v1.ListCloudLocationsResponse + (*CloudLocation)(nil), // 4: google.cloud.locationfinder.v1.CloudLocation + (*SearchCloudLocationsResponse)(nil), // 5: google.cloud.locationfinder.v1.SearchCloudLocationsResponse +} +var file_google_cloud_locationfinder_v1_service_proto_depIdxs = []int32{ + 0, // 0: google.cloud.locationfinder.v1.CloudLocationFinder.ListCloudLocations:input_type -> google.cloud.locationfinder.v1.ListCloudLocationsRequest + 1, // 1: google.cloud.locationfinder.v1.CloudLocationFinder.GetCloudLocation:input_type -> google.cloud.locationfinder.v1.GetCloudLocationRequest + 2, // 2: google.cloud.locationfinder.v1.CloudLocationFinder.SearchCloudLocations:input_type -> google.cloud.locationfinder.v1.SearchCloudLocationsRequest + 3, // 3: google.cloud.locationfinder.v1.CloudLocationFinder.ListCloudLocations:output_type -> google.cloud.locationfinder.v1.ListCloudLocationsResponse + 4, // 4: google.cloud.locationfinder.v1.CloudLocationFinder.GetCloudLocation:output_type -> google.cloud.locationfinder.v1.CloudLocation + 5, // 5: google.cloud.locationfinder.v1.CloudLocationFinder.SearchCloudLocations:output_type -> google.cloud.locationfinder.v1.SearchCloudLocationsResponse + 3, // [3:6] is the sub-list for method output_type + 0, // [0:3] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_google_cloud_locationfinder_v1_service_proto_init() } +func file_google_cloud_locationfinder_v1_service_proto_init() { + if File_google_cloud_locationfinder_v1_service_proto != nil { + return + } + file_google_cloud_locationfinder_v1_cloud_location_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_locationfinder_v1_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_google_cloud_locationfinder_v1_service_proto_goTypes, + DependencyIndexes: file_google_cloud_locationfinder_v1_service_proto_depIdxs, + }.Build() + File_google_cloud_locationfinder_v1_service_proto = out.File + file_google_cloud_locationfinder_v1_service_proto_rawDesc = nil + file_google_cloud_locationfinder_v1_service_proto_goTypes = nil + file_google_cloud_locationfinder_v1_service_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// CloudLocationFinderClient is the client API for CloudLocationFinder service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type CloudLocationFinderClient interface { + // Lists cloud locations under a given project and location. + ListCloudLocations(ctx context.Context, in *ListCloudLocationsRequest, opts ...grpc.CallOption) (*ListCloudLocationsResponse, error) + // Retrieves a resource containing information about a cloud location. + GetCloudLocation(ctx context.Context, in *GetCloudLocationRequest, opts ...grpc.CallOption) (*CloudLocation, error) + // Searches for cloud locations from a given source location. + SearchCloudLocations(ctx context.Context, in *SearchCloudLocationsRequest, opts ...grpc.CallOption) (*SearchCloudLocationsResponse, error) +} + +type cloudLocationFinderClient struct { + cc grpc.ClientConnInterface +} + +func NewCloudLocationFinderClient(cc grpc.ClientConnInterface) CloudLocationFinderClient { + return &cloudLocationFinderClient{cc} +} + +func (c *cloudLocationFinderClient) ListCloudLocations(ctx context.Context, in *ListCloudLocationsRequest, opts ...grpc.CallOption) (*ListCloudLocationsResponse, error) { + out := new(ListCloudLocationsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.locationfinder.v1.CloudLocationFinder/ListCloudLocations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cloudLocationFinderClient) GetCloudLocation(ctx context.Context, in *GetCloudLocationRequest, opts ...grpc.CallOption) (*CloudLocation, error) { + out := new(CloudLocation) + err := c.cc.Invoke(ctx, "/google.cloud.locationfinder.v1.CloudLocationFinder/GetCloudLocation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cloudLocationFinderClient) SearchCloudLocations(ctx context.Context, in *SearchCloudLocationsRequest, opts ...grpc.CallOption) (*SearchCloudLocationsResponse, error) { + out := new(SearchCloudLocationsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.locationfinder.v1.CloudLocationFinder/SearchCloudLocations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// CloudLocationFinderServer is the server API for CloudLocationFinder service. +type CloudLocationFinderServer interface { + // Lists cloud locations under a given project and location. + ListCloudLocations(context.Context, *ListCloudLocationsRequest) (*ListCloudLocationsResponse, error) + // Retrieves a resource containing information about a cloud location. + GetCloudLocation(context.Context, *GetCloudLocationRequest) (*CloudLocation, error) + // Searches for cloud locations from a given source location. + SearchCloudLocations(context.Context, *SearchCloudLocationsRequest) (*SearchCloudLocationsResponse, error) +} + +// UnimplementedCloudLocationFinderServer can be embedded to have forward compatible implementations. +type UnimplementedCloudLocationFinderServer struct { +} + +func (*UnimplementedCloudLocationFinderServer) ListCloudLocations(context.Context, *ListCloudLocationsRequest) (*ListCloudLocationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCloudLocations not implemented") +} +func (*UnimplementedCloudLocationFinderServer) GetCloudLocation(context.Context, *GetCloudLocationRequest) (*CloudLocation, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCloudLocation not implemented") +} +func (*UnimplementedCloudLocationFinderServer) SearchCloudLocations(context.Context, *SearchCloudLocationsRequest) (*SearchCloudLocationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchCloudLocations not implemented") +} + +func RegisterCloudLocationFinderServer(s *grpc.Server, srv CloudLocationFinderServer) { + s.RegisterService(&_CloudLocationFinder_serviceDesc, srv) +} + +func _CloudLocationFinder_ListCloudLocations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListCloudLocationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CloudLocationFinderServer).ListCloudLocations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.locationfinder.v1.CloudLocationFinder/ListCloudLocations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CloudLocationFinderServer).ListCloudLocations(ctx, req.(*ListCloudLocationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CloudLocationFinder_GetCloudLocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCloudLocationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CloudLocationFinderServer).GetCloudLocation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.locationfinder.v1.CloudLocationFinder/GetCloudLocation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CloudLocationFinderServer).GetCloudLocation(ctx, req.(*GetCloudLocationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CloudLocationFinder_SearchCloudLocations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchCloudLocationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CloudLocationFinderServer).SearchCloudLocations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.locationfinder.v1.CloudLocationFinder/SearchCloudLocations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CloudLocationFinderServer).SearchCloudLocations(ctx, req.(*SearchCloudLocationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _CloudLocationFinder_serviceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.locationfinder.v1.CloudLocationFinder", + HandlerType: (*CloudLocationFinderServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListCloudLocations", + Handler: _CloudLocationFinder_ListCloudLocations_Handler, + }, + { + MethodName: "GetCloudLocation", + Handler: _CloudLocationFinder_GetCloudLocation_Handler, + }, + { + MethodName: "SearchCloudLocations", + Handler: _CloudLocationFinder_SearchCloudLocations_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/cloud/locationfinder/v1/service.proto", +} diff --git a/locationfinder/apiv1/version.go b/locationfinder/apiv1/version.go new file mode 100644 index 000000000000..6cdaa039d0bd --- /dev/null +++ b/locationfinder/apiv1/version.go @@ -0,0 +1,23 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by gapicgen. DO NOT EDIT. + +package locationfinder + +import "cloud.google.com/go/locationfinder/internal" + +func init() { + versionClient = internal.Version +} diff --git a/locationfinder/go.mod b/locationfinder/go.mod new file mode 100644 index 000000000000..279079ea34e9 --- /dev/null +++ b/locationfinder/go.mod @@ -0,0 +1,37 @@ +module cloud.google.com/go/locationfinder + +go 1.24.0 + +require ( + github.com/googleapis/gax-go/v2 v2.15.0 + google.golang.org/api v0.249.0 + google.golang.org/genproto v0.0.0-20250908214217-97024824d090 + google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 + google.golang.org/grpc v1.75.1 + google.golang.org/protobuf v1.36.9 +) + +require ( + cloud.google.com/go/auth v0.16.5 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect + cloud.google.com/go/compute/metadata v0.8.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/google/s2a-go v0.1.9 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.28.0 // indirect + golang.org/x/time v0.12.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 // indirect +) diff --git a/locationfinder/go.sum b/locationfinder/go.sum new file mode 100644 index 000000000000..d2d60a9dd2b9 --- /dev/null +++ b/locationfinder/go.sum @@ -0,0 +1,77 @@ +cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= +cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= +cloud.google.com/go/compute/metadata v0.8.0 h1:HxMRIbao8w17ZX6wBnjhcDkW6lTFpgcaobyVfZWqRLA= +cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= +github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= +github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/api v0.249.0 h1:0VrsWAKzIZi058aeq+I86uIXbNhm9GxSHpbmZ92a38w= +google.golang.org/api v0.249.0/go.mod h1:dGk9qyI0UYPwO/cjt2q06LG/EhUpwZGdAbYF14wHHrQ= +google.golang.org/genproto v0.0.0-20250908214217-97024824d090 h1:ywCL7vA2n3vVHyf+bx1ZV/knaTPRI8GIeKY0MEhEeOc= +google.golang.org/genproto v0.0.0-20250908214217-97024824d090/go.mod h1:zwJI9HzbJJlw2KXy0wX+lmT2JuZoaKK9JC4ppqmxxjk= +google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 h1:d8Nakh1G+ur7+P3GcMjpRDEkoLUcLW2iU92XVqR+XMQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090/go.mod h1:U8EXRNSd8sUYyDfs/It7KVWodQr+Hf9xtxyxWudSwEw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 h1:pmJpJEvT846VzausCQ5d7KreSROcDqmO388w5YbnltA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1/go.mod h1:GmFNa4BdJZ2a8G+wCe9Bg3wwThLrJun751XstdJt5Og= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/locationfinder/internal/version.go b/locationfinder/internal/version.go new file mode 100644 index 000000000000..04ec61c29392 --- /dev/null +++ b/locationfinder/internal/version.go @@ -0,0 +1,20 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by gapicgen. DO NOT EDIT. + +package internal + +// Version is the current tagged release of the library. +const Version = "0.0.0" diff --git a/release-please-config-yoshi-submodules.json b/release-please-config-yoshi-submodules.json index b278f4d736bf..a0b13db0253b 100644 --- a/release-please-config-yoshi-submodules.json +++ b/release-please-config-yoshi-submodules.json @@ -258,6 +258,9 @@ "lifesciences": { "component": "lifesciences" }, + "locationfinder": { + "component": "locationfinder" + }, "longrunning": { "component": "longrunning" }, diff --git a/video/livestream/apiv1/auxiliary.go b/video/livestream/apiv1/auxiliary.go index 2ec08123bb73..6efe1a950362 100755 --- a/video/livestream/apiv1/auxiliary.go +++ b/video/livestream/apiv1/auxiliary.go @@ -677,6 +677,70 @@ func (op *StartChannelOperation) Name() string { return op.lro.Name() } +// StartDistributionOperation manages a long-running operation from StartDistribution. +type StartDistributionOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *StartDistributionOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*livestreampb.ChannelOperationResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp livestreampb.ChannelOperationResponse + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *StartDistributionOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*livestreampb.ChannelOperationResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp livestreampb.ChannelOperationResponse + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *StartDistributionOperation) Metadata() (*livestreampb.OperationMetadata, error) { + var meta livestreampb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *StartDistributionOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *StartDistributionOperation) Name() string { + return op.lro.Name() +} + // StopChannelOperation manages a long-running operation from StopChannel. type StopChannelOperation struct { lro *longrunning.Operation @@ -741,6 +805,70 @@ func (op *StopChannelOperation) Name() string { return op.lro.Name() } +// StopDistributionOperation manages a long-running operation from StopDistribution. +type StopDistributionOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *StopDistributionOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*livestreampb.ChannelOperationResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp livestreampb.ChannelOperationResponse + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *StopDistributionOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*livestreampb.ChannelOperationResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp livestreampb.ChannelOperationResponse + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *StopDistributionOperation) Metadata() (*livestreampb.OperationMetadata, error) { + var meta livestreampb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *StopDistributionOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *StopDistributionOperation) Name() string { + return op.lro.Name() +} + // UpdateChannelOperation manages a long-running operation from UpdateChannel. type UpdateChannelOperation struct { lro *longrunning.Operation diff --git a/video/livestream/apiv1/gapic_metadata.json b/video/livestream/apiv1/gapic_metadata.json index 0e89dc823dfd..62fa4eb5f474 100644 --- a/video/livestream/apiv1/gapic_metadata.json +++ b/video/livestream/apiv1/gapic_metadata.json @@ -165,16 +165,31 @@ "ListOperations" ] }, + "PreviewInput": { + "methods": [ + "PreviewInput" + ] + }, "StartChannel": { "methods": [ "StartChannel" ] }, + "StartDistribution": { + "methods": [ + "StartDistribution" + ] + }, "StopChannel": { "methods": [ "StopChannel" ] }, + "StopDistribution": { + "methods": [ + "StopDistribution" + ] + }, "UpdateChannel": { "methods": [ "UpdateChannel" @@ -355,16 +370,31 @@ "ListOperations" ] }, + "PreviewInput": { + "methods": [ + "PreviewInput" + ] + }, "StartChannel": { "methods": [ "StartChannel" ] }, + "StartDistribution": { + "methods": [ + "StartDistribution" + ] + }, "StopChannel": { "methods": [ "StopChannel" ] }, + "StopDistribution": { + "methods": [ + "StopDistribution" + ] + }, "UpdateChannel": { "methods": [ "UpdateChannel" diff --git a/video/livestream/apiv1/livestream_client.go b/video/livestream/apiv1/livestream_client.go index 4710110f1804..84b71cac5962 100755 --- a/video/livestream/apiv1/livestream_client.go +++ b/video/livestream/apiv1/livestream_client.go @@ -47,43 +47,46 @@ var newClientHook clientHook // CallOptions contains the retry settings for each method of Client. type CallOptions struct { - CreateChannel []gax.CallOption - ListChannels []gax.CallOption - GetChannel []gax.CallOption - DeleteChannel []gax.CallOption - UpdateChannel []gax.CallOption - StartChannel []gax.CallOption - StopChannel []gax.CallOption - CreateInput []gax.CallOption - ListInputs []gax.CallOption - GetInput []gax.CallOption - DeleteInput []gax.CallOption - UpdateInput []gax.CallOption - CreateEvent []gax.CallOption - ListEvents []gax.CallOption - GetEvent []gax.CallOption - DeleteEvent []gax.CallOption - ListClips []gax.CallOption - GetClip []gax.CallOption - CreateClip []gax.CallOption - DeleteClip []gax.CallOption - CreateDvrSession []gax.CallOption - ListDvrSessions []gax.CallOption - GetDvrSession []gax.CallOption - DeleteDvrSession []gax.CallOption - UpdateDvrSession []gax.CallOption - CreateAsset []gax.CallOption - DeleteAsset []gax.CallOption - GetAsset []gax.CallOption - ListAssets []gax.CallOption - GetPool []gax.CallOption - UpdatePool []gax.CallOption - GetLocation []gax.CallOption - ListLocations []gax.CallOption - CancelOperation []gax.CallOption - DeleteOperation []gax.CallOption - GetOperation []gax.CallOption - ListOperations []gax.CallOption + CreateChannel []gax.CallOption + ListChannels []gax.CallOption + GetChannel []gax.CallOption + DeleteChannel []gax.CallOption + UpdateChannel []gax.CallOption + StartChannel []gax.CallOption + StopChannel []gax.CallOption + StartDistribution []gax.CallOption + StopDistribution []gax.CallOption + CreateInput []gax.CallOption + ListInputs []gax.CallOption + GetInput []gax.CallOption + DeleteInput []gax.CallOption + UpdateInput []gax.CallOption + PreviewInput []gax.CallOption + CreateEvent []gax.CallOption + ListEvents []gax.CallOption + GetEvent []gax.CallOption + DeleteEvent []gax.CallOption + ListClips []gax.CallOption + GetClip []gax.CallOption + CreateClip []gax.CallOption + DeleteClip []gax.CallOption + CreateDvrSession []gax.CallOption + ListDvrSessions []gax.CallOption + GetDvrSession []gax.CallOption + DeleteDvrSession []gax.CallOption + UpdateDvrSession []gax.CallOption + CreateAsset []gax.CallOption + DeleteAsset []gax.CallOption + GetAsset []gax.CallOption + ListAssets []gax.CallOption + GetPool []gax.CallOption + UpdatePool []gax.CallOption + GetLocation []gax.CallOption + ListLocations []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption } func defaultGRPCClientOptions() []option.ClientOption { @@ -142,6 +145,12 @@ func defaultCallOptions() *CallOptions { StopChannel: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), }, + StartDistribution: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + StopDistribution: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, CreateInput: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), }, @@ -175,6 +184,9 @@ func defaultCallOptions() *CallOptions { UpdateInput: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), }, + PreviewInput: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, CreateEvent: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), }, @@ -229,15 +241,51 @@ func defaultCallOptions() *CallOptions { }) }), }, - CreateClip: []gax.CallOption{}, - DeleteClip: []gax.CallOption{}, - CreateDvrSession: []gax.CallOption{}, - ListDvrSessions: []gax.CallOption{}, - GetDvrSession: []gax.CallOption{}, - DeleteDvrSession: []gax.CallOption{}, - UpdateDvrSession: []gax.CallOption{}, - CreateAsset: []gax.CallOption{}, - DeleteAsset: []gax.CallOption{}, + CreateClip: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + DeleteClip: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + CreateDvrSession: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + ListDvrSessions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetDvrSession: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + DeleteDvrSession: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + UpdateDvrSession: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + CreateAsset: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + DeleteAsset: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, GetAsset: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { @@ -274,7 +322,9 @@ func defaultCallOptions() *CallOptions { }) }), }, - UpdatePool: []gax.CallOption{}, + UpdatePool: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, GetLocation: []gax.CallOption{}, ListLocations: []gax.CallOption{}, CancelOperation: []gax.CallOption{}, @@ -323,6 +373,12 @@ func defaultRESTCallOptions() *CallOptions { StopChannel: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), }, + StartDistribution: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + StopDistribution: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, CreateInput: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), }, @@ -354,6 +410,9 @@ func defaultRESTCallOptions() *CallOptions { UpdateInput: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), }, + PreviewInput: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, CreateEvent: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), }, @@ -404,15 +463,49 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - CreateClip: []gax.CallOption{}, - DeleteClip: []gax.CallOption{}, - CreateDvrSession: []gax.CallOption{}, - ListDvrSessions: []gax.CallOption{}, - GetDvrSession: []gax.CallOption{}, - DeleteDvrSession: []gax.CallOption{}, - UpdateDvrSession: []gax.CallOption{}, - CreateAsset: []gax.CallOption{}, - DeleteAsset: []gax.CallOption{}, + CreateClip: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + DeleteClip: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + CreateDvrSession: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + ListDvrSessions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetDvrSession: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeleteDvrSession: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + UpdateDvrSession: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + CreateAsset: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + DeleteAsset: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, GetAsset: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { @@ -446,7 +539,9 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - UpdatePool: []gax.CallOption{}, + UpdatePool: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, GetLocation: []gax.CallOption{}, ListLocations: []gax.CallOption{}, CancelOperation: []gax.CallOption{}, @@ -473,6 +568,10 @@ type internalClient interface { StartChannelOperation(name string) *StartChannelOperation StopChannel(context.Context, *livestreampb.StopChannelRequest, ...gax.CallOption) (*StopChannelOperation, error) StopChannelOperation(name string) *StopChannelOperation + StartDistribution(context.Context, *livestreampb.StartDistributionRequest, ...gax.CallOption) (*StartDistributionOperation, error) + StartDistributionOperation(name string) *StartDistributionOperation + StopDistribution(context.Context, *livestreampb.StopDistributionRequest, ...gax.CallOption) (*StopDistributionOperation, error) + StopDistributionOperation(name string) *StopDistributionOperation CreateInput(context.Context, *livestreampb.CreateInputRequest, ...gax.CallOption) (*CreateInputOperation, error) CreateInputOperation(name string) *CreateInputOperation ListInputs(context.Context, *livestreampb.ListInputsRequest, ...gax.CallOption) *InputIterator @@ -481,6 +580,7 @@ type internalClient interface { DeleteInputOperation(name string) *DeleteInputOperation UpdateInput(context.Context, *livestreampb.UpdateInputRequest, ...gax.CallOption) (*UpdateInputOperation, error) UpdateInputOperation(name string) *UpdateInputOperation + PreviewInput(context.Context, *livestreampb.PreviewInputRequest, ...gax.CallOption) (*livestreampb.PreviewInputResponse, error) CreateEvent(context.Context, *livestreampb.CreateEventRequest, ...gax.CallOption) (*livestreampb.Event, error) ListEvents(context.Context, *livestreampb.ListEventsRequest, ...gax.CallOption) *EventIterator GetEvent(context.Context, *livestreampb.GetEventRequest, ...gax.CallOption) (*livestreampb.Event, error) @@ -628,6 +728,29 @@ func (c *Client) StopChannelOperation(name string) *StopChannelOperation { return c.internalClient.StopChannelOperation(name) } +// StartDistribution starts distribution which delivers outputs to the destination indicated by +// the Distribution configuration. +func (c *Client) StartDistribution(ctx context.Context, req *livestreampb.StartDistributionRequest, opts ...gax.CallOption) (*StartDistributionOperation, error) { + return c.internalClient.StartDistribution(ctx, req, opts...) +} + +// StartDistributionOperation returns a new StartDistributionOperation from a given name. +// The name must be that of a previously created StartDistributionOperation, possibly from a different process. +func (c *Client) StartDistributionOperation(name string) *StartDistributionOperation { + return c.internalClient.StartDistributionOperation(name) +} + +// StopDistribution stops the specified distribution. +func (c *Client) StopDistribution(ctx context.Context, req *livestreampb.StopDistributionRequest, opts ...gax.CallOption) (*StopDistributionOperation, error) { + return c.internalClient.StopDistribution(ctx, req, opts...) +} + +// StopDistributionOperation returns a new StopDistributionOperation from a given name. +// The name must be that of a previously created StopDistributionOperation, possibly from a different process. +func (c *Client) StopDistributionOperation(name string) *StopDistributionOperation { + return c.internalClient.StopDistributionOperation(name) +} + // CreateInput creates an input with the provided unique ID in the specified region. func (c *Client) CreateInput(ctx context.Context, req *livestreampb.CreateInputRequest, opts ...gax.CallOption) (*CreateInputOperation, error) { return c.internalClient.CreateInput(ctx, req, opts...) @@ -671,6 +794,11 @@ func (c *Client) UpdateInputOperation(name string) *UpdateInputOperation { return c.internalClient.UpdateInputOperation(name) } +// PreviewInput preview the streaming content of the specified input. +func (c *Client) PreviewInput(ctx context.Context, req *livestreampb.PreviewInputRequest, opts ...gax.CallOption) (*livestreampb.PreviewInputResponse, error) { + return c.internalClient.PreviewInput(ctx, req, opts...) +} + // CreateEvent creates an event with the provided unique ID in the specified channel. func (c *Client) CreateEvent(ctx context.Context, req *livestreampb.CreateEventRequest, opts ...gax.CallOption) (*livestreampb.Event, error) { return c.internalClient.CreateEvent(ctx, req, opts...) @@ -1208,6 +1336,46 @@ func (c *gRPCClient) StopChannel(ctx context.Context, req *livestreampb.StopChan }, nil } +func (c *gRPCClient) StartDistribution(ctx context.Context, req *livestreampb.StartDistributionRequest, opts ...gax.CallOption) (*StartDistributionOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).StartDistribution[0:len((*c.CallOptions).StartDistribution):len((*c.CallOptions).StartDistribution)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.client.StartDistribution, req, settings.GRPC, c.logger, "StartDistribution") + return err + }, opts...) + if err != nil { + return nil, err + } + return &StartDistributionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) StopDistribution(ctx context.Context, req *livestreampb.StopDistributionRequest, opts ...gax.CallOption) (*StopDistributionOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).StopDistribution[0:len((*c.CallOptions).StopDistribution):len((*c.CallOptions).StopDistribution)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.client.StopDistribution, req, settings.GRPC, c.logger, "StopDistribution") + return err + }, opts...) + if err != nil { + return nil, err + } + return &StopDistributionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + func (c *gRPCClient) CreateInput(ctx context.Context, req *livestreampb.CreateInputRequest, opts ...gax.CallOption) (*CreateInputOperation, error) { hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} @@ -1332,6 +1500,24 @@ func (c *gRPCClient) UpdateInput(ctx context.Context, req *livestreampb.UpdateIn }, nil } +func (c *gRPCClient) PreviewInput(ctx context.Context, req *livestreampb.PreviewInputRequest, opts ...gax.CallOption) (*livestreampb.PreviewInputResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).PreviewInput[0:len((*c.CallOptions).PreviewInput):len((*c.CallOptions).PreviewInput)], opts...) + var resp *livestreampb.PreviewInputResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.client.PreviewInput, req, settings.GRPC, c.logger, "PreviewInput") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + func (c *gRPCClient) CreateEvent(ctx context.Context, req *livestreampb.CreateEventRequest, opts ...gax.CallOption) (*livestreampb.Event, error) { hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} @@ -2402,6 +2588,125 @@ func (c *restClient) StopChannel(ctx context.Context, req *livestreampb.StopChan }, nil } +// StartDistribution starts distribution which delivers outputs to the destination indicated by +// the Distribution configuration. +func (c *restClient) StartDistribution(ctx context.Context, req *livestreampb.StartDistributionRequest, opts ...gax.CallOption) (*StartDistributionOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:startdistribution", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "StartDistribution") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &StartDistributionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// StopDistribution stops the specified distribution. +func (c *restClient) StopDistribution(ctx context.Context, req *livestreampb.StopDistributionRequest, opts ...gax.CallOption) (*StopDistributionOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:stopdistribution", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "StopDistribution") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &StopDistributionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + // CreateInput creates an input with the provided unique ID in the specified region. func (c *restClient) CreateInput(ctx context.Context, req *livestreampb.CreateInputRequest, opts ...gax.CallOption) (*CreateInputOperation, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} @@ -2726,6 +3031,62 @@ func (c *restClient) UpdateInput(ctx context.Context, req *livestreampb.UpdateIn }, nil } +// PreviewInput preview the streaming content of the specified input. +func (c *restClient) PreviewInput(ctx context.Context, req *livestreampb.PreviewInputRequest, opts ...gax.CallOption) (*livestreampb.PreviewInputResponse, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:preview", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).PreviewInput[0:len((*c.CallOptions).PreviewInput):len((*c.CallOptions).PreviewInput)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &livestreampb.PreviewInputResponse{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "PreviewInput") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + // CreateEvent creates an event with the provided unique ID in the specified channel. func (c *restClient) CreateEvent(ctx context.Context, req *livestreampb.CreateEventRequest, opts ...gax.CallOption) (*livestreampb.Event, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} @@ -4449,6 +4810,24 @@ func (c *restClient) StartChannelOperation(name string) *StartChannelOperation { } } +// StartDistributionOperation returns a new StartDistributionOperation from a given name. +// The name must be that of a previously created StartDistributionOperation, possibly from a different process. +func (c *gRPCClient) StartDistributionOperation(name string) *StartDistributionOperation { + return &StartDistributionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// StartDistributionOperation returns a new StartDistributionOperation from a given name. +// The name must be that of a previously created StartDistributionOperation, possibly from a different process. +func (c *restClient) StartDistributionOperation(name string) *StartDistributionOperation { + override := fmt.Sprintf("/v1/%s", name) + return &StartDistributionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + // StopChannelOperation returns a new StopChannelOperation from a given name. // The name must be that of a previously created StopChannelOperation, possibly from a different process. func (c *gRPCClient) StopChannelOperation(name string) *StopChannelOperation { @@ -4467,6 +4846,24 @@ func (c *restClient) StopChannelOperation(name string) *StopChannelOperation { } } +// StopDistributionOperation returns a new StopDistributionOperation from a given name. +// The name must be that of a previously created StopDistributionOperation, possibly from a different process. +func (c *gRPCClient) StopDistributionOperation(name string) *StopDistributionOperation { + return &StopDistributionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// StopDistributionOperation returns a new StopDistributionOperation from a given name. +// The name must be that of a previously created StopDistributionOperation, possibly from a different process. +func (c *restClient) StopDistributionOperation(name string) *StopDistributionOperation { + override := fmt.Sprintf("/v1/%s", name) + return &StopDistributionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + // UpdateChannelOperation returns a new UpdateChannelOperation from a given name. // The name must be that of a previously created UpdateChannelOperation, possibly from a different process. func (c *gRPCClient) UpdateChannelOperation(name string) *UpdateChannelOperation { diff --git a/video/livestream/apiv1/livestream_client_example_test.go b/video/livestream/apiv1/livestream_client_example_test.go index cf9875788dbd..c90b22a8ed72 100644 --- a/video/livestream/apiv1/livestream_client_example_test.go +++ b/video/livestream/apiv1/livestream_client_example_test.go @@ -795,6 +795,31 @@ func ExampleClient_ListInputs() { } } +func ExampleClient_PreviewInput() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := livestream.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &livestreampb.PreviewInputRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/video/livestream/apiv1/livestreampb#PreviewInputRequest. + } + resp, err := c.PreviewInput(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleClient_StartChannel() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -825,6 +850,36 @@ func ExampleClient_StartChannel() { _ = resp } +func ExampleClient_StartDistribution() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := livestream.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &livestreampb.StartDistributionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/video/livestream/apiv1/livestreampb#StartDistributionRequest. + } + op, err := c.StartDistribution(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleClient_StopChannel() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -855,6 +910,36 @@ func ExampleClient_StopChannel() { _ = resp } +func ExampleClient_StopDistribution() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := livestream.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &livestreampb.StopDistributionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/video/livestream/apiv1/livestreampb#StopDistributionRequest. + } + op, err := c.StopDistribution(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleClient_UpdateChannel() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. diff --git a/video/livestream/apiv1/livestreampb/outputs.pb.go b/video/livestream/apiv1/livestreampb/outputs.pb.go index 7de422daab77..a4b25b427079 100755 --- a/video/livestream/apiv1/livestreampb/outputs.pb.go +++ b/video/livestream/apiv1/livestreampb/outputs.pb.go @@ -22,6 +22,7 @@ package livestreampb import ( _ "google.golang.org/genproto/googleapis/api/annotations" + status "google.golang.org/genproto/googleapis/rpc/status" datetime "google.golang.org/genproto/googleapis/type/datetime" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -90,6 +91,71 @@ func (Manifest_ManifestType) EnumDescriptor() ([]byte, []int) { return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{2, 0} } +// State of this distribution. +type Distribution_State int32 + +const ( + // State is not specified. + Distribution_STATE_UNSPECIFIED Distribution_State = 0 + // Distribution has trouble to produce or deliver the output. + Distribution_ERROR Distribution_State = 5 + // Distribution is not ready to be started. + Distribution_NOT_READY Distribution_State = 6 + // Distribution is ready to be started. + Distribution_READY Distribution_State = 7 + // Distribution is already started and is waiting for input. + Distribution_AWAITING_INPUT Distribution_State = 8 + // Distribution is already started and is generating output. + Distribution_DISTRIBUTING Distribution_State = 9 +) + +// Enum value maps for Distribution_State. +var ( + Distribution_State_name = map[int32]string{ + 0: "STATE_UNSPECIFIED", + 5: "ERROR", + 6: "NOT_READY", + 7: "READY", + 8: "AWAITING_INPUT", + 9: "DISTRIBUTING", + } + Distribution_State_value = map[string]int32{ + "STATE_UNSPECIFIED": 0, + "ERROR": 5, + "NOT_READY": 6, + "READY": 7, + "AWAITING_INPUT": 8, + "DISTRIBUTING": 9, + } +) + +func (x Distribution_State) Enum() *Distribution_State { + p := new(Distribution_State) + *p = x + return p +} + +func (x Distribution_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Distribution_State) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_video_livestream_v1_outputs_proto_enumTypes[1].Descriptor() +} + +func (Distribution_State) Type() protoreflect.EnumType { + return &file_google_cloud_video_livestream_v1_outputs_proto_enumTypes[1] +} + +func (x Distribution_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Distribution_State.Descriptor instead. +func (Distribution_State) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{4, 0} +} + // The source of timecode. type TimecodeConfig_TimecodeSource int32 @@ -127,11 +193,11 @@ func (x TimecodeConfig_TimecodeSource) String() string { } func (TimecodeConfig_TimecodeSource) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_video_livestream_v1_outputs_proto_enumTypes[1].Descriptor() + return file_google_cloud_video_livestream_v1_outputs_proto_enumTypes[2].Descriptor() } func (TimecodeConfig_TimecodeSource) Type() protoreflect.EnumType { - return &file_google_cloud_video_livestream_v1_outputs_proto_enumTypes[1] + return &file_google_cloud_video_livestream_v1_outputs_proto_enumTypes[2] } func (x TimecodeConfig_TimecodeSource) Number() protoreflect.EnumNumber { @@ -140,7 +206,7 @@ func (x TimecodeConfig_TimecodeSource) Number() protoreflect.EnumNumber { // Deprecated: Use TimecodeConfig_TimecodeSource.Descriptor instead. func (TimecodeConfig_TimecodeSource) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{9, 0} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{13, 0} } // Encoding of an input element such as an audio, video, or text track. @@ -482,6 +548,350 @@ func (x *Manifest) GetKey() string { return "" } +// Multiplexing settings for output streams used in +// [Distribution][google.cloud.video.livestream.v1.Distribution]. +type DistributionStream struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. A unique key for this distribution stream. The key must be 1-63 + // characters in length. The key must begin and end with a letter (regardless + // of case) or a number, but can contain dashes or underscores in between. + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // Required. The container format. + // + // Supported container formats: + // + // - `ts`, must contain exactly one audio stream and up to one video stream. + // - `flv`, must contain at most one audio stream and at most one video + // stream. + Container string `protobuf:"bytes,2,opt,name=container,proto3" json:"container,omitempty"` + // Required. List of `ElementaryStream` + // [key][google.cloud.video.livestream.v1.ElementaryStream.key]s multiplexed + // in this stream. Must contain at least one audio stream and up to one video + // stream. + ElementaryStreams []string `protobuf:"bytes,3,rep,name=elementary_streams,json=elementaryStreams,proto3" json:"elementary_streams,omitempty"` +} + +func (x *DistributionStream) Reset() { + *x = DistributionStream{} + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DistributionStream) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DistributionStream) ProtoMessage() {} + +func (x *DistributionStream) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DistributionStream.ProtoReflect.Descriptor instead. +func (*DistributionStream) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{3} +} + +func (x *DistributionStream) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *DistributionStream) GetContainer() string { + if x != nil { + return x.Container + } + return "" +} + +func (x *DistributionStream) GetElementaryStreams() []string { + if x != nil { + return x.ElementaryStreams + } + return nil +} + +// Distribution configuration. +type Distribution struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. A unique key for this distribution. The key must be 1-63 + // characters in length. The key must begin and end with a letter (regardless + // of case) or a number, but can contain dashes or underscores in between. + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // Required. `DistributionStream` + // [key][google.cloud.video.livestream.v1.DistributionStream.key]s that should + // appear in this distribution output. + // + // - For SRT protocol, only `ts` distribution streams can be specified. + // - For RTMP protocol, only `flv` distribution streams can be specified. + DistributionStream string `protobuf:"bytes,2,opt,name=distribution_stream,json=distributionStream,proto3" json:"distribution_stream,omitempty"` + // Output only. State of the distribution. + State Distribution_State `protobuf:"varint,3,opt,name=state,proto3,enum=google.cloud.video.livestream.v1.Distribution_State" json:"state,omitempty"` + // Output only. Only present when the `state` is `ERROR`. The reason for the + // error state of the distribution. + Error *status.Status `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` + // Configurations for the output endpoint by streaming protocols. + // + // Types that are assignable to Endpoint: + // + // *Distribution_SrtPush + // *Distribution_RtmpPush + Endpoint isDistribution_Endpoint `protobuf_oneof:"endpoint"` +} + +func (x *Distribution) Reset() { + *x = Distribution{} + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Distribution) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Distribution) ProtoMessage() {} + +func (x *Distribution) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Distribution.ProtoReflect.Descriptor instead. +func (*Distribution) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{4} +} + +func (x *Distribution) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *Distribution) GetDistributionStream() string { + if x != nil { + return x.DistributionStream + } + return "" +} + +func (x *Distribution) GetState() Distribution_State { + if x != nil { + return x.State + } + return Distribution_STATE_UNSPECIFIED +} + +func (x *Distribution) GetError() *status.Status { + if x != nil { + return x.Error + } + return nil +} + +func (m *Distribution) GetEndpoint() isDistribution_Endpoint { + if m != nil { + return m.Endpoint + } + return nil +} + +func (x *Distribution) GetSrtPush() *SrtPushOutputEndpoint { + if x, ok := x.GetEndpoint().(*Distribution_SrtPush); ok { + return x.SrtPush + } + return nil +} + +func (x *Distribution) GetRtmpPush() *RtmpPushOutputEndpoint { + if x, ok := x.GetEndpoint().(*Distribution_RtmpPush); ok { + return x.RtmpPush + } + return nil +} + +type isDistribution_Endpoint interface { + isDistribution_Endpoint() +} + +type Distribution_SrtPush struct { + // Output endpoint using SRT_PUSH. + SrtPush *SrtPushOutputEndpoint `protobuf:"bytes,5,opt,name=srt_push,json=srtPush,proto3,oneof"` +} + +type Distribution_RtmpPush struct { + // Output endpoint using RTMP_PUSH. + RtmpPush *RtmpPushOutputEndpoint `protobuf:"bytes,6,opt,name=rtmp_push,json=rtmpPush,proto3,oneof"` +} + +func (*Distribution_SrtPush) isDistribution_Endpoint() {} + +func (*Distribution_RtmpPush) isDistribution_Endpoint() {} + +// Configurations for an output endpoint using SRT_PUSH as the streaming +// protocol. +type SrtPushOutputEndpoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The full URI of the remote SRT server. + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + // Defines where SRT encryption passphrase are stored. + // + // Types that are assignable to PassphraseSource: + // + // *SrtPushOutputEndpoint_PassphraseSecretVersion + PassphraseSource isSrtPushOutputEndpoint_PassphraseSource `protobuf_oneof:"passphrase_source"` +} + +func (x *SrtPushOutputEndpoint) Reset() { + *x = SrtPushOutputEndpoint{} + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SrtPushOutputEndpoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SrtPushOutputEndpoint) ProtoMessage() {} + +func (x *SrtPushOutputEndpoint) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SrtPushOutputEndpoint.ProtoReflect.Descriptor instead. +func (*SrtPushOutputEndpoint) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{5} +} + +func (x *SrtPushOutputEndpoint) GetUri() string { + if x != nil { + return x.Uri + } + return "" +} + +func (m *SrtPushOutputEndpoint) GetPassphraseSource() isSrtPushOutputEndpoint_PassphraseSource { + if m != nil { + return m.PassphraseSource + } + return nil +} + +func (x *SrtPushOutputEndpoint) GetPassphraseSecretVersion() string { + if x, ok := x.GetPassphraseSource().(*SrtPushOutputEndpoint_PassphraseSecretVersion); ok { + return x.PassphraseSecretVersion + } + return "" +} + +type isSrtPushOutputEndpoint_PassphraseSource interface { + isSrtPushOutputEndpoint_PassphraseSource() +} + +type SrtPushOutputEndpoint_PassphraseSecretVersion struct { + // The name of the Secret Version containing the SRT encryption passphrase, + // which is stored in Google Secret Manager. It should be in the format of + // `projects/{project}/secrets/{secret_id}/versions/{version_number}`. + PassphraseSecretVersion string `protobuf:"bytes,2,opt,name=passphrase_secret_version,json=passphraseSecretVersion,proto3,oneof"` +} + +func (*SrtPushOutputEndpoint_PassphraseSecretVersion) isSrtPushOutputEndpoint_PassphraseSource() {} + +// Configurations for an output endpoint using RTMP_PUSH as the streaming +// protocol. +type RtmpPushOutputEndpoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The full URI of the remote RTMP server. For example: + // `rtmp://192.168.123.321/live/my-stream` or `rtmp://somedomain.com/someapp`. + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + // Required. Stream key for RTMP protocol. + StreamKey string `protobuf:"bytes,2,opt,name=stream_key,json=streamKey,proto3" json:"stream_key,omitempty"` +} + +func (x *RtmpPushOutputEndpoint) Reset() { + *x = RtmpPushOutputEndpoint{} + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RtmpPushOutputEndpoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RtmpPushOutputEndpoint) ProtoMessage() {} + +func (x *RtmpPushOutputEndpoint) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RtmpPushOutputEndpoint.ProtoReflect.Descriptor instead. +func (*RtmpPushOutputEndpoint) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{6} +} + +func (x *RtmpPushOutputEndpoint) GetUri() string { + if x != nil { + return x.Uri + } + return "" +} + +func (x *RtmpPushOutputEndpoint) GetStreamKey() string { + if x != nil { + return x.StreamKey + } + return "" +} + // Sprite sheet configuration. type SpriteSheet struct { state protoimpl.MessageState @@ -523,7 +933,7 @@ type SpriteSheet struct { func (x *SpriteSheet) Reset() { *x = SpriteSheet{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[3] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -535,7 +945,7 @@ func (x *SpriteSheet) String() string { func (*SpriteSheet) ProtoMessage() {} func (x *SpriteSheet) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[3] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -548,7 +958,7 @@ func (x *SpriteSheet) ProtoReflect() protoreflect.Message { // Deprecated: Use SpriteSheet.ProtoReflect.Descriptor instead. func (*SpriteSheet) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{3} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{7} } func (x *SpriteSheet) GetFormat() string { @@ -623,7 +1033,7 @@ type PreprocessingConfig struct { func (x *PreprocessingConfig) Reset() { *x = PreprocessingConfig{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[4] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -635,7 +1045,7 @@ func (x *PreprocessingConfig) String() string { func (*PreprocessingConfig) ProtoMessage() {} func (x *PreprocessingConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[4] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -648,7 +1058,7 @@ func (x *PreprocessingConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use PreprocessingConfig.ProtoReflect.Descriptor instead. func (*PreprocessingConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{4} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{8} } func (x *PreprocessingConfig) GetAudio() *PreprocessingConfig_Audio { @@ -683,12 +1093,13 @@ type VideoStream struct { // Types that are assignable to CodecSettings: // // *VideoStream_H264 + // *VideoStream_H265 CodecSettings isVideoStream_CodecSettings `protobuf_oneof:"codec_settings"` } func (x *VideoStream) Reset() { *x = VideoStream{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[5] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -700,7 +1111,7 @@ func (x *VideoStream) String() string { func (*VideoStream) ProtoMessage() {} func (x *VideoStream) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[5] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -713,7 +1124,7 @@ func (x *VideoStream) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoStream.ProtoReflect.Descriptor instead. func (*VideoStream) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{5} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{9} } func (m *VideoStream) GetCodecSettings() isVideoStream_CodecSettings { @@ -730,6 +1141,13 @@ func (x *VideoStream) GetH264() *VideoStream_H264CodecSettings { return nil } +func (x *VideoStream) GetH265() *VideoStream_H265CodecSettings { + if x, ok := x.GetCodecSettings().(*VideoStream_H265); ok { + return x.H265 + } + return nil +} + type isVideoStream_CodecSettings interface { isVideoStream_CodecSettings() } @@ -739,8 +1157,15 @@ type VideoStream_H264 struct { H264 *VideoStream_H264CodecSettings `protobuf:"bytes,20,opt,name=h264,proto3,oneof"` } +type VideoStream_H265 struct { + // H265 codec settings. + H265 *VideoStream_H265CodecSettings `protobuf:"bytes,21,opt,name=h265,proto3,oneof"` +} + func (*VideoStream_H264) isVideoStream_CodecSettings() {} +func (*VideoStream_H265) isVideoStream_CodecSettings() {} + // Audio stream resource. type AudioStream struct { state protoimpl.MessageState @@ -783,7 +1208,7 @@ type AudioStream struct { func (x *AudioStream) Reset() { *x = AudioStream{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[6] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -795,7 +1220,7 @@ func (x *AudioStream) String() string { func (*AudioStream) ProtoMessage() {} func (x *AudioStream) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[6] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -808,7 +1233,7 @@ func (x *AudioStream) ProtoReflect() protoreflect.Message { // Deprecated: Use AudioStream.ProtoReflect.Descriptor instead. func (*AudioStream) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{6} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{10} } func (x *AudioStream) GetTransmux() bool { @@ -872,12 +1297,30 @@ type TextStream struct { // // - `cea608` // - `cea708` + // - `webvtt` Codec string `protobuf:"bytes,1,opt,name=codec,proto3" json:"codec,omitempty"` + // Optional. The BCP-47 language code, such as `en-US` or `sr-Latn`. For more + // information, see + // https://www.unicode.org/reports/tr35/#Unicode_locale_identifier. + LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"` + // Optional. The name for this particular text stream that will be added to + // the HLS/DASH manifest. + DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Optional. The channel of the closed caption in the output stream. + // This field should only be set when textstream is used for partner + // distribution. + // Must be one of `CC1`, `CC2`, `CC3`, and `CC4`, if the + // [codec][google.cloud.video.livestream.v1.TextStream.codec] is `cea608`; + // Must be one between `SERVICE1` and `SERVICE63`, if the + // [codec][google.cloud.video.livestream.v1.TextStream.codec] is `cea708`. + OutputCeaChannel string `protobuf:"bytes,5,opt,name=output_cea_channel,json=outputCeaChannel,proto3" json:"output_cea_channel,omitempty"` + // Optional. The mapping for the input streams and text tracks. + Mapping []*TextStream_TextMapping `protobuf:"bytes,3,rep,name=mapping,proto3" json:"mapping,omitempty"` } func (x *TextStream) Reset() { *x = TextStream{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[7] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -889,29 +1332,57 @@ func (x *TextStream) String() string { func (*TextStream) ProtoMessage() {} func (x *TextStream) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[7] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TextStream.ProtoReflect.Descriptor instead. +func (*TextStream) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{11} +} + +func (x *TextStream) GetCodec() string { + if x != nil { + return x.Codec + } + return "" +} + +func (x *TextStream) GetLanguageCode() string { if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms + return x.LanguageCode } - return mi.MessageOf(x) + return "" } -// Deprecated: Use TextStream.ProtoReflect.Descriptor instead. -func (*TextStream) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{7} +func (x *TextStream) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" } -func (x *TextStream) GetCodec() string { +func (x *TextStream) GetOutputCeaChannel() string { if x != nil { - return x.Codec + return x.OutputCeaChannel } return "" } +func (x *TextStream) GetMapping() []*TextStream_TextMapping { + if x != nil { + return x.Mapping + } + return nil +} + // Segment settings for `fmp4` and `ts`. type SegmentSettings struct { state protoimpl.MessageState @@ -932,7 +1403,7 @@ type SegmentSettings struct { func (x *SegmentSettings) Reset() { *x = SegmentSettings{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[8] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -944,7 +1415,7 @@ func (x *SegmentSettings) String() string { func (*SegmentSettings) ProtoMessage() {} func (x *SegmentSettings) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[8] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -957,7 +1428,7 @@ func (x *SegmentSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentSettings.ProtoReflect.Descriptor instead. func (*SegmentSettings) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{8} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{12} } func (x *SegmentSettings) GetSegmentDuration() *durationpb.Duration { @@ -990,7 +1461,7 @@ type TimecodeConfig struct { func (x *TimecodeConfig) Reset() { *x = TimecodeConfig{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[9] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1002,7 +1473,7 @@ func (x *TimecodeConfig) String() string { func (*TimecodeConfig) ProtoMessage() {} func (x *TimecodeConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[9] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1015,7 +1486,7 @@ func (x *TimecodeConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use TimecodeConfig.ProtoReflect.Descriptor instead. func (*TimecodeConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{9} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{13} } func (x *TimecodeConfig) GetSource() TimecodeConfig_TimecodeSource { @@ -1086,7 +1557,7 @@ type PreprocessingConfig_Audio struct { func (x *PreprocessingConfig_Audio) Reset() { *x = PreprocessingConfig_Audio{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[10] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1098,7 +1569,7 @@ func (x *PreprocessingConfig_Audio) String() string { func (*PreprocessingConfig_Audio) ProtoMessage() {} func (x *PreprocessingConfig_Audio) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[10] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1111,7 +1582,7 @@ func (x *PreprocessingConfig_Audio) ProtoReflect() protoreflect.Message { // Deprecated: Use PreprocessingConfig_Audio.ProtoReflect.Descriptor instead. func (*PreprocessingConfig_Audio) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{4, 0} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{8, 0} } func (x *PreprocessingConfig_Audio) GetLufs() float64 { @@ -1140,7 +1611,7 @@ type PreprocessingConfig_Crop struct { func (x *PreprocessingConfig_Crop) Reset() { *x = PreprocessingConfig_Crop{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[11] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1152,7 +1623,7 @@ func (x *PreprocessingConfig_Crop) String() string { func (*PreprocessingConfig_Crop) ProtoMessage() {} func (x *PreprocessingConfig_Crop) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[11] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1165,7 +1636,7 @@ func (x *PreprocessingConfig_Crop) ProtoReflect() protoreflect.Message { // Deprecated: Use PreprocessingConfig_Crop.ProtoReflect.Descriptor instead. func (*PreprocessingConfig_Crop) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{4, 1} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{8, 1} } func (x *PreprocessingConfig_Crop) GetTopPixels() int32 { @@ -1215,7 +1686,7 @@ type PreprocessingConfig_Pad struct { func (x *PreprocessingConfig_Pad) Reset() { *x = PreprocessingConfig_Pad{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[12] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1227,7 +1698,7 @@ func (x *PreprocessingConfig_Pad) String() string { func (*PreprocessingConfig_Pad) ProtoMessage() {} func (x *PreprocessingConfig_Pad) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[12] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1240,7 +1711,7 @@ func (x *PreprocessingConfig_Pad) ProtoReflect() protoreflect.Message { // Deprecated: Use PreprocessingConfig_Pad.ProtoReflect.Descriptor instead. func (*PreprocessingConfig_Pad) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{4, 2} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{8, 2} } func (x *PreprocessingConfig_Pad) GetTopPixels() int32 { @@ -1278,10 +1749,10 @@ type VideoStream_H264CodecSettings struct { unknownFields protoimpl.UnknownFields // Required. The width of the video in pixels. Must be an even integer. - // Valid range is [320, 1920]. + // Valid range is [320, 4096]. WidthPixels int32 `protobuf:"varint,1,opt,name=width_pixels,json=widthPixels,proto3" json:"width_pixels,omitempty"` // Required. The height of the video in pixels. Must be an even integer. - // Valid range is [180, 1080]. + // Valid range is [180, 2160]. HeightPixels int32 `protobuf:"varint,2,opt,name=height_pixels,json=heightPixels,proto3" json:"height_pixels,omitempty"` // Required. The target video frame rate in frames per second (FPS). Must be // less than or equal to 60. Will default to the input frame rate if larger @@ -1295,6 +1766,7 @@ type VideoStream_H264CodecSettings struct { // // - For SD resolution (< 720p), must be <= 3,000,000 (3 Mbps). // - For HD resolution (<= 1080p), must be <= 15,000,000 (15 Mbps). + // - For UHD resolution (<= 2160p), must be <= 25,000,000 (25 Mbps). BitrateBps int32 `protobuf:"varint,4,opt,name=bitrate_bps,json=bitrateBps,proto3" json:"bitrate_bps,omitempty"` // Specifies whether an open Group of Pictures (GOP) structure should be // allowed or not. The default is `false`. @@ -1359,7 +1831,7 @@ type VideoStream_H264CodecSettings struct { func (x *VideoStream_H264CodecSettings) Reset() { *x = VideoStream_H264CodecSettings{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[13] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1371,7 +1843,7 @@ func (x *VideoStream_H264CodecSettings) String() string { func (*VideoStream_H264CodecSettings) ProtoMessage() {} func (x *VideoStream_H264CodecSettings) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[13] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1384,7 +1856,7 @@ func (x *VideoStream_H264CodecSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoStream_H264CodecSettings.ProtoReflect.Descriptor instead. func (*VideoStream_H264CodecSettings) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{5, 0} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{9, 0} } func (x *VideoStream_H264CodecSettings) GetWidthPixels() int32 { @@ -1528,6 +2000,209 @@ func (*VideoStream_H264CodecSettings_GopFrameCount) isVideoStream_H264CodecSetti func (*VideoStream_H264CodecSettings_GopDuration) isVideoStream_H264CodecSettings_GopMode() {} +// H265 codec settings. +type VideoStream_H265CodecSettings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The width of the video in pixels. Must be an even integer. + // When not specified, the width is adjusted to match the specified height + // and input aspect ratio. If both are omitted, the input width is used. + // Valid range is [320, 4096]. + WidthPixels int32 `protobuf:"varint,1,opt,name=width_pixels,json=widthPixels,proto3" json:"width_pixels,omitempty"` + // Optional. The height of the video in pixels. Must be an even integer. + // When not specified, the height is adjusted to match the specified width + // and input aspect ratio. If both are omitted, the input height is used. + // Valid range is [180, 2160]. + HeightPixels int32 `protobuf:"varint,2,opt,name=height_pixels,json=heightPixels,proto3" json:"height_pixels,omitempty"` + // Required. The target video frame rate in frames per second (FPS). Must be + // less than or equal to 120. Will default to the input frame rate if larger + // than the input frame rate. The API will generate an output FPS that is + // divisible by the input FPS, and smaller or equal to the target FPS. See + // [Calculating frame + // rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for + // more information. + FrameRate float64 `protobuf:"fixed64,3,opt,name=frame_rate,json=frameRate,proto3" json:"frame_rate,omitempty"` + // Required. The video bitrate in bits per second. Minimum value is 10,000. + // + // - For SD resolution (< 720p), must be <= 3,000,000 (3 Mbps). + // - For HD resolution (<= 1080p), must be <= 15,000,000 (15 Mbps). + // - For UHD resolution (<= 2160p), must be <= 25,000,000 (25 Mbps). + BitrateBps int32 `protobuf:"varint,4,opt,name=bitrate_bps,json=bitrateBps,proto3" json:"bitrate_bps,omitempty"` + // GOP mode can be either by frame count or duration. + // + // Types that are assignable to GopMode: + // + // *VideoStream_H265CodecSettings_GopFrameCount + // *VideoStream_H265CodecSettings_GopDuration + GopMode isVideoStream_H265CodecSettings_GopMode `protobuf_oneof:"gop_mode"` + // Optional. Size of the Video Buffering Verifier (VBV) buffer in bits. Must + // be greater than zero. The default is equal to + // [bitrate_bps][google.cloud.video.livestream.v1.VideoStream.H265CodecSettings.bitrate_bps]. + VbvSizeBits int32 `protobuf:"varint,9,opt,name=vbv_size_bits,json=vbvSizeBits,proto3" json:"vbv_size_bits,omitempty"` + // Optional. Initial fullness of the Video Buffering Verifier (VBV) buffer + // in bits. Must be greater than zero. The default is equal to 90% of + // [vbv_size_bits][google.cloud.video.livestream.v1.VideoStream.H265CodecSettings.vbv_size_bits]. + VbvFullnessBits int32 `protobuf:"varint,10,opt,name=vbv_fullness_bits,json=vbvFullnessBits,proto3" json:"vbv_fullness_bits,omitempty"` + // Optional. Allow B-pyramid for reference frame selection. This may not be + // supported on all decoders. The default is `false`. + BPyramid bool `protobuf:"varint,11,opt,name=b_pyramid,json=bPyramid,proto3" json:"b_pyramid,omitempty"` + // Optional. The number of consecutive B-frames. Must be greater than or + // equal to zero. Must be less than + // [gop_frame_count][google.cloud.video.livestream.v1.VideoStream.H265CodecSettings.gop_frame_count] + // if set. The default is 0. + BFrameCount int32 `protobuf:"varint,12,opt,name=b_frame_count,json=bFrameCount,proto3" json:"b_frame_count,omitempty"` + // Optional. Specify the intensity of the adaptive quantizer (AQ). Must be + // between 0 and 1, where 0 disables the quantizer and 1 maximizes the + // quantizer. A higher value equals a lower bitrate but smoother image. The + // default is 0. + AqStrength float64 `protobuf:"fixed64,13,opt,name=aq_strength,json=aqStrength,proto3" json:"aq_strength,omitempty"` +} + +func (x *VideoStream_H265CodecSettings) Reset() { + *x = VideoStream_H265CodecSettings{} + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VideoStream_H265CodecSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VideoStream_H265CodecSettings) ProtoMessage() {} + +func (x *VideoStream_H265CodecSettings) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VideoStream_H265CodecSettings.ProtoReflect.Descriptor instead. +func (*VideoStream_H265CodecSettings) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{9, 1} +} + +func (x *VideoStream_H265CodecSettings) GetWidthPixels() int32 { + if x != nil { + return x.WidthPixels + } + return 0 +} + +func (x *VideoStream_H265CodecSettings) GetHeightPixels() int32 { + if x != nil { + return x.HeightPixels + } + return 0 +} + +func (x *VideoStream_H265CodecSettings) GetFrameRate() float64 { + if x != nil { + return x.FrameRate + } + return 0 +} + +func (x *VideoStream_H265CodecSettings) GetBitrateBps() int32 { + if x != nil { + return x.BitrateBps + } + return 0 +} + +func (m *VideoStream_H265CodecSettings) GetGopMode() isVideoStream_H265CodecSettings_GopMode { + if m != nil { + return m.GopMode + } + return nil +} + +func (x *VideoStream_H265CodecSettings) GetGopFrameCount() int32 { + if x, ok := x.GetGopMode().(*VideoStream_H265CodecSettings_GopFrameCount); ok { + return x.GopFrameCount + } + return 0 +} + +func (x *VideoStream_H265CodecSettings) GetGopDuration() *durationpb.Duration { + if x, ok := x.GetGopMode().(*VideoStream_H265CodecSettings_GopDuration); ok { + return x.GopDuration + } + return nil +} + +func (x *VideoStream_H265CodecSettings) GetVbvSizeBits() int32 { + if x != nil { + return x.VbvSizeBits + } + return 0 +} + +func (x *VideoStream_H265CodecSettings) GetVbvFullnessBits() int32 { + if x != nil { + return x.VbvFullnessBits + } + return 0 +} + +func (x *VideoStream_H265CodecSettings) GetBPyramid() bool { + if x != nil { + return x.BPyramid + } + return false +} + +func (x *VideoStream_H265CodecSettings) GetBFrameCount() int32 { + if x != nil { + return x.BFrameCount + } + return 0 +} + +func (x *VideoStream_H265CodecSettings) GetAqStrength() float64 { + if x != nil { + return x.AqStrength + } + return 0 +} + +type isVideoStream_H265CodecSettings_GopMode interface { + isVideoStream_H265CodecSettings_GopMode() +} + +type VideoStream_H265CodecSettings_GopFrameCount struct { + // Optional. Select the GOP size based on the specified frame count. + // If GOP frame count is set instead of GOP duration, GOP duration will be + // calculated by `gopFrameCount`/`frameRate`. The calculated GOP duration + // must satisfy the limitations on `gopDuration` as well. + // Valid range is [60, 600]. + GopFrameCount int32 `protobuf:"varint,7,opt,name=gop_frame_count,json=gopFrameCount,proto3,oneof"` +} + +type VideoStream_H265CodecSettings_GopDuration struct { + // Optional. Select the GOP size based on the specified duration. The + // default is `2s`. Note that `gopDuration` must be less than or equal to + // [segment_duration][google.cloud.video.livestream.v1.SegmentSettings.segment_duration], + // and + // [segment_duration][google.cloud.video.livestream.v1.SegmentSettings.segment_duration] + // must be divisible by `gopDuration`. Valid range is [2s, 20s]. + // + // All video streams in the same channel must have the same GOP size. + GopDuration *durationpb.Duration `protobuf:"bytes,8,opt,name=gop_duration,json=gopDuration,proto3,oneof"` +} + +func (*VideoStream_H265CodecSettings_GopFrameCount) isVideoStream_H265CodecSettings_GopMode() {} + +func (*VideoStream_H265CodecSettings_GopDuration) isVideoStream_H265CodecSettings_GopMode() {} + // The mapping for the input streams and audio channels. type AudioStream_AudioMapping struct { state protoimpl.MessageState @@ -1558,7 +2233,7 @@ type AudioStream_AudioMapping struct { func (x *AudioStream_AudioMapping) Reset() { *x = AudioStream_AudioMapping{} - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[14] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1570,7 +2245,7 @@ func (x *AudioStream_AudioMapping) String() string { func (*AudioStream_AudioMapping) ProtoMessage() {} func (x *AudioStream_AudioMapping) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[14] + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1583,7 +2258,7 @@ func (x *AudioStream_AudioMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use AudioStream_AudioMapping.ProtoReflect.Descriptor instead. func (*AudioStream_AudioMapping) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{6, 0} + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{10, 0} } func (x *AudioStream_AudioMapping) GetInputKey() string { @@ -1621,6 +2296,90 @@ func (x *AudioStream_AudioMapping) GetGainDb() float64 { return 0 } +// The mapping for the input streams and text tracks. +type TextStream_TextMapping struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The `Channel` + // [InputAttachment.key][google.cloud.video.livestream.v1.InputAttachment.key] + // that identifies the input that this text mapping applies to. + InputKey string `protobuf:"bytes,4,opt,name=input_key,json=inputKey,proto3" json:"input_key,omitempty"` + // Optional. The zero-based index of the track in the input stream. + InputTrack int32 `protobuf:"varint,2,opt,name=input_track,json=inputTrack,proto3" json:"input_track,omitempty"` + // Optional. The channel of the closed caption in the input stream. + // If this field is set, the output + // [codec][google.cloud.video.livestream.v1.TextStream.codec] must be + // `webvtt`. Must be one of `CC1`, `CC2`, `CC3`, and `CC4`, if the codec of + // the input closed caption is `cea608`; Must be one between `SERVICE1` and + // `SERVICE64`, if the codec of the input closed caption is `cea708`. + InputCeaChannel string `protobuf:"bytes,5,opt,name=input_cea_channel,json=inputCeaChannel,proto3" json:"input_cea_channel,omitempty"` + // Optional. The BCP-47 source language code, such as `en-US` or `sr-Latn`. + // If differ from the textStream's language code, enable translation. For + // more information on BCP-47 language codes, see + // https://www.unicode.org/reports/tr35/#Unicode_locale_identifier. + FromLanguageCode string `protobuf:"bytes,6,opt,name=from_language_code,json=fromLanguageCode,proto3" json:"from_language_code,omitempty"` +} + +func (x *TextStream_TextMapping) Reset() { + *x = TextStream_TextMapping{} + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TextStream_TextMapping) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TextStream_TextMapping) ProtoMessage() {} + +func (x *TextStream_TextMapping) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TextStream_TextMapping.ProtoReflect.Descriptor instead. +func (*TextStream_TextMapping) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP(), []int{11, 0} +} + +func (x *TextStream_TextMapping) GetInputKey() string { + if x != nil { + return x.InputKey + } + return "" +} + +func (x *TextStream_TextMapping) GetInputTrack() int32 { + if x != nil { + return x.InputTrack + } + return 0 +} + +func (x *TextStream_TextMapping) GetInputCeaChannel() string { + if x != nil { + return x.InputCeaChannel + } + return "" +} + +func (x *TextStream_TextMapping) GetFromLanguageCode() string { + if x != nil { + return x.FromLanguageCode + } + return "" +} + var File_google_cloud_video_livestream_v1_outputs_proto protoreflect.FileDescriptor var file_google_cloud_video_livestream_v1_outputs_proto_rawDesc = []byte{ @@ -1634,170 +2393,266 @@ var file_google_cloud_video_livestream_v1_outputs_proto_rawDesc = []byte{ 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x65, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb2, 0x02, 0x0a, 0x10, 0x45, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x52, 0x0a, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xb2, 0x02, 0x0a, 0x10, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x72, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x0c, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, + 0x00, 0x52, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x52, + 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x52, 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x75, 0x64, 0x69, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x75, - 0x64, 0x69, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x65, 0x78, - 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, + 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x22, 0xed, 0x01, 0x0a, 0x09, 0x4d, 0x75, 0x78, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x11, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x52, 0x0f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xac, 0x03, 0x0a, 0x08, 0x4d, 0x61, 0x6e, + 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x6e, + 0x69, 0x66, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x75, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, + 0x6d, 0x75, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, + 0x78, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x15, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x13, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x65, 0x70, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6e, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x63, 0x6f, 0x64, 0x65, 0x41, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x15, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x40, 0x0a, 0x0c, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x4c, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x44, 0x41, 0x53, 0x48, 0x10, 0x02, 0x22, 0x82, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x15, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x12, 0x65, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x72, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x22, 0x81, 0x04, 0x0a, + 0x0c, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x12, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x4f, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x08, 0x73, 0x72, + 0x74, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x72, 0x74, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x73, 0x72, 0x74, 0x50, 0x75, 0x73, 0x68, + 0x12, 0x57, 0x0a, 0x09, 0x72, 0x74, 0x6d, 0x70, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x74, 0x6d, 0x70, 0x50, 0x75, 0x73, 0x68, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x08, 0x72, 0x74, 0x6d, 0x70, 0x50, 0x75, 0x73, 0x68, 0x22, 0x69, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, + 0x59, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x07, 0x12, 0x12, + 0x0a, 0x0e, 0x41, 0x57, 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, + 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, + 0x4e, 0x47, 0x10, 0x09, 0x42, 0x0a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x22, 0xb2, 0x01, 0x0a, 0x15, 0x53, 0x72, 0x74, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, + 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x75, 0x72, + 0x69, 0x12, 0x6d, 0x0a, 0x19, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2f, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, + 0x61, 0x73, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x42, 0x13, 0x0a, 0x11, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x53, 0x0a, 0x16, 0x52, 0x74, 0x6d, 0x70, 0x50, 0x75, 0x73, + 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x15, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x22, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x09, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4b, 0x65, 0x79, 0x22, 0xc8, 0x02, 0x0a, 0x0b, 0x53, + 0x70, 0x72, 0x69, 0x74, 0x65, 0x53, 0x68, 0x65, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x66, 0x69, + 0x6c, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x33, 0x0a, 0x13, 0x73, 0x70, 0x72, 0x69, + 0x74, 0x65, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x73, 0x70, 0x72, 0x69, + 0x74, 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x35, 0x0a, + 0x14, 0x73, 0x70, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, + 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x12, 0x73, 0x70, 0x72, 0x69, 0x74, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x69, + 0x78, 0x65, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x6f, 0x77, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x71, + 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x71, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xc3, 0x04, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x70, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, + 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, + 0x12, 0x4e, 0x0a, 0x04, 0x63, 0x72, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x0a, - 0x74, 0x65, 0x78, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x22, - 0xed, 0x01, 0x0a, 0x09, 0x4d, 0x75, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x2d, 0x0a, - 0x12, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x72, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x5c, 0x0a, 0x10, - 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0f, 0x73, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0xac, 0x03, 0x0a, 0x08, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x6d, - 0x75, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x75, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x61, - 0x78, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4d, 0x0a, - 0x15, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x4b, 0x65, 0x65, 0x70, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x18, - 0x75, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x73, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, - 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x41, 0x73, 0x54, 0x69, 0x6d, - 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x40, 0x0a, 0x0c, - 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, - 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x48, - 0x4c, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x53, 0x48, 0x10, 0x02, 0x22, 0xc8, - 0x02, 0x0a, 0x0b, 0x53, 0x70, 0x72, 0x69, 0x74, 0x65, 0x53, 0x68, 0x65, 0x65, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x33, 0x0a, 0x13, - 0x73, 0x70, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x70, 0x69, 0x78, - 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, - 0x73, 0x70, 0x72, 0x69, 0x74, 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x50, 0x69, 0x78, 0x65, 0x6c, - 0x73, 0x12, 0x35, 0x0a, 0x14, 0x73, 0x70, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x12, 0x73, 0x70, 0x72, 0x69, 0x74, 0x65, 0x48, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, - 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x72, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, - 0x18, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xc3, 0x04, 0x0a, 0x13, 0x50, 0x72, - 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x51, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x52, 0x05, 0x61, - 0x75, 0x64, 0x69, 0x6f, 0x12, 0x4e, 0x0a, 0x04, 0x63, 0x72, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x72, 0x6f, 0x70, 0x52, 0x04, - 0x63, 0x72, 0x6f, 0x70, 0x12, 0x4b, 0x0a, 0x03, 0x70, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, - 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x61, 0x64, 0x52, 0x03, 0x70, 0x61, - 0x64, 0x1a, 0x1b, 0x0a, 0x05, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x75, - 0x66, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x6c, 0x75, 0x66, 0x73, 0x1a, 0x8e, - 0x01, 0x0a, 0x04, 0x43, 0x72, 0x6f, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x5f, 0x70, - 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x70, - 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, - 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, - 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, - 0x65, 0x66, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x72, 0x69, 0x67, 0x68, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x1a, - 0x8d, 0x01, 0x0a, 0x03, 0x50, 0x61, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x5f, 0x70, - 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x70, - 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, - 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, - 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, - 0x65, 0x66, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x72, 0x69, 0x67, 0x68, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x22, - 0xbf, 0x05, 0x0a, 0x0b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, - 0x55, 0x0a, 0x04, 0x68, 0x32, 0x36, 0x34, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, + 0x31, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x72, 0x6f, 0x70, 0x52, 0x04, 0x63, 0x72, 0x6f, 0x70, + 0x12, 0x4b, 0x0a, 0x03, 0x70, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x48, 0x32, 0x36, - 0x34, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, - 0x52, 0x04, 0x68, 0x32, 0x36, 0x34, 0x1a, 0xc6, 0x04, 0x0a, 0x11, 0x48, 0x32, 0x36, 0x34, 0x43, - 0x6f, 0x64, 0x65, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, - 0x23, 0x0a, 0x0d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x69, - 0x78, 0x65, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x69, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x5f, 0x62, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x0a, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x42, 0x70, 0x73, 0x12, 0x24, - 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x67, 0x6f, 0x70, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x65, - 0x6e, 0x47, 0x6f, 0x70, 0x12, 0x28, 0x0a, 0x0f, 0x67, 0x6f, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, - 0x0d, 0x67, 0x6f, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3e, - 0x0a, 0x0c, 0x67, 0x6f, 0x70, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x0b, 0x67, 0x6f, 0x70, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, - 0x0a, 0x0d, 0x76, 0x62, 0x76, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x62, 0x76, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x69, - 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x62, 0x76, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x6e, 0x65, - 0x73, 0x73, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x76, - 0x62, 0x76, 0x46, 0x75, 0x6c, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x42, 0x69, 0x74, 0x73, 0x12, 0x23, - 0x0a, 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x43, 0x6f, - 0x64, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x5f, 0x70, 0x79, 0x72, 0x61, 0x6d, 0x69, 0x64, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x62, 0x50, 0x79, 0x72, 0x61, 0x6d, 0x69, 0x64, - 0x12, 0x22, 0x0a, 0x0d, 0x62, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x61, 0x71, 0x53, 0x74, 0x72, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x75, 0x6e, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x75, 0x6e, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x67, 0x6f, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x2e, 0x50, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x61, 0x64, 0x52, 0x03, 0x70, 0x61, 0x64, 0x1a, 0x1b, 0x0a, + 0x05, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x75, 0x66, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x6c, 0x75, 0x66, 0x73, 0x1a, 0x8e, 0x01, 0x0a, 0x04, 0x43, + 0x72, 0x6f, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x50, 0x69, 0x78, 0x65, + 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x69, 0x78, + 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x6f, 0x74, 0x74, 0x6f, + 0x6d, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x65, 0x66, 0x74, 0x5f, + 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x65, + 0x66, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x1a, 0x8d, 0x01, 0x0a, 0x03, + 0x50, 0x61, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x50, 0x69, 0x78, 0x65, + 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x69, 0x78, + 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x6f, 0x74, 0x74, 0x6f, + 0x6d, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x65, 0x66, 0x74, 0x5f, + 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x65, + 0x66, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x22, 0x93, 0x0a, 0x0a, 0x0b, + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x55, 0x0a, 0x04, 0x68, + 0x32, 0x36, 0x34, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x48, 0x32, 0x36, 0x34, 0x43, 0x6f, 0x64, + 0x65, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x04, 0x68, 0x32, + 0x36, 0x34, 0x12, 0x55, 0x0a, 0x04, 0x68, 0x32, 0x36, 0x35, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x48, 0x32, 0x36, 0x35, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x48, 0x00, 0x52, 0x04, 0x68, 0x32, 0x36, 0x35, 0x1a, 0xc6, 0x04, 0x0a, 0x11, 0x48, 0x32, + 0x36, 0x34, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x69, 0x78, 0x65, + 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x69, 0x78, + 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x62, + 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x42, 0x70, + 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, + 0x67, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x4f, 0x70, 0x65, 0x6e, 0x47, 0x6f, 0x70, 0x12, 0x28, 0x0a, 0x0f, 0x67, 0x6f, 0x70, 0x5f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x48, 0x00, 0x52, 0x0d, 0x67, 0x6f, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x67, 0x6f, 0x70, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x6f, 0x70, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x76, 0x62, 0x76, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x69, + 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x62, 0x76, 0x53, 0x69, 0x7a, + 0x65, 0x42, 0x69, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x62, 0x76, 0x5f, 0x66, 0x75, 0x6c, + 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0f, 0x76, 0x62, 0x76, 0x46, 0x75, 0x6c, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x42, 0x69, 0x74, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x70, + 0x79, 0x43, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x5f, 0x70, 0x79, 0x72, 0x61, + 0x6d, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x62, 0x50, 0x79, 0x72, 0x61, + 0x6d, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x62, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x71, 0x5f, 0x73, 0x74, + 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x61, 0x71, + 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x75, 0x6e, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x75, 0x6e, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x67, 0x6f, 0x70, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x1a, 0xfa, 0x03, 0x0a, 0x11, 0x48, 0x32, 0x36, 0x35, 0x43, 0x6f, 0x64, 0x65, 0x63, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, + 0x12, 0x28, 0x0a, 0x0d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x24, + 0x0a, 0x0b, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x70, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x42, 0x70, 0x73, 0x12, 0x2d, 0x0a, 0x0f, 0x67, 0x6f, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x67, 0x6f, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0c, 0x67, 0x6f, 0x70, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x6f, 0x70, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0d, 0x76, 0x62, 0x76, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x76, 0x62, 0x76, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x69, 0x74, + 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x76, 0x62, 0x76, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x6e, 0x65, 0x73, + 0x73, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0f, 0x76, 0x62, 0x76, 0x46, 0x75, 0x6c, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x42, 0x69, + 0x74, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x5f, 0x70, 0x79, 0x72, 0x61, 0x6d, 0x69, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x62, 0x50, 0x79, 0x72, + 0x61, 0x6d, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0b, 0x62, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, + 0x0b, 0x61, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x61, 0x71, 0x53, 0x74, 0x72, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x67, 0x6f, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xfb, 0x03, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x75, 0x78, 0x18, 0x08, 0x20, @@ -1831,51 +2686,76 @@ var file_google_cloud_video_livestream_v1_outputs_proto_rawDesc = []byte{ 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x69, 0x6e, 0x5f, 0x64, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x67, 0x61, 0x69, 0x6e, 0x44, 0x62, 0x22, - 0x27, 0x0a, 0x0a, 0x54, 0x65, 0x78, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x19, 0x0a, - 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x22, 0x57, 0x0a, 0x0f, 0x53, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x73, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0xc9, 0x02, 0x0a, 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x57, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3a, 0x0a, - 0x0a, 0x75, 0x74, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, - 0x75, 0x74, 0x63, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x5a, - 0x6f, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x22, - 0x5d, 0x0a, 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x49, 0x4d, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x49, 0x4d, 0x45, - 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4d, 0x42, 0x45, 0x44, - 0x44, 0x45, 0x44, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x02, 0x42, 0x0d, - 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0xe9, 0x01, - 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x44, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x61, 0x70, 0x69, - 0x76, 0x31, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x70, 0x62, 0x3b, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x20, 0x47, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x56, 0x69, 0x64, 0x65, - 0x6f, 0x2e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x56, - 0x69, 0x64, 0x65, 0x6f, 0x5c, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5c, - 0x56, 0x31, 0xea, 0x02, 0x24, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x3a, 0x3a, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x3a, 0x3a, 0x4c, 0x69, 0x76, 0x65, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0xc1, 0x03, 0x0a, 0x0a, 0x54, 0x65, 0x78, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, + 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x12, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x65, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x43, 0x65, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x57, + 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x54, 0x65, + 0x78, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, + 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x1a, 0xb9, 0x01, 0x0a, 0x0b, 0x54, 0x65, 0x78, 0x74, + 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x08, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x12, + 0x2f, 0x0a, 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x65, 0x61, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x65, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x12, 0x31, 0x0a, 0x12, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x10, 0x66, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, + 0x6f, 0x64, 0x65, 0x22, 0x57, 0x0a, 0x0f, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x73, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc9, 0x02, 0x0a, + 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x57, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x75, 0x74, 0x63, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x75, 0x74, 0x63, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x48, 0x00, + 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x22, 0x5d, 0x0a, 0x0e, 0x54, 0x69, + 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x1b, + 0x54, 0x49, 0x4d, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, + 0x0f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, + 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x45, 0x44, 0x5f, 0x54, + 0x49, 0x4d, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x02, 0x42, 0x0d, 0x0a, 0x0b, 0x74, 0x69, 0x6d, + 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0xe9, 0x01, 0x0a, 0x24, 0x63, 0x6f, 0x6d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, + 0x31, 0x42, 0x0c, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x44, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, 0x6c, 0x69, 0x76, + 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x6c, 0x69, + 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x70, 0x62, 0x3b, 0x6c, 0x69, 0x76, 0x65, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x4c, 0x69, 0x76, + 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x20, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x5c, + 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x24, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x56, + 0x69, 0x64, 0x65, 0x6f, 0x3a, 0x3a, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1890,52 +2770,67 @@ func file_google_cloud_video_livestream_v1_outputs_proto_rawDescGZIP() []byte { return file_google_cloud_video_livestream_v1_outputs_proto_rawDescData } -var file_google_cloud_video_livestream_v1_outputs_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_google_cloud_video_livestream_v1_outputs_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_google_cloud_video_livestream_v1_outputs_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_google_cloud_video_livestream_v1_outputs_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_google_cloud_video_livestream_v1_outputs_proto_goTypes = []any{ (Manifest_ManifestType)(0), // 0: google.cloud.video.livestream.v1.Manifest.ManifestType - (TimecodeConfig_TimecodeSource)(0), // 1: google.cloud.video.livestream.v1.TimecodeConfig.TimecodeSource - (*ElementaryStream)(nil), // 2: google.cloud.video.livestream.v1.ElementaryStream - (*MuxStream)(nil), // 3: google.cloud.video.livestream.v1.MuxStream - (*Manifest)(nil), // 4: google.cloud.video.livestream.v1.Manifest - (*SpriteSheet)(nil), // 5: google.cloud.video.livestream.v1.SpriteSheet - (*PreprocessingConfig)(nil), // 6: google.cloud.video.livestream.v1.PreprocessingConfig - (*VideoStream)(nil), // 7: google.cloud.video.livestream.v1.VideoStream - (*AudioStream)(nil), // 8: google.cloud.video.livestream.v1.AudioStream - (*TextStream)(nil), // 9: google.cloud.video.livestream.v1.TextStream - (*SegmentSettings)(nil), // 10: google.cloud.video.livestream.v1.SegmentSettings - (*TimecodeConfig)(nil), // 11: google.cloud.video.livestream.v1.TimecodeConfig - (*PreprocessingConfig_Audio)(nil), // 12: google.cloud.video.livestream.v1.PreprocessingConfig.Audio - (*PreprocessingConfig_Crop)(nil), // 13: google.cloud.video.livestream.v1.PreprocessingConfig.Crop - (*PreprocessingConfig_Pad)(nil), // 14: google.cloud.video.livestream.v1.PreprocessingConfig.Pad - (*VideoStream_H264CodecSettings)(nil), // 15: google.cloud.video.livestream.v1.VideoStream.H264CodecSettings - (*AudioStream_AudioMapping)(nil), // 16: google.cloud.video.livestream.v1.AudioStream.AudioMapping - (*durationpb.Duration)(nil), // 17: google.protobuf.Duration - (*datetime.TimeZone)(nil), // 18: google.type.TimeZone + (Distribution_State)(0), // 1: google.cloud.video.livestream.v1.Distribution.State + (TimecodeConfig_TimecodeSource)(0), // 2: google.cloud.video.livestream.v1.TimecodeConfig.TimecodeSource + (*ElementaryStream)(nil), // 3: google.cloud.video.livestream.v1.ElementaryStream + (*MuxStream)(nil), // 4: google.cloud.video.livestream.v1.MuxStream + (*Manifest)(nil), // 5: google.cloud.video.livestream.v1.Manifest + (*DistributionStream)(nil), // 6: google.cloud.video.livestream.v1.DistributionStream + (*Distribution)(nil), // 7: google.cloud.video.livestream.v1.Distribution + (*SrtPushOutputEndpoint)(nil), // 8: google.cloud.video.livestream.v1.SrtPushOutputEndpoint + (*RtmpPushOutputEndpoint)(nil), // 9: google.cloud.video.livestream.v1.RtmpPushOutputEndpoint + (*SpriteSheet)(nil), // 10: google.cloud.video.livestream.v1.SpriteSheet + (*PreprocessingConfig)(nil), // 11: google.cloud.video.livestream.v1.PreprocessingConfig + (*VideoStream)(nil), // 12: google.cloud.video.livestream.v1.VideoStream + (*AudioStream)(nil), // 13: google.cloud.video.livestream.v1.AudioStream + (*TextStream)(nil), // 14: google.cloud.video.livestream.v1.TextStream + (*SegmentSettings)(nil), // 15: google.cloud.video.livestream.v1.SegmentSettings + (*TimecodeConfig)(nil), // 16: google.cloud.video.livestream.v1.TimecodeConfig + (*PreprocessingConfig_Audio)(nil), // 17: google.cloud.video.livestream.v1.PreprocessingConfig.Audio + (*PreprocessingConfig_Crop)(nil), // 18: google.cloud.video.livestream.v1.PreprocessingConfig.Crop + (*PreprocessingConfig_Pad)(nil), // 19: google.cloud.video.livestream.v1.PreprocessingConfig.Pad + (*VideoStream_H264CodecSettings)(nil), // 20: google.cloud.video.livestream.v1.VideoStream.H264CodecSettings + (*VideoStream_H265CodecSettings)(nil), // 21: google.cloud.video.livestream.v1.VideoStream.H265CodecSettings + (*AudioStream_AudioMapping)(nil), // 22: google.cloud.video.livestream.v1.AudioStream.AudioMapping + (*TextStream_TextMapping)(nil), // 23: google.cloud.video.livestream.v1.TextStream.TextMapping + (*durationpb.Duration)(nil), // 24: google.protobuf.Duration + (*status.Status)(nil), // 25: google.rpc.Status + (*datetime.TimeZone)(nil), // 26: google.type.TimeZone } var file_google_cloud_video_livestream_v1_outputs_proto_depIdxs = []int32{ - 7, // 0: google.cloud.video.livestream.v1.ElementaryStream.video_stream:type_name -> google.cloud.video.livestream.v1.VideoStream - 8, // 1: google.cloud.video.livestream.v1.ElementaryStream.audio_stream:type_name -> google.cloud.video.livestream.v1.AudioStream - 9, // 2: google.cloud.video.livestream.v1.ElementaryStream.text_stream:type_name -> google.cloud.video.livestream.v1.TextStream - 10, // 3: google.cloud.video.livestream.v1.MuxStream.segment_settings:type_name -> google.cloud.video.livestream.v1.SegmentSettings + 12, // 0: google.cloud.video.livestream.v1.ElementaryStream.video_stream:type_name -> google.cloud.video.livestream.v1.VideoStream + 13, // 1: google.cloud.video.livestream.v1.ElementaryStream.audio_stream:type_name -> google.cloud.video.livestream.v1.AudioStream + 14, // 2: google.cloud.video.livestream.v1.ElementaryStream.text_stream:type_name -> google.cloud.video.livestream.v1.TextStream + 15, // 3: google.cloud.video.livestream.v1.MuxStream.segment_settings:type_name -> google.cloud.video.livestream.v1.SegmentSettings 0, // 4: google.cloud.video.livestream.v1.Manifest.type:type_name -> google.cloud.video.livestream.v1.Manifest.ManifestType - 17, // 5: google.cloud.video.livestream.v1.Manifest.segment_keep_duration:type_name -> google.protobuf.Duration - 17, // 6: google.cloud.video.livestream.v1.SpriteSheet.interval:type_name -> google.protobuf.Duration - 12, // 7: google.cloud.video.livestream.v1.PreprocessingConfig.audio:type_name -> google.cloud.video.livestream.v1.PreprocessingConfig.Audio - 13, // 8: google.cloud.video.livestream.v1.PreprocessingConfig.crop:type_name -> google.cloud.video.livestream.v1.PreprocessingConfig.Crop - 14, // 9: google.cloud.video.livestream.v1.PreprocessingConfig.pad:type_name -> google.cloud.video.livestream.v1.PreprocessingConfig.Pad - 15, // 10: google.cloud.video.livestream.v1.VideoStream.h264:type_name -> google.cloud.video.livestream.v1.VideoStream.H264CodecSettings - 16, // 11: google.cloud.video.livestream.v1.AudioStream.mapping:type_name -> google.cloud.video.livestream.v1.AudioStream.AudioMapping - 17, // 12: google.cloud.video.livestream.v1.SegmentSettings.segment_duration:type_name -> google.protobuf.Duration - 1, // 13: google.cloud.video.livestream.v1.TimecodeConfig.source:type_name -> google.cloud.video.livestream.v1.TimecodeConfig.TimecodeSource - 17, // 14: google.cloud.video.livestream.v1.TimecodeConfig.utc_offset:type_name -> google.protobuf.Duration - 18, // 15: google.cloud.video.livestream.v1.TimecodeConfig.time_zone:type_name -> google.type.TimeZone - 17, // 16: google.cloud.video.livestream.v1.VideoStream.H264CodecSettings.gop_duration:type_name -> google.protobuf.Duration - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 24, // 5: google.cloud.video.livestream.v1.Manifest.segment_keep_duration:type_name -> google.protobuf.Duration + 1, // 6: google.cloud.video.livestream.v1.Distribution.state:type_name -> google.cloud.video.livestream.v1.Distribution.State + 25, // 7: google.cloud.video.livestream.v1.Distribution.error:type_name -> google.rpc.Status + 8, // 8: google.cloud.video.livestream.v1.Distribution.srt_push:type_name -> google.cloud.video.livestream.v1.SrtPushOutputEndpoint + 9, // 9: google.cloud.video.livestream.v1.Distribution.rtmp_push:type_name -> google.cloud.video.livestream.v1.RtmpPushOutputEndpoint + 24, // 10: google.cloud.video.livestream.v1.SpriteSheet.interval:type_name -> google.protobuf.Duration + 17, // 11: google.cloud.video.livestream.v1.PreprocessingConfig.audio:type_name -> google.cloud.video.livestream.v1.PreprocessingConfig.Audio + 18, // 12: google.cloud.video.livestream.v1.PreprocessingConfig.crop:type_name -> google.cloud.video.livestream.v1.PreprocessingConfig.Crop + 19, // 13: google.cloud.video.livestream.v1.PreprocessingConfig.pad:type_name -> google.cloud.video.livestream.v1.PreprocessingConfig.Pad + 20, // 14: google.cloud.video.livestream.v1.VideoStream.h264:type_name -> google.cloud.video.livestream.v1.VideoStream.H264CodecSettings + 21, // 15: google.cloud.video.livestream.v1.VideoStream.h265:type_name -> google.cloud.video.livestream.v1.VideoStream.H265CodecSettings + 22, // 16: google.cloud.video.livestream.v1.AudioStream.mapping:type_name -> google.cloud.video.livestream.v1.AudioStream.AudioMapping + 23, // 17: google.cloud.video.livestream.v1.TextStream.mapping:type_name -> google.cloud.video.livestream.v1.TextStream.TextMapping + 24, // 18: google.cloud.video.livestream.v1.SegmentSettings.segment_duration:type_name -> google.protobuf.Duration + 2, // 19: google.cloud.video.livestream.v1.TimecodeConfig.source:type_name -> google.cloud.video.livestream.v1.TimecodeConfig.TimecodeSource + 24, // 20: google.cloud.video.livestream.v1.TimecodeConfig.utc_offset:type_name -> google.protobuf.Duration + 26, // 21: google.cloud.video.livestream.v1.TimecodeConfig.time_zone:type_name -> google.type.TimeZone + 24, // 22: google.cloud.video.livestream.v1.VideoStream.H264CodecSettings.gop_duration:type_name -> google.protobuf.Duration + 24, // 23: google.cloud.video.livestream.v1.VideoStream.H265CodecSettings.gop_duration:type_name -> google.protobuf.Duration + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { file_google_cloud_video_livestream_v1_outputs_proto_init() } @@ -1948,24 +2843,36 @@ func file_google_cloud_video_livestream_v1_outputs_proto_init() { (*ElementaryStream_AudioStream)(nil), (*ElementaryStream_TextStream)(nil), } + file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[4].OneofWrappers = []any{ + (*Distribution_SrtPush)(nil), + (*Distribution_RtmpPush)(nil), + } file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[5].OneofWrappers = []any{ - (*VideoStream_H264)(nil), + (*SrtPushOutputEndpoint_PassphraseSecretVersion)(nil), } file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[9].OneofWrappers = []any{ + (*VideoStream_H264)(nil), + (*VideoStream_H265)(nil), + } + file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[13].OneofWrappers = []any{ (*TimecodeConfig_UtcOffset)(nil), (*TimecodeConfig_TimeZone)(nil), } - file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[13].OneofWrappers = []any{ + file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[17].OneofWrappers = []any{ (*VideoStream_H264CodecSettings_GopFrameCount)(nil), (*VideoStream_H264CodecSettings_GopDuration)(nil), } + file_google_cloud_video_livestream_v1_outputs_proto_msgTypes[18].OneofWrappers = []any{ + (*VideoStream_H265CodecSettings_GopFrameCount)(nil), + (*VideoStream_H265CodecSettings_GopDuration)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_video_livestream_v1_outputs_proto_rawDesc, - NumEnums: 2, - NumMessages: 15, + NumEnums: 3, + NumMessages: 21, NumExtensions: 0, NumServices: 0, }, diff --git a/video/livestream/apiv1/livestreampb/resources.pb.go b/video/livestream/apiv1/livestreampb/resources.pb.go index 2ee7faa831c8..9580623437e1 100755 --- a/video/livestream/apiv1/livestreampb/resources.pb.go +++ b/video/livestream/apiv1/livestreampb/resources.pb.go @@ -101,8 +101,14 @@ const ( Input_SD Input_Tier = 1 // Resolution <= 1920x1080. Bitrate <= 25 Mbps. FPS <= 60. Input_HD Input_Tier = 2 - // Resolution <= 4096x2160. Not supported yet. + // Resolution <= 4096x2160. Bitrate <= 50 Mbps. FPS <= 60. Input_UHD Input_Tier = 3 + // Resolution <= 1280x720. Bitrate <= 6 Mbps. FPS <= 60. H265 codec. + Input_SD_H265 Input_Tier = 4 + // Resolution <= 1920x1080. Bitrate <= 25 Mbps. FPS <= 60. H265 codec. + Input_HD_H265 Input_Tier = 5 + // Resolution <= 4096x2160. Bitrate <= 50 Mbps. FPS <= 60. H265 codec. + Input_UHD_H265 Input_Tier = 6 ) // Enum value maps for Input_Tier. @@ -112,12 +118,18 @@ var ( 1: "SD", 2: "HD", 3: "UHD", + 4: "SD_H265", + 5: "HD_H265", + 6: "UHD_H265", } Input_Tier_value = map[string]int32{ "TIER_UNSPECIFIED": 0, "SD": 1, "HD": 2, "UHD": 3, + "SD_H265": 4, + "HD_H265": 5, + "UHD_H265": 6, } ) @@ -359,6 +371,123 @@ func (LogConfig_LogSeverity) EnumDescriptor() ([]byte, []int) { return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{6, 0} } +// Whether auto-generated text streams are displayed synchronously or +// asynchronously with the original audio. +type AutoTranscriptionConfig_DisplayTiming int32 + +const ( + // Display timing is not specified. Caption display will be asynchronous by + // default. + AutoTranscriptionConfig_DISPLAY_TIMING_UNSPECIFIED AutoTranscriptionConfig_DisplayTiming = 0 + // Caption will be displayed asynchronous with audio. + AutoTranscriptionConfig_ASYNC AutoTranscriptionConfig_DisplayTiming = 1 + // Caption will be displayed synchronous with audio. This option increases + // overall media output latency, and reduces viewing latency between audio + // and auto-generated captions. + AutoTranscriptionConfig_SYNC AutoTranscriptionConfig_DisplayTiming = 2 +) + +// Enum value maps for AutoTranscriptionConfig_DisplayTiming. +var ( + AutoTranscriptionConfig_DisplayTiming_name = map[int32]string{ + 0: "DISPLAY_TIMING_UNSPECIFIED", + 1: "ASYNC", + 2: "SYNC", + } + AutoTranscriptionConfig_DisplayTiming_value = map[string]int32{ + "DISPLAY_TIMING_UNSPECIFIED": 0, + "ASYNC": 1, + "SYNC": 2, + } +) + +func (x AutoTranscriptionConfig_DisplayTiming) Enum() *AutoTranscriptionConfig_DisplayTiming { + p := new(AutoTranscriptionConfig_DisplayTiming) + *p = x + return p +} + +func (x AutoTranscriptionConfig_DisplayTiming) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AutoTranscriptionConfig_DisplayTiming) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[5].Descriptor() +} + +func (AutoTranscriptionConfig_DisplayTiming) Type() protoreflect.EnumType { + return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[5] +} + +func (x AutoTranscriptionConfig_DisplayTiming) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AutoTranscriptionConfig_DisplayTiming.Descriptor instead. +func (AutoTranscriptionConfig_DisplayTiming) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14, 0} +} + +// Presets to tune the latency and quality of auto-generated captions. +type AutoTranscriptionConfig_QualityPreset int32 + +const ( + // Quality Preset is not specified. By default, BALANCED_QUALITY will be + // used. + AutoTranscriptionConfig_QUALITY_PRESET_UNSPECIFIED AutoTranscriptionConfig_QualityPreset = 0 + // Reduce the latency of auto-generated captions. This may reduce the + // quality of the captions. + AutoTranscriptionConfig_LOW_LATENCY AutoTranscriptionConfig_QualityPreset = 1 + // Default behavior when QualityPreset is not specified. + AutoTranscriptionConfig_BALANCED_QUALITY AutoTranscriptionConfig_QualityPreset = 2 + // Increases the quality of the auto-generated captions at the cost of + // higher latency. + AutoTranscriptionConfig_IMPROVED_QUALITY AutoTranscriptionConfig_QualityPreset = 3 +) + +// Enum value maps for AutoTranscriptionConfig_QualityPreset. +var ( + AutoTranscriptionConfig_QualityPreset_name = map[int32]string{ + 0: "QUALITY_PRESET_UNSPECIFIED", + 1: "LOW_LATENCY", + 2: "BALANCED_QUALITY", + 3: "IMPROVED_QUALITY", + } + AutoTranscriptionConfig_QualityPreset_value = map[string]int32{ + "QUALITY_PRESET_UNSPECIFIED": 0, + "LOW_LATENCY": 1, + "BALANCED_QUALITY": 2, + "IMPROVED_QUALITY": 3, + } +) + +func (x AutoTranscriptionConfig_QualityPreset) Enum() *AutoTranscriptionConfig_QualityPreset { + p := new(AutoTranscriptionConfig_QualityPreset) + *p = x + return p +} + +func (x AutoTranscriptionConfig_QualityPreset) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AutoTranscriptionConfig_QualityPreset) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[6].Descriptor() +} + +func (AutoTranscriptionConfig_QualityPreset) Type() protoreflect.EnumType { + return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[6] +} + +func (x AutoTranscriptionConfig_QualityPreset) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AutoTranscriptionConfig_QualityPreset.Descriptor instead. +func (AutoTranscriptionConfig_QualityPreset) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14, 1} +} + // State of the event type Event_State int32 @@ -412,11 +541,11 @@ func (x Event_State) String() string { } func (Event_State) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[5].Descriptor() + return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[7].Descriptor() } func (Event_State) Type() protoreflect.EnumType { - return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[5] + return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[7] } func (x Event_State) Number() protoreflect.EnumNumber { @@ -425,7 +554,7 @@ func (x Event_State) Number() protoreflect.EnumNumber { // Deprecated: Use Event_State.Descriptor instead. func (Event_State) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14, 0} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 0} } // State of clipping operation. @@ -476,11 +605,11 @@ func (x Clip_State) String() string { } func (Clip_State) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[6].Descriptor() + return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[8].Descriptor() } func (Clip_State) Type() protoreflect.EnumType { - return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[6] + return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[8] } func (x Clip_State) Number() protoreflect.EnumNumber { @@ -489,7 +618,7 @@ func (x Clip_State) Number() protoreflect.EnumNumber { // Deprecated: Use Clip_State.Descriptor instead. func (Clip_State) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 0} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{16, 0} } // OutputType represents the output type of the clip. @@ -529,11 +658,11 @@ func (x Clip_OutputType) String() string { } func (Clip_OutputType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[7].Descriptor() + return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[9].Descriptor() } func (Clip_OutputType) Type() protoreflect.EnumType { - return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[7] + return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[9] } func (x Clip_OutputType) Number() protoreflect.EnumNumber { @@ -542,7 +671,7 @@ func (x Clip_OutputType) Number() protoreflect.EnumNumber { // Deprecated: Use Clip_OutputType.Descriptor instead. func (Clip_OutputType) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 1} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{16, 1} } // State of the DVR session. @@ -625,11 +754,11 @@ func (x DvrSession_State) String() string { } func (DvrSession_State) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[8].Descriptor() + return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[10].Descriptor() } func (DvrSession_State) Type() protoreflect.EnumType { - return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[8] + return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[10] } func (x DvrSession_State) Number() protoreflect.EnumNumber { @@ -638,7 +767,7 @@ func (x DvrSession_State) Number() protoreflect.EnumNumber { // Deprecated: Use DvrSession_State.Descriptor instead. func (DvrSession_State) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{17, 0} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{18, 0} } // State of the asset resource. @@ -686,11 +815,11 @@ func (x Asset_State) String() string { } func (Asset_State) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[9].Descriptor() + return file_google_cloud_video_livestream_v1_resources_proto_enumTypes[11].Descriptor() } func (Asset_State) Type() protoreflect.EnumType { - return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[9] + return &file_google_cloud_video_livestream_v1_resources_proto_enumTypes[11] } func (x Asset_State) Number() protoreflect.EnumNumber { @@ -699,7 +828,7 @@ func (x Asset_State) Number() protoreflect.EnumNumber { // Deprecated: Use Asset_State.Descriptor instead. func (Asset_State) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{18, 0} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 0} } // Input resource represents the endpoint from which the channel ingests @@ -879,6 +1008,10 @@ type Channel struct { MuxStreams []*MuxStream `protobuf:"bytes,11,rep,name=mux_streams,json=muxStreams,proto3" json:"mux_streams,omitempty"` // List of output manifests. Manifests []*Manifest `protobuf:"bytes,12,rep,name=manifests,proto3" json:"manifests,omitempty"` + // Optional. List of multiplexing settings of streams for distributions. + DistributionStreams []*DistributionStream `protobuf:"bytes,28,rep,name=distribution_streams,json=distributionStreams,proto3" json:"distribution_streams,omitempty"` + // Optional. List of distributions. + Distributions []*Distribution `protobuf:"bytes,29,rep,name=distributions,proto3" json:"distributions,omitempty"` // List of output sprite sheets. SpriteSheets []*SpriteSheet `protobuf:"bytes,13,rep,name=sprite_sheets,json=spriteSheets,proto3" json:"sprite_sheets,omitempty"` // Output only. State of the streaming operation. @@ -893,9 +1026,9 @@ type Channel struct { LogConfig *LogConfig `protobuf:"bytes,19,opt,name=log_config,json=logConfig,proto3" json:"log_config,omitempty"` // Configuration of timecode for this channel. TimecodeConfig *TimecodeConfig `protobuf:"bytes,21,opt,name=timecode_config,json=timecodeConfig,proto3" json:"timecode_config,omitempty"` - // Encryption configurations for this channel. Each configuration has an ID - // which is referred to by each MuxStream to indicate which configuration is - // used for that output. + // Optional. Encryption configurations for this channel. Each configuration + // has an ID which is referred to by each MuxStream to indicate which + // configuration is used for that output. Encryptions []*Encryption `protobuf:"bytes,24,rep,name=encryptions,proto3" json:"encryptions,omitempty"` // The configuration for input sources defined in // [input_attachments][google.cloud.video.livestream.v1.Channel.input_attachments]. @@ -905,6 +1038,8 @@ type Channel struct { // Optional. List of static overlay images. Those images display over the // output content for the whole duration of the live stream. StaticOverlays []*StaticOverlay `protobuf:"bytes,27,rep,name=static_overlays,json=staticOverlays,proto3" json:"static_overlays,omitempty"` + // Optional. Advanced configurations for auto-generated text streams. + AutoTranscriptionConfig *AutoTranscriptionConfig `protobuf:"bytes,30,opt,name=auto_transcription_config,json=autoTranscriptionConfig,proto3" json:"auto_transcription_config,omitempty"` } func (x *Channel) Reset() { @@ -1007,6 +1142,20 @@ func (x *Channel) GetManifests() []*Manifest { return nil } +func (x *Channel) GetDistributionStreams() []*DistributionStream { + if x != nil { + return x.DistributionStreams + } + return nil +} + +func (x *Channel) GetDistributions() []*Distribution { + if x != nil { + return x.Distributions + } + return nil +} + func (x *Channel) GetSpriteSheets() []*SpriteSheet { if x != nil { return x.SpriteSheets @@ -1070,6 +1219,13 @@ func (x *Channel) GetStaticOverlays() []*StaticOverlay { return nil } +func (x *Channel) GetAutoTranscriptionConfig() *AutoTranscriptionConfig { + if x != nil { + return x.AutoTranscriptionConfig + } + return nil +} + // 2D normalized coordinates. type NormalizedCoordinate struct { state protoimpl.MessageState @@ -1812,6 +1968,63 @@ func (x *InputAttachment) GetAutomaticFailover() *InputAttachment_AutomaticFailo return nil } +// Advanced configurations for auto-generated text streams. +type AutoTranscriptionConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Whether auto-generated text streams are displayed synchronously + // or asynchronously with the original audio. + DisplayTiming AutoTranscriptionConfig_DisplayTiming `protobuf:"varint,1,opt,name=display_timing,json=displayTiming,proto3,enum=google.cloud.video.livestream.v1.AutoTranscriptionConfig_DisplayTiming" json:"display_timing,omitempty"` + // Optional. Tunes the latency and quality of auto-generated captions. + QualityPreset AutoTranscriptionConfig_QualityPreset `protobuf:"varint,2,opt,name=quality_preset,json=qualityPreset,proto3,enum=google.cloud.video.livestream.v1.AutoTranscriptionConfig_QualityPreset" json:"quality_preset,omitempty"` +} + +func (x *AutoTranscriptionConfig) Reset() { + *x = AutoTranscriptionConfig{} + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AutoTranscriptionConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AutoTranscriptionConfig) ProtoMessage() {} + +func (x *AutoTranscriptionConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AutoTranscriptionConfig.ProtoReflect.Descriptor instead. +func (*AutoTranscriptionConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14} +} + +func (x *AutoTranscriptionConfig) GetDisplayTiming() AutoTranscriptionConfig_DisplayTiming { + if x != nil { + return x.DisplayTiming + } + return AutoTranscriptionConfig_DISPLAY_TIMING_UNSPECIFIED +} + +func (x *AutoTranscriptionConfig) GetQualityPreset() AutoTranscriptionConfig_QualityPreset { + if x != nil { + return x.QualityPreset + } + return AutoTranscriptionConfig_QUALITY_PRESET_UNSPECIFIED +} + // Event is a sub-resource of a channel, which can be scheduled by the user to // execute operations on a channel resource without having to stop the channel. type Event struct { @@ -1838,6 +2051,7 @@ type Event struct { // *Event_Slate // *Event_Mute // *Event_Unmute + // *Event_UpdateEncryptions Task isEvent_Task `protobuf_oneof:"task"` // When this field is set to true, the event will be executed at the earliest // time that the server can schedule the event and @@ -1862,7 +2076,7 @@ type Event struct { func (x *Event) Reset() { *x = Event{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[14] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1874,7 +2088,7 @@ func (x *Event) String() string { func (*Event) ProtoMessage() {} func (x *Event) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[14] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1887,7 +2101,7 @@ func (x *Event) ProtoReflect() protoreflect.Message { // Deprecated: Use Event.ProtoReflect.Descriptor instead. func (*Event) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15} } func (x *Event) GetName() string { @@ -1967,6 +2181,13 @@ func (x *Event) GetUnmute() *Event_UnmuteTask { return nil } +func (x *Event) GetUpdateEncryptions() *Event_UpdateEncryptionsTask { + if x, ok := x.GetTask().(*Event_UpdateEncryptions); ok { + return x.UpdateEncryptions + } + return nil +} + func (x *Event) GetExecuteNow() bool { if x != nil { return x.ExecuteNow @@ -2029,6 +2250,11 @@ type Event_Unmute struct { Unmute *Event_UnmuteTask `protobuf:"bytes,16,opt,name=unmute,proto3,oneof"` } +type Event_UpdateEncryptions struct { + // Updates encryption settings. + UpdateEncryptions *Event_UpdateEncryptionsTask `protobuf:"bytes,17,opt,name=update_encryptions,json=updateEncryptions,proto3,oneof"` +} + func (*Event_InputSwitch) isEvent_Task() {} func (*Event_AdBreak) isEvent_Task() {} @@ -2041,6 +2267,8 @@ func (*Event_Mute) isEvent_Task() {} func (*Event_Unmute) isEvent_Task() {} +func (*Event_UpdateEncryptions) isEvent_Task() {} + // Clip is a sub-resource under channel. Each clip represents a clipping // operation that generates a VOD playlist from its channel given a set of // timestamp ranges. @@ -2091,7 +2319,7 @@ type Clip struct { func (x *Clip) Reset() { *x = Clip{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[15] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2103,7 +2331,7 @@ func (x *Clip) String() string { func (*Clip) ProtoMessage() {} func (x *Clip) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[15] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2116,7 +2344,7 @@ func (x *Clip) ProtoReflect() protoreflect.Message { // Deprecated: Use Clip.ProtoReflect.Descriptor instead. func (*Clip) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{16} } func (x *Clip) GetName() string { @@ -2210,7 +2438,7 @@ type TimeInterval struct { func (x *TimeInterval) Reset() { *x = TimeInterval{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[16] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2222,7 +2450,7 @@ func (x *TimeInterval) String() string { func (*TimeInterval) ProtoMessage() {} func (x *TimeInterval) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[16] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2235,7 +2463,7 @@ func (x *TimeInterval) ProtoReflect() protoreflect.Message { // Deprecated: Use TimeInterval.ProtoReflect.Descriptor instead. func (*TimeInterval) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{16} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{17} } func (x *TimeInterval) GetStartTime() *timestamppb.Timestamp { @@ -2287,7 +2515,7 @@ type DvrSession struct { func (x *DvrSession) Reset() { *x = DvrSession{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[17] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2299,7 +2527,7 @@ func (x *DvrSession) String() string { func (*DvrSession) ProtoMessage() {} func (x *DvrSession) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[17] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2312,7 +2540,7 @@ func (x *DvrSession) ProtoReflect() protoreflect.Message { // Deprecated: Use DvrSession.ProtoReflect.Descriptor instead. func (*DvrSession) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{17} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{18} } func (x *DvrSession) GetName() string { @@ -2415,7 +2643,7 @@ type Asset struct { func (x *Asset) Reset() { *x = Asset{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[18] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2427,7 +2655,7 @@ func (x *Asset) String() string { func (*Asset) ProtoMessage() {} func (x *Asset) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[18] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2440,7 +2668,7 @@ func (x *Asset) ProtoReflect() protoreflect.Message { // Deprecated: Use Asset.ProtoReflect.Descriptor instead. func (*Asset) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{18} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19} } func (x *Asset) GetName() string { @@ -2562,7 +2790,7 @@ type Encryption struct { func (x *Encryption) Reset() { *x = Encryption{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[19] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2574,7 +2802,7 @@ func (x *Encryption) String() string { func (*Encryption) ProtoMessage() {} func (x *Encryption) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[19] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2587,7 +2815,7 @@ func (x *Encryption) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption.ProtoReflect.Descriptor instead. func (*Encryption) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20} } func (x *Encryption) GetId() string { @@ -2682,6 +2910,84 @@ func (*Encryption_SampleAes) isEncryption_EncryptionMode() {} func (*Encryption_MpegCenc) isEncryption_EncryptionMode() {} +// Encryption setting when updating encryption. +type EncryptionUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Identifier for the encryption option to be updated. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Defines where new content keys are stored. + // + // Types that are assignable to SecretSource: + // + // *EncryptionUpdate_SecretManagerKeySource + SecretSource isEncryptionUpdate_SecretSource `protobuf_oneof:"secret_source"` +} + +func (x *EncryptionUpdate) Reset() { + *x = EncryptionUpdate{} + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EncryptionUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EncryptionUpdate) ProtoMessage() {} + +func (x *EncryptionUpdate) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EncryptionUpdate.ProtoReflect.Descriptor instead. +func (*EncryptionUpdate) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{21} +} + +func (x *EncryptionUpdate) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (m *EncryptionUpdate) GetSecretSource() isEncryptionUpdate_SecretSource { + if m != nil { + return m.SecretSource + } + return nil +} + +func (x *EncryptionUpdate) GetSecretManagerKeySource() *Encryption_SecretManagerSource { + if x, ok := x.GetSecretSource().(*EncryptionUpdate_SecretManagerKeySource); ok { + return x.SecretManagerKeySource + } + return nil +} + +type isEncryptionUpdate_SecretSource interface { + isEncryptionUpdate_SecretSource() +} + +type EncryptionUpdate_SecretManagerKeySource struct { + // For keys stored in Google Secret Manager. + SecretManagerKeySource *Encryption_SecretManagerSource `protobuf:"bytes,2,opt,name=secret_manager_key_source,json=secretManagerKeySource,proto3,oneof"` +} + +func (*EncryptionUpdate_SecretManagerKeySource) isEncryptionUpdate_SecretSource() {} + // Pool resource defines the configuration of Live Stream pools for a specific // location. Currently we support only one pool resource per project per // location. After the creation of the first input, a default pool is created @@ -2706,7 +3012,7 @@ type Pool struct { func (x *Pool) Reset() { *x = Pool{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[20] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2718,7 +3024,7 @@ func (x *Pool) String() string { func (*Pool) ProtoMessage() {} func (x *Pool) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[20] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2731,7 +3037,7 @@ func (x *Pool) ProtoReflect() protoreflect.Message { // Deprecated: Use Pool.ProtoReflect.Descriptor instead. func (*Pool) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{22} } func (x *Pool) GetName() string { @@ -2785,7 +3091,7 @@ type Input_SecurityRule struct { func (x *Input_SecurityRule) Reset() { *x = Input_SecurityRule{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[21] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2797,7 +3103,7 @@ func (x *Input_SecurityRule) String() string { func (*Input_SecurityRule) ProtoMessage() {} func (x *Input_SecurityRule) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[21] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2832,7 +3138,7 @@ type Channel_Output struct { func (x *Channel_Output) Reset() { *x = Channel_Output{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[23] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2844,7 +3150,7 @@ func (x *Channel_Output) String() string { func (*Channel_Output) ProtoMessage() {} func (x *Channel_Output) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[23] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2882,7 +3188,7 @@ type InputAttachment_AutomaticFailover struct { func (x *InputAttachment_AutomaticFailover) Reset() { *x = InputAttachment_AutomaticFailover{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[25] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2894,7 +3200,7 @@ func (x *InputAttachment_AutomaticFailover) String() string { func (*InputAttachment_AutomaticFailover) ProtoMessage() {} func (x *InputAttachment_AutomaticFailover) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[25] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2931,7 +3237,7 @@ type Event_InputSwitchTask struct { func (x *Event_InputSwitchTask) Reset() { *x = Event_InputSwitchTask{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[26] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2943,7 +3249,7 @@ func (x *Event_InputSwitchTask) String() string { func (*Event_InputSwitchTask) ProtoMessage() {} func (x *Event_InputSwitchTask) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[26] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2956,7 +3262,7 @@ func (x *Event_InputSwitchTask) ProtoReflect() protoreflect.Message { // Deprecated: Use Event_InputSwitchTask.ProtoReflect.Descriptor instead. func (*Event_InputSwitchTask) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14, 0} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 0} } func (x *Event_InputSwitchTask) GetInputKey() string { @@ -2978,7 +3284,7 @@ type Event_AdBreakTask struct { func (x *Event_AdBreakTask) Reset() { *x = Event_AdBreakTask{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[27] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2990,7 +3296,7 @@ func (x *Event_AdBreakTask) String() string { func (*Event_AdBreakTask) ProtoMessage() {} func (x *Event_AdBreakTask) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[27] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3003,7 +3309,7 @@ func (x *Event_AdBreakTask) ProtoReflect() protoreflect.Message { // Deprecated: Use Event_AdBreakTask.ProtoReflect.Descriptor instead. func (*Event_AdBreakTask) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14, 1} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 1} } func (x *Event_AdBreakTask) GetDuration() *durationpb.Duration { @@ -3031,7 +3337,7 @@ type Event_SlateTask struct { func (x *Event_SlateTask) Reset() { *x = Event_SlateTask{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[28] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3043,7 +3349,7 @@ func (x *Event_SlateTask) String() string { func (*Event_SlateTask) ProtoMessage() {} func (x *Event_SlateTask) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[28] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3056,7 +3362,7 @@ func (x *Event_SlateTask) ProtoReflect() protoreflect.Message { // Deprecated: Use Event_SlateTask.ProtoReflect.Descriptor instead. func (*Event_SlateTask) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14, 2} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 2} } func (x *Event_SlateTask) GetDuration() *durationpb.Duration { @@ -3083,7 +3389,7 @@ type Event_ReturnToProgramTask struct { func (x *Event_ReturnToProgramTask) Reset() { *x = Event_ReturnToProgramTask{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[29] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3095,7 +3401,7 @@ func (x *Event_ReturnToProgramTask) String() string { func (*Event_ReturnToProgramTask) ProtoMessage() {} func (x *Event_ReturnToProgramTask) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[29] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3108,7 +3414,7 @@ func (x *Event_ReturnToProgramTask) ProtoReflect() protoreflect.Message { // Deprecated: Use Event_ReturnToProgramTask.ProtoReflect.Descriptor instead. func (*Event_ReturnToProgramTask) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14, 3} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 3} } // Mutes the stream. @@ -3124,7 +3430,7 @@ type Event_MuteTask struct { func (x *Event_MuteTask) Reset() { *x = Event_MuteTask{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[30] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3136,7 +3442,7 @@ func (x *Event_MuteTask) String() string { func (*Event_MuteTask) ProtoMessage() {} func (x *Event_MuteTask) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[30] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3149,7 +3455,7 @@ func (x *Event_MuteTask) ProtoReflect() protoreflect.Message { // Deprecated: Use Event_MuteTask.ProtoReflect.Descriptor instead. func (*Event_MuteTask) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14, 4} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 4} } func (x *Event_MuteTask) GetDuration() *durationpb.Duration { @@ -3168,7 +3474,7 @@ type Event_UnmuteTask struct { func (x *Event_UnmuteTask) Reset() { *x = Event_UnmuteTask{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[31] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3180,7 +3486,7 @@ func (x *Event_UnmuteTask) String() string { func (*Event_UnmuteTask) ProtoMessage() {} func (x *Event_UnmuteTask) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[31] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3193,7 +3499,56 @@ func (x *Event_UnmuteTask) ProtoReflect() protoreflect.Message { // Deprecated: Use Event_UnmuteTask.ProtoReflect.Descriptor instead. func (*Event_UnmuteTask) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{14, 5} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 5} +} + +// Update encryption settings. +type Event_UpdateEncryptionsTask struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. A list of + // [EncryptionUpdate][google.cloud.video.livestream.v1.EncryptionUpdate]s + // that updates the existing encryption settings. + Encryptions []*EncryptionUpdate `protobuf:"bytes,1,rep,name=encryptions,proto3" json:"encryptions,omitempty"` +} + +func (x *Event_UpdateEncryptionsTask) Reset() { + *x = Event_UpdateEncryptionsTask{} + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Event_UpdateEncryptionsTask) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Event_UpdateEncryptionsTask) ProtoMessage() {} + +func (x *Event_UpdateEncryptionsTask) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Event_UpdateEncryptionsTask.ProtoReflect.Descriptor instead. +func (*Event_UpdateEncryptionsTask) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 6} +} + +func (x *Event_UpdateEncryptionsTask) GetEncryptions() []*EncryptionUpdate { + if x != nil { + return x.Encryptions + } + return nil } // TimeSlice represents a tuple of Unix epoch timestamps that specifies a time @@ -3211,7 +3566,7 @@ type Clip_TimeSlice struct { func (x *Clip_TimeSlice) Reset() { *x = Clip_TimeSlice{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[33] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3223,7 +3578,7 @@ func (x *Clip_TimeSlice) String() string { func (*Clip_TimeSlice) ProtoMessage() {} func (x *Clip_TimeSlice) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[33] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3236,7 +3591,7 @@ func (x *Clip_TimeSlice) ProtoReflect() protoreflect.Message { // Deprecated: Use Clip_TimeSlice.ProtoReflect.Descriptor instead. func (*Clip_TimeSlice) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 0} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{16, 0} } func (x *Clip_TimeSlice) GetMarkinTime() *timestamppb.Timestamp { @@ -3269,7 +3624,7 @@ type Clip_Slice struct { func (x *Clip_Slice) Reset() { *x = Clip_Slice{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[34] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3281,7 +3636,7 @@ func (x *Clip_Slice) String() string { func (*Clip_Slice) ProtoMessage() {} func (x *Clip_Slice) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[34] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3294,7 +3649,7 @@ func (x *Clip_Slice) ProtoReflect() protoreflect.Message { // Deprecated: Use Clip_Slice.ProtoReflect.Descriptor instead. func (*Clip_Slice) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 1} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{16, 1} } func (m *Clip_Slice) GetKind() isClip_Slice_Kind { @@ -3343,7 +3698,7 @@ type Clip_ClipManifest struct { func (x *Clip_ClipManifest) Reset() { *x = Clip_ClipManifest{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[35] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3355,7 +3710,7 @@ func (x *Clip_ClipManifest) String() string { func (*Clip_ClipManifest) ProtoMessage() {} func (x *Clip_ClipManifest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[35] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3368,7 +3723,7 @@ func (x *Clip_ClipManifest) ProtoReflect() protoreflect.Message { // Deprecated: Use Clip_ClipManifest.ProtoReflect.Descriptor instead. func (*Clip_ClipManifest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{15, 2} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{16, 2} } func (x *Clip_ClipManifest) GetManifestKey() string { @@ -3406,7 +3761,7 @@ type DvrSession_DvrManifest struct { func (x *DvrSession_DvrManifest) Reset() { *x = DvrSession_DvrManifest{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[37] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3418,7 +3773,7 @@ func (x *DvrSession_DvrManifest) String() string { func (*DvrSession_DvrManifest) ProtoMessage() {} func (x *DvrSession_DvrManifest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[37] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3431,7 +3786,7 @@ func (x *DvrSession_DvrManifest) ProtoReflect() protoreflect.Message { // Deprecated: Use DvrSession_DvrManifest.ProtoReflect.Descriptor instead. func (*DvrSession_DvrManifest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{17, 0} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{18, 0} } func (x *DvrSession_DvrManifest) GetManifestKey() string { @@ -3464,7 +3819,7 @@ type DvrSession_DvrWindow struct { func (x *DvrSession_DvrWindow) Reset() { *x = DvrSession_DvrWindow{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[38] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3476,7 +3831,7 @@ func (x *DvrSession_DvrWindow) String() string { func (*DvrSession_DvrWindow) ProtoMessage() {} func (x *DvrSession_DvrWindow) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[38] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3489,7 +3844,7 @@ func (x *DvrSession_DvrWindow) ProtoReflect() protoreflect.Message { // Deprecated: Use DvrSession_DvrWindow.ProtoReflect.Descriptor instead. func (*DvrSession_DvrWindow) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{17, 1} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{18, 1} } func (m *DvrSession_DvrWindow) GetKind() isDvrSession_DvrWindow_Kind { @@ -3531,7 +3886,7 @@ type Asset_VideoAsset struct { func (x *Asset_VideoAsset) Reset() { *x = Asset_VideoAsset{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[40] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3543,7 +3898,7 @@ func (x *Asset_VideoAsset) String() string { func (*Asset_VideoAsset) ProtoMessage() {} func (x *Asset_VideoAsset) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[40] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3556,7 +3911,7 @@ func (x *Asset_VideoAsset) ProtoReflect() protoreflect.Message { // Deprecated: Use Asset_VideoAsset.ProtoReflect.Descriptor instead. func (*Asset_VideoAsset) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{18, 0} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 0} } func (x *Asset_VideoAsset) GetUri() string { @@ -3578,7 +3933,7 @@ type Asset_ImageAsset struct { func (x *Asset_ImageAsset) Reset() { *x = Asset_ImageAsset{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[41] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3590,7 +3945,7 @@ func (x *Asset_ImageAsset) String() string { func (*Asset_ImageAsset) ProtoMessage() {} func (x *Asset_ImageAsset) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[41] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3603,7 +3958,7 @@ func (x *Asset_ImageAsset) ProtoReflect() protoreflect.Message { // Deprecated: Use Asset_ImageAsset.ProtoReflect.Descriptor instead. func (*Asset_ImageAsset) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{18, 1} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 1} } func (x *Asset_ImageAsset) GetUri() string { @@ -3626,7 +3981,7 @@ type Encryption_SecretManagerSource struct { func (x *Encryption_SecretManagerSource) Reset() { *x = Encryption_SecretManagerSource{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[43] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3638,7 +3993,7 @@ func (x *Encryption_SecretManagerSource) String() string { func (*Encryption_SecretManagerSource) ProtoMessage() {} func (x *Encryption_SecretManagerSource) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[43] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3651,7 +4006,7 @@ func (x *Encryption_SecretManagerSource) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption_SecretManagerSource.ProtoReflect.Descriptor instead. func (*Encryption_SecretManagerSource) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 0} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20, 0} } func (x *Encryption_SecretManagerSource) GetSecretVersion() string { @@ -3670,7 +4025,7 @@ type Encryption_Widevine struct { func (x *Encryption_Widevine) Reset() { *x = Encryption_Widevine{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[44] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3682,7 +4037,7 @@ func (x *Encryption_Widevine) String() string { func (*Encryption_Widevine) ProtoMessage() {} func (x *Encryption_Widevine) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[44] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3695,7 +4050,7 @@ func (x *Encryption_Widevine) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption_Widevine.ProtoReflect.Descriptor instead. func (*Encryption_Widevine) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 1} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20, 1} } // Fairplay configuration. @@ -3707,7 +4062,7 @@ type Encryption_Fairplay struct { func (x *Encryption_Fairplay) Reset() { *x = Encryption_Fairplay{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[45] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3719,7 +4074,7 @@ func (x *Encryption_Fairplay) String() string { func (*Encryption_Fairplay) ProtoMessage() {} func (x *Encryption_Fairplay) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[45] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3732,7 +4087,7 @@ func (x *Encryption_Fairplay) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption_Fairplay.ProtoReflect.Descriptor instead. func (*Encryption_Fairplay) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 2} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20, 2} } // Playready configuration. @@ -3744,7 +4099,7 @@ type Encryption_Playready struct { func (x *Encryption_Playready) Reset() { *x = Encryption_Playready{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[46] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3756,7 +4111,7 @@ func (x *Encryption_Playready) String() string { func (*Encryption_Playready) ProtoMessage() {} func (x *Encryption_Playready) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[46] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3769,7 +4124,7 @@ func (x *Encryption_Playready) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption_Playready.ProtoReflect.Descriptor instead. func (*Encryption_Playready) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 3} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20, 3} } // Clearkey configuration. @@ -3781,7 +4136,7 @@ type Encryption_Clearkey struct { func (x *Encryption_Clearkey) Reset() { *x = Encryption_Clearkey{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[47] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3793,7 +4148,7 @@ func (x *Encryption_Clearkey) String() string { func (*Encryption_Clearkey) ProtoMessage() {} func (x *Encryption_Clearkey) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[47] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3806,7 +4161,7 @@ func (x *Encryption_Clearkey) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption_Clearkey.ProtoReflect.Descriptor instead. func (*Encryption_Clearkey) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 4} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20, 4} } // Defines configuration for DRM systems in use. If a field is omitted, @@ -3816,19 +4171,19 @@ type Encryption_DrmSystems struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Widevine configuration. + // Optional. Widevine configuration. Widevine *Encryption_Widevine `protobuf:"bytes,1,opt,name=widevine,proto3" json:"widevine,omitempty"` - // Fairplay configuration. + // Optional. Fairplay configuration. Fairplay *Encryption_Fairplay `protobuf:"bytes,2,opt,name=fairplay,proto3" json:"fairplay,omitempty"` - // Playready configuration. + // Optional. Playready configuration. Playready *Encryption_Playready `protobuf:"bytes,3,opt,name=playready,proto3" json:"playready,omitempty"` - // Clearkey configuration. + // Optional. Clearkey configuration. Clearkey *Encryption_Clearkey `protobuf:"bytes,4,opt,name=clearkey,proto3" json:"clearkey,omitempty"` } func (x *Encryption_DrmSystems) Reset() { *x = Encryption_DrmSystems{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[48] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3840,7 +4195,7 @@ func (x *Encryption_DrmSystems) String() string { func (*Encryption_DrmSystems) ProtoMessage() {} func (x *Encryption_DrmSystems) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[48] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3853,7 +4208,7 @@ func (x *Encryption_DrmSystems) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption_DrmSystems.ProtoReflect.Descriptor instead. func (*Encryption_DrmSystems) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 5} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20, 5} } func (x *Encryption_DrmSystems) GetWidevine() *Encryption_Widevine { @@ -3893,7 +4248,7 @@ type Encryption_Aes128Encryption struct { func (x *Encryption_Aes128Encryption) Reset() { *x = Encryption_Aes128Encryption{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[49] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3905,7 +4260,7 @@ func (x *Encryption_Aes128Encryption) String() string { func (*Encryption_Aes128Encryption) ProtoMessage() {} func (x *Encryption_Aes128Encryption) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[49] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3918,7 +4273,7 @@ func (x *Encryption_Aes128Encryption) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption_Aes128Encryption.ProtoReflect.Descriptor instead. func (*Encryption_Aes128Encryption) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 6} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20, 6} } // Configuration for HLS SAMPLE-AES encryption. @@ -3930,7 +4285,7 @@ type Encryption_SampleAesEncryption struct { func (x *Encryption_SampleAesEncryption) Reset() { *x = Encryption_SampleAesEncryption{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[50] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3942,7 +4297,7 @@ func (x *Encryption_SampleAesEncryption) String() string { func (*Encryption_SampleAesEncryption) ProtoMessage() {} func (x *Encryption_SampleAesEncryption) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[50] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3955,7 +4310,7 @@ func (x *Encryption_SampleAesEncryption) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption_SampleAesEncryption.ProtoReflect.Descriptor instead. func (*Encryption_SampleAesEncryption) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 7} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20, 7} } // Configuration for MPEG-Dash Common Encryption (MPEG-CENC). @@ -3972,7 +4327,7 @@ type Encryption_MpegCommonEncryption struct { func (x *Encryption_MpegCommonEncryption) Reset() { *x = Encryption_MpegCommonEncryption{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[51] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3984,7 +4339,7 @@ func (x *Encryption_MpegCommonEncryption) String() string { func (*Encryption_MpegCommonEncryption) ProtoMessage() {} func (x *Encryption_MpegCommonEncryption) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[51] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3997,7 +4352,7 @@ func (x *Encryption_MpegCommonEncryption) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption_MpegCommonEncryption.ProtoReflect.Descriptor instead. func (*Encryption_MpegCommonEncryption) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{19, 8} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20, 8} } func (x *Encryption_MpegCommonEncryption) GetScheme() string { @@ -4025,7 +4380,7 @@ type Pool_NetworkConfig struct { func (x *Pool_NetworkConfig) Reset() { *x = Pool_NetworkConfig{} - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[52] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4037,7 +4392,7 @@ func (x *Pool_NetworkConfig) String() string { func (*Pool_NetworkConfig) ProtoMessage() {} func (x *Pool_NetworkConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[52] + mi := &file_google_cloud_video_livestream_v1_resources_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4050,7 +4405,7 @@ func (x *Pool_NetworkConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use Pool_NetworkConfig.ProtoReflect.Descriptor instead. func (*Pool_NetworkConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{20, 0} + return file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP(), []int{22, 0} } func (x *Pool_NetworkConfig) GetPeeredNetwork() string { @@ -4080,7 +4435,7 @@ var file_google_cloud_video_livestream_v1_resources_proto_rawDesc = []byte{ 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf6, 0x07, 0x0a, 0x05, 0x49, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9e, 0x08, 0x0a, 0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, @@ -4134,340 +4489,405 @@ var file_google_cloud_video_livestream_v1_resources_proto_rawDesc = []byte{ 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x54, 0x4d, 0x50, 0x5f, 0x50, 0x55, 0x53, 0x48, 0x10, 0x01, - 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x52, 0x54, 0x5f, 0x50, 0x55, 0x53, 0x48, 0x10, 0x02, 0x22, 0x35, + 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x52, 0x54, 0x5f, 0x50, 0x55, 0x53, 0x48, 0x10, 0x02, 0x22, 0x5d, 0x0a, 0x04, 0x54, 0x69, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x53, 0x44, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x48, 0x44, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, - 0x55, 0x48, 0x44, 0x10, 0x03, 0x3a, 0x5c, 0xea, 0x41, 0x59, 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x36, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x7d, 0x22, 0xb3, 0x0e, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x5e, 0x0a, 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, - 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x55, 0x48, 0x44, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x44, 0x5f, 0x48, 0x32, 0x36, 0x35, + 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x44, 0x5f, 0x48, 0x32, 0x36, 0x35, 0x10, 0x05, 0x12, + 0x0c, 0x0a, 0x08, 0x55, 0x48, 0x44, 0x5f, 0x48, 0x32, 0x36, 0x35, 0x10, 0x06, 0x3a, 0x5c, 0xea, + 0x41, 0x59, 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x12, 0x36, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x7d, 0x22, 0xfd, 0x10, 0x0a, 0x07, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, + 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x5e, + 0x0a, 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, + 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4d, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x61, 0x0a, 0x12, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4d, - 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x11, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, + 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x75, 0x78, 0x5f, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x75, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x0a, 0x6d, 0x75, 0x78, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, + 0x73, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, + 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, + 0x12, 0x6c, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x61, 0x0a, - 0x12, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6c, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x11, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, - 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x75, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, - 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x78, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x52, 0x0a, 0x6d, 0x75, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x48, - 0x0a, 0x09, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x09, 0x6d, - 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x0d, 0x73, 0x70, 0x72, 0x69, - 0x74, 0x65, 0x5f, 0x73, 0x68, 0x65, 0x65, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x70, 0x72, 0x69, 0x74, 0x65, 0x53, 0x68, 0x65, 0x65, 0x74, 0x52, 0x0c, - 0x73, 0x70, 0x72, 0x69, 0x74, 0x65, 0x53, 0x68, 0x65, 0x65, 0x74, 0x73, 0x12, 0x66, 0x0a, 0x0f, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x64, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x59, + 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, - 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x59, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x52, 0x0a, 0x0d, 0x73, 0x70, 0x72, + 0x69, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x65, 0x65, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x72, 0x69, 0x74, 0x65, 0x53, 0x68, 0x65, 0x65, 0x74, 0x52, + 0x0c, 0x73, 0x70, 0x72, 0x69, 0x74, 0x65, 0x53, 0x68, 0x65, 0x65, 0x74, 0x73, 0x12, 0x66, 0x0a, + 0x0f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, + 0x6e, 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, + 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x74, - 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a, - 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x18, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, - 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x19, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, + 0x74, 0x69, 0x6d, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53, + 0x0a, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x18, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x61, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, - 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x5d, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x6f, 0x76, 0x65, - 0x72, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, - 0x73, 0x1a, 0x1a, 0x0a, 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x1a, 0x39, 0x0a, - 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaa, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x53, - 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, - 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x41, - 0x57, 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x02, 0x12, - 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, - 0x47, 0x5f, 0x4e, 0x4f, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, - 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x4f, 0x50, 0x50, - 0x49, 0x4e, 0x47, 0x10, 0x08, 0x3a, 0x62, 0xea, 0x41, 0x5f, 0x0a, 0x21, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x3a, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, - 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7d, 0x22, 0x3c, 0x0a, 0x14, 0x4e, 0x6f, 0x72, - 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, - 0x65, 0x12, 0x11, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x01, 0x78, 0x12, 0x11, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x01, 0x79, 0x22, 0x3c, 0x0a, 0x14, 0x4e, 0x6f, 0x72, 0x6d, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x11, 0x0a, 0x01, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x01, 0x77, 0x12, 0x11, 0x0a, 0x01, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x01, 0x68, 0x22, 0xa3, 0x02, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, - 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, - 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x5b, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x07, - 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x22, 0xd7, 0x01, 0x0a, 0x0b, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x69, 0x0a, 0x11, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x50, - 0x55, 0x54, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, - 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x5f, - 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x4e, - 0x55, 0x41, 0x4c, 0x10, 0x03, 0x22, 0xcd, 0x01, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x5a, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x65, 0x76, 0x65, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, - 0x74, 0x79, 0x52, 0x0b, 0x6c, 0x6f, 0x67, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, - 0x64, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1c, - 0x0a, 0x18, 0x4c, 0x4f, 0x47, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, - 0x4f, 0x46, 0x46, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x64, - 0x12, 0x09, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc8, 0x01, 0x12, 0x0c, 0x0a, 0x07, 0x57, - 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x90, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x10, 0xf4, 0x03, 0x22, 0x68, 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, 0x0a, 0x19, 0x72, 0x65, 0x74, 0x65, - 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x99, 0x02, 0x0a, 0x13, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x0d, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, - 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x79, 0x52, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x12, - 0x5a, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0c, 0x61, - 0x75, 0x64, 0x69, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x22, 0x7d, 0x0a, 0x13, 0x56, - 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x50, 0x0a, 0x0c, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0b, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x0b, 0x56, - 0x69, 0x64, 0x65, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, - 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, - 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, 0x69, 0x78, - 0x65, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x69, - 0x78, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x52, 0x61, 0x74, 0x65, 0x22, 0x7d, 0x0a, 0x13, 0x41, 0x75, 0x64, 0x69, 0x6f, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x50, 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, + 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x61, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5d, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x6c, + 0x61, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, + 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x73, 0x12, 0x7a, 0x0a, 0x19, 0x61, 0x75, 0x74, 0x6f, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, - 0x64, 0x69, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x6f, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x6f, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6c, 0x61, 0x79, 0x6f, - 0x75, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x22, 0x87, 0x02, 0x0a, 0x0f, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, - 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, - 0x21, 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x72, 0x0a, 0x12, 0x61, 0x75, 0x74, - 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x74, - 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, - 0x69, 0x63, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, - 0x6d, 0x61, 0x74, 0x69, 0x63, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x1a, 0x32, 0x0a, - 0x11, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4b, 0x65, 0x79, - 0x73, 0x22, 0xc8, 0x0c, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x74, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x17, 0x61, 0x75, 0x74, 0x6f, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x1a, 0x1a, 0x0a, 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x1a, + 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaa, 0x01, 0x0a, 0x0e, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, + 0x1b, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, + 0x0a, 0x09, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, + 0x0e, 0x41, 0x57, 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, + 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, + 0x49, 0x4e, 0x47, 0x5f, 0x4e, 0x4f, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x05, 0x12, 0x0b, + 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x53, + 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x4f, + 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x3a, 0x62, 0xea, 0x41, 0x5f, 0x0a, 0x21, 0x6c, 0x69, + 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, + 0x3a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7d, 0x22, 0x3c, 0x0a, 0x14, 0x4e, + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, + 0x61, 0x74, 0x65, 0x12, 0x11, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x01, 0x78, 0x12, 0x11, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x01, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x01, 0x79, 0x22, 0x3c, 0x0a, 0x14, 0x4e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x11, 0x0a, 0x01, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x01, 0x77, 0x12, 0x11, 0x0a, 0x01, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x01, 0x68, 0x22, 0xa3, 0x02, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, + 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x5b, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, + 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, + 0x0a, 0x07, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x22, 0xd7, 0x01, + 0x0a, 0x0b, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x69, 0x0a, + 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x49, + 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, + 0x0a, 0x17, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, + 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, + 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x03, 0x22, 0xcd, 0x01, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5a, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x65, 0x76, + 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x6c, 0x6f, 0x67, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, + 0x79, 0x22, 0x64, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x1c, 0x0a, 0x18, 0x4c, 0x4f, 0x47, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, + 0x0a, 0x03, 0x4f, 0x46, 0x46, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, + 0x10, 0x64, 0x12, 0x09, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc8, 0x01, 0x12, 0x0c, 0x0a, + 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x90, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0xf4, 0x03, 0x22, 0x68, 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x65, 0x6e, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, 0x0a, 0x19, 0x72, 0x65, + 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x99, 0x02, 0x0a, 0x13, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x13, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x12, 0x5c, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x6d, 0x70, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x0d, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x52, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x73, 0x12, 0x5a, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, + 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, + 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x22, 0x7d, 0x0a, + 0x13, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x50, 0x0a, 0x0c, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, + 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x8a, 0x01, 0x0a, + 0x0b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, + 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x70, 0x69, 0x78, 0x65, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x69, 0x64, 0x74, 0x68, 0x50, + 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, + 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x61, 0x74, 0x65, 0x22, 0x7d, 0x0a, 0x13, 0x41, 0x75, 0x64, + 0x69, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x50, 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0b, 0x61, 0x75, 0x64, + 0x69, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x6f, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, + 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x23, 0x0a, + 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6c, 0x61, + 0x79, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x22, 0x87, 0x02, 0x0a, 0x0f, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x3a, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, + 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x72, 0x0a, 0x12, 0x61, + 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x6d, + 0x61, 0x74, 0x69, 0x63, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x11, 0x61, 0x75, + 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x1a, + 0x32, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x46, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6b, 0x65, + 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4b, + 0x65, 0x79, 0x73, 0x22, 0xb7, 0x03, 0x0a, 0x17, 0x41, 0x75, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x73, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x69, 0x6e, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x69, + 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x73, 0x0a, 0x0e, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, + 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x47, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x75, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, + 0x72, 0x65, 0x73, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x71, 0x75, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x22, 0x44, 0x0a, 0x0d, 0x44, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x49, + 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x54, 0x49, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x53, + 0x59, 0x4e, 0x43, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x22, + 0x6c, 0x0a, 0x0d, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, + 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x45, 0x53, + 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0f, 0x0a, 0x0b, 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x10, + 0x01, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x44, 0x5f, 0x51, 0x55, + 0x41, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4d, 0x50, 0x52, 0x4f, + 0x56, 0x45, 0x44, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x03, 0x22, 0xac, 0x0e, + 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, + 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x4b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x5c, 0x0a, 0x0c, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0b, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x50, 0x0a, 0x08, 0x61, 0x64, + 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x54, 0x61, 0x73, + 0x6b, 0x48, 0x00, 0x52, 0x07, 0x61, 0x64, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x12, 0x69, 0x0a, 0x11, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x54, 0x6f, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x49, 0x0a, 0x05, 0x73, 0x6c, 0x61, 0x74, 0x65, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x48, - 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x50, - 0x0a, 0x08, 0x61, 0x64, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x53, 0x6c, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x05, 0x73, 0x6c, 0x61, + 0x74, 0x65, 0x12, 0x46, 0x0a, 0x04, 0x6d, 0x75, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x42, 0x72, 0x65, 0x61, - 0x6b, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x07, 0x61, 0x64, 0x42, 0x72, 0x65, 0x61, 0x6b, - 0x12, 0x69, 0x0a, 0x11, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x54, 0x6f, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x49, 0x0a, 0x05, 0x73, - 0x6c, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x75, 0x74, 0x65, 0x54, 0x61, + 0x73, 0x6b, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x75, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x06, 0x75, 0x6e, + 0x6d, 0x75, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x6c, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x04, 0x6d, 0x75, 0x74, 0x65, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x6e, 0x6d, 0x75, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, + 0x52, 0x06, 0x75, 0x6e, 0x6d, 0x75, 0x74, 0x65, 0x12, 0x6e, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x75, - 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x75, 0x74, 0x65, 0x12, 0x4c, - 0x0a, 0x06, 0x75, 0x6e, 0x6d, 0x75, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x6e, 0x6d, 0x75, 0x74, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x48, 0x00, 0x52, 0x06, 0x75, 0x6e, 0x6d, 0x75, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x6f, 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4e, 0x6f, 0x77, 0x12, 0x41, 0x0a, - 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x48, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x2e, 0x0a, 0x0f, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1b, 0x0a, 0x09, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4b, 0x65, 0x79, 0x1a, 0x44, 0x0a, 0x0b, 0x41, 0x64, 0x42, - 0x72, 0x65, 0x61, 0x6b, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, + 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x6f, 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4e, 0x6f, 0x77, 0x12, 0x41, 0x0a, 0x0e, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x2e, 0x0a, 0x0f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x4b, 0x65, 0x79, 0x1a, 0x44, 0x0a, 0x0b, 0x41, 0x64, 0x42, 0x72, 0x65, 0x61, 0x6b, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x7e, 0x0a, 0x09, 0x53, + 0x6c, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, - 0x7e, 0x0a, 0x09, 0x53, 0x6c, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x35, 0x0a, 0x08, - 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x1a, - 0x15, 0x0a, 0x13, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x67, 0x72, - 0x61, 0x6d, 0x54, 0x61, 0x73, 0x6b, 0x1a, 0x41, 0x0a, 0x08, 0x4d, 0x75, 0x74, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x0c, 0x0a, 0x0a, 0x55, 0x6e, 0x6d, - 0x75, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3a, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, + 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x1a, 0x15, 0x0a, 0x13, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x54, 0x61, + 0x73, 0x6b, 0x1a, 0x41, 0x0a, 0x08, 0x4d, 0x75, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x35, + 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x0c, 0x0a, 0x0a, 0x55, 0x6e, 0x6d, 0x75, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x1a, 0x72, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x59, 0x0a, 0x0b, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, @@ -4705,7 +5125,7 @@ var file_google_cloud_video_livestream_v1_resources_proto_rawDesc = []byte{ 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x7d, 0x42, 0x0a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xa2, 0x09, 0x0a, 0x0a, 0x45, 0x6e, 0x63, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xb6, 0x09, 0x0a, 0x0a, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x12, 0x7d, 0x0a, 0x19, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x6b, 0x65, @@ -4749,88 +5169,101 @@ var file_google_cloud_video_livestream_v1_resources_proto_rawDesc = []byte{ 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x0a, 0x0a, 0x08, 0x57, 0x69, 0x64, 0x65, 0x76, 0x69, 0x6e, 0x65, 0x1a, 0x0a, 0x0a, 0x08, 0x46, 0x61, 0x69, 0x72, 0x70, 0x6c, 0x61, 0x79, 0x1a, 0x0b, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x65, 0x61, 0x64, 0x79, 0x1a, 0x0a, - 0x0a, 0x08, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x6b, 0x65, 0x79, 0x1a, 0xdb, 0x02, 0x0a, 0x0a, 0x44, - 0x72, 0x6d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x77, 0x69, 0x64, + 0x0a, 0x08, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x6b, 0x65, 0x79, 0x1a, 0xef, 0x02, 0x0a, 0x0a, 0x44, + 0x72, 0x6d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x56, 0x0a, 0x08, 0x77, 0x69, 0x64, 0x65, 0x76, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x64, 0x65, 0x76, 0x69, - 0x6e, 0x65, 0x52, 0x08, 0x77, 0x69, 0x64, 0x65, 0x76, 0x69, 0x6e, 0x65, 0x12, 0x51, 0x0a, 0x08, - 0x66, 0x61, 0x69, 0x72, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x61, 0x69, - 0x72, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x08, 0x66, 0x61, 0x69, 0x72, 0x70, 0x6c, 0x61, 0x79, 0x12, - 0x54, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x65, 0x61, 0x64, 0x79, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, - 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x51, 0x0a, 0x08, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x6b, 0x65, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x6b, 0x65, 0x79, 0x52, 0x08, - 0x63, 0x6c, 0x65, 0x61, 0x72, 0x6b, 0x65, 0x79, 0x1a, 0x12, 0x0a, 0x10, 0x41, 0x65, 0x73, 0x31, - 0x32, 0x38, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x15, 0x0a, 0x13, - 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x65, 0x73, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x33, 0x0a, 0x14, 0x4d, 0x70, 0x65, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x65, 0x6e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xba, 0x04, 0x0a, - 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x6e, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x77, 0x69, 0x64, 0x65, 0x76, 0x69, 0x6e, + 0x65, 0x12, 0x56, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x72, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x61, 0x69, 0x72, 0x70, 0x6c, 0x61, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x08, 0x66, 0x61, 0x69, 0x72, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x59, 0x0a, 0x09, 0x70, 0x6c, 0x61, + 0x79, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x72, + 0x65, 0x61, 0x64, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x72, + 0x65, 0x61, 0x64, 0x79, 0x12, 0x56, 0x0a, 0x08, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x6b, 0x65, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x6b, 0x65, 0x79, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x08, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x6b, 0x65, 0x79, 0x1a, 0x12, 0x0a, 0x10, + 0x41, 0x65, 0x73, 0x31, 0x32, 0x38, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x1a, 0x15, 0x0a, 0x13, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x65, 0x73, 0x45, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x33, 0x0a, 0x14, 0x4d, 0x70, 0x65, 0x67, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1b, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x11, 0x0a, + 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0xb7, 0x01, 0x0a, 0x10, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x12, 0x7d, 0x0a, 0x19, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, + 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, + 0x00, 0x52, 0x16, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x4b, 0x65, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xba, 0x04, 0x0a, 0x04, 0x50, + 0x6f, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4a, 0x0a, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x6f, 0x6f, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x5b, 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x5b, 0x0a, 0x0d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x65, 0x65, 0x72, 0x65, 0x64, 0x5f, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0xfa, + 0x41, 0x20, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x59, 0xea, 0x41, + 0x56, 0x0a, 0x1e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x6f, 0x6f, + 0x6c, 0x12, 0x34, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, + 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x7d, 0x42, 0xeb, 0x01, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x5b, 0x0a, 0x0e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x5b, 0x0a, 0x0d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x65, 0x65, 0x72, 0x65, - 0x64, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x23, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x59, - 0xea, 0x41, 0x56, 0x0a, 0x1e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, - 0x6f, 0x6f, 0x6c, 0x12, 0x34, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x6f, 0x6f, - 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x7d, 0x42, 0xeb, 0x01, 0x0a, 0x24, 0x63, 0x6f, - 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x31, 0x42, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x44, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, - 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x70, 0x62, 0x3b, 0x6c, 0x69, - 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x20, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x20, - 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x56, 0x69, 0x64, - 0x65, 0x6f, 0x5c, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5c, 0x56, 0x31, - 0xea, 0x02, 0x24, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x3a, 0x3a, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x3a, 0x3a, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x42, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x44, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, 0x6c, 0x69, + 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x70, 0x62, 0x3b, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x4c, 0x69, + 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x20, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x56, 0x69, 0x64, 0x65, 0x6f, + 0x5c, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5c, 0x56, 0x31, 0xea, 0x02, + 0x24, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x3a, 0x3a, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4845,182 +5278,197 @@ func file_google_cloud_video_livestream_v1_resources_proto_rawDescGZIP() []byte return file_google_cloud_video_livestream_v1_resources_proto_rawDescData } -var file_google_cloud_video_livestream_v1_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 10) -var file_google_cloud_video_livestream_v1_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 54) +var file_google_cloud_video_livestream_v1_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 12) +var file_google_cloud_video_livestream_v1_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 57) var file_google_cloud_video_livestream_v1_resources_proto_goTypes = []any{ - (Input_Type)(0), // 0: google.cloud.video.livestream.v1.Input.Type - (Input_Tier)(0), // 1: google.cloud.video.livestream.v1.Input.Tier - (Channel_StreamingState)(0), // 2: google.cloud.video.livestream.v1.Channel.StreamingState - (InputConfig_InputSwitchMode)(0), // 3: google.cloud.video.livestream.v1.InputConfig.InputSwitchMode - (LogConfig_LogSeverity)(0), // 4: google.cloud.video.livestream.v1.LogConfig.LogSeverity - (Event_State)(0), // 5: google.cloud.video.livestream.v1.Event.State - (Clip_State)(0), // 6: google.cloud.video.livestream.v1.Clip.State - (Clip_OutputType)(0), // 7: google.cloud.video.livestream.v1.Clip.OutputType - (DvrSession_State)(0), // 8: google.cloud.video.livestream.v1.DvrSession.State - (Asset_State)(0), // 9: google.cloud.video.livestream.v1.Asset.State - (*Input)(nil), // 10: google.cloud.video.livestream.v1.Input - (*Channel)(nil), // 11: google.cloud.video.livestream.v1.Channel - (*NormalizedCoordinate)(nil), // 12: google.cloud.video.livestream.v1.NormalizedCoordinate - (*NormalizedResolution)(nil), // 13: google.cloud.video.livestream.v1.NormalizedResolution - (*StaticOverlay)(nil), // 14: google.cloud.video.livestream.v1.StaticOverlay - (*InputConfig)(nil), // 15: google.cloud.video.livestream.v1.InputConfig - (*LogConfig)(nil), // 16: google.cloud.video.livestream.v1.LogConfig - (*RetentionConfig)(nil), // 17: google.cloud.video.livestream.v1.RetentionConfig - (*InputStreamProperty)(nil), // 18: google.cloud.video.livestream.v1.InputStreamProperty - (*VideoStreamProperty)(nil), // 19: google.cloud.video.livestream.v1.VideoStreamProperty - (*VideoFormat)(nil), // 20: google.cloud.video.livestream.v1.VideoFormat - (*AudioStreamProperty)(nil), // 21: google.cloud.video.livestream.v1.AudioStreamProperty - (*AudioFormat)(nil), // 22: google.cloud.video.livestream.v1.AudioFormat - (*InputAttachment)(nil), // 23: google.cloud.video.livestream.v1.InputAttachment - (*Event)(nil), // 24: google.cloud.video.livestream.v1.Event - (*Clip)(nil), // 25: google.cloud.video.livestream.v1.Clip - (*TimeInterval)(nil), // 26: google.cloud.video.livestream.v1.TimeInterval - (*DvrSession)(nil), // 27: google.cloud.video.livestream.v1.DvrSession - (*Asset)(nil), // 28: google.cloud.video.livestream.v1.Asset - (*Encryption)(nil), // 29: google.cloud.video.livestream.v1.Encryption - (*Pool)(nil), // 30: google.cloud.video.livestream.v1.Pool - (*Input_SecurityRule)(nil), // 31: google.cloud.video.livestream.v1.Input.SecurityRule - nil, // 32: google.cloud.video.livestream.v1.Input.LabelsEntry - (*Channel_Output)(nil), // 33: google.cloud.video.livestream.v1.Channel.Output - nil, // 34: google.cloud.video.livestream.v1.Channel.LabelsEntry - (*InputAttachment_AutomaticFailover)(nil), // 35: google.cloud.video.livestream.v1.InputAttachment.AutomaticFailover - (*Event_InputSwitchTask)(nil), // 36: google.cloud.video.livestream.v1.Event.InputSwitchTask - (*Event_AdBreakTask)(nil), // 37: google.cloud.video.livestream.v1.Event.AdBreakTask - (*Event_SlateTask)(nil), // 38: google.cloud.video.livestream.v1.Event.SlateTask - (*Event_ReturnToProgramTask)(nil), // 39: google.cloud.video.livestream.v1.Event.ReturnToProgramTask - (*Event_MuteTask)(nil), // 40: google.cloud.video.livestream.v1.Event.MuteTask - (*Event_UnmuteTask)(nil), // 41: google.cloud.video.livestream.v1.Event.UnmuteTask - nil, // 42: google.cloud.video.livestream.v1.Event.LabelsEntry - (*Clip_TimeSlice)(nil), // 43: google.cloud.video.livestream.v1.Clip.TimeSlice - (*Clip_Slice)(nil), // 44: google.cloud.video.livestream.v1.Clip.Slice - (*Clip_ClipManifest)(nil), // 45: google.cloud.video.livestream.v1.Clip.ClipManifest - nil, // 46: google.cloud.video.livestream.v1.Clip.LabelsEntry - (*DvrSession_DvrManifest)(nil), // 47: google.cloud.video.livestream.v1.DvrSession.DvrManifest - (*DvrSession_DvrWindow)(nil), // 48: google.cloud.video.livestream.v1.DvrSession.DvrWindow - nil, // 49: google.cloud.video.livestream.v1.DvrSession.LabelsEntry - (*Asset_VideoAsset)(nil), // 50: google.cloud.video.livestream.v1.Asset.VideoAsset - (*Asset_ImageAsset)(nil), // 51: google.cloud.video.livestream.v1.Asset.ImageAsset - nil, // 52: google.cloud.video.livestream.v1.Asset.LabelsEntry - (*Encryption_SecretManagerSource)(nil), // 53: google.cloud.video.livestream.v1.Encryption.SecretManagerSource - (*Encryption_Widevine)(nil), // 54: google.cloud.video.livestream.v1.Encryption.Widevine - (*Encryption_Fairplay)(nil), // 55: google.cloud.video.livestream.v1.Encryption.Fairplay - (*Encryption_Playready)(nil), // 56: google.cloud.video.livestream.v1.Encryption.Playready - (*Encryption_Clearkey)(nil), // 57: google.cloud.video.livestream.v1.Encryption.Clearkey - (*Encryption_DrmSystems)(nil), // 58: google.cloud.video.livestream.v1.Encryption.DrmSystems - (*Encryption_Aes128Encryption)(nil), // 59: google.cloud.video.livestream.v1.Encryption.Aes128Encryption - (*Encryption_SampleAesEncryption)(nil), // 60: google.cloud.video.livestream.v1.Encryption.SampleAesEncryption - (*Encryption_MpegCommonEncryption)(nil), // 61: google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption - (*Pool_NetworkConfig)(nil), // 62: google.cloud.video.livestream.v1.Pool.NetworkConfig - nil, // 63: google.cloud.video.livestream.v1.Pool.LabelsEntry - (*timestamppb.Timestamp)(nil), // 64: google.protobuf.Timestamp - (*PreprocessingConfig)(nil), // 65: google.cloud.video.livestream.v1.PreprocessingConfig - (*ElementaryStream)(nil), // 66: google.cloud.video.livestream.v1.ElementaryStream - (*MuxStream)(nil), // 67: google.cloud.video.livestream.v1.MuxStream - (*Manifest)(nil), // 68: google.cloud.video.livestream.v1.Manifest - (*SpriteSheet)(nil), // 69: google.cloud.video.livestream.v1.SpriteSheet - (*status.Status)(nil), // 70: google.rpc.Status - (*TimecodeConfig)(nil), // 71: google.cloud.video.livestream.v1.TimecodeConfig - (*durationpb.Duration)(nil), // 72: google.protobuf.Duration + (Input_Type)(0), // 0: google.cloud.video.livestream.v1.Input.Type + (Input_Tier)(0), // 1: google.cloud.video.livestream.v1.Input.Tier + (Channel_StreamingState)(0), // 2: google.cloud.video.livestream.v1.Channel.StreamingState + (InputConfig_InputSwitchMode)(0), // 3: google.cloud.video.livestream.v1.InputConfig.InputSwitchMode + (LogConfig_LogSeverity)(0), // 4: google.cloud.video.livestream.v1.LogConfig.LogSeverity + (AutoTranscriptionConfig_DisplayTiming)(0), // 5: google.cloud.video.livestream.v1.AutoTranscriptionConfig.DisplayTiming + (AutoTranscriptionConfig_QualityPreset)(0), // 6: google.cloud.video.livestream.v1.AutoTranscriptionConfig.QualityPreset + (Event_State)(0), // 7: google.cloud.video.livestream.v1.Event.State + (Clip_State)(0), // 8: google.cloud.video.livestream.v1.Clip.State + (Clip_OutputType)(0), // 9: google.cloud.video.livestream.v1.Clip.OutputType + (DvrSession_State)(0), // 10: google.cloud.video.livestream.v1.DvrSession.State + (Asset_State)(0), // 11: google.cloud.video.livestream.v1.Asset.State + (*Input)(nil), // 12: google.cloud.video.livestream.v1.Input + (*Channel)(nil), // 13: google.cloud.video.livestream.v1.Channel + (*NormalizedCoordinate)(nil), // 14: google.cloud.video.livestream.v1.NormalizedCoordinate + (*NormalizedResolution)(nil), // 15: google.cloud.video.livestream.v1.NormalizedResolution + (*StaticOverlay)(nil), // 16: google.cloud.video.livestream.v1.StaticOverlay + (*InputConfig)(nil), // 17: google.cloud.video.livestream.v1.InputConfig + (*LogConfig)(nil), // 18: google.cloud.video.livestream.v1.LogConfig + (*RetentionConfig)(nil), // 19: google.cloud.video.livestream.v1.RetentionConfig + (*InputStreamProperty)(nil), // 20: google.cloud.video.livestream.v1.InputStreamProperty + (*VideoStreamProperty)(nil), // 21: google.cloud.video.livestream.v1.VideoStreamProperty + (*VideoFormat)(nil), // 22: google.cloud.video.livestream.v1.VideoFormat + (*AudioStreamProperty)(nil), // 23: google.cloud.video.livestream.v1.AudioStreamProperty + (*AudioFormat)(nil), // 24: google.cloud.video.livestream.v1.AudioFormat + (*InputAttachment)(nil), // 25: google.cloud.video.livestream.v1.InputAttachment + (*AutoTranscriptionConfig)(nil), // 26: google.cloud.video.livestream.v1.AutoTranscriptionConfig + (*Event)(nil), // 27: google.cloud.video.livestream.v1.Event + (*Clip)(nil), // 28: google.cloud.video.livestream.v1.Clip + (*TimeInterval)(nil), // 29: google.cloud.video.livestream.v1.TimeInterval + (*DvrSession)(nil), // 30: google.cloud.video.livestream.v1.DvrSession + (*Asset)(nil), // 31: google.cloud.video.livestream.v1.Asset + (*Encryption)(nil), // 32: google.cloud.video.livestream.v1.Encryption + (*EncryptionUpdate)(nil), // 33: google.cloud.video.livestream.v1.EncryptionUpdate + (*Pool)(nil), // 34: google.cloud.video.livestream.v1.Pool + (*Input_SecurityRule)(nil), // 35: google.cloud.video.livestream.v1.Input.SecurityRule + nil, // 36: google.cloud.video.livestream.v1.Input.LabelsEntry + (*Channel_Output)(nil), // 37: google.cloud.video.livestream.v1.Channel.Output + nil, // 38: google.cloud.video.livestream.v1.Channel.LabelsEntry + (*InputAttachment_AutomaticFailover)(nil), // 39: google.cloud.video.livestream.v1.InputAttachment.AutomaticFailover + (*Event_InputSwitchTask)(nil), // 40: google.cloud.video.livestream.v1.Event.InputSwitchTask + (*Event_AdBreakTask)(nil), // 41: google.cloud.video.livestream.v1.Event.AdBreakTask + (*Event_SlateTask)(nil), // 42: google.cloud.video.livestream.v1.Event.SlateTask + (*Event_ReturnToProgramTask)(nil), // 43: google.cloud.video.livestream.v1.Event.ReturnToProgramTask + (*Event_MuteTask)(nil), // 44: google.cloud.video.livestream.v1.Event.MuteTask + (*Event_UnmuteTask)(nil), // 45: google.cloud.video.livestream.v1.Event.UnmuteTask + (*Event_UpdateEncryptionsTask)(nil), // 46: google.cloud.video.livestream.v1.Event.UpdateEncryptionsTask + nil, // 47: google.cloud.video.livestream.v1.Event.LabelsEntry + (*Clip_TimeSlice)(nil), // 48: google.cloud.video.livestream.v1.Clip.TimeSlice + (*Clip_Slice)(nil), // 49: google.cloud.video.livestream.v1.Clip.Slice + (*Clip_ClipManifest)(nil), // 50: google.cloud.video.livestream.v1.Clip.ClipManifest + nil, // 51: google.cloud.video.livestream.v1.Clip.LabelsEntry + (*DvrSession_DvrManifest)(nil), // 52: google.cloud.video.livestream.v1.DvrSession.DvrManifest + (*DvrSession_DvrWindow)(nil), // 53: google.cloud.video.livestream.v1.DvrSession.DvrWindow + nil, // 54: google.cloud.video.livestream.v1.DvrSession.LabelsEntry + (*Asset_VideoAsset)(nil), // 55: google.cloud.video.livestream.v1.Asset.VideoAsset + (*Asset_ImageAsset)(nil), // 56: google.cloud.video.livestream.v1.Asset.ImageAsset + nil, // 57: google.cloud.video.livestream.v1.Asset.LabelsEntry + (*Encryption_SecretManagerSource)(nil), // 58: google.cloud.video.livestream.v1.Encryption.SecretManagerSource + (*Encryption_Widevine)(nil), // 59: google.cloud.video.livestream.v1.Encryption.Widevine + (*Encryption_Fairplay)(nil), // 60: google.cloud.video.livestream.v1.Encryption.Fairplay + (*Encryption_Playready)(nil), // 61: google.cloud.video.livestream.v1.Encryption.Playready + (*Encryption_Clearkey)(nil), // 62: google.cloud.video.livestream.v1.Encryption.Clearkey + (*Encryption_DrmSystems)(nil), // 63: google.cloud.video.livestream.v1.Encryption.DrmSystems + (*Encryption_Aes128Encryption)(nil), // 64: google.cloud.video.livestream.v1.Encryption.Aes128Encryption + (*Encryption_SampleAesEncryption)(nil), // 65: google.cloud.video.livestream.v1.Encryption.SampleAesEncryption + (*Encryption_MpegCommonEncryption)(nil), // 66: google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption + (*Pool_NetworkConfig)(nil), // 67: google.cloud.video.livestream.v1.Pool.NetworkConfig + nil, // 68: google.cloud.video.livestream.v1.Pool.LabelsEntry + (*timestamppb.Timestamp)(nil), // 69: google.protobuf.Timestamp + (*PreprocessingConfig)(nil), // 70: google.cloud.video.livestream.v1.PreprocessingConfig + (*ElementaryStream)(nil), // 71: google.cloud.video.livestream.v1.ElementaryStream + (*MuxStream)(nil), // 72: google.cloud.video.livestream.v1.MuxStream + (*Manifest)(nil), // 73: google.cloud.video.livestream.v1.Manifest + (*DistributionStream)(nil), // 74: google.cloud.video.livestream.v1.DistributionStream + (*Distribution)(nil), // 75: google.cloud.video.livestream.v1.Distribution + (*SpriteSheet)(nil), // 76: google.cloud.video.livestream.v1.SpriteSheet + (*status.Status)(nil), // 77: google.rpc.Status + (*TimecodeConfig)(nil), // 78: google.cloud.video.livestream.v1.TimecodeConfig + (*durationpb.Duration)(nil), // 79: google.protobuf.Duration } var file_google_cloud_video_livestream_v1_resources_proto_depIdxs = []int32{ - 64, // 0: google.cloud.video.livestream.v1.Input.create_time:type_name -> google.protobuf.Timestamp - 64, // 1: google.cloud.video.livestream.v1.Input.update_time:type_name -> google.protobuf.Timestamp - 32, // 2: google.cloud.video.livestream.v1.Input.labels:type_name -> google.cloud.video.livestream.v1.Input.LabelsEntry - 0, // 3: google.cloud.video.livestream.v1.Input.type:type_name -> google.cloud.video.livestream.v1.Input.Type - 1, // 4: google.cloud.video.livestream.v1.Input.tier:type_name -> google.cloud.video.livestream.v1.Input.Tier - 65, // 5: google.cloud.video.livestream.v1.Input.preprocessing_config:type_name -> google.cloud.video.livestream.v1.PreprocessingConfig - 31, // 6: google.cloud.video.livestream.v1.Input.security_rules:type_name -> google.cloud.video.livestream.v1.Input.SecurityRule - 18, // 7: google.cloud.video.livestream.v1.Input.input_stream_property:type_name -> google.cloud.video.livestream.v1.InputStreamProperty - 64, // 8: google.cloud.video.livestream.v1.Channel.create_time:type_name -> google.protobuf.Timestamp - 64, // 9: google.cloud.video.livestream.v1.Channel.update_time:type_name -> google.protobuf.Timestamp - 34, // 10: google.cloud.video.livestream.v1.Channel.labels:type_name -> google.cloud.video.livestream.v1.Channel.LabelsEntry - 23, // 11: google.cloud.video.livestream.v1.Channel.input_attachments:type_name -> google.cloud.video.livestream.v1.InputAttachment - 33, // 12: google.cloud.video.livestream.v1.Channel.output:type_name -> google.cloud.video.livestream.v1.Channel.Output - 66, // 13: google.cloud.video.livestream.v1.Channel.elementary_streams:type_name -> google.cloud.video.livestream.v1.ElementaryStream - 67, // 14: google.cloud.video.livestream.v1.Channel.mux_streams:type_name -> google.cloud.video.livestream.v1.MuxStream - 68, // 15: google.cloud.video.livestream.v1.Channel.manifests:type_name -> google.cloud.video.livestream.v1.Manifest - 69, // 16: google.cloud.video.livestream.v1.Channel.sprite_sheets:type_name -> google.cloud.video.livestream.v1.SpriteSheet - 2, // 17: google.cloud.video.livestream.v1.Channel.streaming_state:type_name -> google.cloud.video.livestream.v1.Channel.StreamingState - 70, // 18: google.cloud.video.livestream.v1.Channel.streaming_error:type_name -> google.rpc.Status - 16, // 19: google.cloud.video.livestream.v1.Channel.log_config:type_name -> google.cloud.video.livestream.v1.LogConfig - 71, // 20: google.cloud.video.livestream.v1.Channel.timecode_config:type_name -> google.cloud.video.livestream.v1.TimecodeConfig - 29, // 21: google.cloud.video.livestream.v1.Channel.encryptions:type_name -> google.cloud.video.livestream.v1.Encryption - 15, // 22: google.cloud.video.livestream.v1.Channel.input_config:type_name -> google.cloud.video.livestream.v1.InputConfig - 17, // 23: google.cloud.video.livestream.v1.Channel.retention_config:type_name -> google.cloud.video.livestream.v1.RetentionConfig - 14, // 24: google.cloud.video.livestream.v1.Channel.static_overlays:type_name -> google.cloud.video.livestream.v1.StaticOverlay - 13, // 25: google.cloud.video.livestream.v1.StaticOverlay.resolution:type_name -> google.cloud.video.livestream.v1.NormalizedResolution - 12, // 26: google.cloud.video.livestream.v1.StaticOverlay.position:type_name -> google.cloud.video.livestream.v1.NormalizedCoordinate - 3, // 27: google.cloud.video.livestream.v1.InputConfig.input_switch_mode:type_name -> google.cloud.video.livestream.v1.InputConfig.InputSwitchMode - 4, // 28: google.cloud.video.livestream.v1.LogConfig.log_severity:type_name -> google.cloud.video.livestream.v1.LogConfig.LogSeverity - 72, // 29: google.cloud.video.livestream.v1.RetentionConfig.retention_window_duration:type_name -> google.protobuf.Duration - 64, // 30: google.cloud.video.livestream.v1.InputStreamProperty.last_establish_time:type_name -> google.protobuf.Timestamp - 19, // 31: google.cloud.video.livestream.v1.InputStreamProperty.video_streams:type_name -> google.cloud.video.livestream.v1.VideoStreamProperty - 21, // 32: google.cloud.video.livestream.v1.InputStreamProperty.audio_streams:type_name -> google.cloud.video.livestream.v1.AudioStreamProperty - 20, // 33: google.cloud.video.livestream.v1.VideoStreamProperty.video_format:type_name -> google.cloud.video.livestream.v1.VideoFormat - 22, // 34: google.cloud.video.livestream.v1.AudioStreamProperty.audio_format:type_name -> google.cloud.video.livestream.v1.AudioFormat - 35, // 35: google.cloud.video.livestream.v1.InputAttachment.automatic_failover:type_name -> google.cloud.video.livestream.v1.InputAttachment.AutomaticFailover - 64, // 36: google.cloud.video.livestream.v1.Event.create_time:type_name -> google.protobuf.Timestamp - 64, // 37: google.cloud.video.livestream.v1.Event.update_time:type_name -> google.protobuf.Timestamp - 42, // 38: google.cloud.video.livestream.v1.Event.labels:type_name -> google.cloud.video.livestream.v1.Event.LabelsEntry - 36, // 39: google.cloud.video.livestream.v1.Event.input_switch:type_name -> google.cloud.video.livestream.v1.Event.InputSwitchTask - 37, // 40: google.cloud.video.livestream.v1.Event.ad_break:type_name -> google.cloud.video.livestream.v1.Event.AdBreakTask - 39, // 41: google.cloud.video.livestream.v1.Event.return_to_program:type_name -> google.cloud.video.livestream.v1.Event.ReturnToProgramTask - 38, // 42: google.cloud.video.livestream.v1.Event.slate:type_name -> google.cloud.video.livestream.v1.Event.SlateTask - 40, // 43: google.cloud.video.livestream.v1.Event.mute:type_name -> google.cloud.video.livestream.v1.Event.MuteTask - 41, // 44: google.cloud.video.livestream.v1.Event.unmute:type_name -> google.cloud.video.livestream.v1.Event.UnmuteTask - 64, // 45: google.cloud.video.livestream.v1.Event.execution_time:type_name -> google.protobuf.Timestamp - 5, // 46: google.cloud.video.livestream.v1.Event.state:type_name -> google.cloud.video.livestream.v1.Event.State - 70, // 47: google.cloud.video.livestream.v1.Event.error:type_name -> google.rpc.Status - 64, // 48: google.cloud.video.livestream.v1.Clip.create_time:type_name -> google.protobuf.Timestamp - 64, // 49: google.cloud.video.livestream.v1.Clip.start_time:type_name -> google.protobuf.Timestamp - 64, // 50: google.cloud.video.livestream.v1.Clip.update_time:type_name -> google.protobuf.Timestamp - 46, // 51: google.cloud.video.livestream.v1.Clip.labels:type_name -> google.cloud.video.livestream.v1.Clip.LabelsEntry - 6, // 52: google.cloud.video.livestream.v1.Clip.state:type_name -> google.cloud.video.livestream.v1.Clip.State - 70, // 53: google.cloud.video.livestream.v1.Clip.error:type_name -> google.rpc.Status - 44, // 54: google.cloud.video.livestream.v1.Clip.slices:type_name -> google.cloud.video.livestream.v1.Clip.Slice - 45, // 55: google.cloud.video.livestream.v1.Clip.clip_manifests:type_name -> google.cloud.video.livestream.v1.Clip.ClipManifest - 7, // 56: google.cloud.video.livestream.v1.Clip.output_type:type_name -> google.cloud.video.livestream.v1.Clip.OutputType - 64, // 57: google.cloud.video.livestream.v1.TimeInterval.start_time:type_name -> google.protobuf.Timestamp - 64, // 58: google.cloud.video.livestream.v1.TimeInterval.end_time:type_name -> google.protobuf.Timestamp - 64, // 59: google.cloud.video.livestream.v1.DvrSession.create_time:type_name -> google.protobuf.Timestamp - 64, // 60: google.cloud.video.livestream.v1.DvrSession.update_time:type_name -> google.protobuf.Timestamp - 49, // 61: google.cloud.video.livestream.v1.DvrSession.labels:type_name -> google.cloud.video.livestream.v1.DvrSession.LabelsEntry - 8, // 62: google.cloud.video.livestream.v1.DvrSession.state:type_name -> google.cloud.video.livestream.v1.DvrSession.State - 70, // 63: google.cloud.video.livestream.v1.DvrSession.error:type_name -> google.rpc.Status - 47, // 64: google.cloud.video.livestream.v1.DvrSession.dvr_manifests:type_name -> google.cloud.video.livestream.v1.DvrSession.DvrManifest - 48, // 65: google.cloud.video.livestream.v1.DvrSession.dvr_windows:type_name -> google.cloud.video.livestream.v1.DvrSession.DvrWindow - 64, // 66: google.cloud.video.livestream.v1.Asset.create_time:type_name -> google.protobuf.Timestamp - 64, // 67: google.cloud.video.livestream.v1.Asset.update_time:type_name -> google.protobuf.Timestamp - 52, // 68: google.cloud.video.livestream.v1.Asset.labels:type_name -> google.cloud.video.livestream.v1.Asset.LabelsEntry - 50, // 69: google.cloud.video.livestream.v1.Asset.video:type_name -> google.cloud.video.livestream.v1.Asset.VideoAsset - 51, // 70: google.cloud.video.livestream.v1.Asset.image:type_name -> google.cloud.video.livestream.v1.Asset.ImageAsset - 9, // 71: google.cloud.video.livestream.v1.Asset.state:type_name -> google.cloud.video.livestream.v1.Asset.State - 70, // 72: google.cloud.video.livestream.v1.Asset.error:type_name -> google.rpc.Status - 53, // 73: google.cloud.video.livestream.v1.Encryption.secret_manager_key_source:type_name -> google.cloud.video.livestream.v1.Encryption.SecretManagerSource - 58, // 74: google.cloud.video.livestream.v1.Encryption.drm_systems:type_name -> google.cloud.video.livestream.v1.Encryption.DrmSystems - 59, // 75: google.cloud.video.livestream.v1.Encryption.aes128:type_name -> google.cloud.video.livestream.v1.Encryption.Aes128Encryption - 60, // 76: google.cloud.video.livestream.v1.Encryption.sample_aes:type_name -> google.cloud.video.livestream.v1.Encryption.SampleAesEncryption - 61, // 77: google.cloud.video.livestream.v1.Encryption.mpeg_cenc:type_name -> google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption - 64, // 78: google.cloud.video.livestream.v1.Pool.create_time:type_name -> google.protobuf.Timestamp - 64, // 79: google.cloud.video.livestream.v1.Pool.update_time:type_name -> google.protobuf.Timestamp - 63, // 80: google.cloud.video.livestream.v1.Pool.labels:type_name -> google.cloud.video.livestream.v1.Pool.LabelsEntry - 62, // 81: google.cloud.video.livestream.v1.Pool.network_config:type_name -> google.cloud.video.livestream.v1.Pool.NetworkConfig - 72, // 82: google.cloud.video.livestream.v1.Event.AdBreakTask.duration:type_name -> google.protobuf.Duration - 72, // 83: google.cloud.video.livestream.v1.Event.SlateTask.duration:type_name -> google.protobuf.Duration - 72, // 84: google.cloud.video.livestream.v1.Event.MuteTask.duration:type_name -> google.protobuf.Duration - 64, // 85: google.cloud.video.livestream.v1.Clip.TimeSlice.markin_time:type_name -> google.protobuf.Timestamp - 64, // 86: google.cloud.video.livestream.v1.Clip.TimeSlice.markout_time:type_name -> google.protobuf.Timestamp - 43, // 87: google.cloud.video.livestream.v1.Clip.Slice.time_slice:type_name -> google.cloud.video.livestream.v1.Clip.TimeSlice - 26, // 88: google.cloud.video.livestream.v1.DvrSession.DvrWindow.time_interval:type_name -> google.cloud.video.livestream.v1.TimeInterval - 54, // 89: google.cloud.video.livestream.v1.Encryption.DrmSystems.widevine:type_name -> google.cloud.video.livestream.v1.Encryption.Widevine - 55, // 90: google.cloud.video.livestream.v1.Encryption.DrmSystems.fairplay:type_name -> google.cloud.video.livestream.v1.Encryption.Fairplay - 56, // 91: google.cloud.video.livestream.v1.Encryption.DrmSystems.playready:type_name -> google.cloud.video.livestream.v1.Encryption.Playready - 57, // 92: google.cloud.video.livestream.v1.Encryption.DrmSystems.clearkey:type_name -> google.cloud.video.livestream.v1.Encryption.Clearkey - 93, // [93:93] is the sub-list for method output_type - 93, // [93:93] is the sub-list for method input_type - 93, // [93:93] is the sub-list for extension type_name - 93, // [93:93] is the sub-list for extension extendee - 0, // [0:93] is the sub-list for field type_name + 69, // 0: google.cloud.video.livestream.v1.Input.create_time:type_name -> google.protobuf.Timestamp + 69, // 1: google.cloud.video.livestream.v1.Input.update_time:type_name -> google.protobuf.Timestamp + 36, // 2: google.cloud.video.livestream.v1.Input.labels:type_name -> google.cloud.video.livestream.v1.Input.LabelsEntry + 0, // 3: google.cloud.video.livestream.v1.Input.type:type_name -> google.cloud.video.livestream.v1.Input.Type + 1, // 4: google.cloud.video.livestream.v1.Input.tier:type_name -> google.cloud.video.livestream.v1.Input.Tier + 70, // 5: google.cloud.video.livestream.v1.Input.preprocessing_config:type_name -> google.cloud.video.livestream.v1.PreprocessingConfig + 35, // 6: google.cloud.video.livestream.v1.Input.security_rules:type_name -> google.cloud.video.livestream.v1.Input.SecurityRule + 20, // 7: google.cloud.video.livestream.v1.Input.input_stream_property:type_name -> google.cloud.video.livestream.v1.InputStreamProperty + 69, // 8: google.cloud.video.livestream.v1.Channel.create_time:type_name -> google.protobuf.Timestamp + 69, // 9: google.cloud.video.livestream.v1.Channel.update_time:type_name -> google.protobuf.Timestamp + 38, // 10: google.cloud.video.livestream.v1.Channel.labels:type_name -> google.cloud.video.livestream.v1.Channel.LabelsEntry + 25, // 11: google.cloud.video.livestream.v1.Channel.input_attachments:type_name -> google.cloud.video.livestream.v1.InputAttachment + 37, // 12: google.cloud.video.livestream.v1.Channel.output:type_name -> google.cloud.video.livestream.v1.Channel.Output + 71, // 13: google.cloud.video.livestream.v1.Channel.elementary_streams:type_name -> google.cloud.video.livestream.v1.ElementaryStream + 72, // 14: google.cloud.video.livestream.v1.Channel.mux_streams:type_name -> google.cloud.video.livestream.v1.MuxStream + 73, // 15: google.cloud.video.livestream.v1.Channel.manifests:type_name -> google.cloud.video.livestream.v1.Manifest + 74, // 16: google.cloud.video.livestream.v1.Channel.distribution_streams:type_name -> google.cloud.video.livestream.v1.DistributionStream + 75, // 17: google.cloud.video.livestream.v1.Channel.distributions:type_name -> google.cloud.video.livestream.v1.Distribution + 76, // 18: google.cloud.video.livestream.v1.Channel.sprite_sheets:type_name -> google.cloud.video.livestream.v1.SpriteSheet + 2, // 19: google.cloud.video.livestream.v1.Channel.streaming_state:type_name -> google.cloud.video.livestream.v1.Channel.StreamingState + 77, // 20: google.cloud.video.livestream.v1.Channel.streaming_error:type_name -> google.rpc.Status + 18, // 21: google.cloud.video.livestream.v1.Channel.log_config:type_name -> google.cloud.video.livestream.v1.LogConfig + 78, // 22: google.cloud.video.livestream.v1.Channel.timecode_config:type_name -> google.cloud.video.livestream.v1.TimecodeConfig + 32, // 23: google.cloud.video.livestream.v1.Channel.encryptions:type_name -> google.cloud.video.livestream.v1.Encryption + 17, // 24: google.cloud.video.livestream.v1.Channel.input_config:type_name -> google.cloud.video.livestream.v1.InputConfig + 19, // 25: google.cloud.video.livestream.v1.Channel.retention_config:type_name -> google.cloud.video.livestream.v1.RetentionConfig + 16, // 26: google.cloud.video.livestream.v1.Channel.static_overlays:type_name -> google.cloud.video.livestream.v1.StaticOverlay + 26, // 27: google.cloud.video.livestream.v1.Channel.auto_transcription_config:type_name -> google.cloud.video.livestream.v1.AutoTranscriptionConfig + 15, // 28: google.cloud.video.livestream.v1.StaticOverlay.resolution:type_name -> google.cloud.video.livestream.v1.NormalizedResolution + 14, // 29: google.cloud.video.livestream.v1.StaticOverlay.position:type_name -> google.cloud.video.livestream.v1.NormalizedCoordinate + 3, // 30: google.cloud.video.livestream.v1.InputConfig.input_switch_mode:type_name -> google.cloud.video.livestream.v1.InputConfig.InputSwitchMode + 4, // 31: google.cloud.video.livestream.v1.LogConfig.log_severity:type_name -> google.cloud.video.livestream.v1.LogConfig.LogSeverity + 79, // 32: google.cloud.video.livestream.v1.RetentionConfig.retention_window_duration:type_name -> google.protobuf.Duration + 69, // 33: google.cloud.video.livestream.v1.InputStreamProperty.last_establish_time:type_name -> google.protobuf.Timestamp + 21, // 34: google.cloud.video.livestream.v1.InputStreamProperty.video_streams:type_name -> google.cloud.video.livestream.v1.VideoStreamProperty + 23, // 35: google.cloud.video.livestream.v1.InputStreamProperty.audio_streams:type_name -> google.cloud.video.livestream.v1.AudioStreamProperty + 22, // 36: google.cloud.video.livestream.v1.VideoStreamProperty.video_format:type_name -> google.cloud.video.livestream.v1.VideoFormat + 24, // 37: google.cloud.video.livestream.v1.AudioStreamProperty.audio_format:type_name -> google.cloud.video.livestream.v1.AudioFormat + 39, // 38: google.cloud.video.livestream.v1.InputAttachment.automatic_failover:type_name -> google.cloud.video.livestream.v1.InputAttachment.AutomaticFailover + 5, // 39: google.cloud.video.livestream.v1.AutoTranscriptionConfig.display_timing:type_name -> google.cloud.video.livestream.v1.AutoTranscriptionConfig.DisplayTiming + 6, // 40: google.cloud.video.livestream.v1.AutoTranscriptionConfig.quality_preset:type_name -> google.cloud.video.livestream.v1.AutoTranscriptionConfig.QualityPreset + 69, // 41: google.cloud.video.livestream.v1.Event.create_time:type_name -> google.protobuf.Timestamp + 69, // 42: google.cloud.video.livestream.v1.Event.update_time:type_name -> google.protobuf.Timestamp + 47, // 43: google.cloud.video.livestream.v1.Event.labels:type_name -> google.cloud.video.livestream.v1.Event.LabelsEntry + 40, // 44: google.cloud.video.livestream.v1.Event.input_switch:type_name -> google.cloud.video.livestream.v1.Event.InputSwitchTask + 41, // 45: google.cloud.video.livestream.v1.Event.ad_break:type_name -> google.cloud.video.livestream.v1.Event.AdBreakTask + 43, // 46: google.cloud.video.livestream.v1.Event.return_to_program:type_name -> google.cloud.video.livestream.v1.Event.ReturnToProgramTask + 42, // 47: google.cloud.video.livestream.v1.Event.slate:type_name -> google.cloud.video.livestream.v1.Event.SlateTask + 44, // 48: google.cloud.video.livestream.v1.Event.mute:type_name -> google.cloud.video.livestream.v1.Event.MuteTask + 45, // 49: google.cloud.video.livestream.v1.Event.unmute:type_name -> google.cloud.video.livestream.v1.Event.UnmuteTask + 46, // 50: google.cloud.video.livestream.v1.Event.update_encryptions:type_name -> google.cloud.video.livestream.v1.Event.UpdateEncryptionsTask + 69, // 51: google.cloud.video.livestream.v1.Event.execution_time:type_name -> google.protobuf.Timestamp + 7, // 52: google.cloud.video.livestream.v1.Event.state:type_name -> google.cloud.video.livestream.v1.Event.State + 77, // 53: google.cloud.video.livestream.v1.Event.error:type_name -> google.rpc.Status + 69, // 54: google.cloud.video.livestream.v1.Clip.create_time:type_name -> google.protobuf.Timestamp + 69, // 55: google.cloud.video.livestream.v1.Clip.start_time:type_name -> google.protobuf.Timestamp + 69, // 56: google.cloud.video.livestream.v1.Clip.update_time:type_name -> google.protobuf.Timestamp + 51, // 57: google.cloud.video.livestream.v1.Clip.labels:type_name -> google.cloud.video.livestream.v1.Clip.LabelsEntry + 8, // 58: google.cloud.video.livestream.v1.Clip.state:type_name -> google.cloud.video.livestream.v1.Clip.State + 77, // 59: google.cloud.video.livestream.v1.Clip.error:type_name -> google.rpc.Status + 49, // 60: google.cloud.video.livestream.v1.Clip.slices:type_name -> google.cloud.video.livestream.v1.Clip.Slice + 50, // 61: google.cloud.video.livestream.v1.Clip.clip_manifests:type_name -> google.cloud.video.livestream.v1.Clip.ClipManifest + 9, // 62: google.cloud.video.livestream.v1.Clip.output_type:type_name -> google.cloud.video.livestream.v1.Clip.OutputType + 69, // 63: google.cloud.video.livestream.v1.TimeInterval.start_time:type_name -> google.protobuf.Timestamp + 69, // 64: google.cloud.video.livestream.v1.TimeInterval.end_time:type_name -> google.protobuf.Timestamp + 69, // 65: google.cloud.video.livestream.v1.DvrSession.create_time:type_name -> google.protobuf.Timestamp + 69, // 66: google.cloud.video.livestream.v1.DvrSession.update_time:type_name -> google.protobuf.Timestamp + 54, // 67: google.cloud.video.livestream.v1.DvrSession.labels:type_name -> google.cloud.video.livestream.v1.DvrSession.LabelsEntry + 10, // 68: google.cloud.video.livestream.v1.DvrSession.state:type_name -> google.cloud.video.livestream.v1.DvrSession.State + 77, // 69: google.cloud.video.livestream.v1.DvrSession.error:type_name -> google.rpc.Status + 52, // 70: google.cloud.video.livestream.v1.DvrSession.dvr_manifests:type_name -> google.cloud.video.livestream.v1.DvrSession.DvrManifest + 53, // 71: google.cloud.video.livestream.v1.DvrSession.dvr_windows:type_name -> google.cloud.video.livestream.v1.DvrSession.DvrWindow + 69, // 72: google.cloud.video.livestream.v1.Asset.create_time:type_name -> google.protobuf.Timestamp + 69, // 73: google.cloud.video.livestream.v1.Asset.update_time:type_name -> google.protobuf.Timestamp + 57, // 74: google.cloud.video.livestream.v1.Asset.labels:type_name -> google.cloud.video.livestream.v1.Asset.LabelsEntry + 55, // 75: google.cloud.video.livestream.v1.Asset.video:type_name -> google.cloud.video.livestream.v1.Asset.VideoAsset + 56, // 76: google.cloud.video.livestream.v1.Asset.image:type_name -> google.cloud.video.livestream.v1.Asset.ImageAsset + 11, // 77: google.cloud.video.livestream.v1.Asset.state:type_name -> google.cloud.video.livestream.v1.Asset.State + 77, // 78: google.cloud.video.livestream.v1.Asset.error:type_name -> google.rpc.Status + 58, // 79: google.cloud.video.livestream.v1.Encryption.secret_manager_key_source:type_name -> google.cloud.video.livestream.v1.Encryption.SecretManagerSource + 63, // 80: google.cloud.video.livestream.v1.Encryption.drm_systems:type_name -> google.cloud.video.livestream.v1.Encryption.DrmSystems + 64, // 81: google.cloud.video.livestream.v1.Encryption.aes128:type_name -> google.cloud.video.livestream.v1.Encryption.Aes128Encryption + 65, // 82: google.cloud.video.livestream.v1.Encryption.sample_aes:type_name -> google.cloud.video.livestream.v1.Encryption.SampleAesEncryption + 66, // 83: google.cloud.video.livestream.v1.Encryption.mpeg_cenc:type_name -> google.cloud.video.livestream.v1.Encryption.MpegCommonEncryption + 58, // 84: google.cloud.video.livestream.v1.EncryptionUpdate.secret_manager_key_source:type_name -> google.cloud.video.livestream.v1.Encryption.SecretManagerSource + 69, // 85: google.cloud.video.livestream.v1.Pool.create_time:type_name -> google.protobuf.Timestamp + 69, // 86: google.cloud.video.livestream.v1.Pool.update_time:type_name -> google.protobuf.Timestamp + 68, // 87: google.cloud.video.livestream.v1.Pool.labels:type_name -> google.cloud.video.livestream.v1.Pool.LabelsEntry + 67, // 88: google.cloud.video.livestream.v1.Pool.network_config:type_name -> google.cloud.video.livestream.v1.Pool.NetworkConfig + 79, // 89: google.cloud.video.livestream.v1.Event.AdBreakTask.duration:type_name -> google.protobuf.Duration + 79, // 90: google.cloud.video.livestream.v1.Event.SlateTask.duration:type_name -> google.protobuf.Duration + 79, // 91: google.cloud.video.livestream.v1.Event.MuteTask.duration:type_name -> google.protobuf.Duration + 33, // 92: google.cloud.video.livestream.v1.Event.UpdateEncryptionsTask.encryptions:type_name -> google.cloud.video.livestream.v1.EncryptionUpdate + 69, // 93: google.cloud.video.livestream.v1.Clip.TimeSlice.markin_time:type_name -> google.protobuf.Timestamp + 69, // 94: google.cloud.video.livestream.v1.Clip.TimeSlice.markout_time:type_name -> google.protobuf.Timestamp + 48, // 95: google.cloud.video.livestream.v1.Clip.Slice.time_slice:type_name -> google.cloud.video.livestream.v1.Clip.TimeSlice + 29, // 96: google.cloud.video.livestream.v1.DvrSession.DvrWindow.time_interval:type_name -> google.cloud.video.livestream.v1.TimeInterval + 59, // 97: google.cloud.video.livestream.v1.Encryption.DrmSystems.widevine:type_name -> google.cloud.video.livestream.v1.Encryption.Widevine + 60, // 98: google.cloud.video.livestream.v1.Encryption.DrmSystems.fairplay:type_name -> google.cloud.video.livestream.v1.Encryption.Fairplay + 61, // 99: google.cloud.video.livestream.v1.Encryption.DrmSystems.playready:type_name -> google.cloud.video.livestream.v1.Encryption.Playready + 62, // 100: google.cloud.video.livestream.v1.Encryption.DrmSystems.clearkey:type_name -> google.cloud.video.livestream.v1.Encryption.Clearkey + 101, // [101:101] is the sub-list for method output_type + 101, // [101:101] is the sub-list for method input_type + 101, // [101:101] is the sub-list for extension type_name + 101, // [101:101] is the sub-list for extension extendee + 0, // [0:101] is the sub-list for field type_name } func init() { file_google_cloud_video_livestream_v1_resources_proto_init() } @@ -5029,28 +5477,32 @@ func file_google_cloud_video_livestream_v1_resources_proto_init() { return } file_google_cloud_video_livestream_v1_outputs_proto_init() - file_google_cloud_video_livestream_v1_resources_proto_msgTypes[14].OneofWrappers = []any{ + file_google_cloud_video_livestream_v1_resources_proto_msgTypes[15].OneofWrappers = []any{ (*Event_InputSwitch)(nil), (*Event_AdBreak)(nil), (*Event_ReturnToProgram)(nil), (*Event_Slate)(nil), (*Event_Mute)(nil), (*Event_Unmute)(nil), + (*Event_UpdateEncryptions)(nil), } - file_google_cloud_video_livestream_v1_resources_proto_msgTypes[18].OneofWrappers = []any{ + file_google_cloud_video_livestream_v1_resources_proto_msgTypes[19].OneofWrappers = []any{ (*Asset_Video)(nil), (*Asset_Image)(nil), } - file_google_cloud_video_livestream_v1_resources_proto_msgTypes[19].OneofWrappers = []any{ + file_google_cloud_video_livestream_v1_resources_proto_msgTypes[20].OneofWrappers = []any{ (*Encryption_SecretManagerKeySource)(nil), (*Encryption_Aes128)(nil), (*Encryption_SampleAes)(nil), (*Encryption_MpegCenc)(nil), } - file_google_cloud_video_livestream_v1_resources_proto_msgTypes[34].OneofWrappers = []any{ + file_google_cloud_video_livestream_v1_resources_proto_msgTypes[21].OneofWrappers = []any{ + (*EncryptionUpdate_SecretManagerKeySource)(nil), + } + file_google_cloud_video_livestream_v1_resources_proto_msgTypes[37].OneofWrappers = []any{ (*Clip_Slice_TimeSlice)(nil), } - file_google_cloud_video_livestream_v1_resources_proto_msgTypes[38].OneofWrappers = []any{ + file_google_cloud_video_livestream_v1_resources_proto_msgTypes[41].OneofWrappers = []any{ (*DvrSession_DvrWindow_TimeInterval)(nil), } type x struct{} @@ -5058,8 +5510,8 @@ func file_google_cloud_video_livestream_v1_resources_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_video_livestream_v1_resources_proto_rawDesc, - NumEnums: 10, - NumMessages: 54, + NumEnums: 12, + NumMessages: 57, NumExtensions: 0, NumServices: 0, }, diff --git a/video/livestream/apiv1/livestreampb/service.pb.go b/video/livestream/apiv1/livestreampb/service.pb.go index cb5b2e9aed23..c7bb1b0df2a6 100755 --- a/video/livestream/apiv1/livestreampb/service.pb.go +++ b/video/livestream/apiv1/livestreampb/service.pb.go @@ -55,8 +55,11 @@ type CreateAssetRequest struct { // Required. The asset resource to be created. Asset *Asset `protobuf:"bytes,2,opt,name=asset,proto3" json:"asset,omitempty"` // Required. The ID of the asset resource to be created. - // This value must be 1-63 characters, begin and end with `[a-z0-9]`, - // could contain dashes (-) in between. + // + // This value must be 1-63 characters, begin and end with a lower-case letter + // or a number, and consist of only lower-case letters, numbers, and hyphens. + // In other words, it must match the following regex: + // `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. AssetId string `protobuf:"bytes,3,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore @@ -411,8 +414,11 @@ type CreateChannelRequest struct { // Required. The channel resource to be created. Channel *Channel `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"` // Required. The ID of the channel resource to be created. - // This value must be 1-63 characters, begin and end with `[a-z0-9]`, - // could contain dashes (-) in between. + // + // This value must be 1-63 characters, begin and end with a lower-case letter + // or a number, and consist of only lower-case letters, numbers, and hyphens. + // In other words, it must match the following regex: + // `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. ChannelId string `protobuf:"bytes,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore @@ -1006,6 +1012,166 @@ func (x *StopChannelRequest) GetRequestId() string { return "" } +// Request message for "LivestreamService.StartDistribution". +type StartDistributionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the channel resource, in the form of: + // `projects/{project}/locations/{location}/channels/{channelId}`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. A list of keys to identify the distribution configuration in the + // channel resource. If left empty, all the distributions in the channel + // specification will be started. + DistributionKeys []string `protobuf:"bytes,2,rep,name=distribution_keys,json=distributionKeys,proto3" json:"distribution_keys,omitempty"` + // Optional. A request ID to identify requests. Specify a unique request ID + // so that if you must retry your request, the server will know to ignore + // the request if it has already been completed. The server will guarantee + // that for at least 60 minutes since the first request. + // + // For example, consider a situation where you make an initial request and the + // request times out. If you make the request again with the same request ID, + // the server can check if original operation with the same request ID was + // received, and if so, will ignore the second request. This prevents clients + // from accidentally creating duplicate commitments. + // + // The request ID must be a valid UUID with the exception that zero UUID is + // not supported `(00000000-0000-0000-0000-000000000000)`. + RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` +} + +func (x *StartDistributionRequest) Reset() { + *x = StartDistributionRequest{} + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StartDistributionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartDistributionRequest) ProtoMessage() {} + +func (x *StartDistributionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StartDistributionRequest.ProtoReflect.Descriptor instead. +func (*StartDistributionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{13} +} + +func (x *StartDistributionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *StartDistributionRequest) GetDistributionKeys() []string { + if x != nil { + return x.DistributionKeys + } + return nil +} + +func (x *StartDistributionRequest) GetRequestId() string { + if x != nil { + return x.RequestId + } + return "" +} + +// Request message for "LivestreamService.StopDistribution". +type StopDistributionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the channel resource, in the form of: + // `projects/{project}/locations/{location}/channels/{channelId}`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. A list of key to identify the distribution configuration in the + // channel resource. If left empty, all the distributions in the channel + // specification will be stopped. + DistributionKeys []string `protobuf:"bytes,2,rep,name=distribution_keys,json=distributionKeys,proto3" json:"distribution_keys,omitempty"` + // Optional. A request ID to identify requests. Specify a unique request ID + // so that if you must retry your request, the server will know to ignore + // the request if it has already been completed. The server will guarantee + // that for at least 60 minutes since the first request. + // + // For example, consider a situation where you make an initial request and the + // request times out. If you make the request again with the same request ID, + // the server can check if original operation with the same request ID was + // received, and if so, will ignore the second request. This prevents clients + // from accidentally creating duplicate commitments. + // + // The request ID must be a valid UUID with the exception that zero UUID is + // not supported `(00000000-0000-0000-0000-000000000000)`. + RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` +} + +func (x *StopDistributionRequest) Reset() { + *x = StopDistributionRequest{} + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StopDistributionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopDistributionRequest) ProtoMessage() {} + +func (x *StopDistributionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopDistributionRequest.ProtoReflect.Descriptor instead. +func (*StopDistributionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{14} +} + +func (x *StopDistributionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *StopDistributionRequest) GetDistributionKeys() []string { + if x != nil { + return x.DistributionKeys + } + return nil +} + +func (x *StopDistributionRequest) GetRequestId() string { + if x != nil { + return x.RequestId + } + return "" +} + // Request message for "LivestreamService.CreateInput". type CreateInputRequest struct { state protoimpl.MessageState @@ -1018,8 +1184,11 @@ type CreateInputRequest struct { // Required. The input resource to be created. Input *Input `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` // Required. The ID of the input resource to be created. - // This value must be 1-63 characters, begin and end with `[a-z0-9]`, - // could contain dashes (-) in between. + // + // This value must be 1-63 characters, begin and end with a lower-case letter + // or a number, and consist of only lower-case letters, numbers, and hyphens. + // In other words, it must match the following regex: + // `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. InputId string `protobuf:"bytes,3,opt,name=input_id,json=inputId,proto3" json:"input_id,omitempty"` // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore @@ -1039,7 +1208,7 @@ type CreateInputRequest struct { func (x *CreateInputRequest) Reset() { *x = CreateInputRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[13] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1051,7 +1220,7 @@ func (x *CreateInputRequest) String() string { func (*CreateInputRequest) ProtoMessage() {} func (x *CreateInputRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[13] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1064,7 +1233,7 @@ func (x *CreateInputRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateInputRequest.ProtoReflect.Descriptor instead. func (*CreateInputRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{13} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{15} } func (x *CreateInputRequest) GetParent() string { @@ -1121,7 +1290,7 @@ type ListInputsRequest struct { func (x *ListInputsRequest) Reset() { *x = ListInputsRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[14] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1133,7 +1302,7 @@ func (x *ListInputsRequest) String() string { func (*ListInputsRequest) ProtoMessage() {} func (x *ListInputsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[14] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1146,7 +1315,7 @@ func (x *ListInputsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInputsRequest.ProtoReflect.Descriptor instead. func (*ListInputsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{14} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{16} } func (x *ListInputsRequest) GetParent() string { @@ -1201,7 +1370,7 @@ type ListInputsResponse struct { func (x *ListInputsResponse) Reset() { *x = ListInputsResponse{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[15] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1213,7 +1382,7 @@ func (x *ListInputsResponse) String() string { func (*ListInputsResponse) ProtoMessage() {} func (x *ListInputsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[15] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1226,7 +1395,7 @@ func (x *ListInputsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInputsResponse.ProtoReflect.Descriptor instead. func (*ListInputsResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{15} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{17} } func (x *ListInputsResponse) GetInputs() []*Input { @@ -1263,7 +1432,7 @@ type GetInputRequest struct { func (x *GetInputRequest) Reset() { *x = GetInputRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[16] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1275,7 +1444,7 @@ func (x *GetInputRequest) String() string { func (*GetInputRequest) ProtoMessage() {} func (x *GetInputRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[16] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1288,7 +1457,7 @@ func (x *GetInputRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInputRequest.ProtoReflect.Descriptor instead. func (*GetInputRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{16} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{18} } func (x *GetInputRequest) GetName() string { @@ -1325,7 +1494,7 @@ type DeleteInputRequest struct { func (x *DeleteInputRequest) Reset() { *x = DeleteInputRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[17] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1337,7 +1506,7 @@ func (x *DeleteInputRequest) String() string { func (*DeleteInputRequest) ProtoMessage() {} func (x *DeleteInputRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[17] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1350,7 +1519,7 @@ func (x *DeleteInputRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteInputRequest.ProtoReflect.Descriptor instead. func (*DeleteInputRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{17} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{19} } func (x *DeleteInputRequest) GetName() string { @@ -1407,7 +1576,7 @@ type UpdateInputRequest struct { func (x *UpdateInputRequest) Reset() { *x = UpdateInputRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[18] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1419,7 +1588,7 @@ func (x *UpdateInputRequest) String() string { func (*UpdateInputRequest) ProtoMessage() {} func (x *UpdateInputRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[18] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1432,7 +1601,7 @@ func (x *UpdateInputRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateInputRequest.ProtoReflect.Descriptor instead. func (*UpdateInputRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{18} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{20} } func (x *UpdateInputRequest) GetUpdateMask() *fieldmaskpb.FieldMask { @@ -1468,8 +1637,11 @@ type CreateEventRequest struct { // Required. The event resource to be created. Event *Event `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` // Required. The ID of the event resource to be created. - // This value must be 1-63 characters, begin and end with `[a-z0-9]`, - // could contain dashes (-) in between. + // + // This value must be 1-63 characters, begin and end with a lower-case letter + // or a number, and consist of only lower-case letters, numbers, and hyphens. + // In other words, it must match the following regex: + // `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. EventId string `protobuf:"bytes,3,opt,name=event_id,json=eventId,proto3" json:"event_id,omitempty"` // A request ID to identify requests. Specify a unique request ID // so that if you must retry your request, the server will know to ignore @@ -1489,7 +1661,7 @@ type CreateEventRequest struct { func (x *CreateEventRequest) Reset() { *x = CreateEventRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[19] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1501,7 +1673,7 @@ func (x *CreateEventRequest) String() string { func (*CreateEventRequest) ProtoMessage() {} func (x *CreateEventRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[19] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1514,7 +1686,7 @@ func (x *CreateEventRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateEventRequest.ProtoReflect.Descriptor instead. func (*CreateEventRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{19} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{21} } func (x *CreateEventRequest) GetParent() string { @@ -1571,7 +1743,7 @@ type ListEventsRequest struct { func (x *ListEventsRequest) Reset() { *x = ListEventsRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[20] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1583,7 +1755,7 @@ func (x *ListEventsRequest) String() string { func (*ListEventsRequest) ProtoMessage() {} func (x *ListEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[20] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1596,7 +1768,7 @@ func (x *ListEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEventsRequest.ProtoReflect.Descriptor instead. func (*ListEventsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{20} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{22} } func (x *ListEventsRequest) GetParent() string { @@ -1651,7 +1823,7 @@ type ListEventsResponse struct { func (x *ListEventsResponse) Reset() { *x = ListEventsResponse{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[21] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1663,7 +1835,7 @@ func (x *ListEventsResponse) String() string { func (*ListEventsResponse) ProtoMessage() {} func (x *ListEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[21] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1676,7 +1848,7 @@ func (x *ListEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEventsResponse.ProtoReflect.Descriptor instead. func (*ListEventsResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{21} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{23} } func (x *ListEventsResponse) GetEvents() []*Event { @@ -1713,7 +1885,7 @@ type GetEventRequest struct { func (x *GetEventRequest) Reset() { *x = GetEventRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[22] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1725,7 +1897,7 @@ func (x *GetEventRequest) String() string { func (*GetEventRequest) ProtoMessage() {} func (x *GetEventRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[22] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1738,7 +1910,7 @@ func (x *GetEventRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEventRequest.ProtoReflect.Descriptor instead. func (*GetEventRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{22} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{24} } func (x *GetEventRequest) GetName() string { @@ -1775,7 +1947,7 @@ type DeleteEventRequest struct { func (x *DeleteEventRequest) Reset() { *x = DeleteEventRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[23] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1787,7 +1959,7 @@ func (x *DeleteEventRequest) String() string { func (*DeleteEventRequest) ProtoMessage() {} func (x *DeleteEventRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[23] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1800,7 +1972,7 @@ func (x *DeleteEventRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteEventRequest.ProtoReflect.Descriptor instead. func (*DeleteEventRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{23} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{25} } func (x *DeleteEventRequest) GetName() string { @@ -1826,7 +1998,7 @@ type ChannelOperationResponse struct { func (x *ChannelOperationResponse) Reset() { *x = ChannelOperationResponse{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[24] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1838,7 +2010,7 @@ func (x *ChannelOperationResponse) String() string { func (*ChannelOperationResponse) ProtoMessage() {} func (x *ChannelOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[24] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1851,7 +2023,7 @@ func (x *ChannelOperationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ChannelOperationResponse.ProtoReflect.Descriptor instead. func (*ChannelOperationResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{24} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{26} } // Request message for "LivestreamService.ListClips". @@ -1875,7 +2047,7 @@ type ListClipsRequest struct { func (x *ListClipsRequest) Reset() { *x = ListClipsRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[25] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1887,7 +2059,7 @@ func (x *ListClipsRequest) String() string { func (*ListClipsRequest) ProtoMessage() {} func (x *ListClipsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[25] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1900,7 +2072,7 @@ func (x *ListClipsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClipsRequest.ProtoReflect.Descriptor instead. func (*ListClipsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{25} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{27} } func (x *ListClipsRequest) GetParent() string { @@ -1954,7 +2126,7 @@ type ListClipsResponse struct { func (x *ListClipsResponse) Reset() { *x = ListClipsResponse{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[26] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1966,7 +2138,7 @@ func (x *ListClipsResponse) String() string { func (*ListClipsResponse) ProtoMessage() {} func (x *ListClipsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[26] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1979,7 +2151,7 @@ func (x *ListClipsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClipsResponse.ProtoReflect.Descriptor instead. func (*ListClipsResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{26} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{28} } func (x *ListClipsResponse) GetClips() []*Clip { @@ -2016,7 +2188,7 @@ type GetClipRequest struct { func (x *GetClipRequest) Reset() { *x = GetClipRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[27] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2028,7 +2200,7 @@ func (x *GetClipRequest) String() string { func (*GetClipRequest) ProtoMessage() {} func (x *GetClipRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[27] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2041,7 +2213,7 @@ func (x *GetClipRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClipRequest.ProtoReflect.Descriptor instead. func (*GetClipRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{27} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{29} } func (x *GetClipRequest) GetName() string { @@ -2060,10 +2232,12 @@ type CreateClipRequest struct { // Required. The parent resource name, in the following form: // `projects/{project}/locations/{location}/channels/{channel}`. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. Id of the requesting object in the following form: + // Required. The ID of the clip resource to be created. // - // 1. 1 character minimum, 63 characters maximum - // 2. Only contains letters, digits, underscores, and hyphens + // This value must be 1-63 characters, begin and end with a lower-case letter + // or a number, and consist of only lower-case letters, numbers, and hyphens. + // In other words, it must match the following regex: + // `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. ClipId string `protobuf:"bytes,2,opt,name=clip_id,json=clipId,proto3" json:"clip_id,omitempty"` // Required. The resource being created Clip *Clip `protobuf:"bytes,3,opt,name=clip,proto3" json:"clip,omitempty"` @@ -2085,7 +2259,7 @@ type CreateClipRequest struct { func (x *CreateClipRequest) Reset() { *x = CreateClipRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[28] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2097,7 +2271,7 @@ func (x *CreateClipRequest) String() string { func (*CreateClipRequest) ProtoMessage() {} func (x *CreateClipRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[28] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2110,7 +2284,7 @@ func (x *CreateClipRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateClipRequest.ProtoReflect.Descriptor instead. func (*CreateClipRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{28} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{30} } func (x *CreateClipRequest) GetParent() string { @@ -2168,7 +2342,7 @@ type DeleteClipRequest struct { func (x *DeleteClipRequest) Reset() { *x = DeleteClipRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[29] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2180,7 +2354,7 @@ func (x *DeleteClipRequest) String() string { func (*DeleteClipRequest) ProtoMessage() {} func (x *DeleteClipRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[29] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2193,7 +2367,7 @@ func (x *DeleteClipRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteClipRequest.ProtoReflect.Descriptor instead. func (*DeleteClipRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{29} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{31} } func (x *DeleteClipRequest) GetName() string { @@ -2231,7 +2405,7 @@ type ListDvrSessionsRequest struct { func (x *ListDvrSessionsRequest) Reset() { *x = ListDvrSessionsRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[30] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2243,7 +2417,7 @@ func (x *ListDvrSessionsRequest) String() string { func (*ListDvrSessionsRequest) ProtoMessage() {} func (x *ListDvrSessionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[30] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2256,7 +2430,7 @@ func (x *ListDvrSessionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListDvrSessionsRequest.ProtoReflect.Descriptor instead. func (*ListDvrSessionsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{30} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{32} } func (x *ListDvrSessionsRequest) GetParent() string { @@ -2310,7 +2484,7 @@ type ListDvrSessionsResponse struct { func (x *ListDvrSessionsResponse) Reset() { *x = ListDvrSessionsResponse{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[31] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2322,7 +2496,7 @@ func (x *ListDvrSessionsResponse) String() string { func (*ListDvrSessionsResponse) ProtoMessage() {} func (x *ListDvrSessionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[31] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2335,7 +2509,7 @@ func (x *ListDvrSessionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListDvrSessionsResponse.ProtoReflect.Descriptor instead. func (*ListDvrSessionsResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{31} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{33} } func (x *ListDvrSessionsResponse) GetDvrSessions() []*DvrSession { @@ -2372,7 +2546,7 @@ type GetDvrSessionRequest struct { func (x *GetDvrSessionRequest) Reset() { *x = GetDvrSessionRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[32] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2384,7 +2558,7 @@ func (x *GetDvrSessionRequest) String() string { func (*GetDvrSessionRequest) ProtoMessage() {} func (x *GetDvrSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[32] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2397,7 +2571,7 @@ func (x *GetDvrSessionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDvrSessionRequest.ProtoReflect.Descriptor instead. func (*GetDvrSessionRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{32} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{34} } func (x *GetDvrSessionRequest) GetName() string { @@ -2416,10 +2590,12 @@ type CreateDvrSessionRequest struct { // Required. The parent resource name, in the following form: // `projects/{project}/locations/{location}/channels/{channelId}`. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. Id of the requesting object in the following form: + // Required. The ID of the DVR session resource to be created. // - // 1. 1 character minimum, 63 characters maximum - // 2. Only contains letters, digits, underscores, and hyphens + // This value must be 1-63 characters, begin and end with a lower-case letter + // or a number, and consist of only lower-case letters, numbers, and hyphens. + // In other words, it must match the following regex: + // `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. DvrSessionId string `protobuf:"bytes,2,opt,name=dvr_session_id,json=dvrSessionId,proto3" json:"dvr_session_id,omitempty"` // Required. The resource being created DvrSession *DvrSession `protobuf:"bytes,3,opt,name=dvr_session,json=dvrSession,proto3" json:"dvr_session,omitempty"` @@ -2441,7 +2617,7 @@ type CreateDvrSessionRequest struct { func (x *CreateDvrSessionRequest) Reset() { *x = CreateDvrSessionRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[33] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2453,7 +2629,7 @@ func (x *CreateDvrSessionRequest) String() string { func (*CreateDvrSessionRequest) ProtoMessage() {} func (x *CreateDvrSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[33] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2466,7 +2642,7 @@ func (x *CreateDvrSessionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateDvrSessionRequest.ProtoReflect.Descriptor instead. func (*CreateDvrSessionRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{33} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{35} } func (x *CreateDvrSessionRequest) GetParent() string { @@ -2524,7 +2700,7 @@ type DeleteDvrSessionRequest struct { func (x *DeleteDvrSessionRequest) Reset() { *x = DeleteDvrSessionRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[34] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2536,7 +2712,7 @@ func (x *DeleteDvrSessionRequest) String() string { func (*DeleteDvrSessionRequest) ProtoMessage() {} func (x *DeleteDvrSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[34] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2549,7 +2725,7 @@ func (x *DeleteDvrSessionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteDvrSessionRequest.ProtoReflect.Descriptor instead. func (*DeleteDvrSessionRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{34} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{36} } func (x *DeleteDvrSessionRequest) GetName() string { @@ -2601,7 +2777,7 @@ type UpdateDvrSessionRequest struct { func (x *UpdateDvrSessionRequest) Reset() { *x = UpdateDvrSessionRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[35] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2613,7 +2789,7 @@ func (x *UpdateDvrSessionRequest) String() string { func (*UpdateDvrSessionRequest) ProtoMessage() {} func (x *UpdateDvrSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[35] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2626,7 +2802,7 @@ func (x *UpdateDvrSessionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateDvrSessionRequest.ProtoReflect.Descriptor instead. func (*UpdateDvrSessionRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{35} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{37} } func (x *UpdateDvrSessionRequest) GetUpdateMask() *fieldmaskpb.FieldMask { @@ -2677,7 +2853,7 @@ type OperationMetadata struct { func (x *OperationMetadata) Reset() { *x = OperationMetadata{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[36] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2689,7 +2865,7 @@ func (x *OperationMetadata) String() string { func (*OperationMetadata) ProtoMessage() {} func (x *OperationMetadata) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[36] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2702,7 +2878,7 @@ func (x *OperationMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMetadata.ProtoReflect.Descriptor instead. func (*OperationMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{36} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{38} } func (x *OperationMetadata) GetCreateTime() *timestamppb.Timestamp { @@ -2760,7 +2936,7 @@ type GetPoolRequest struct { func (x *GetPoolRequest) Reset() { *x = GetPoolRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[37] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2772,7 +2948,7 @@ func (x *GetPoolRequest) String() string { func (*GetPoolRequest) ProtoMessage() {} func (x *GetPoolRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[37] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2785,7 +2961,7 @@ func (x *GetPoolRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPoolRequest.ProtoReflect.Descriptor instead. func (*GetPoolRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{37} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{39} } func (x *GetPoolRequest) GetName() string { @@ -2829,7 +3005,7 @@ type UpdatePoolRequest struct { func (x *UpdatePoolRequest) Reset() { *x = UpdatePoolRequest{} - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[38] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2841,7 +3017,7 @@ func (x *UpdatePoolRequest) String() string { func (*UpdatePoolRequest) ProtoMessage() {} func (x *UpdatePoolRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[38] + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2854,7 +3030,7 @@ func (x *UpdatePoolRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePoolRequest.ProtoReflect.Descriptor instead. func (*UpdatePoolRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{38} + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{40} } func (x *UpdatePoolRequest) GetUpdateMask() *fieldmaskpb.FieldMask { @@ -2878,6 +3054,112 @@ func (x *UpdatePoolRequest) GetRequestId() string { return "" } +// Request message for "LivestreamService.PreviewInput" +type PreviewInputRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the input resource, in the form of: + // `projects/{project}/locations/{location}/inputs/{inputId}`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *PreviewInputRequest) Reset() { + *x = PreviewInputRequest{} + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PreviewInputRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PreviewInputRequest) ProtoMessage() {} + +func (x *PreviewInputRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PreviewInputRequest.ProtoReflect.Descriptor instead. +func (*PreviewInputRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{41} +} + +func (x *PreviewInputRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Response message for "LivestreamService.PreviewInput" +type PreviewInputResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // URI to display the preview content. + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + // A bearer token used to authenticate connections that display the preview + // content. The token expires after one hour. For HTTP connections, this token + // should be included as a bearer token inside the Authorization header. + BearerToken string `protobuf:"bytes,2,opt,name=bearer_token,json=bearerToken,proto3" json:"bearer_token,omitempty"` +} + +func (x *PreviewInputResponse) Reset() { + *x = PreviewInputResponse{} + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PreviewInputResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PreviewInputResponse) ProtoMessage() {} + +func (x *PreviewInputResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_video_livestream_v1_service_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PreviewInputResponse.ProtoReflect.Descriptor instead. +func (*PreviewInputResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP(), []int{42} +} + +func (x *PreviewInputResponse) GetUri() string { + if x != nil { + return x.Uri + } + return "" +} + +func (x *PreviewInputResponse) GetBearerToken() string { + if x != nil { + return x.BearerToken + } + return "" +} + var File_google_cloud_video_livestream_v1_service_proto protoreflect.FileDescriptor var file_google_cloud_video_livestream_v1_service_proto_rawDesc = []byte{ @@ -3033,696 +3315,774 @@ var file_google_cloud_video_livestream_v1_service_proto_rawDesc = []byte{ 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x49, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, - 0xfa, 0x41, 0x21, 0x12, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x05, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x12, 0x1e, 0x0a, 0x08, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x49, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, - 0xc3, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x12, 0x1f, 0x6c, - 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x26, 0x0a, - 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, - 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x4e, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, - 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, + 0x73, 0x74, 0x49, 0x64, 0x22, 0xb7, 0x01, 0x0a, 0x18, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x30, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x10, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x73, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, + 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xb6, + 0x01, 0x0a, 0x17, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, + 0x0a, 0x21, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x11, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x64, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2a, 0x0a, 0x0a, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x12, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, + 0x42, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, + 0x12, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, + 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, + 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3f, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, + 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, + 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, + 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x4e, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x12, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, - 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x42, 0x0a, - 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, - 0x22, 0xd8, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x12, - 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x08, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x11, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x12, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, - 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, - 0x79, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, - 0x62, 0x6c, 0x65, 0x22, 0x4e, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6c, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x12, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xb4, 0x01, 0x0a, + 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x12, 0x42, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x49, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x21, 0x12, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, + 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x1e, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xc3, + 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x12, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x42, 0x79, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, + 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x4e, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x70, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x12, 0x1e, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x63, - 0x6c, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, - 0x69, 0x70, 0x52, 0x05, 0x63, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, - 0x62, 0x6c, 0x65, 0x22, 0x4c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x12, - 0x1e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x69, 0x70, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x63, - 0x6c, 0x69, 0x70, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x04, 0x63, 0x6c, 0x69, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x04, 0x63, 0x6c, 0x69, 0x70, 0x12, 0x22, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x7b, 0x0a, 0x11, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0a, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xe1, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x12, 0x24, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, - 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xb4, 0x01, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0c, 0x64, 0x76, 0x72, 0x5f, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x21, 0x0a, 0x1f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, + 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x20, 0x12, 0x1e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x69, + 0x70, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, + 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6c, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, + 0x0a, 0x05, 0x63, 0x6c, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x76, 0x72, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, - 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, - 0x0a, 0x24, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x76, 0x72, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8a, 0x02, 0x0a, - 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, - 0x12, 0x24, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x76, 0x72, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x29, - 0x0a, 0x0e, 0x64, 0x76, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x64, 0x76, 0x72, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x0b, 0x64, 0x76, 0x72, - 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x0a, 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, - 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x17, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, - 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x49, 0x64, 0x22, 0xdb, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x76, - 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, - 0x6b, 0x12, 0x52, 0x0a, 0x0b, 0x64, 0x76, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x2e, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x05, 0x63, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, + 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x4c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x0a, 0x1e, + 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6c, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x20, 0x12, 0x1e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, + 0x69, 0x70, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x63, 0x6c, + 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x06, 0x63, 0x6c, 0x69, 0x70, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x04, 0x63, 0x6c, 0x69, 0x70, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x64, 0x76, 0x72, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, - 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, - 0x64, 0x22, 0xa9, 0x02, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x76, 0x65, 0x72, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x76, 0x65, 0x72, 0x62, 0x12, 0x3a, 0x0a, 0x16, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4c, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x11, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x3f, - 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x04, 0x63, 0x6c, 0x69, 0x70, 0x12, 0x22, 0x0a, 0x0a, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x7b, 0x0a, + 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, + 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, + 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xe1, 0x01, 0x0a, 0x16, 0x4c, + 0x69, 0x73, 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x12, 0x24, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, + 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xb4, + 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0c, 0x64, 0x76, + 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, + 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, + 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x76, 0x72, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, + 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x8a, 0x02, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x26, 0x12, 0x24, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, + 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x76, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, + 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x0b, + 0x64, 0x76, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, + 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x87, 0x01, 0x0a, + 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, + 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, + 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xdb, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x52, 0x0a, 0x0b, 0x64, 0x76, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x76, 0x72, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x64, 0x76, + 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, + 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x64, 0x22, 0xa9, 0x02, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x76, 0x65, 0x72, 0x62, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x76, 0x65, 0x72, 0x62, 0x12, 0x3a, + 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x70, + 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x4c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x26, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb0, + 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, + 0x6b, 0x12, 0x3f, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x6f, + 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x64, 0x22, 0x52, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, + 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4b, 0x0a, 0x14, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, + 0x21, 0x0a, 0x0c, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x32, 0xb8, 0x37, 0x0a, 0x11, 0x4c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xe0, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, + 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, + 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x78, 0xca, 0x41, 0x1c, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, + 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xda, 0x41, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x2c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x37, 0x3a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x2c, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0xbc, 0x01, 0x0a, 0x0c, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x6f, 0x6f, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, - 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x32, 0xe9, - 0x31, 0x0a, 0x11, 0x4c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0xe0, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, - 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x78, 0xca, - 0x41, 0x1c, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x11, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, - 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, - 0x3a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0xbc, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0xda, 0x41, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0xa9, 0x01, 0x0a, 0x0a, 0x47, + 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x3b, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd0, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, + 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, + 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x68, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x2a, 0x2c, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xe2, 0x01, 0x0a, 0x0d, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x36, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, + 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x7a, 0xca, 0x41, 0x1c, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xda, 0x41, 0x13, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x3a, + 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x32, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xda, + 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, + 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0xa9, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x3b, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, - 0x2a, 0x7d, 0x12, 0xd0, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, - 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x68, 0xca, 0x41, 0x2a, - 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x2a, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x74, 0xca, 0x41, 0x2d, 0x0a, 0x18, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x37, 0x3a, 0x01, 0x2a, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xe2, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7a, - 0xca, 0x41, 0x1c, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x11, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, - 0x41, 0x13, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x3a, 0x07, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x32, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xda, 0x01, 0x0a, 0x0c, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x35, 0x2e, 0x67, 0x6f, + 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0xd7, 0x01, 0x0a, 0x0b, + 0x53, 0x74, 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, - 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x74, 0xca, 0x41, 0x2d, 0x0a, 0x18, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, - 0x3a, 0x01, 0x2a, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, - 0x7d, 0x3a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0xd7, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0xca, 0x41, - 0x2d, 0x0a, 0x18, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, 0x6f, - 0x70, 0x12, 0xd2, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6e, 0xca, 0x41, 0x1a, 0x0a, 0x05, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x33, 0x3a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0xb4, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3b, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0xa1, 0x01, - 0x0a, 0x08, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x39, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x2f, 0x2a, - 0x7d, 0x12, 0xca, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x74, 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, + 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x73, 0xca, 0x41, 0x2d, 0x0a, 0x18, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, + 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x83, 0x02, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x66, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x2c, 0x2a, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd4, - 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x34, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x92, 0x01, 0xca, 0x41, 0x2d, 0x0a, 0x18, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x16, 0x6e, 0x61, 0x6d, 0x65, + 0x2c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, + 0x79, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x3a, 0x01, 0x2a, 0x22, 0x3e, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x64, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x80, 0x02, 0x0a, 0x10, + 0x53, 0x74, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x01, 0xca, 0x41, 0x2d, + 0x0a, 0x18, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x16, + 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x01, 0x2a, 0x22, + 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x74, + 0x6f, 0x70, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xd2, + 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x70, 0xca, 0x41, 0x1a, 0x0a, 0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, + 0x69, 0x6f, 0x6e, 0x22, 0x6e, 0xca, 0x41, 0x1a, 0x0a, 0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xda, 0x41, 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x3a, 0x05, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2e, - 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xca, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x22, 0x5c, 0xda, 0x41, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x35, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0xbf, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0xda, 0x41, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, - 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x44, 0xda, - 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x76, - 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2f, 0x2a, 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x44, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, - 0x2a, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x74, 0x61, 0xda, 0x41, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, + 0x3a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x12, 0xb4, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0xda, + 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xbb, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, - 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, - 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, - 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x63, 0x6c, 0x69, 0x70, 0x73, 0x12, 0xa8, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, - 0x70, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x70, 0x22, 0x43, 0xda, 0x41, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x69, 0x70, 0x73, 0x2f, 0x2a, 0x7d, - 0x12, 0xd6, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x70, 0x12, - 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, - 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x74, 0xca, 0x41, 0x19, 0x0a, 0x04, 0x43, 0x6c, 0x69, 0x70, 0x12, 0x11, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x6c, 0x69, 0x70, 0x2c, - 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x04, 0x63, - 0x6c, 0x69, 0x70, 0x22, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x70, 0x73, 0x12, 0xd2, 0x01, 0x0a, 0x0a, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x70, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0xca, 0x41, - 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x2a, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x69, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x84, - 0x02, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x76, 0x72, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, - 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x01, - 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, 0x76, 0x72, 0x5f, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x64, 0x76, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x0b, 0x64, 0x76, - 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x76, - 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, - 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, - 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc0, 0x01, 0x0a, 0x0d, - 0x47, 0x65, 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x22, 0x49, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, - 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xe4, - 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x76, 0x72, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, - 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x76, 0xca, - 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x2a, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x86, 0x02, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, + 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x08, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, - 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x44, 0x76, 0x72, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x17, 0x64, 0x76, 0x72, 0x5f, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x3a, 0x0b, 0x64, 0x76, 0x72, 0x5f, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x46, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x76, 0x72, - 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x22, 0x39, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, - 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd2, - 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x34, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xca, + 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x6e, 0xca, 0x41, 0x1a, 0x0a, 0x05, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, + 0x69, 0x6f, 0x6e, 0x22, 0x66, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xda, 0x41, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x2c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, - 0x3a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x73, 0x12, 0xca, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, - 0x73, 0x65, 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x2a, + 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd4, 0x01, 0x0a, 0x0b, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, + 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x70, 0xca, 0x41, 0x1a, 0x0a, 0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x11, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, + 0x41, 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x3a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x2f, + 0x2a, 0x7d, 0x12, 0xc3, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x73, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x66, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, + 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, + 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x65, 0x76, 0x69, 0x65, 0x77, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x44, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x37, 0x3a, 0x01, 0x2a, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0xca, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x5c, 0xda, 0x41, 0x15, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x2c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x35, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xbf, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x46, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, + 0x12, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x22, 0x44, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, + 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2c, 0x2a, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x44, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x37, 0x2a, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, + 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xbb, 0x01, 0x0a, 0x09, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x70, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6c, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x45, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, - 0x12, 0xa1, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x31, 0x2e, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x70, 0x73, 0x12, 0xa8, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x69, 0x70, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x70, 0x22, 0x43, + 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x69, 0x70, 0x73, + 0x2f, 0x2a, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, + 0x69, 0x70, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x74, 0xca, 0x41, 0x19, 0x0a, 0x04, 0x43, 0x6c, 0x69, + 0x70, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x6c, + 0x69, 0x70, 0x2c, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, + 0x3a, 0x04, 0x63, 0x6c, 0x69, 0x70, 0x22, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x70, 0x73, 0x12, 0xd2, 0x01, 0x0a, + 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x70, 0x12, 0x33, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, + 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x70, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x2a, 0x34, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x69, 0x70, 0x73, 0x2f, 0x2a, + 0x7d, 0x12, 0x84, 0x02, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, + 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x95, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, + 0x76, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x64, 0x76, 0x72, 0x5f, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, + 0x0b, 0x64, 0x76, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x76, 0x72, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, + 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x76, + 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x4b, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc0, + 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x76, 0x72, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x2f, 0x2a, 0x2f, 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x7d, 0x12, 0xe4, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, + 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x76, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, + 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x2a, 0x3a, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x86, 0x02, 0x0a, 0x10, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x44, + 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x17, 0x64, + 0x76, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x3a, 0x0b, 0x64, 0x76, + 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x46, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x64, 0x76, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x6e, 0x61, 0x6d, 0x65, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x2f, 0x2a, 0x2f, 0x64, 0x76, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x7d, 0x12, 0xd2, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6e, 0xca, 0x41, 0x1a, 0x0a, 0x05, 0x41, 0x73, 0x73, + 0x65, 0x74, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x2c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x33, 0x3a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0xca, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, + 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x66, 0xca, 0x41, 0x2a, + 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x2a, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, + 0x2f, 0x2a, 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x22, 0x39, 0xda, 0x41, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb4, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, - 0x65, 0x74, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, - 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, - 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x07, - 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6f, - 0x6c, 0x22, 0x38, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, - 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xcd, 0x01, 0x0a, 0x0a, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, + 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x22, 0x39, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb4, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, + 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x3b, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x9d, + 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, - 0xca, 0x41, 0x19, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x10, 0x70, - 0x6f, 0x6f, 0x6c, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x32, 0x2e, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x1a, 0x4d, 0xca, 0x41, 0x19, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, - 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xa1, 0x03, 0xea, 0x41, 0x64, - 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x7d, 0xea, 0x41, 0x4e, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x2c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x67, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x7b, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x7d, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x44, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, - 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x70, 0x62, 0x3b, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x70, - 0x62, 0xaa, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x5c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x5c, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x24, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x3a, 0x3a, - 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x38, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xcd, + 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x33, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, + 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x6b, 0xca, 0x41, 0x19, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x11, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, + 0x41, 0x10, 0x70, 0x6f, 0x6f, 0x6c, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x32, 0x2e, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x1a, 0x4d, + 0xca, 0x41, 0x19, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xa1, 0x03, + 0xea, 0x41, 0x64, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x36, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0xea, 0x41, 0x4e, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x2c, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x67, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x7b, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x7d, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0c, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x44, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x70, 0x62, 0x3b, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x5c, 0x4c, 0x69, 0x76, + 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x24, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x3a, 0x3a, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3737,7 +4097,7 @@ func file_google_cloud_video_livestream_v1_service_proto_rawDescGZIP() []byte { return file_google_cloud_video_livestream_v1_service_proto_rawDescData } -var file_google_cloud_video_livestream_v1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 39) +var file_google_cloud_video_livestream_v1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 43) var file_google_cloud_video_livestream_v1_service_proto_goTypes = []any{ (*CreateAssetRequest)(nil), // 0: google.cloud.video.livestream.v1.CreateAssetRequest (*DeleteAssetRequest)(nil), // 1: google.cloud.video.livestream.v1.DeleteAssetRequest @@ -3752,67 +4112,71 @@ var file_google_cloud_video_livestream_v1_service_proto_goTypes = []any{ (*UpdateChannelRequest)(nil), // 10: google.cloud.video.livestream.v1.UpdateChannelRequest (*StartChannelRequest)(nil), // 11: google.cloud.video.livestream.v1.StartChannelRequest (*StopChannelRequest)(nil), // 12: google.cloud.video.livestream.v1.StopChannelRequest - (*CreateInputRequest)(nil), // 13: google.cloud.video.livestream.v1.CreateInputRequest - (*ListInputsRequest)(nil), // 14: google.cloud.video.livestream.v1.ListInputsRequest - (*ListInputsResponse)(nil), // 15: google.cloud.video.livestream.v1.ListInputsResponse - (*GetInputRequest)(nil), // 16: google.cloud.video.livestream.v1.GetInputRequest - (*DeleteInputRequest)(nil), // 17: google.cloud.video.livestream.v1.DeleteInputRequest - (*UpdateInputRequest)(nil), // 18: google.cloud.video.livestream.v1.UpdateInputRequest - (*CreateEventRequest)(nil), // 19: google.cloud.video.livestream.v1.CreateEventRequest - (*ListEventsRequest)(nil), // 20: google.cloud.video.livestream.v1.ListEventsRequest - (*ListEventsResponse)(nil), // 21: google.cloud.video.livestream.v1.ListEventsResponse - (*GetEventRequest)(nil), // 22: google.cloud.video.livestream.v1.GetEventRequest - (*DeleteEventRequest)(nil), // 23: google.cloud.video.livestream.v1.DeleteEventRequest - (*ChannelOperationResponse)(nil), // 24: google.cloud.video.livestream.v1.ChannelOperationResponse - (*ListClipsRequest)(nil), // 25: google.cloud.video.livestream.v1.ListClipsRequest - (*ListClipsResponse)(nil), // 26: google.cloud.video.livestream.v1.ListClipsResponse - (*GetClipRequest)(nil), // 27: google.cloud.video.livestream.v1.GetClipRequest - (*CreateClipRequest)(nil), // 28: google.cloud.video.livestream.v1.CreateClipRequest - (*DeleteClipRequest)(nil), // 29: google.cloud.video.livestream.v1.DeleteClipRequest - (*ListDvrSessionsRequest)(nil), // 30: google.cloud.video.livestream.v1.ListDvrSessionsRequest - (*ListDvrSessionsResponse)(nil), // 31: google.cloud.video.livestream.v1.ListDvrSessionsResponse - (*GetDvrSessionRequest)(nil), // 32: google.cloud.video.livestream.v1.GetDvrSessionRequest - (*CreateDvrSessionRequest)(nil), // 33: google.cloud.video.livestream.v1.CreateDvrSessionRequest - (*DeleteDvrSessionRequest)(nil), // 34: google.cloud.video.livestream.v1.DeleteDvrSessionRequest - (*UpdateDvrSessionRequest)(nil), // 35: google.cloud.video.livestream.v1.UpdateDvrSessionRequest - (*OperationMetadata)(nil), // 36: google.cloud.video.livestream.v1.OperationMetadata - (*GetPoolRequest)(nil), // 37: google.cloud.video.livestream.v1.GetPoolRequest - (*UpdatePoolRequest)(nil), // 38: google.cloud.video.livestream.v1.UpdatePoolRequest - (*Asset)(nil), // 39: google.cloud.video.livestream.v1.Asset - (*Channel)(nil), // 40: google.cloud.video.livestream.v1.Channel - (*fieldmaskpb.FieldMask)(nil), // 41: google.protobuf.FieldMask - (*Input)(nil), // 42: google.cloud.video.livestream.v1.Input - (*Event)(nil), // 43: google.cloud.video.livestream.v1.Event - (*Clip)(nil), // 44: google.cloud.video.livestream.v1.Clip - (*DvrSession)(nil), // 45: google.cloud.video.livestream.v1.DvrSession - (*timestamppb.Timestamp)(nil), // 46: google.protobuf.Timestamp - (*Pool)(nil), // 47: google.cloud.video.livestream.v1.Pool - (*longrunningpb.Operation)(nil), // 48: google.longrunning.Operation - (*emptypb.Empty)(nil), // 49: google.protobuf.Empty + (*StartDistributionRequest)(nil), // 13: google.cloud.video.livestream.v1.StartDistributionRequest + (*StopDistributionRequest)(nil), // 14: google.cloud.video.livestream.v1.StopDistributionRequest + (*CreateInputRequest)(nil), // 15: google.cloud.video.livestream.v1.CreateInputRequest + (*ListInputsRequest)(nil), // 16: google.cloud.video.livestream.v1.ListInputsRequest + (*ListInputsResponse)(nil), // 17: google.cloud.video.livestream.v1.ListInputsResponse + (*GetInputRequest)(nil), // 18: google.cloud.video.livestream.v1.GetInputRequest + (*DeleteInputRequest)(nil), // 19: google.cloud.video.livestream.v1.DeleteInputRequest + (*UpdateInputRequest)(nil), // 20: google.cloud.video.livestream.v1.UpdateInputRequest + (*CreateEventRequest)(nil), // 21: google.cloud.video.livestream.v1.CreateEventRequest + (*ListEventsRequest)(nil), // 22: google.cloud.video.livestream.v1.ListEventsRequest + (*ListEventsResponse)(nil), // 23: google.cloud.video.livestream.v1.ListEventsResponse + (*GetEventRequest)(nil), // 24: google.cloud.video.livestream.v1.GetEventRequest + (*DeleteEventRequest)(nil), // 25: google.cloud.video.livestream.v1.DeleteEventRequest + (*ChannelOperationResponse)(nil), // 26: google.cloud.video.livestream.v1.ChannelOperationResponse + (*ListClipsRequest)(nil), // 27: google.cloud.video.livestream.v1.ListClipsRequest + (*ListClipsResponse)(nil), // 28: google.cloud.video.livestream.v1.ListClipsResponse + (*GetClipRequest)(nil), // 29: google.cloud.video.livestream.v1.GetClipRequest + (*CreateClipRequest)(nil), // 30: google.cloud.video.livestream.v1.CreateClipRequest + (*DeleteClipRequest)(nil), // 31: google.cloud.video.livestream.v1.DeleteClipRequest + (*ListDvrSessionsRequest)(nil), // 32: google.cloud.video.livestream.v1.ListDvrSessionsRequest + (*ListDvrSessionsResponse)(nil), // 33: google.cloud.video.livestream.v1.ListDvrSessionsResponse + (*GetDvrSessionRequest)(nil), // 34: google.cloud.video.livestream.v1.GetDvrSessionRequest + (*CreateDvrSessionRequest)(nil), // 35: google.cloud.video.livestream.v1.CreateDvrSessionRequest + (*DeleteDvrSessionRequest)(nil), // 36: google.cloud.video.livestream.v1.DeleteDvrSessionRequest + (*UpdateDvrSessionRequest)(nil), // 37: google.cloud.video.livestream.v1.UpdateDvrSessionRequest + (*OperationMetadata)(nil), // 38: google.cloud.video.livestream.v1.OperationMetadata + (*GetPoolRequest)(nil), // 39: google.cloud.video.livestream.v1.GetPoolRequest + (*UpdatePoolRequest)(nil), // 40: google.cloud.video.livestream.v1.UpdatePoolRequest + (*PreviewInputRequest)(nil), // 41: google.cloud.video.livestream.v1.PreviewInputRequest + (*PreviewInputResponse)(nil), // 42: google.cloud.video.livestream.v1.PreviewInputResponse + (*Asset)(nil), // 43: google.cloud.video.livestream.v1.Asset + (*Channel)(nil), // 44: google.cloud.video.livestream.v1.Channel + (*fieldmaskpb.FieldMask)(nil), // 45: google.protobuf.FieldMask + (*Input)(nil), // 46: google.cloud.video.livestream.v1.Input + (*Event)(nil), // 47: google.cloud.video.livestream.v1.Event + (*Clip)(nil), // 48: google.cloud.video.livestream.v1.Clip + (*DvrSession)(nil), // 49: google.cloud.video.livestream.v1.DvrSession + (*timestamppb.Timestamp)(nil), // 50: google.protobuf.Timestamp + (*Pool)(nil), // 51: google.cloud.video.livestream.v1.Pool + (*longrunningpb.Operation)(nil), // 52: google.longrunning.Operation + (*emptypb.Empty)(nil), // 53: google.protobuf.Empty } var file_google_cloud_video_livestream_v1_service_proto_depIdxs = []int32{ - 39, // 0: google.cloud.video.livestream.v1.CreateAssetRequest.asset:type_name -> google.cloud.video.livestream.v1.Asset - 39, // 1: google.cloud.video.livestream.v1.ListAssetsResponse.assets:type_name -> google.cloud.video.livestream.v1.Asset - 40, // 2: google.cloud.video.livestream.v1.CreateChannelRequest.channel:type_name -> google.cloud.video.livestream.v1.Channel - 40, // 3: google.cloud.video.livestream.v1.ListChannelsResponse.channels:type_name -> google.cloud.video.livestream.v1.Channel - 41, // 4: google.cloud.video.livestream.v1.UpdateChannelRequest.update_mask:type_name -> google.protobuf.FieldMask - 40, // 5: google.cloud.video.livestream.v1.UpdateChannelRequest.channel:type_name -> google.cloud.video.livestream.v1.Channel - 42, // 6: google.cloud.video.livestream.v1.CreateInputRequest.input:type_name -> google.cloud.video.livestream.v1.Input - 42, // 7: google.cloud.video.livestream.v1.ListInputsResponse.inputs:type_name -> google.cloud.video.livestream.v1.Input - 41, // 8: google.cloud.video.livestream.v1.UpdateInputRequest.update_mask:type_name -> google.protobuf.FieldMask - 42, // 9: google.cloud.video.livestream.v1.UpdateInputRequest.input:type_name -> google.cloud.video.livestream.v1.Input - 43, // 10: google.cloud.video.livestream.v1.CreateEventRequest.event:type_name -> google.cloud.video.livestream.v1.Event - 43, // 11: google.cloud.video.livestream.v1.ListEventsResponse.events:type_name -> google.cloud.video.livestream.v1.Event - 44, // 12: google.cloud.video.livestream.v1.ListClipsResponse.clips:type_name -> google.cloud.video.livestream.v1.Clip - 44, // 13: google.cloud.video.livestream.v1.CreateClipRequest.clip:type_name -> google.cloud.video.livestream.v1.Clip - 45, // 14: google.cloud.video.livestream.v1.ListDvrSessionsResponse.dvr_sessions:type_name -> google.cloud.video.livestream.v1.DvrSession - 45, // 15: google.cloud.video.livestream.v1.CreateDvrSessionRequest.dvr_session:type_name -> google.cloud.video.livestream.v1.DvrSession - 41, // 16: google.cloud.video.livestream.v1.UpdateDvrSessionRequest.update_mask:type_name -> google.protobuf.FieldMask - 45, // 17: google.cloud.video.livestream.v1.UpdateDvrSessionRequest.dvr_session:type_name -> google.cloud.video.livestream.v1.DvrSession - 46, // 18: google.cloud.video.livestream.v1.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp - 46, // 19: google.cloud.video.livestream.v1.OperationMetadata.end_time:type_name -> google.protobuf.Timestamp - 41, // 20: google.cloud.video.livestream.v1.UpdatePoolRequest.update_mask:type_name -> google.protobuf.FieldMask - 47, // 21: google.cloud.video.livestream.v1.UpdatePoolRequest.pool:type_name -> google.cloud.video.livestream.v1.Pool + 43, // 0: google.cloud.video.livestream.v1.CreateAssetRequest.asset:type_name -> google.cloud.video.livestream.v1.Asset + 43, // 1: google.cloud.video.livestream.v1.ListAssetsResponse.assets:type_name -> google.cloud.video.livestream.v1.Asset + 44, // 2: google.cloud.video.livestream.v1.CreateChannelRequest.channel:type_name -> google.cloud.video.livestream.v1.Channel + 44, // 3: google.cloud.video.livestream.v1.ListChannelsResponse.channels:type_name -> google.cloud.video.livestream.v1.Channel + 45, // 4: google.cloud.video.livestream.v1.UpdateChannelRequest.update_mask:type_name -> google.protobuf.FieldMask + 44, // 5: google.cloud.video.livestream.v1.UpdateChannelRequest.channel:type_name -> google.cloud.video.livestream.v1.Channel + 46, // 6: google.cloud.video.livestream.v1.CreateInputRequest.input:type_name -> google.cloud.video.livestream.v1.Input + 46, // 7: google.cloud.video.livestream.v1.ListInputsResponse.inputs:type_name -> google.cloud.video.livestream.v1.Input + 45, // 8: google.cloud.video.livestream.v1.UpdateInputRequest.update_mask:type_name -> google.protobuf.FieldMask + 46, // 9: google.cloud.video.livestream.v1.UpdateInputRequest.input:type_name -> google.cloud.video.livestream.v1.Input + 47, // 10: google.cloud.video.livestream.v1.CreateEventRequest.event:type_name -> google.cloud.video.livestream.v1.Event + 47, // 11: google.cloud.video.livestream.v1.ListEventsResponse.events:type_name -> google.cloud.video.livestream.v1.Event + 48, // 12: google.cloud.video.livestream.v1.ListClipsResponse.clips:type_name -> google.cloud.video.livestream.v1.Clip + 48, // 13: google.cloud.video.livestream.v1.CreateClipRequest.clip:type_name -> google.cloud.video.livestream.v1.Clip + 49, // 14: google.cloud.video.livestream.v1.ListDvrSessionsResponse.dvr_sessions:type_name -> google.cloud.video.livestream.v1.DvrSession + 49, // 15: google.cloud.video.livestream.v1.CreateDvrSessionRequest.dvr_session:type_name -> google.cloud.video.livestream.v1.DvrSession + 45, // 16: google.cloud.video.livestream.v1.UpdateDvrSessionRequest.update_mask:type_name -> google.protobuf.FieldMask + 49, // 17: google.cloud.video.livestream.v1.UpdateDvrSessionRequest.dvr_session:type_name -> google.cloud.video.livestream.v1.DvrSession + 50, // 18: google.cloud.video.livestream.v1.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp + 50, // 19: google.cloud.video.livestream.v1.OperationMetadata.end_time:type_name -> google.protobuf.Timestamp + 45, // 20: google.cloud.video.livestream.v1.UpdatePoolRequest.update_mask:type_name -> google.protobuf.FieldMask + 51, // 21: google.cloud.video.livestream.v1.UpdatePoolRequest.pool:type_name -> google.cloud.video.livestream.v1.Pool 5, // 22: google.cloud.video.livestream.v1.LivestreamService.CreateChannel:input_type -> google.cloud.video.livestream.v1.CreateChannelRequest 6, // 23: google.cloud.video.livestream.v1.LivestreamService.ListChannels:input_type -> google.cloud.video.livestream.v1.ListChannelsRequest 8, // 24: google.cloud.video.livestream.v1.LivestreamService.GetChannel:input_type -> google.cloud.video.livestream.v1.GetChannelRequest @@ -3820,63 +4184,69 @@ var file_google_cloud_video_livestream_v1_service_proto_depIdxs = []int32{ 10, // 26: google.cloud.video.livestream.v1.LivestreamService.UpdateChannel:input_type -> google.cloud.video.livestream.v1.UpdateChannelRequest 11, // 27: google.cloud.video.livestream.v1.LivestreamService.StartChannel:input_type -> google.cloud.video.livestream.v1.StartChannelRequest 12, // 28: google.cloud.video.livestream.v1.LivestreamService.StopChannel:input_type -> google.cloud.video.livestream.v1.StopChannelRequest - 13, // 29: google.cloud.video.livestream.v1.LivestreamService.CreateInput:input_type -> google.cloud.video.livestream.v1.CreateInputRequest - 14, // 30: google.cloud.video.livestream.v1.LivestreamService.ListInputs:input_type -> google.cloud.video.livestream.v1.ListInputsRequest - 16, // 31: google.cloud.video.livestream.v1.LivestreamService.GetInput:input_type -> google.cloud.video.livestream.v1.GetInputRequest - 17, // 32: google.cloud.video.livestream.v1.LivestreamService.DeleteInput:input_type -> google.cloud.video.livestream.v1.DeleteInputRequest - 18, // 33: google.cloud.video.livestream.v1.LivestreamService.UpdateInput:input_type -> google.cloud.video.livestream.v1.UpdateInputRequest - 19, // 34: google.cloud.video.livestream.v1.LivestreamService.CreateEvent:input_type -> google.cloud.video.livestream.v1.CreateEventRequest - 20, // 35: google.cloud.video.livestream.v1.LivestreamService.ListEvents:input_type -> google.cloud.video.livestream.v1.ListEventsRequest - 22, // 36: google.cloud.video.livestream.v1.LivestreamService.GetEvent:input_type -> google.cloud.video.livestream.v1.GetEventRequest - 23, // 37: google.cloud.video.livestream.v1.LivestreamService.DeleteEvent:input_type -> google.cloud.video.livestream.v1.DeleteEventRequest - 25, // 38: google.cloud.video.livestream.v1.LivestreamService.ListClips:input_type -> google.cloud.video.livestream.v1.ListClipsRequest - 27, // 39: google.cloud.video.livestream.v1.LivestreamService.GetClip:input_type -> google.cloud.video.livestream.v1.GetClipRequest - 28, // 40: google.cloud.video.livestream.v1.LivestreamService.CreateClip:input_type -> google.cloud.video.livestream.v1.CreateClipRequest - 29, // 41: google.cloud.video.livestream.v1.LivestreamService.DeleteClip:input_type -> google.cloud.video.livestream.v1.DeleteClipRequest - 33, // 42: google.cloud.video.livestream.v1.LivestreamService.CreateDvrSession:input_type -> google.cloud.video.livestream.v1.CreateDvrSessionRequest - 30, // 43: google.cloud.video.livestream.v1.LivestreamService.ListDvrSessions:input_type -> google.cloud.video.livestream.v1.ListDvrSessionsRequest - 32, // 44: google.cloud.video.livestream.v1.LivestreamService.GetDvrSession:input_type -> google.cloud.video.livestream.v1.GetDvrSessionRequest - 34, // 45: google.cloud.video.livestream.v1.LivestreamService.DeleteDvrSession:input_type -> google.cloud.video.livestream.v1.DeleteDvrSessionRequest - 35, // 46: google.cloud.video.livestream.v1.LivestreamService.UpdateDvrSession:input_type -> google.cloud.video.livestream.v1.UpdateDvrSessionRequest - 0, // 47: google.cloud.video.livestream.v1.LivestreamService.CreateAsset:input_type -> google.cloud.video.livestream.v1.CreateAssetRequest - 1, // 48: google.cloud.video.livestream.v1.LivestreamService.DeleteAsset:input_type -> google.cloud.video.livestream.v1.DeleteAssetRequest - 4, // 49: google.cloud.video.livestream.v1.LivestreamService.GetAsset:input_type -> google.cloud.video.livestream.v1.GetAssetRequest - 2, // 50: google.cloud.video.livestream.v1.LivestreamService.ListAssets:input_type -> google.cloud.video.livestream.v1.ListAssetsRequest - 37, // 51: google.cloud.video.livestream.v1.LivestreamService.GetPool:input_type -> google.cloud.video.livestream.v1.GetPoolRequest - 38, // 52: google.cloud.video.livestream.v1.LivestreamService.UpdatePool:input_type -> google.cloud.video.livestream.v1.UpdatePoolRequest - 48, // 53: google.cloud.video.livestream.v1.LivestreamService.CreateChannel:output_type -> google.longrunning.Operation - 7, // 54: google.cloud.video.livestream.v1.LivestreamService.ListChannels:output_type -> google.cloud.video.livestream.v1.ListChannelsResponse - 40, // 55: google.cloud.video.livestream.v1.LivestreamService.GetChannel:output_type -> google.cloud.video.livestream.v1.Channel - 48, // 56: google.cloud.video.livestream.v1.LivestreamService.DeleteChannel:output_type -> google.longrunning.Operation - 48, // 57: google.cloud.video.livestream.v1.LivestreamService.UpdateChannel:output_type -> google.longrunning.Operation - 48, // 58: google.cloud.video.livestream.v1.LivestreamService.StartChannel:output_type -> google.longrunning.Operation - 48, // 59: google.cloud.video.livestream.v1.LivestreamService.StopChannel:output_type -> google.longrunning.Operation - 48, // 60: google.cloud.video.livestream.v1.LivestreamService.CreateInput:output_type -> google.longrunning.Operation - 15, // 61: google.cloud.video.livestream.v1.LivestreamService.ListInputs:output_type -> google.cloud.video.livestream.v1.ListInputsResponse - 42, // 62: google.cloud.video.livestream.v1.LivestreamService.GetInput:output_type -> google.cloud.video.livestream.v1.Input - 48, // 63: google.cloud.video.livestream.v1.LivestreamService.DeleteInput:output_type -> google.longrunning.Operation - 48, // 64: google.cloud.video.livestream.v1.LivestreamService.UpdateInput:output_type -> google.longrunning.Operation - 43, // 65: google.cloud.video.livestream.v1.LivestreamService.CreateEvent:output_type -> google.cloud.video.livestream.v1.Event - 21, // 66: google.cloud.video.livestream.v1.LivestreamService.ListEvents:output_type -> google.cloud.video.livestream.v1.ListEventsResponse - 43, // 67: google.cloud.video.livestream.v1.LivestreamService.GetEvent:output_type -> google.cloud.video.livestream.v1.Event - 49, // 68: google.cloud.video.livestream.v1.LivestreamService.DeleteEvent:output_type -> google.protobuf.Empty - 26, // 69: google.cloud.video.livestream.v1.LivestreamService.ListClips:output_type -> google.cloud.video.livestream.v1.ListClipsResponse - 44, // 70: google.cloud.video.livestream.v1.LivestreamService.GetClip:output_type -> google.cloud.video.livestream.v1.Clip - 48, // 71: google.cloud.video.livestream.v1.LivestreamService.CreateClip:output_type -> google.longrunning.Operation - 48, // 72: google.cloud.video.livestream.v1.LivestreamService.DeleteClip:output_type -> google.longrunning.Operation - 48, // 73: google.cloud.video.livestream.v1.LivestreamService.CreateDvrSession:output_type -> google.longrunning.Operation - 31, // 74: google.cloud.video.livestream.v1.LivestreamService.ListDvrSessions:output_type -> google.cloud.video.livestream.v1.ListDvrSessionsResponse - 45, // 75: google.cloud.video.livestream.v1.LivestreamService.GetDvrSession:output_type -> google.cloud.video.livestream.v1.DvrSession - 48, // 76: google.cloud.video.livestream.v1.LivestreamService.DeleteDvrSession:output_type -> google.longrunning.Operation - 48, // 77: google.cloud.video.livestream.v1.LivestreamService.UpdateDvrSession:output_type -> google.longrunning.Operation - 48, // 78: google.cloud.video.livestream.v1.LivestreamService.CreateAsset:output_type -> google.longrunning.Operation - 48, // 79: google.cloud.video.livestream.v1.LivestreamService.DeleteAsset:output_type -> google.longrunning.Operation - 39, // 80: google.cloud.video.livestream.v1.LivestreamService.GetAsset:output_type -> google.cloud.video.livestream.v1.Asset - 3, // 81: google.cloud.video.livestream.v1.LivestreamService.ListAssets:output_type -> google.cloud.video.livestream.v1.ListAssetsResponse - 47, // 82: google.cloud.video.livestream.v1.LivestreamService.GetPool:output_type -> google.cloud.video.livestream.v1.Pool - 48, // 83: google.cloud.video.livestream.v1.LivestreamService.UpdatePool:output_type -> google.longrunning.Operation - 53, // [53:84] is the sub-list for method output_type - 22, // [22:53] is the sub-list for method input_type + 13, // 29: google.cloud.video.livestream.v1.LivestreamService.StartDistribution:input_type -> google.cloud.video.livestream.v1.StartDistributionRequest + 14, // 30: google.cloud.video.livestream.v1.LivestreamService.StopDistribution:input_type -> google.cloud.video.livestream.v1.StopDistributionRequest + 15, // 31: google.cloud.video.livestream.v1.LivestreamService.CreateInput:input_type -> google.cloud.video.livestream.v1.CreateInputRequest + 16, // 32: google.cloud.video.livestream.v1.LivestreamService.ListInputs:input_type -> google.cloud.video.livestream.v1.ListInputsRequest + 18, // 33: google.cloud.video.livestream.v1.LivestreamService.GetInput:input_type -> google.cloud.video.livestream.v1.GetInputRequest + 19, // 34: google.cloud.video.livestream.v1.LivestreamService.DeleteInput:input_type -> google.cloud.video.livestream.v1.DeleteInputRequest + 20, // 35: google.cloud.video.livestream.v1.LivestreamService.UpdateInput:input_type -> google.cloud.video.livestream.v1.UpdateInputRequest + 41, // 36: google.cloud.video.livestream.v1.LivestreamService.PreviewInput:input_type -> google.cloud.video.livestream.v1.PreviewInputRequest + 21, // 37: google.cloud.video.livestream.v1.LivestreamService.CreateEvent:input_type -> google.cloud.video.livestream.v1.CreateEventRequest + 22, // 38: google.cloud.video.livestream.v1.LivestreamService.ListEvents:input_type -> google.cloud.video.livestream.v1.ListEventsRequest + 24, // 39: google.cloud.video.livestream.v1.LivestreamService.GetEvent:input_type -> google.cloud.video.livestream.v1.GetEventRequest + 25, // 40: google.cloud.video.livestream.v1.LivestreamService.DeleteEvent:input_type -> google.cloud.video.livestream.v1.DeleteEventRequest + 27, // 41: google.cloud.video.livestream.v1.LivestreamService.ListClips:input_type -> google.cloud.video.livestream.v1.ListClipsRequest + 29, // 42: google.cloud.video.livestream.v1.LivestreamService.GetClip:input_type -> google.cloud.video.livestream.v1.GetClipRequest + 30, // 43: google.cloud.video.livestream.v1.LivestreamService.CreateClip:input_type -> google.cloud.video.livestream.v1.CreateClipRequest + 31, // 44: google.cloud.video.livestream.v1.LivestreamService.DeleteClip:input_type -> google.cloud.video.livestream.v1.DeleteClipRequest + 35, // 45: google.cloud.video.livestream.v1.LivestreamService.CreateDvrSession:input_type -> google.cloud.video.livestream.v1.CreateDvrSessionRequest + 32, // 46: google.cloud.video.livestream.v1.LivestreamService.ListDvrSessions:input_type -> google.cloud.video.livestream.v1.ListDvrSessionsRequest + 34, // 47: google.cloud.video.livestream.v1.LivestreamService.GetDvrSession:input_type -> google.cloud.video.livestream.v1.GetDvrSessionRequest + 36, // 48: google.cloud.video.livestream.v1.LivestreamService.DeleteDvrSession:input_type -> google.cloud.video.livestream.v1.DeleteDvrSessionRequest + 37, // 49: google.cloud.video.livestream.v1.LivestreamService.UpdateDvrSession:input_type -> google.cloud.video.livestream.v1.UpdateDvrSessionRequest + 0, // 50: google.cloud.video.livestream.v1.LivestreamService.CreateAsset:input_type -> google.cloud.video.livestream.v1.CreateAssetRequest + 1, // 51: google.cloud.video.livestream.v1.LivestreamService.DeleteAsset:input_type -> google.cloud.video.livestream.v1.DeleteAssetRequest + 4, // 52: google.cloud.video.livestream.v1.LivestreamService.GetAsset:input_type -> google.cloud.video.livestream.v1.GetAssetRequest + 2, // 53: google.cloud.video.livestream.v1.LivestreamService.ListAssets:input_type -> google.cloud.video.livestream.v1.ListAssetsRequest + 39, // 54: google.cloud.video.livestream.v1.LivestreamService.GetPool:input_type -> google.cloud.video.livestream.v1.GetPoolRequest + 40, // 55: google.cloud.video.livestream.v1.LivestreamService.UpdatePool:input_type -> google.cloud.video.livestream.v1.UpdatePoolRequest + 52, // 56: google.cloud.video.livestream.v1.LivestreamService.CreateChannel:output_type -> google.longrunning.Operation + 7, // 57: google.cloud.video.livestream.v1.LivestreamService.ListChannels:output_type -> google.cloud.video.livestream.v1.ListChannelsResponse + 44, // 58: google.cloud.video.livestream.v1.LivestreamService.GetChannel:output_type -> google.cloud.video.livestream.v1.Channel + 52, // 59: google.cloud.video.livestream.v1.LivestreamService.DeleteChannel:output_type -> google.longrunning.Operation + 52, // 60: google.cloud.video.livestream.v1.LivestreamService.UpdateChannel:output_type -> google.longrunning.Operation + 52, // 61: google.cloud.video.livestream.v1.LivestreamService.StartChannel:output_type -> google.longrunning.Operation + 52, // 62: google.cloud.video.livestream.v1.LivestreamService.StopChannel:output_type -> google.longrunning.Operation + 52, // 63: google.cloud.video.livestream.v1.LivestreamService.StartDistribution:output_type -> google.longrunning.Operation + 52, // 64: google.cloud.video.livestream.v1.LivestreamService.StopDistribution:output_type -> google.longrunning.Operation + 52, // 65: google.cloud.video.livestream.v1.LivestreamService.CreateInput:output_type -> google.longrunning.Operation + 17, // 66: google.cloud.video.livestream.v1.LivestreamService.ListInputs:output_type -> google.cloud.video.livestream.v1.ListInputsResponse + 46, // 67: google.cloud.video.livestream.v1.LivestreamService.GetInput:output_type -> google.cloud.video.livestream.v1.Input + 52, // 68: google.cloud.video.livestream.v1.LivestreamService.DeleteInput:output_type -> google.longrunning.Operation + 52, // 69: google.cloud.video.livestream.v1.LivestreamService.UpdateInput:output_type -> google.longrunning.Operation + 42, // 70: google.cloud.video.livestream.v1.LivestreamService.PreviewInput:output_type -> google.cloud.video.livestream.v1.PreviewInputResponse + 47, // 71: google.cloud.video.livestream.v1.LivestreamService.CreateEvent:output_type -> google.cloud.video.livestream.v1.Event + 23, // 72: google.cloud.video.livestream.v1.LivestreamService.ListEvents:output_type -> google.cloud.video.livestream.v1.ListEventsResponse + 47, // 73: google.cloud.video.livestream.v1.LivestreamService.GetEvent:output_type -> google.cloud.video.livestream.v1.Event + 53, // 74: google.cloud.video.livestream.v1.LivestreamService.DeleteEvent:output_type -> google.protobuf.Empty + 28, // 75: google.cloud.video.livestream.v1.LivestreamService.ListClips:output_type -> google.cloud.video.livestream.v1.ListClipsResponse + 48, // 76: google.cloud.video.livestream.v1.LivestreamService.GetClip:output_type -> google.cloud.video.livestream.v1.Clip + 52, // 77: google.cloud.video.livestream.v1.LivestreamService.CreateClip:output_type -> google.longrunning.Operation + 52, // 78: google.cloud.video.livestream.v1.LivestreamService.DeleteClip:output_type -> google.longrunning.Operation + 52, // 79: google.cloud.video.livestream.v1.LivestreamService.CreateDvrSession:output_type -> google.longrunning.Operation + 33, // 80: google.cloud.video.livestream.v1.LivestreamService.ListDvrSessions:output_type -> google.cloud.video.livestream.v1.ListDvrSessionsResponse + 49, // 81: google.cloud.video.livestream.v1.LivestreamService.GetDvrSession:output_type -> google.cloud.video.livestream.v1.DvrSession + 52, // 82: google.cloud.video.livestream.v1.LivestreamService.DeleteDvrSession:output_type -> google.longrunning.Operation + 52, // 83: google.cloud.video.livestream.v1.LivestreamService.UpdateDvrSession:output_type -> google.longrunning.Operation + 52, // 84: google.cloud.video.livestream.v1.LivestreamService.CreateAsset:output_type -> google.longrunning.Operation + 52, // 85: google.cloud.video.livestream.v1.LivestreamService.DeleteAsset:output_type -> google.longrunning.Operation + 43, // 86: google.cloud.video.livestream.v1.LivestreamService.GetAsset:output_type -> google.cloud.video.livestream.v1.Asset + 3, // 87: google.cloud.video.livestream.v1.LivestreamService.ListAssets:output_type -> google.cloud.video.livestream.v1.ListAssetsResponse + 51, // 88: google.cloud.video.livestream.v1.LivestreamService.GetPool:output_type -> google.cloud.video.livestream.v1.Pool + 52, // 89: google.cloud.video.livestream.v1.LivestreamService.UpdatePool:output_type -> google.longrunning.Operation + 56, // [56:90] is the sub-list for method output_type + 22, // [22:56] is the sub-list for method input_type 22, // [22:22] is the sub-list for extension type_name 22, // [22:22] is the sub-list for extension extendee 0, // [0:22] is the sub-list for field type_name @@ -3894,7 +4264,7 @@ func file_google_cloud_video_livestream_v1_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_video_livestream_v1_service_proto_rawDesc, NumEnums: 0, - NumMessages: 39, + NumMessages: 43, NumExtensions: 0, NumServices: 1, }, @@ -3937,6 +4307,11 @@ type LivestreamServiceClient interface { // Stops the specified channel. Part of the video pipeline will be released // when the StopChannel request is received by the server. StopChannel(ctx context.Context, in *StopChannelRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Starts distribution which delivers outputs to the destination indicated by + // the Distribution configuration. + StartDistribution(ctx context.Context, in *StartDistributionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Stops the specified distribution. + StopDistribution(ctx context.Context, in *StopDistributionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Creates an input with the provided unique ID in the specified region. CreateInput(ctx context.Context, in *CreateInputRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Returns a list of all inputs in the specified region. @@ -3947,6 +4322,8 @@ type LivestreamServiceClient interface { DeleteInput(ctx context.Context, in *DeleteInputRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Updates the specified input. UpdateInput(ctx context.Context, in *UpdateInputRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Preview the streaming content of the specified input. + PreviewInput(ctx context.Context, in *PreviewInputRequest, opts ...grpc.CallOption) (*PreviewInputResponse, error) // Creates an event with the provided unique ID in the specified channel. CreateEvent(ctx context.Context, in *CreateEventRequest, opts ...grpc.CallOption) (*Event, error) // Returns a list of all events in the specified channel. @@ -4060,6 +4437,24 @@ func (c *livestreamServiceClient) StopChannel(ctx context.Context, in *StopChann return out, nil } +func (c *livestreamServiceClient) StartDistribution(ctx context.Context, in *StartDistributionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.video.livestream.v1.LivestreamService/StartDistribution", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *livestreamServiceClient) StopDistribution(ctx context.Context, in *StopDistributionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.video.livestream.v1.LivestreamService/StopDistribution", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *livestreamServiceClient) CreateInput(ctx context.Context, in *CreateInputRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.cloud.video.livestream.v1.LivestreamService/CreateInput", in, out, opts...) @@ -4105,6 +4500,15 @@ func (c *livestreamServiceClient) UpdateInput(ctx context.Context, in *UpdateInp return out, nil } +func (c *livestreamServiceClient) PreviewInput(ctx context.Context, in *PreviewInputRequest, opts ...grpc.CallOption) (*PreviewInputResponse, error) { + out := new(PreviewInputResponse) + err := c.cc.Invoke(ctx, "/google.cloud.video.livestream.v1.LivestreamService/PreviewInput", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *livestreamServiceClient) CreateEvent(ctx context.Context, in *CreateEventRequest, opts ...grpc.CallOption) (*Event, error) { out := new(Event) err := c.cc.Invoke(ctx, "/google.cloud.video.livestream.v1.LivestreamService/CreateEvent", in, out, opts...) @@ -4295,6 +4699,11 @@ type LivestreamServiceServer interface { // Stops the specified channel. Part of the video pipeline will be released // when the StopChannel request is received by the server. StopChannel(context.Context, *StopChannelRequest) (*longrunningpb.Operation, error) + // Starts distribution which delivers outputs to the destination indicated by + // the Distribution configuration. + StartDistribution(context.Context, *StartDistributionRequest) (*longrunningpb.Operation, error) + // Stops the specified distribution. + StopDistribution(context.Context, *StopDistributionRequest) (*longrunningpb.Operation, error) // Creates an input with the provided unique ID in the specified region. CreateInput(context.Context, *CreateInputRequest) (*longrunningpb.Operation, error) // Returns a list of all inputs in the specified region. @@ -4305,6 +4714,8 @@ type LivestreamServiceServer interface { DeleteInput(context.Context, *DeleteInputRequest) (*longrunningpb.Operation, error) // Updates the specified input. UpdateInput(context.Context, *UpdateInputRequest) (*longrunningpb.Operation, error) + // Preview the streaming content of the specified input. + PreviewInput(context.Context, *PreviewInputRequest) (*PreviewInputResponse, error) // Creates an event with the provided unique ID in the specified channel. CreateEvent(context.Context, *CreateEventRequest) (*Event, error) // Returns a list of all events in the specified channel. @@ -4372,6 +4783,12 @@ func (*UnimplementedLivestreamServiceServer) StartChannel(context.Context, *Star func (*UnimplementedLivestreamServiceServer) StopChannel(context.Context, *StopChannelRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method StopChannel not implemented") } +func (*UnimplementedLivestreamServiceServer) StartDistribution(context.Context, *StartDistributionRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method StartDistribution not implemented") +} +func (*UnimplementedLivestreamServiceServer) StopDistribution(context.Context, *StopDistributionRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method StopDistribution not implemented") +} func (*UnimplementedLivestreamServiceServer) CreateInput(context.Context, *CreateInputRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateInput not implemented") } @@ -4387,6 +4804,9 @@ func (*UnimplementedLivestreamServiceServer) DeleteInput(context.Context, *Delet func (*UnimplementedLivestreamServiceServer) UpdateInput(context.Context, *UpdateInputRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateInput not implemented") } +func (*UnimplementedLivestreamServiceServer) PreviewInput(context.Context, *PreviewInputRequest) (*PreviewInputResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PreviewInput not implemented") +} func (*UnimplementedLivestreamServiceServer) CreateEvent(context.Context, *CreateEventRequest) (*Event, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateEvent not implemented") } @@ -4575,6 +4995,42 @@ func _LivestreamService_StopChannel_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _LivestreamService_StartDistribution_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StartDistributionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LivestreamServiceServer).StartDistribution(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.video.livestream.v1.LivestreamService/StartDistribution", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LivestreamServiceServer).StartDistribution(ctx, req.(*StartDistributionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _LivestreamService_StopDistribution_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StopDistributionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LivestreamServiceServer).StopDistribution(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.video.livestream.v1.LivestreamService/StopDistribution", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LivestreamServiceServer).StopDistribution(ctx, req.(*StopDistributionRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _LivestreamService_CreateInput_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateInputRequest) if err := dec(in); err != nil { @@ -4665,6 +5121,24 @@ func _LivestreamService_UpdateInput_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _LivestreamService_PreviewInput_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PreviewInputRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LivestreamServiceServer).PreviewInput(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.video.livestream.v1.LivestreamService/PreviewInput", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LivestreamServiceServer).PreviewInput(ctx, req.(*PreviewInputRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _LivestreamService_CreateEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateEventRequest) if err := dec(in); err != nil { @@ -5039,6 +5513,14 @@ var _LivestreamService_serviceDesc = grpc.ServiceDesc{ MethodName: "StopChannel", Handler: _LivestreamService_StopChannel_Handler, }, + { + MethodName: "StartDistribution", + Handler: _LivestreamService_StartDistribution_Handler, + }, + { + MethodName: "StopDistribution", + Handler: _LivestreamService_StopDistribution_Handler, + }, { MethodName: "CreateInput", Handler: _LivestreamService_CreateInput_Handler, @@ -5059,6 +5541,10 @@ var _LivestreamService_serviceDesc = grpc.ServiceDesc{ MethodName: "UpdateInput", Handler: _LivestreamService_UpdateInput_Handler, }, + { + MethodName: "PreviewInput", + Handler: _LivestreamService_PreviewInput_Handler, + }, { MethodName: "CreateEvent", Handler: _LivestreamService_CreateEvent_Handler,