diff --git a/.bazelrc b/.bazelrc index 27a3daa3..07f090aa 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,3 +1,4 @@ +common --noenable_bzlmod common --@io_bazel_rules_docker//transitions:enable=false build --sandbox_add_mount_pair=/tmp build --java_language_version=11 @@ -7,3 +8,9 @@ build --java_runtime_version=remotejdk_11 # -XX:+PerfDisableSharedMem to force JVM uses regular memory instead. # -XX:-UsePerfData to disable /tmp/hsperfdata references. We don't use the perf data here so we disable it build --jvmopt="-XX:-UsePerfData" + +# Kythe indexing -- for xrefs in codesearch +build:kythe --keep_going +build:kythe --experimental_extra_action_top_level_only +build:kythe --experimental_action_listener=@kythe_release//:extract_kzip_java +build:kythe --experimental_action_listener=@kythe_release//:extract_kzip_protobuf diff --git a/.bazelversion b/.bazelversion index f22d756d..18bb4182 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -6.5.0 +7.5.0 diff --git a/.gitallowed b/.gitallowed index 0427deb6..6fb90578 100644 --- a/.gitallowed +++ b/.gitallowed @@ -1 +1,2 @@ AWS_ACCOUNT_ID=".*" +aws_account_id\s*=\s*".*" diff --git a/.gitignore b/.gitignore index 42f22fa4..24da983e 100644 --- a/.gitignore +++ b/.gitignore @@ -21,9 +21,8 @@ __pycache__/ /target /bin -# don't track prebuilt/local-built artifacts and terrafrom release-manged scripts +# don't track prebuilt/local-built artifacts and terraform release-manged scripts /terrafrom/aws/control-plane-shared-libraries -/terraform/aws/jars /terrafrom/aws/environments/applications /terrafrom/aws/environments/modules /terrafrom/aws/environments/shared diff --git a/.gitmessagetemplate b/.gitmessagetemplate new file mode 100644 index 00000000..0af0c011 --- /dev/null +++ b/.gitmessagetemplate @@ -0,0 +1,7 @@ +[doc|internal|fix|feat] <1-line CL description>. + + + +Changelog: NA/ #NA will typically apply for internal changes or intermediate changes of a multi-CL feature work. +Bug: or NA (only in rare cases) +Launch ticket: or NA diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 91133f72..5432627d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,13 +15,15 @@ # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks exclude: (?x)^( - bazel-(bin|out|testlogs|workspace)/.*| - .bazel_output/.*| - builders/.*| - javatests/testData/.*| - version.txt| - .*\.patch - )$ + bazel-(bin|out|testlogs|workspace)/.*| + .bazel_output/.*| + builders/.*| + javatests/testData/.*| + version.txt| + .*\.patch | + licenses/THIRD_PARTY_NOTICES/.* | + licenses/license_scan_output/.* + )$ fail_fast: true repos: @@ -73,7 +75,7 @@ repos: hooks: - id: pretty-format-java name: Google Java Formatter - args: [--autofix] + args: [ --autofix ] files: ^$ - repo: local @@ -89,12 +91,12 @@ repos: - text entry: addlicense -v exclude: &addlicense-ignores (?x)^( - adtech/.*| - coordinator/terraform/.*| - kokoro/.*| - licenses/.*| - .*gcp.*| - .*/.terraform.lock.hcl + adtech/.*| + coordinator/terraform/.*| + kokoro/.*| + licenses/.*| + .*gcp.*| + .*/.terraform.lock.hcl )$ - id: addlicense-check @@ -117,10 +119,10 @@ repos: types_or: - text exclude: (?x)^( - WORKSPACE| - tools/opensource/inclusive_language/.*| - licenses/.*| - kokoro/gcp_ubuntu/kokoro_update_container_dependencies.sh + WORKSPACE| + tools/opensource/inclusive_language/.*| + licenses/.*| + kokoro/gcp_ubuntu/kokoro_update_container_dependencies.sh )$ - id: terraform-fmt @@ -163,7 +165,7 @@ repos: description: Format bazel WORKSPACE, BUILD and .bzl files with a standard convention. language: golang additional_dependencies: - - github.com/bazelbuild/buildtools/buildifier@6.1.1 + - github.com/bazelbuild/buildtools/buildifier@6.1.1 always_run: true pass_filenames: true types_or: diff --git a/BUILD b/BUILD index e2f3ad5e..4186734a 100644 --- a/BUILD +++ b/BUILD @@ -25,3 +25,10 @@ buildifier( name = "buildifier_fix", mode = "fix", ) + +genrule( + name = "generate_version_file", + srcs = ["VERSION"], + outs = ["generated_version_file.txt"], + cmd = "cat $< | sed 's/-dev$$//' > $@", +) diff --git a/CHANGELOG.md b/CHANGELOG.md index ead498a1..2f8c5f42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,71 @@ # Changelog +# [2.13.0](https://github.com/privacysandbox/aggregation-service/compare/v2.12.0...v2.13.0) (2025-03-25) + +- Migrated of Terraform Files into AgS. +- Updated adtech terraform setup instructions. +- Updated register link to use PS console. +- Upgraded AWS provider in CodeBuild terraform module to 5.86.0 version and rightsized EC2 for + Aggregation Service CodeBuild. +- Updated LocalTestRunner to output debug results in json if --json_output is specified. +- Update. build dependencies to point to the newly spun out numerical_conversions_utils where + applicable. +- Made Aggregation Service AMI and EBS snapshot publicly available under the make_ami_public flag. +- Added job success metrics. See + [telemetry.md](https://github.com/privacysandbox/aggregation-service/blob/main/docs/telemetry.md) + for usage guide. +- [AWS] Added support for + [cross-cloud coorindators](https://github.com/privacysandbox/protected-auction-services-docs/blob/main/cross_cloud_coordinators.md). +- [AWS link to new upgrade instructions](https://github.com/privacysandbox/aggregation-service/blob/main/docs/aws-aggregation-service.md#updating-the-system) +- [GCP link to new upgrade instructions](https://github.com/privacysandbox/aggregation-service/blob/main/docs/gcp-aggregation-service.md#upgrade-environment) + +# [2.12.0](https://github.com/privacysandbox/aggregation-service/compare/v2.11.0...v2.12.0) (2025-02-24) + +- Added + [GCP troubleshooting documentation](https://github.com/privacysandbox/aggregation-service/blob/main/docs/gcp-aggregation-service.md) + for debugging 403 error commonly encountered by adtechs. +- Added feature to write privacy budget exhausted debugging information JSON file to cloud storage + in + [PRIVACY_BUDGET_EXHAUSTED](https://github.com/privacysandbox/aggregation-service/blob/main/docs/error-codes-and-mitigation.md) + scenarios. +- Updated the Error code and Mitigation documentation for PRIVACY_BUDGET_EXHAUSTED. +- Updated Aggregation Service support instructions in + [README](https://github.com/privacysandbox/aggregation-service/blob/main/README.md). +- Upgraded control plane shared library dependency to + [1.18-rc01](https://github.com/privacysandbox/coordinator-services-and-shared-libraries/releases/tag/v1.18.0-rc01). + +# [2.11.0](https://github.com/privacysandbox/aggregation-service/compare/v2.10.0...v2.11.0) (2025-01-21) + +- Added support for a new optional field "input_data_blob_prefixes" in CreateJob API. This field + accepts a list of input prefixes which point to the locations where input reports are to be read + from. +- Removed the defunct WorkerJobCompletion metric that was not actively managed. +- Upgraded control plane shared library dependency to + [1.14-rc01](https://github.com/privacysandbox/coordinator-services-and-shared-libraries/releases/tag/v1.14.0-rc01). + +## [2.10.0](https://github.com/privacysandbox/aggregation-service/compare/v2.9.1...v2.10.0) (2024-12-08) + +- Updated debug mode to no longer consume budget. +- Upgraded dependent packages to address critical/high image vulnerabilities. +- Upgraded control plane shared library dependency to + [v1.13.0-rc01](https://github.com/privacysandbox/coordinator-services-and-shared-libraries/releases/tag/v1.13.0-rc01). + +## [2.9.1](https://github.com/privacysandbox/aggregation-service/compare/v2.9.0...v2.9.1) (2024-11-20) + +- [AWS Only] Added a fix to address the reduced volume size of new AMIs by setting it to 8 GB. + +## [2.9.0](https://github.com/privacysandbox/aggregation-service/compare/v2.8.0...v2.9.0) (2024-11-04) + +- Updated PBS budget consumption request to use service client version. +- Added missing permissions to custom GCP Deploy role in adtech_setup environment. +- Reduced domain processing memory usage by parallelizing the domain processing stage and keeping + `AggregatedFacts` in memory in AVRO format files. +- Updated Aggregation Service sizing guidance with the latests benchmark results. + +## [2.8.1](https://github.com/privacysandbox/aggregation-service/compare/v2.8.0...v2.8.1) (2024-11-20) + +- [AWS Only] Added a fix to address the reduced volume size of new AMIs by setting it to 8 GB. + ## [2.8.0](https://github.com/privacysandbox/aggregation-service/compare/v2.7.0...v2.8.0) (2024-09-11) - Increased read threads in Aggregation Service to match the number of CPUs. @@ -7,12 +73,25 @@ - [GCP only] Updated the GCP image build target to "worker_mp_gcp_prod". Note: This change would impact only if you build your own image. +## [2.7.2](https://github.com/privacysandbox/aggregation-service/compare/v2.7.1...v2.7.2) (2024-11-20) + +- [AWS Only] Added a fix to address the reduced volume size of new AMIs by setting it to 8 GB. + +## [2.7.1](https://github.com/privacysandbox/aggregation-service/compare/v2.7.0...v2.7.1) (2024-09-20) + +- [GCP Only] Added a version in GCP VPC serverless connector module to fix 'Invalid type + specification' error. + ## [2.7.0](https://github.com/privacysandbox/aggregation-service/compare/v2.6.0...v2.7.0) (2024-08-01) - Added support for aggregating reports belonging to multiple reporting origins under the same reporting site in a single aggregation job. - [GCP Only] Updated coordinator endpoints to new Google/Third-Party coordinator pair. +## [2.6.1](https://github.com/privacysandbox/aggregation-service/compare/v2.6.0...v2.6.1) (2024-11-20) + +- [AWS Only] Added a fix to address the reduced volume size of new AMIs by setting it to 8 GB. + ## [2.6.0](https://github.com/privacysandbox/aggregation-service/compare/v2.5.0...v2.6.0) (2024-07-19) - Enabled support for diff --git a/MODULE.bazel b/MODULE.bazel new file mode 100644 index 00000000..0573993d --- /dev/null +++ b/MODULE.bazel @@ -0,0 +1,345 @@ +# 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. + +""" +Bazel module. +""" + +module( + name = "privacy_sandbox_aggregation_service", + version = "2.12.0", +) + +bazel_dep(name = "gazelle", version = "0.42.0", repo_name = "bazel_gazelle") +bazel_dep(name = "bazel_skylib", version = "1.7.1") +bazel_dep(name = "googletest", version = "1.14.0", repo_name = "com_google_googletest") +bazel_dep(name = "grpc-java", version = "1.69.0", repo_name = "io_grpc_grpc_java") +bazel_dep(name = "protobuf", version = "29.3", repo_name = "com_google_protobuf") +bazel_dep(name = "rpmpack", version = "0.6.0", repo_name = "com_github_google_rpmpack") +bazel_dep(name = "rules_cc", version = "0.0.17") +bazel_dep(name = "rules_go", version = "0.52.0", repo_name = "io_bazel_rules_go") +bazel_dep(name = "rules_java", version = "7.12.2") +bazel_dep(name = "rules_jvm_external", version = "6.7") +bazel_dep(name = "rules_pkg", version = "1.0.1") +bazel_dep(name = "rules_proto", version = "6.0.0") +bazel_dep(name = "rules_python", version = "1.1.0") +bazel_dep(name = "grpc", version = "1.69.0", repo_name = "com_github_grpc_grpc") + +http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "terraform", + build_file_content = """ +package(default_visibility = ["//visibility:public"]) +exports_files(["terraform"]) +""", + sha256 = "728b6fbcb288ad1b7b6590585410a98d3b7e05efe4601ef776c37e15e9a83a96", + url = "https://releases.hashicorp.com/terraform/1.2.3/terraform_1.2.3_linux_amd64.zip", +) + +http_archive( + name = "packer", + build_file_content = """ +package(default_visibility = ["//visibility:public"]) +exports_files(["packer"]) +""", + sha256 = "57d0411e578aea62918d36ed186951139d5d49d44b76e5666d1fbf2427b385ae", + url = "https://releases.hashicorp.com/packer/1.8.6/packer_1.8.6_linux_amd64.zip", +) + +http_archive( + name = "google-cloud-sdk", + build_file_content = """ +package(default_visibility = ["//visibility:public"]) +exports_files(["google-cloud-sdk"]) +""", + # latest from https://cloud.google.com/storage/docs/gsutil_install#linux as of 2021-12-16 + sha256 = "94328b9c6559a1b7ec2eeaab9ef0e4702215e16e8327c5b99718750526ae1efe", + url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-367.0.0-linux-x86_64.tar.gz", +) + +# TODO: Migrate to BCR +# https://github.com/bazelbuild/bazel-central-registry/pull/2742 +http_archive( + name = "com_github_googleapis_google_cloud_cpp", + sha256 = "358e3b6277a71634de7b7cb1cef14b728f6af6e450fbc9b0e5847882729b32ea", + strip_prefix = "google-cloud-cpp-c7242253b17a1754e06444bd042849ec101729c8", + urls = ["https://github.com/googleapis/google-cloud-cpp/archive/c7242253b17a1754e06444bd042849ec101729c8.zip"], # 2024-06-11 +) + +single_version_override( + module_name = "rules_cc", + version = "0.1.1", +) + +bazel_dep(name = "rules_boost", repo_name = "com_github_nelhage_rules_boost") +archive_override( + module_name = "rules_boost", + integrity = "sha256-ZLcmvYKc2FqgLvR96ApPXxp8+sXKqhBlCK66PY/uFIo=", + strip_prefix = "rules_boost-e3adfd8d6733c914d2b91a65fb7175af09602281", + urls = "https://github.com/nelhage/rules_boost/archive/e3adfd8d6733c914d2b91a65fb7175af09602281.tar.gz", +) + +bazel_dep(name = "privacy_sandbox_coordinator_services_and_shared_libraries", repo_name = "shared_libraries") + +# local_path_override( +# module_name = "privacy_sandbox_coordinator_services_and_shared_libraries", +# path = "" +# ) + +# Version updated on 2025-03-12 +COORDINATOR_VERSION = "v1.19.0-rc01" + +COORDINATOR_COMMIT_HASH = "1fb28e43af9c7ef3c29b1137ba3e710083947d10" + +git_override( + module_name = "privacy_sandbox_coordinator_services_and_shared_libraries", + commit = COORDINATOR_COMMIT_HASH, + patch_strip = 1, + patches = [ + "//build_defs/shared_libraries:coordinator.patch", + "//build_defs/shared_libraries:emulator_container.patch", + "//build_defs/shared_libraries:golang.patch", + "//build_defs/shared_libraries:rules_docker.patch", + "//build_defs/shared_libraries:tmp_build.patch", + "//build_defs/shared_libraries:workspace.patch", + ], + remote = "https://github.com/privacysandbox/coordinator-services-and-shared-libraries", +) + +http_file = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") + +http_file( + name = "google_java_format", + downloaded_file_path = "google-java-format.jar", + sha256 = "9d404cf6fe5f6aa7672693a3301ef2a22016ba540eca5d835be43104b71eb5d6", + urls = ["https://github.com/google/google-java-format/releases/download/v1.10.0/google-java-format-1.10.0-all-deps.jar"], +) + +http_file( + name = "bazelisk", + downloaded_file_path = "bazelisk", + executable = True, + sha256 = "84e946ed8537eaaa4d540df338a593e373e70c5ddca9f2f49e1aaf3a04bdd6ca", + urls = ["https://github.com/bazelbuild/bazelisk/releases/download/v1.14.0/bazelisk-linux-amd64"], +) + +bazel_dep(name = "googleapis", version = "0.0.0-20240819-fe8ba054a", repo_name = "com_google_googleapis") +archive_override( + module_name = "googleapis", + integrity = "sha256-BRPw9Ar2O9Bdx4nKzDNKts7CfMidtZZVfLLf6JGUY+Q=", + patch_strip = 1, + # Patch module support into googleapis + patches = ["//build_defs:googleapis.patch"], + strip_prefix = "googleapis-fe8ba054ad4f7eca946c2d14a63c3f07c0b586a0", + urls = [ + "https://github.com/googleapis/googleapis/archive/fe8ba054ad4f7eca946c2d14a63c3f07c0b586a0.tar.gz", + ], +) + +switched_rules = use_extension("@com_google_googleapis//:extensions.bzl", "switched_rules") +switched_rules.use_languages( + cc = True, + grpc = True, + java = True, +) +use_repo(switched_rules, "com_google_googleapis_imports") + +go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk") +go_sdk.download(version = "1.24.0") + +go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps") +go_deps.module( + path = "github.com/bazelbuild/buildtools", + sum = "h1:FGzENZi+SX9I7h9xvMtRA3rel8hCEfyzSixteBgn7MU=", + version = "v0.0.0-20240918101019-be1c24cc9a44", +) + +# All *direct* Go dependencies of all `go.mod` files referenced by the `go.work` +# file have to be listed explicitly. +use_repo( + go_deps, + "com_github_bazelbuild_buildtools", +) + +# IMPORTANT: If you added dependencies and/or updated dependency versions below, run +# `$ bazel run @unpinned_maven//:pin` and include `maven_install_bzlmod.json` in your change. + +PROTOBUF_CORE_VERSION = "28.3" + +PROTOBUF_JAVA_VERSION_PREFIX = "4." + +PROTOBUF_SHA_256 = "7c3ebd7aaedd86fa5dc479a0fda803f602caaf78d8aff7ce83b89e1b8ae7442a" + +JACKSON_VERSION = "2.16.1" + +AUTO_VALUE_VERSION = "1.10.1" + +AWS_SDK_VERSION = "2.21.16" + +AWS_JAVA_SDK_VERSION = "1.12.772" + +GOOGLE_GAX_VERSION = "2.38.0" + +AUTO_SERVICE_VERSION = "1.1.1" + +OTEL_VERSION = "1.43.0" + +# IMPORTANT: If you added dependencies and/or updated dependency versions below, run +# `$ bazel run @maven//:pin` and include `maven_install_bzlmod.json` in your change. +OTEL_ARTIFACTS = [ + "com.google.errorprone:error_prone_annotations:2.+", + "io.opentelemetry:opentelemetry-api:" + OTEL_VERSION, + "io.opentelemetry:opentelemetry-exporter-logging:" + OTEL_VERSION, + "io.opentelemetry:opentelemetry-exporter-logging-otlp:" + OTEL_VERSION, + "io.opentelemetry:opentelemetry-exporter-otlp:" + OTEL_VERSION, + "io.opentelemetry:opentelemetry-sdk:" + OTEL_VERSION, + "io.opentelemetry:opentelemetry-sdk-common:" + OTEL_VERSION, + "io.opentelemetry:opentelemetry-sdk-metrics:" + OTEL_VERSION, + "io.opentelemetry:opentelemetry-sdk-testing:" + OTEL_VERSION, + "io.opentelemetry:opentelemetry-sdk-logs:" + OTEL_VERSION, + "io.opentelemetry:opentelemetry-sdk-trace:" + OTEL_VERSION, + "io.opentelemetry.contrib:opentelemetry-aws-xray:" + OTEL_VERSION, + "com.google.cloud.opentelemetry:exporter-metrics:0.33.0", + # Note from https://github.com/open-telemetry/semantic-conventions-java: + # Although this is for stable semantic conventions, the artifact still has the -alpha and comes with no + # compatibility guarantees. The goal is to mark this artifact stable. + "io.opentelemetry.semconv:opentelemetry-semconv:1.27.0-alpha", + # As of adding, https://repo1.maven.org/maven2/io/opentelemetry/contrib/opentelemetry-gcp-resources/ only shows + # that alpha version is available. + "io.opentelemetry.contrib:opentelemetry-gcp-resources:" + OTEL_VERSION + "-alpha", + "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:" + OTEL_VERSION, +] + +maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") + +# IMPORTANT: If you added dependencies and/or updated dependency versions below, run +# `$ bazel run @maven//:pin` and include `maven_install_bzlmod.json` in your change. + +maven.install( + name = "maven", + artifacts = [ + "com.amazonaws:aws-lambda-java-core:1.2.3", + "com.amazonaws:aws-lambda-java-events:3.11.3", + "com.amazonaws:aws-lambda-java-events-sdk-transformer:3.1.0", + "com.amazonaws:aws-java-sdk-sqs:" + AWS_JAVA_SDK_VERSION, + "com.amazonaws:aws-java-sdk-s3:" + AWS_JAVA_SDK_VERSION, + "com.amazonaws:aws-java-sdk-kms:" + AWS_JAVA_SDK_VERSION, + "com.amazonaws:aws-java-sdk-core:" + AWS_JAVA_SDK_VERSION, + "com.amazonaws:aws-java-sdk-xray:" + AWS_JAVA_SDK_VERSION, + "com.amazonaws:aws-java-sdk-logs:" + AWS_JAVA_SDK_VERSION, + "com.amazonaws:aws-java-sdk-cloudwatch:" + AWS_JAVA_SDK_VERSION, + "com.beust:jcommander:1.82", + "com.google.cloud.functions.invoker:java-function-invoker:1.1.0", + "com.google.inject:guice:5.1.0", + "com.google.inject.extensions:guice-testlib:5.1.0", + "com.fasterxml.jackson.core:jackson-annotations:" + JACKSON_VERSION, + "com.fasterxml.jackson.core:jackson-core:" + JACKSON_VERSION, + "com.fasterxml.jackson.core:jackson-databind:" + JACKSON_VERSION, + "com.fasterxml.jackson.datatype:jackson-datatype-guava:" + JACKSON_VERSION, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:" + JACKSON_VERSION, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:" + JACKSON_VERSION, + "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:" + JACKSON_VERSION, + "com.google.acai:acai:1.1", + "com.google.auto.factory:auto-factory:1.0.1", + "com.google.auto.service:auto-service-annotations:" + AUTO_SERVICE_VERSION, + "com.google.auto.service:auto-service:" + AUTO_SERVICE_VERSION, + "com.google.auto.value:auto-value-annotations:" + AUTO_VALUE_VERSION, + "com.google.auto.value:auto-value:" + AUTO_VALUE_VERSION, + "com.google.code.findbugs:jsr305:3.0.2", + "com.google.cloud:google-cloud-logging:3.21.2", + "com.google.cloud:google-cloud-kms:2.60.0", + "com.google.cloud:google-cloud-pubsub:1.136.1", + "com.google.cloud:google-cloud-storage:2.48.0", + "com.google.cloud:google-cloud-spanner:6.86.0", + "com.google.cloud:google-cloud-secretmanager:2.57.0", + "com.google.cloud:google-cloud-compute:1.67.0", + "com.google.api.grpc:proto-google-cloud-logging-v2:0.110.2", + "com.google.api.grpc:proto-google-cloud-compute-v1:1.67.0", + "com.google.cloud.functions:functions-framework-api:1.1.0", + "commons-logging:commons-logging:1.3.0", + "com.google.api.grpc:proto-google-common-protos:2.34.0", + "com.google.cloud:google-cloud-trace:2.35.0", + "com.google.api.grpc:proto-google-cloud-trace-v1:2.35.0", + "com.google.api:gax:" + GOOGLE_GAX_VERSION, + "com.google.http-client:google-http-client-jackson2:1.43.3", + "io.reactivex.rxjava3:rxjava:3.1.8", + "com.google.cloud:google-cloud-monitoring:3.35.0", + "com.google.api.grpc:proto-google-cloud-monitoring-v3:3.35.0", + "com.google.protobuf:protobuf-java:" + PROTOBUF_JAVA_VERSION_PREFIX + PROTOBUF_CORE_VERSION, + "com.google.protobuf:protobuf-java-util:" + PROTOBUF_JAVA_VERSION_PREFIX + PROTOBUF_CORE_VERSION, + "com.google.guava:guava:33.0.0-jre", + "com.google.guava:guava-testlib:33.0.0-jre", + "com.google.jimfs:jimfs:1.3.0", + "com.google.testparameterinjector:test-parameter-injector:1.15", + "com.google.truth.extensions:truth-java8-extension:1.3.0", + "com.google.truth.extensions:truth-proto-extension:1.3.0", + "com.google.truth:truth:1.3.0", + "com.jayway.jsonpath:json-path:2.9.0", + "javax.inject:javax.inject:1", + "io.github.resilience4j:resilience4j-core:1.7.1", + "io.github.resilience4j:resilience4j-retry:1.7.1", + "junit:junit:4.13.2", + "org.apache.avro:avro:1.12.0", + "org.apache.commons:commons-compress:1.26.2", + "org.apache.commons:commons-math3:3.6.1", + "org.apache.httpcomponents:httpcore:4.4.16", + "org.apache.httpcomponents:httpclient:4.5.14", + "org.apache.httpcomponents.client5:httpclient5:5.3", + "org.apache.httpcomponents.core5:httpcore5:5.2.4", + "org.apache.httpcomponents.core5:httpcore5-h2:5.2.4", + "org.apache.logging.log4j:log4j-1.2-api:2.22.1", + "org.apache.logging.log4j:log4j-core:2.22.1", + "org.awaitility:awaitility:3.1.6", + "org.mock-server:mockserver-core:5.11.2", + "org.mock-server:mockserver-junit-rule:5.11.2", + "org.mock-server:mockserver-client-java:5.11.2", + "org.hamcrest:hamcrest-library:2.2", + "org.mockito:mockito-core:4.11.0", + "org.slf4j:slf4j-api:2.0.11", + "org.slf4j:slf4j-simple:2.0.11", + "org.slf4j:slf4j-log4j12:1.7.33", + "org.testcontainers:testcontainers:1.19.3", + "org.testcontainers:localstack:1.19.3", + "software.amazon.awssdk:aws-sdk-java:" + AWS_SDK_VERSION, + "software.amazon.awssdk:dynamodb-enhanced:" + AWS_SDK_VERSION, + "software.amazon.awssdk:dynamodb:" + AWS_SDK_VERSION, + "software.amazon.awssdk:ec2:" + AWS_SDK_VERSION, + "software.amazon.awssdk:regions:" + AWS_SDK_VERSION, + "software.amazon.awssdk:s3:" + AWS_SDK_VERSION, + "software.amazon.awssdk:s3-transfer-manager:" + AWS_SDK_VERSION, + "software.amazon.awssdk:aws-core:" + AWS_SDK_VERSION, + "software.amazon.awssdk:ssm:" + AWS_SDK_VERSION, + "software.amazon.awssdk:sts:" + AWS_SDK_VERSION, + "software.amazon.awssdk:sqs:" + AWS_SDK_VERSION, + "software.amazon.awssdk:url-connection-client:" + AWS_SDK_VERSION, + "software.amazon.awssdk:utils:" + AWS_SDK_VERSION, + "software.amazon.awssdk:auth:" + AWS_SDK_VERSION, + "software.amazon.awssdk:lambda:" + AWS_SDK_VERSION, + "com.google.crypto.tink:tink:1.13.0", + "com.google.crypto.tink:tink-gcpkms:1.9.0", + "com.google.oauth-client:google-oauth-client:1.37.0", + "com.google.auth:google-auth-library-oauth2-http:1.31.0", + "io.netty:netty-codec-http:4.1.115.Final", + "com.google.cloud:google-cloud-iamcredentials:2.57.0", + ] + OTEL_ARTIFACTS, + # Run `bazel run @maven//:pin` to regenerate. + lock_file = "//:maven_install_bzlmod.json", + repositories = [ + "https://repo1.maven.org/maven2", + "https://maven.google.com", + "https://jcenter.bintray.com", + ], +) +use_repo(maven, "maven") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock new file mode 100644 index 00000000..6eb2dcfc --- /dev/null +++ b/MODULE.bazel.lock @@ -0,0 +1,7753 @@ +{ + "lockFileVersion": 13, + "registryFileHashes": { + "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", + "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", + "https://bcr.bazel.build/modules/abseil-cpp/20220623.1/MODULE.bazel": "73ae41b6818d423a11fd79d95aedef1258f304448193d4db4ff90e5e7a0f076c", + "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.0/MODULE.bazel": "98dc378d64c12a4e4741ad3362f87fb737ee6a0886b2d90c3cdbb4d93ea3e0bf", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16", + "https://bcr.bazel.build/modules/abseil-cpp/20240722.0/MODULE.bazel": "88668a07647adbdc14cb3a7cd116fb23c9dda37a90a1681590b6c9d8339a5b84", + "https://bcr.bazel.build/modules/abseil-cpp/20240722.1/MODULE.bazel": "2c6fd3cabd336249aee62c33696ba2fa4f2dc8364df564b76f25e9b940a9c6b4", + "https://bcr.bazel.build/modules/abseil-cpp/20240722.1/source.json": "418dc1af6c5a913cbd9727029c9e4b987e57835bb5f7f6e6ff74c0f3660cf022", + "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", + "https://bcr.bazel.build/modules/apple_support/1.15.1/source.json": "517f2b77430084c541bc9be2db63fdcbb7102938c5f64c17ee60ffda2e5cf07b", + "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef", + "https://bcr.bazel.build/modules/bazel_features/1.1.0/MODULE.bazel": "cfd42ff3b815a5f39554d97182657f8c4b9719568eb7fded2b9135f084bf760b", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", + "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", + "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", + "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", + "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9", + "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", + "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", + "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", + "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", + "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", + "https://bcr.bazel.build/modules/boringssl/0.0.0-20211025-d4f1ab9/MODULE.bazel": "6ee6353f8b1a701fe2178e1d925034294971350b6d3ac37e67e5a7d463267834", + "https://bcr.bazel.build/modules/boringssl/0.0.0-20230215-5c22014/MODULE.bazel": "4b03dc0d04375fa0271174badcd202ed249870c8e895b26664fd7298abea7282", + "https://bcr.bazel.build/modules/boringssl/0.0.0-20240530-2db0eb3/MODULE.bazel": "d0405b762c5e87cd445b7015f2b8da5400ef9a8dbca0bfefa6c1cea79d528a97", + "https://bcr.bazel.build/modules/boringssl/0.20240913.0/MODULE.bazel": "fcaa7503a5213290831a91ed1eb538551cf11ac0bc3a6ad92d0fef92c5bd25fb", + "https://bcr.bazel.build/modules/boringssl/0.20241024.0/MODULE.bazel": "b540cff73d948cb79cb0bc108d7cef391d2098a25adabfda5043e4ef548dbc87", + "https://bcr.bazel.build/modules/boringssl/0.20250114.0/MODULE.bazel": "1e4e83d7fcd35d0441a92452544773947658e34001af9b9ce5475977bfa013e2", + "https://bcr.bazel.build/modules/boringssl/0.20250114.0/source.json": "12bb512f9cc813f7a33f810ff4e12049630865e0b3cae74b0dc399312c5af13d", + "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", + "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/bzip2/1.0.8/MODULE.bazel": "83ee443b286b0b91566e5ee77e74ba6445895f3135467893871560f9e4ebc159", + "https://bcr.bazel.build/modules/bzip2/1.0.8/source.json": "b64f3a2f973749cf5f6ee32b3d804af56a35a746228a7845ed5daa31c8cc8af1", + "https://bcr.bazel.build/modules/c-ares/1.15.0/MODULE.bazel": "ba0a78360fdc83f02f437a9e7df0532ad1fbaa59b722f6e715c11effebaa0166", + "https://bcr.bazel.build/modules/c-ares/1.15.0/source.json": "5e3ed991616c5ec4cc09b0893b29a19232de4a1830eb78c567121bfea87453f7", + "https://bcr.bazel.build/modules/cel-spec/0.15.0/MODULE.bazel": "e1eed53d233acbdcf024b4b0bc1528116d92c29713251b5154078ab1348cb600", + "https://bcr.bazel.build/modules/cel-spec/0.15.0/source.json": "ab7dccdf21ea2261c0f809b5a5221a4d7f8b580309f285fdf1444baaca75d44a", + "https://bcr.bazel.build/modules/civetweb/1.16/MODULE.bazel": "46a38f9daeb57392e3827fce7d40926be0c802bd23cdd6bfd3a96c804de42fae", + "https://bcr.bazel.build/modules/civetweb/1.16/source.json": "ba8b9585adb8355cb51b999d57172fd05e7a762c56b8d4bac6db42c99de3beb7", + "https://bcr.bazel.build/modules/crc32c/1.1.0/MODULE.bazel": "f11439d063a2b4e0f19b56bb8da6a931f9691bf583bd1ec0718645bce6c62b06", + "https://bcr.bazel.build/modules/crc32c/1.1.0/source.json": "aabc6ce46d4b71343d500270c2ddfd45f59cff9fd171313bdd773bf620cf2a6f", + "https://bcr.bazel.build/modules/curl/8.4.0/MODULE.bazel": "0bc250aa1cb69590049383df7a9537c809591fcf876c620f5f097c58fdc9bc10", + "https://bcr.bazel.build/modules/curl/8.7.1/MODULE.bazel": "088221c35a2939c555e6e47cb31a81c15f8b59f4daa8009b1e9271a502d33485", + "https://bcr.bazel.build/modules/curl/8.8.0.bcr.2/MODULE.bazel": "9bd3a98e18919f51008d9999f14e6d918ddabc4e623bf0b70bc470daf2731bec", + "https://bcr.bazel.build/modules/curl/8.8.0.bcr.2/source.json": "1a40c802eff93a3106bb68e18faec596e0dcb7773b2994965d0438de52376778", + "https://bcr.bazel.build/modules/curl/8.8.0/MODULE.bazel": "7da3b3e79b0b4ee8f8c95d640bc6ad7b430ce66ef6e9c9d2bc29b3b5ef85f6fe", + "https://bcr.bazel.build/modules/cython/3.0.11-1/MODULE.bazel": "868b3f5c956c3657420d2302004c6bb92606bfa47e314bab7f2ba0630c7c966c", + "https://bcr.bazel.build/modules/cython/3.0.11-1/source.json": "da318be900b8ca9c3d1018839d3bebc5a8e1645620d0848fa2c696d4ecf7c296", + "https://bcr.bazel.build/modules/envoy_api/0.0.0-20241214-918efc9/MODULE.bazel": "24e05f6f52f37be63a795192848555a2c8c855e7814dbc1ed419fb04a7005464", + "https://bcr.bazel.build/modules/envoy_api/0.0.0-20250128-4de3c74/MODULE.bazel": "1fe72489212c530086e3ffb0e018b2bfef4663200ca03571570f9f006bef1d75", + "https://bcr.bazel.build/modules/envoy_api/0.0.0-20250128-4de3c74/source.json": "028519164a2e24563f4b43d810fdedc702daed90e71e7042d45ba82ad807b46f", + "https://bcr.bazel.build/modules/gazelle/0.27.0/MODULE.bazel": "3446abd608295de6d90b4a8a118ed64a9ce11dcb3dda2dc3290a22056bd20996", + "https://bcr.bazel.build/modules/gazelle/0.30.0/MODULE.bazel": "f888a1effe338491f35f0e0e85003b47bb9d8295ccba73c37e07702d8d31c65b", + "https://bcr.bazel.build/modules/gazelle/0.32.0/MODULE.bazel": "b499f58a5d0d3537f3cf5b76d8ada18242f64ec474d8391247438bf04f58c7b8", + "https://bcr.bazel.build/modules/gazelle/0.33.0/MODULE.bazel": "a13a0f279b462b784fb8dd52a4074526c4a2afe70e114c7d09066097a46b3350", + "https://bcr.bazel.build/modules/gazelle/0.34.0/MODULE.bazel": "abdd8ce4d70978933209db92e436deb3a8b737859e9354fb5fd11fb5c2004c8a", + "https://bcr.bazel.build/modules/gazelle/0.35.0/MODULE.bazel": "bda67986233654255d52d56c2e8d8ce5649fdcf0acd96b1fdd04af4d7e038c36", + "https://bcr.bazel.build/modules/gazelle/0.36.0/MODULE.bazel": "e375d5d6e9a6ca59b0cb38b0540bc9a05b6aa926d322f2de268ad267a2ee74c0", + "https://bcr.bazel.build/modules/gazelle/0.42.0/MODULE.bazel": "fa140a7c019f3a22779ba7c6132ffff9d2d10a51dba2f3304dee61523d11fef4", + "https://bcr.bazel.build/modules/gazelle/0.42.0/source.json": "eb6f7b0cb76c52d2679164910a01fa6ddcee409e6a7fee06e602ef259f65165c", + "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", + "https://bcr.bazel.build/modules/google_benchmark/1.8.4/MODULE.bazel": "c6d54a11dcf64ee63545f42561eda3fd94c1b5f5ebe1357011de63ae33739d5e", + "https://bcr.bazel.build/modules/google_benchmark/1.8.5/MODULE.bazel": "9ba9b31b984022828a950e3300410977eda2e35df35584c6b0b2d0c2e52766b7", + "https://bcr.bazel.build/modules/google_benchmark/1.9.1/MODULE.bazel": "1abfd0395aea2db11943d817afb6c03208bee28b2e47eccc3042f67a22d3ce1b", + "https://bcr.bazel.build/modules/google_benchmark/1.9.1/source.json": "5d68196f85589340f5ca834d0bea3a49129d8cebf486d51b3d29419b0437bbbc", + "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", + "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108", + "https://bcr.bazel.build/modules/googletest/1.15.2/source.json": "dbdda654dcb3a0d7a8bc5d0ac5fc7e150b58c2a986025ae5bc634bb2cb61f470", + "https://bcr.bazel.build/modules/grpc-java/1.66.0/MODULE.bazel": "86ff26209fac846adb89db11f3714b3dc0090fb2fb81575673cc74880cda4e7e", + "https://bcr.bazel.build/modules/grpc-java/1.69.0/MODULE.bazel": "53887af6a00b3b406d70175d3d07e84ea9362016ff55ea90b9185f0227bfaf98", + "https://bcr.bazel.build/modules/grpc-java/1.69.0/source.json": "daf42ef1f7a2b86d9178d288c5245802f9b6157adc302b2b05c8fd12cbd79659", + "https://bcr.bazel.build/modules/grpc-proto/0.0.0-20240627-ec30f58/MODULE.bazel": "88de79051e668a04726e9ea94a481ec6f1692086735fd6f488ab908b3b909238", + "https://bcr.bazel.build/modules/grpc-proto/0.0.0-20240627-ec30f58/source.json": "5035d379c61042930244ab59e750106d893ec440add92ec0df6a0098ca7f131d", + "https://bcr.bazel.build/modules/grpc/1.41.0/MODULE.bazel": "5bcbfc2b274dabea628f0649dc50c90cf36543b1cfc31624832538644ad1aae8", + "https://bcr.bazel.build/modules/grpc/1.56.3.bcr.1/MODULE.bazel": "cd5b1eb276b806ec5ab85032921f24acc51735a69ace781be586880af20ab33f", + "https://bcr.bazel.build/modules/grpc/1.62.1/MODULE.bazel": "2998211594b8a79a6b459c4e797cfa19f0fb8b3be3149760ec7b8c99abfd426f", + "https://bcr.bazel.build/modules/grpc/1.63.1.bcr.1/MODULE.bazel": "d7b9fef03bd175e6825237b521b18a3c29f1ac15f8aa52c8a1a0f3bd8f33d54b", + "https://bcr.bazel.build/modules/grpc/1.66.0.bcr.2/MODULE.bazel": "0fa2b0fd028ce354febf0fe90f1ed8fecfbfc33118cddd95ac0418cc283333a0", + "https://bcr.bazel.build/modules/grpc/1.66.0.bcr.3/MODULE.bazel": "f6047e89faf488f5e3e65cb2594c6f5e86992abec7487163ff6b623526e543b0", + "https://bcr.bazel.build/modules/grpc/1.69.0/MODULE.bazel": "4e26e05c9e1ef291ccbc96aad8e457b1b8abedbc141623831629da2f8168eef6", + "https://bcr.bazel.build/modules/grpc/1.69.0/source.json": "82e5cd0eeed569909ff42fd6946b813c8b69fc71a6b075ccebef224937e19215", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", + "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/libpfm/4.11.0/source.json": "caaffb3ac2b59b8aac456917a4ecf3167d40478ee79f15ab7a877ec9273937c9", + "https://bcr.bazel.build/modules/mbedtls/3.6.0/MODULE.bazel": "8e380e4698107c5f8766264d4df92e36766248447858db28187151d884995a09", + "https://bcr.bazel.build/modules/mbedtls/3.6.0/source.json": "1dbe7eb5258050afcc3806b9d43050f71c6f539ce0175535c670df606790b30c", + "https://bcr.bazel.build/modules/nlohmann_json/3.11.3.bcr.1/MODULE.bazel": "83bbe365b1eb640ef903df2240f11e7df8f70563199bc17085816033bc36da89", + "https://bcr.bazel.build/modules/nlohmann_json/3.11.3.bcr.1/source.json": "7b0b57c1a789dd0b81b8e6f639f36f96a6f4534c2f2ed4430118af6769b00cdf", + "https://bcr.bazel.build/modules/nlohmann_json/3.11.3/MODULE.bazel": "87023db2f55fc3a9949c7b08dc711fae4d4be339a80a99d04453c4bb3998eefc", + "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74", + "https://bcr.bazel.build/modules/onetbb/2021.10.0/MODULE.bazel": "24af938d1964cce4a82c6a966098d8dfed0ab0d21253f38fe63ac94a5f1c0198", + "https://bcr.bazel.build/modules/onetbb/2021.10.0/source.json": "f1455a145057570b74f78dde1de469620946df15a2267276aa713adac010059d", + "https://bcr.bazel.build/modules/opencensus-cpp/0.0.0-20230502-50eb5de/MODULE.bazel": "02201d2921dadb4ec90c4980eca4b2a02904eddcf6fa02f3da7594fb7b0d821c", + "https://bcr.bazel.build/modules/opencensus-cpp/0.0.0-20230502-50eb5de/source.json": "f50efc07822f5425bd1d3e40e977484f9c0142463052717d40ec85cd6744243e", + "https://bcr.bazel.build/modules/opencensus-proto/0.4.1/MODULE.bazel": "4a2e8b4d0b544002502474d611a5a183aa282251e14f6a01afe841c0c1b10372", + "https://bcr.bazel.build/modules/opencensus-proto/0.4.1/source.json": "a7d956700a85b833c43fc61455c0e111ab75bab40768ed17a206ee18a2bbe38f", + "https://bcr.bazel.build/modules/openssl/3.3.1.bcr.1/MODULE.bazel": "49c0c07e8fb87b480bccb842cfee1b32617f11dac590f732573c69058699a3d1", + "https://bcr.bazel.build/modules/openssl/3.3.1.bcr.1/source.json": "0c0872e048bbea052a9c541fb47019481a19201ba5555a71d762ad591bf94e1f", + "https://bcr.bazel.build/modules/opentelemetry-cpp/1.14.2/MODULE.bazel": "089a5613c2a159c7dfde098dabfc61e966889c7d6a81a98422a84c51535ed17d", + "https://bcr.bazel.build/modules/opentelemetry-cpp/1.16.0/MODULE.bazel": "b7379a140f538cea3f749179a2d481ed81942cc6f7b05a6113723eb34ac3b3e7", + "https://bcr.bazel.build/modules/opentelemetry-cpp/1.19.0/MODULE.bazel": "3455326c08b28415648a3d60d8e3c811847ebdbe64474f75b25878f25585aea1", + "https://bcr.bazel.build/modules/opentelemetry-cpp/1.19.0/source.json": "4e48137e4c3ecb99401ff99876df8fa330598d7da051869bec643446e8a8ff95", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.1.0/MODULE.bazel": "a49f406e99bf05ab43ed4f5b3322fbd33adfd484b6546948929d1316299b68bf", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.3.1/MODULE.bazel": "0141a50e989576ee064c11ce8dd5ec89993525bd9f9a09c5618e4dacc8df9352", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.4.0.bcr.1/MODULE.bazel": "5ceaf25e11170d22eded4c8032728b4a3f273765fccda32f9e94f463755c4167", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.5.0/MODULE.bazel": "7543d91a53b98e7b5b37c5a0865b93bff12c1ee022b1e322cd236b968894b030", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.5.0/source.json": "046b721ce203e88cdaad44d7dd17a86b7200eab9388b663b234e72e13ff7b143", + "https://bcr.bazel.build/modules/opentracing-cpp/1.6.0/MODULE.bazel": "b3925269f63561b8b880ae7cf62ccf81f6ece55b62cd791eda9925147ae116ec", + "https://bcr.bazel.build/modules/opentracing-cpp/1.6.0/source.json": "da1cb1add160f5e5074b7272e9db6fd8f1b3336c15032cd0a653af9d2f484aed", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", + "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", + "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", + "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", + "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", + "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", + "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", + "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc", + "https://bcr.bazel.build/modules/prometheus-cpp/1.2.4/MODULE.bazel": "0fbe5dcff66311947a3f6b86ebc6a6d9328e31a28413ca864debc4a043f371e5", + "https://bcr.bazel.build/modules/prometheus-cpp/1.3.0/MODULE.bazel": "ce82e086bbc0b60267e970f6a54b2ca6d0f22d3eb6633e00e2cc2899c700f3d8", + "https://bcr.bazel.build/modules/prometheus-cpp/1.3.0/source.json": "8cb66b4e535afc718e9d104a3db96ccb71a42ee816a100e50fd0d5ac843c0606", + "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a", + "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12", + "https://bcr.bazel.build/modules/protobuf/26.0.bcr.1/MODULE.bazel": "8f04d38c2da40a3715ff6bdce4d32c5981e6432557571482d43a62c31a24c2cf", + "https://bcr.bazel.build/modules/protobuf/26.0.bcr.2/MODULE.bazel": "62e0b84ca727bdeb55a6fe1ef180e6b191bbe548a58305ea1426c158067be534", + "https://bcr.bazel.build/modules/protobuf/26.0/MODULE.bazel": "8402da964092af40097f4a205eec2a33fd4a7748dc43632b7d1629bfd9a2b856", + "https://bcr.bazel.build/modules/protobuf/27.0-rc2/MODULE.bazel": "b2b0dbafd57b6bec0ca9b251da02e628c357dab53a097570aa7d79d020f107cf", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.3/MODULE.bazel": "77480eea5fb5541903e49683f24dc3e09f4a79e0eea247414887bb9fc0066e94", + "https://bcr.bazel.build/modules/protobuf/29.3/source.json": "c460e6550ddd24996232c7542ebf201f73c4e01d2183a31a041035fb50f19681", + "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", + "https://bcr.bazel.build/modules/protobuf/3.19.2/MODULE.bazel": "532ffe5f2186b69fdde039efe6df13ba726ff338c6bc82275ad433013fa10573", + "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858", + "https://bcr.bazel.build/modules/protoc-gen-validate/1.0.4.bcr.2/MODULE.bazel": "c4bd2c850211ff5b7dadf9d2d0496c1c922fdedc303c775b01dfd3b3efc907ed", + "https://bcr.bazel.build/modules/protoc-gen-validate/1.0.4.bcr.2/source.json": "4cc97f70b521890798058600a927ce4b0def8ee84ff2a5aa632aabcb4234aa0b", + "https://bcr.bazel.build/modules/protoc-gen-validate/1.0.4/MODULE.bazel": "b8913c154b16177990f6126d2d2477d187f9ddc568e95ee3e2d50fc65d2c494a", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", + "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", + "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680", + "https://bcr.bazel.build/modules/rapidjson/1.1.0.bcr.20241007/MODULE.bazel": "82fbcb2e42f9e0040e76ccc74c06c3e46dfd33c64ca359293f8b84df0e6dff4c", + "https://bcr.bazel.build/modules/rapidjson/1.1.0.bcr.20241007/source.json": "5c42389ad0e21fc06b95ad7c0b730008271624a2fa3292e0eab5f30e15adeee3", + "https://bcr.bazel.build/modules/re2/2021-09-01/MODULE.bazel": "bcb6b96f3b071e6fe2d8bed9cc8ada137a105f9d2c5912e91d27528b3d123833", + "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", + "https://bcr.bazel.build/modules/re2/2024-05-01/MODULE.bazel": "55a3f059538f381107824e7d00df5df6d061ba1fb80e874e4909c0f0549e8f3e", + "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a", + "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4", + "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", + "https://bcr.bazel.build/modules/rpmpack/0.6.0/MODULE.bazel": "0955142ea73b5f1a362ce2d871bf63576d0bdc8bbdd9b04c11f54f028228d5da", + "https://bcr.bazel.build/modules/rpmpack/0.6.0/source.json": "824de8849410f94875dae6933b790bbf96eff5fdce117433d4069e7d146aef5b", + "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", + "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", + "https://bcr.bazel.build/modules/rules_apple/3.5.1/MODULE.bazel": "3d1bbf65ad3692003d36d8a29eff54d4e5c1c5f4bfb60f79e28646a924d9101c", + "https://bcr.bazel.build/modules/rules_apple/3.5.1/source.json": "e7593cdf26437d35dbda64faeaf5b82cbdd9df72674b0f041fdde75c1d20dda7", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.10.1/MODULE.bazel": "b9527010e5fef060af92b6724edb3691970a5b1f76f74b21d39f7d433641be60", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.13.0/MODULE.bazel": "5a9419cd02f6c2328eafd5234be8bef4d53357af80873392f5907f73f348c61b", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.13.0/source.json": "e3495e083f232b3de375b77d2b0b01c18b6c2d1fc7337e451e8cd8e0c3e43dc6", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", + "https://bcr.bazel.build/modules/rules_go/0.33.0/MODULE.bazel": "a2b11b64cd24bf94f57454f53288a5dacfe6cb86453eee7761b7637728c1910c", + "https://bcr.bazel.build/modules/rules_go/0.38.1/MODULE.bazel": "fb8e73dd3b6fc4ff9d260ceacd830114891d49904f5bda1c16bc147bcc254f71", + "https://bcr.bazel.build/modules/rules_go/0.39.1/MODULE.bazel": "d34fb2a249403a5f4339c754f1e63dc9e5ad70b47c5e97faee1441fc6636cd61", + "https://bcr.bazel.build/modules/rules_go/0.41.0/MODULE.bazel": "55861d8e8bb0e62cbd2896f60ff303f62ffcb0eddb74ecb0e5c0cbe36fc292c8", + "https://bcr.bazel.build/modules/rules_go/0.42.0/MODULE.bazel": "8cfa875b9aa8c6fce2b2e5925e73c1388173ea3c32a0db4d2b4804b453c14270", + "https://bcr.bazel.build/modules/rules_go/0.44.0/MODULE.bazel": "55b2d9e775d7881dbe9a2fc68440442cd6ba32730170c782f1f0e6023a6d8db6", + "https://bcr.bazel.build/modules/rules_go/0.45.1/MODULE.bazel": "6d7884f0edf890024eba8ab31a621faa98714df0ec9d512389519f0edff0281a", + "https://bcr.bazel.build/modules/rules_go/0.46.0/MODULE.bazel": "3477df8bdcc49e698b9d25f734c4f3a9f5931ff34ee48a2c662be168f5f2d3fd", + "https://bcr.bazel.build/modules/rules_go/0.48.0/MODULE.bazel": "d00ebcae0908ee3f5e6d53f68677a303d6d59a77beef879598700049c3980a03", + "https://bcr.bazel.build/modules/rules_go/0.50.1/MODULE.bazel": "b91a308dc5782bb0a8021ad4330c81fea5bda77f96b9e4c117b9b9c8f6665ee0", + "https://bcr.bazel.build/modules/rules_go/0.52.0/MODULE.bazel": "0cf080a2706aa8fc9abf64286cee60fdf0238db37b7f1793b0f7d550d59ea3ae", + "https://bcr.bazel.build/modules/rules_go/0.52.0/source.json": "441bc7591044993dce9fb0377fcadf3086d6afac621b909d17d53858a4a1b8d4", + "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", + "https://bcr.bazel.build/modules/rules_java/5.1.0/MODULE.bazel": "324b6478b0343a3ce7a9add8586ad75d24076d6d43d2f622990b9c1cfd8a1b15", + "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/5.5.0/MODULE.bazel": "486ad1aa15cdc881af632b4b1448b0136c76025a1fe1ad1b65c5899376b83a50", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", + "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel": "30d9135a2b6561c761bd67bd4990da591e6bdc128790ce3e7afd6a3558b2fb64", + "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", + "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", + "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", + "https://bcr.bazel.build/modules/rules_java/7.4.0/MODULE.bazel": "a592852f8a3dd539e82ee6542013bf2cadfc4c6946be8941e189d224500a8934", + "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", + "https://bcr.bazel.build/modules/rules_java/8.5.1/source.json": "db1a77d81b059e0f84985db67a22f3f579a529a86b7997605be3d214a0abe38e", + "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", + "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.0/MODULE.bazel": "37c93a5a78d32e895d52f86a8d0416176e915daabd029ccb5594db422e87c495", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", + "https://bcr.bazel.build/modules/rules_jvm_external/6.6/MODULE.bazel": "153042249c7060536dc95b6bb9f9bb8063b8a0b0cb7acdb381bddbc2374aed55", + "https://bcr.bazel.build/modules/rules_jvm_external/6.7/MODULE.bazel": "e717beabc4d091ecb2c803c2d341b88590e9116b8bf7947915eeb33aab4f96dd", + "https://bcr.bazel.build/modules/rules_jvm_external/6.7/source.json": "5426f412d0a7fc6b611643376c7e4a82dec991491b9ce5cb1cfdd25fe2e92be4", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", + "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", + "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", + "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", + "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_perl/0.2.4/MODULE.bazel": "5f5af7be4bf5fb88d91af7469518f0fd2161718aefc606188f7cd51f436ca938", + "https://bcr.bazel.build/modules/rules_perl/0.2.4/source.json": "574317d6b3c7e4843fe611b76f15e62a1889949f5570702e1ee4ad335ea3c339", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", + "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", + "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", + "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483", + "https://bcr.bazel.build/modules/rules_proto/6.0.0/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f", + "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.20.0/MODULE.bazel": "bfe14d17f20e3fe900b9588f526f52c967a6f281e47a1d6b988679bd15082286", + "https://bcr.bazel.build/modules/rules_python/0.22.0/MODULE.bazel": "b8057bafa11a9e0f4b08fc3b7cd7bee0dcbccea209ac6fc9a3ff051cd03e19e9", + "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.29.0/MODULE.bazel": "2ac8cd70524b4b9ec49a0b8284c79e4cd86199296f82f6e0d5da3f783d660c82", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937", + "https://bcr.bazel.build/modules/rules_python/0.37.1/MODULE.bazel": "3faeb2d9fa0a81f8980643ee33f212308f4d93eea4b9ce6f36d0b742e71e9500", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", + "https://bcr.bazel.build/modules/rules_python/1.1.0/MODULE.bazel": "57e01abae22956eb96d891572490d20e07d983e0c065de0b2170cafe5053e788", + "https://bcr.bazel.build/modules/rules_python/1.1.0/source.json": "29f1fdfd23a40808c622f813bc93e29c3aae277333f03293f667e76159750a0f", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/source.json": "c55ed591aa5009401ddf80ded9762ac32c358d2517ee7820be981e2de9756cf3", + "https://bcr.bazel.build/modules/rules_swift/1.18.0/MODULE.bazel": "a6aba73625d0dc64c7b4a1e831549b6e375fbddb9d2dde9d80c9de6ec45b24c9", + "https://bcr.bazel.build/modules/rules_swift/1.18.0/source.json": "9e636cabd446f43444ea2662341a9cbb74ecd87ab0557225ae73f1127cb7ff52", + "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", + "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", + "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", + "https://bcr.bazel.build/modules/upb/0.0.0-20211020-160625a/MODULE.bazel": "6cced416be2dc5b9c05efd5b997049ba795e5e4e6fafbe1624f4587767638928", + "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9", + "https://bcr.bazel.build/modules/upb/0.0.0-20230907-e7430e6/MODULE.bazel": "3a7dedadf70346e678dc059dbe44d05cbf3ab17f1ce43a1c7a42edc7cbf93fd9", + "https://bcr.bazel.build/modules/xds/0.0.0-20240423-555b57e/MODULE.bazel": "cea509976a77e34131411684ef05a1d6ad194dd71a8d5816643bc5b0af16dc0f", + "https://bcr.bazel.build/modules/xds/0.0.0-20240423-555b57e/source.json": "7227e1fcad55f3f3cab1a08691ecd753cb29cc6380a47bc650851be9f9ad6d20", + "https://bcr.bazel.build/modules/xz/5.4.5.bcr.5/MODULE.bazel": "b93d7035ac14c900dfdf7624e42cfcbfc34415aa8d3c83a6f225867c48d28dad", + "https://bcr.bazel.build/modules/xz/5.4.5.bcr.5/source.json": "30c4e5c856087a60d92e2522eafd316c0661671f4478ca94c6b7bd877010210a", + "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", + "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", + "https://bcr.bazel.build/modules/zlib/1.2.13/MODULE.bazel": "aa6deb1b83c18ffecd940c4119aff9567cd0a671d7bba756741cb2ef043a29d5", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.1/MODULE.bazel": "6a9fe6e3fc865715a7be9823ce694ceb01e364c35f7a846bf0d2b34762bc066b", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.4/MODULE.bazel": "fc880fa3bd9c5299be64b712fbc60a1978ea9ce0a9f74f6bbd0b61c12db1aee6", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.4/source.json": "cc6da591fc55c263981d7ba2c0b56131e544cadfc00f93b14483415130a0df88", + "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198", + "https://bcr.bazel.build/modules/zlib/1.3/MODULE.bazel": "6a9c02f19a24dcedb05572b2381446e27c272cd383aed11d41d99da9e3167a72", + "https://bcr.bazel.build/modules/zstd/1.5.6/MODULE.bazel": "471ebe7d3cdd8c6469390fcf623eb4779ff55fbee0a87f1dc57a1def468b96d4", + "https://bcr.bazel.build/modules/zstd/1.5.6/source.json": "02010c3333fc89b44fe861db049968decb6e688411f7f9d4f6791d74f9adfb51" + }, + "selectedYankedVersions": {}, + "moduleExtensions": { + "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": { + "general": { + "bzlTransitiveDigest": "ltCGFbl/LQQZXn/LEMXfKX7pGwyqNiOCHcmiQW0tmjM=", + "usagesDigest": "ySSIdb/E88OpfbnWNA5rarAA0+mZ4DQzZ65kMl8s2rw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_config_apple_cc_toolchains": { + "bzlFile": "@@apple_support~//crosstool:setup.bzl", + "ruleClassName": "_apple_cc_autoconf_toolchains", + "attributes": {} + }, + "local_config_apple_cc": { + "bzlFile": "@@apple_support~//crosstool:setup.bzl", + "ruleClassName": "_apple_cc_autoconf", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "apple_support~", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@cel-spec~//:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "/2uyuQa5purSharolRXYOGYMGSGjDeByo6JfQDWsraA=", + "usagesDigest": "2f6juplOpWu+UdD1kVgi773xavnFQ+OcH0PRuQduDxY=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_google_googleapis": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "bd8e735d881fb829751ecb1a77038dda4a8d274c45490cb9fcf004583ee10571", + "strip_prefix": "googleapis-07c27163ac591955d736f3057b1619ece66f5b99", + "urls": [ + "https://github.com/googleapis/googleapis/archive/07c27163ac591955d736f3057b1619ece66f5b99.tar.gz" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "cel-spec~", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@cel-spec~//:googleapis_ext.bzl%googleapis_ext": { + "general": { + "bzlTransitiveDigest": "yun2jmsomFi3bs5bjQWXApBzqQf66zBJ39JEBYigzdc=", + "usagesDigest": "OK8FsLndSl2AbwGM1Npe5NdHR1kDAebcw7Ee+KkekE0=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_google_googleapis_imports": { + "bzlFile": "@@cel-spec~~non_module_dependencies~com_google_googleapis//:repository_rules.bzl", + "ruleClassName": "switched_rules", + "attributes": { + "rules": { + "proto_library_with_info": [ + "", + "" + ], + "moved_proto_library": [ + "", + "" + ], + "java_proto_library": [ + "", + "" + ], + "java_grpc_library": [ + "", + "" + ], + "java_gapic_library": [ + "", + "" + ], + "java_gapic_test": [ + "", + "" + ], + "java_gapic_assembly_gradle_pkg": [ + "", + "" + ], + "py_proto_library": [ + "", + "" + ], + "py_grpc_library": [ + "", + "" + ], + "py_gapic_library": [ + "", + "" + ], + "py_test": [ + "", + "" + ], + "py_gapic_assembly_pkg": [ + "", + "" + ], + "py_import": [ + "", + "" + ], + "go_proto_library": [ + "", + "" + ], + "go_library": [ + "", + "" + ], + "go_test": [ + "", + "" + ], + "go_gapic_library": [ + "", + "" + ], + "go_gapic_assembly_pkg": [ + "", + "" + ], + "cc_proto_library": [ + "native.cc_proto_library", + "" + ], + "cc_grpc_library": [ + "", + "" + ], + "cc_gapic_library": [ + "", + "" + ], + "php_proto_library": [ + "", + "php_proto_library" + ], + "php_grpc_library": [ + "", + "php_grpc_library" + ], + "php_gapic_library": [ + "", + "php_gapic_library" + ], + "php_gapic_assembly_pkg": [ + "", + "php_gapic_assembly_pkg" + ], + "nodejs_gapic_library": [ + "", + "typescript_gapic_library" + ], + "nodejs_gapic_assembly_pkg": [ + "", + "typescript_gapic_assembly_pkg" + ], + "ruby_proto_library": [ + "", + "" + ], + "ruby_grpc_library": [ + "", + "" + ], + "ruby_ads_gapic_library": [ + "", + "" + ], + "ruby_cloud_gapic_library": [ + "", + "" + ], + "ruby_gapic_assembly_pkg": [ + "", + "" + ], + "csharp_proto_library": [ + "", + "" + ], + "csharp_grpc_library": [ + "", + "" + ], + "csharp_gapic_library": [ + "", + "" + ], + "csharp_gapic_assembly_pkg": [ + "", + "" + ] + } + } + } + }, + "recordedRepoMappingEntries": [ + [ + "cel-spec~", + "com_google_googleapis", + "cel-spec~~non_module_dependencies~com_google_googleapis" + ] + ] + } + }, + "@@envoy_api~//bazel:repositories.bzl%non_module_deps": { + "general": { + "bzlTransitiveDigest": "6TqmRfVELxZJRPQYuJpC4JBX4QvdrHqTDOUJGOGODSo=", + "usagesDigest": "IivjlawPvqhHPUJ3c6dLiPsH22mn/g/dJtlmv3zdimM=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "prometheus_metrics_model": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/prometheus/client_model/archive/v0.6.1.tar.gz" + ], + "sha256": "b9b690bc35d80061f255faa7df7621eae39fe157179ccd78ff6409c3b004f05e", + "strip_prefix": "client_model-0.6.1", + "build_file_content": "\nload(\"@envoy_api//bazel:api_build_system.bzl\", \"api_cc_py_proto_library\")\nload(\"@io_bazel_rules_go//proto:def.bzl\", \"go_proto_library\")\n\napi_cc_py_proto_library(\n name = \"client_model\",\n srcs = [\n \"io/prometheus/client/metrics.proto\",\n ],\n visibility = [\"//visibility:public\"],\n)\n\ngo_proto_library(\n name = \"client_model_go_proto\",\n importpath = \"github.com/prometheus/client_model/go\",\n proto = \":client_model\",\n visibility = [\"//visibility:public\"],\n)\n" + } + }, + "com_github_bufbuild_buf": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/bufbuild/buf/releases/download/v1.49.0/buf-Linux-x86_64.tar.gz" + ], + "sha256": "ee8da9748249f7946d79191e36469ce7bc3b8ba80019bff1fa4289a44cbc23bf", + "strip_prefix": "buf", + "build_file_content": "\npackage(\n default_visibility = [\"//visibility:public\"],\n)\n\nfilegroup(\n name = \"buf\",\n srcs = [\n \"@com_github_bufbuild_buf//:bin/buf\",\n ],\n tags = [\"manual\"], # buf is downloaded as a linux binary; tagged manual to prevent build for non-linux users\n)\n" + } + }, + "envoy_toolshed": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/envoyproxy/toolshed/archive/bazel-v0.2.2.tar.gz" + ], + "sha256": "443fe177aba0cef8c17b7a48905c925c67b09005b10dd70ff12cd9f729a72d51", + "strip_prefix": "toolshed-bazel-v0.2.2/bazel" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "envoy_api~", + "bazel_tools", + "bazel_tools" + ], + [ + "envoy_api~", + "envoy_api", + "envoy_api~" + ] + ] + } + }, + "@@googleapis~//:extensions.bzl%switched_rules": { + "general": { + "bzlTransitiveDigest": "vG6fuTzXD8MMvHWZEQud0MMH7eoC4GXY0va7VrFFh04=", + "usagesDigest": "OS3q7wxIQ5fTpvOuG0Hsx8cMHBvI/aQj5dvppk3XuQE=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_google_googleapis_imports": { + "bzlFile": "@@googleapis~//:repository_rules.bzl", + "ruleClassName": "switched_rules", + "attributes": { + "rules": { + "proto_library_with_info": [ + "", + "" + ], + "moved_proto_library": [ + "", + "" + ], + "java_proto_library": [ + "native.java_proto_library", + "" + ], + "java_grpc_library": [ + "@io_grpc_grpc_java//:java_grpc_library.bzl", + "" + ], + "java_gapic_library": [ + "", + "" + ], + "java_gapic_test": [ + "", + "" + ], + "java_gapic_assembly_gradle_pkg": [ + "", + "" + ], + "py_proto_library": [ + "", + "" + ], + "py_grpc_library": [ + "", + "" + ], + "py_gapic_library": [ + "", + "" + ], + "py_test": [ + "", + "" + ], + "py_gapic_assembly_pkg": [ + "", + "" + ], + "py_import": [ + "", + "" + ], + "go_proto_library": [ + "", + "" + ], + "go_grpc_library": [ + "", + "" + ], + "go_library": [ + "", + "" + ], + "go_test": [ + "", + "" + ], + "go_gapic_library": [ + "", + "" + ], + "go_gapic_assembly_pkg": [ + "", + "" + ], + "cc_proto_library": [ + "native.cc_proto_library", + "" + ], + "cc_grpc_library": [ + "@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", + "" + ], + "cc_gapic_library": [ + "", + "" + ], + "php_proto_library": [ + "", + "php_proto_library" + ], + "php_grpc_library": [ + "", + "php_grpc_library" + ], + "php_gapic_library": [ + "", + "php_gapic_library" + ], + "php_gapic_assembly_pkg": [ + "", + "php_gapic_assembly_pkg" + ], + "nodejs_gapic_library": [ + "", + "typescript_gapic_library" + ], + "nodejs_gapic_assembly_pkg": [ + "", + "typescript_gapic_assembly_pkg" + ], + "ruby_proto_library": [ + "", + "" + ], + "ruby_grpc_library": [ + "", + "" + ], + "ruby_ads_gapic_library": [ + "", + "" + ], + "ruby_cloud_gapic_library": [ + "", + "" + ], + "ruby_gapic_assembly_pkg": [ + "", + "" + ], + "csharp_proto_library": [ + "", + "" + ], + "csharp_grpc_library": [ + "", + "" + ], + "csharp_gapic_library": [ + "", + "" + ], + "csharp_gapic_assembly_pkg": [ + "", + "" + ] + } + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@grpc~//bazel:grpc_deps.bzl%grpc_repo_deps_ext": { + "general": { + "bzlTransitiveDigest": "1KZav+5Ao2oqRZEdzTdnBvBDKTuHznzADJPH14CRE6I=", + "usagesDigest": "KokaE9FOrkFUdpxGl8J7iyxeByveCECwkpGCvGNcnvM=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "google_cloud_cpp": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "7ca7f583b60d2aa1274411fed3b9fb3887119b2e84244bb3fc69ea1db819e4e5", + "strip_prefix": "google-cloud-cpp-2.16.0", + "urls": [ + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/googleapis/google-cloud-cpp/archive/refs/tags/v2.16.0.tar.gz", + "https://github.com/googleapis/google-cloud-cpp/archive/refs/tags/v2.16.0.tar.gz" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "grpc~", + "bazel_tools", + "bazel_tools" + ], + [ + "grpc~", + "com_github_grpc_grpc", + "grpc~" + ] + ] + } + }, + "@@pybind11_bazel~//:internal_configure.bzl%internal_configure_extension": { + "general": { + "bzlTransitiveDigest": "CyAKLVVonohnkTSqg9II/HA7M49sOlnMkgMHL3CmDuc=", + "usagesDigest": "mFrTHX5eCiNU/OIIGVHH3cOILY9Zmjqk8RQYv8o6Thk=", + "recordedFileInputs": { + "@@pybind11_bazel~//MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34" + }, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "pybind11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file": "@@pybind11_bazel~//:pybind11-BUILD.bazel", + "strip_prefix": "pybind11-2.12.0", + "urls": [ + "https://github.com/pybind/pybind11/archive/v2.12.0.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "pybind11_bazel~", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_apple~//apple:apple.bzl%provisioning_profile_repository_extension": { + "general": { + "bzlTransitiveDigest": "D0anu6Sz8Q9SXmbFaNUKh3YAC7gXF/J/HBTndNBg2ag=", + "usagesDigest": "z3O39ZVxssoz5kUX8+YMSfNS8WcQb9bUg+MxjVA0v6A=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_provisioning_profiles": { + "bzlFile": "@@rules_apple~//apple/internal:local_provisioning_profiles.bzl", + "ruleClassName": "provisioning_profile_repository", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "apple_support~", + "bazel_skylib", + "bazel_skylib~" + ], + [ + "bazel_features~", + "bazel_features_globals", + "bazel_features~~version_extension~bazel_features_globals" + ], + [ + "bazel_features~", + "bazel_features_version", + "bazel_features~~version_extension~bazel_features_version" + ], + [ + "protobuf~", + "bazel_skylib", + "bazel_skylib~" + ], + [ + "protobuf~", + "proto_bazel_features", + "bazel_features~" + ], + [ + "rules_apple~", + "bazel_skylib", + "bazel_skylib~" + ], + [ + "rules_apple~", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_apple~", + "build_bazel_apple_support", + "apple_support~" + ], + [ + "rules_apple~", + "build_bazel_rules_apple", + "rules_apple~" + ], + [ + "rules_apple~", + "build_bazel_rules_swift", + "rules_swift~" + ], + [ + "rules_proto~", + "com_google_protobuf", + "protobuf~" + ], + [ + "rules_swift~", + "bazel_skylib", + "bazel_skylib~" + ], + [ + "rules_swift~", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_swift~", + "build_bazel_apple_support", + "apple_support~" + ], + [ + "rules_swift~", + "build_bazel_rules_swift", + "rules_swift~" + ], + [ + "rules_swift~", + "build_bazel_rules_swift_local_config", + "rules_swift~~non_module_deps~build_bazel_rules_swift_local_config" + ], + [ + "rules_swift~", + "com_github_apple_swift_protobuf", + "rules_swift~~non_module_deps~com_github_apple_swift_protobuf" + ], + [ + "rules_swift~", + "com_github_grpc_grpc_swift", + "rules_swift~~non_module_deps~com_github_grpc_grpc_swift" + ], + [ + "rules_swift~", + "rules_proto", + "rules_proto~" + ] + ] + } + }, + "@@rules_apple~//apple:extensions.bzl%non_module_deps": { + "general": { + "bzlTransitiveDigest": "5JTvg4Qr6DXjRKV+Eqg4V65+iHTZQV9VQ+3KQ+Oziw4=", + "usagesDigest": "9pqqsAjbe7kL2SXEcVAUhrJxq9vOJ39lgszUnsqDdrU=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "xctestrunner": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/google/xctestrunner/archive/b7698df3d435b6491b4b4c0f9fc7a63fbed5e3a6.tar.gz" + ], + "strip_prefix": "xctestrunner-b7698df3d435b6491b4b4c0f9fc7a63fbed5e3a6", + "sha256": "ae3a063c985a8633cb7eb566db21656f8db8eb9a0edb8c182312c7f0db53730d" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_apple~", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_boost~//:boost/repositories.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "x3KMtXr4KoRJ4XlFzBdXD6YURDOScGJ0XQXOZnhxLs4=", + "usagesDigest": "uaZnO/m8Ic3/ACtW2ZtYRX8jlcLhNhSIWnrAQYLYWJA=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "boost": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file": "@@rules_boost~//:boost.BUILD", + "patch_cmds": [ + "rm -f doc/pdf/BUILD" + ], + "patch_cmds_win": [ + "Remove-Item -Force doc/pdf/BUILD" + ], + "patches": [ + "@@rules_boost~//:zlib.patch" + ], + "patch_args": [ + "-p1" + ], + "url": "https://github.com/boostorg/boost/releases/download/boost-1.84.0/boost-1.84.0.tar.gz", + "sha256": "4d27e9efed0f6f152dc28db6430b9d3dfb40c0345da7342eaa5a987dde57bd95", + "strip_prefix": "boost-1.84.0" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_boost~", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_boost~", + "com_github_nelhage_rules_boost", + "rules_boost~" + ] + ] + } + }, + "@@rules_foreign_cc~//foreign_cc:extensions.bzl%tools": { + "general": { + "bzlTransitiveDigest": "82gl0j2nuUSwR2DhSU4Mejqc+E1d+0SHmnz6jHQGxak=", + "usagesDigest": "3PW/Pc9K2FRXrPe+FybHoxEgqzg7eXn9mWy8nzrbxNY=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "rules_foreign_cc_framework_toolchain_linux": { + "bzlFile": "@@rules_foreign_cc~//foreign_cc/private/framework:toolchain.bzl", + "ruleClassName": "framework_toolchain_repository", + "attributes": { + "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:linux_commands.bzl", + "exec_compatible_with": [ + "@platforms//os:linux" + ] + } + }, + "rules_foreign_cc_framework_toolchain_freebsd": { + "bzlFile": "@@rules_foreign_cc~//foreign_cc/private/framework:toolchain.bzl", + "ruleClassName": "framework_toolchain_repository", + "attributes": { + "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:freebsd_commands.bzl", + "exec_compatible_with": [ + "@platforms//os:freebsd" + ] + } + }, + "rules_foreign_cc_framework_toolchain_windows": { + "bzlFile": "@@rules_foreign_cc~//foreign_cc/private/framework:toolchain.bzl", + "ruleClassName": "framework_toolchain_repository", + "attributes": { + "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:windows_commands.bzl", + "exec_compatible_with": [ + "@platforms//os:windows" + ] + } + }, + "rules_foreign_cc_framework_toolchain_macos": { + "bzlFile": "@@rules_foreign_cc~//foreign_cc/private/framework:toolchain.bzl", + "ruleClassName": "framework_toolchain_repository", + "attributes": { + "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:macos_commands.bzl", + "exec_compatible_with": [ + "@platforms//os:macos" + ] + } + }, + "rules_foreign_cc_framework_toolchains": { + "bzlFile": "@@rules_foreign_cc~//foreign_cc/private/framework:toolchain.bzl", + "ruleClassName": "framework_toolchain_repository_hub", + "attributes": {} + }, + "cmake_src": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file_content": "filegroup(\n name = \"all_srcs\",\n srcs = glob([\"**\"]),\n visibility = [\"//visibility:public\"],\n)\n", + "sha256": "f316b40053466f9a416adf981efda41b160ca859e97f6a484b447ea299ff26aa", + "strip_prefix": "cmake-3.23.2", + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2.tar.gz" + ], + "patches": [ + "@@rules_foreign_cc~//toolchains:cmake-c++11.patch" + ] + } + }, + "gnumake_src": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file_content": "filegroup(\n name = \"all_srcs\",\n srcs = glob([\"**\"]),\n visibility = [\"//visibility:public\"],\n)\n", + "sha256": "dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3", + "strip_prefix": "make-4.4.1", + "urls": [ + "https://mirror.bazel.build/ftpmirror.gnu.org/gnu/make/make-4.4.1.tar.gz", + "http://ftpmirror.gnu.org/gnu/make/make-4.4.1.tar.gz" + ] + } + }, + "ninja_build_src": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file_content": "filegroup(\n name = \"all_srcs\",\n srcs = glob([\"**\"]),\n visibility = [\"//visibility:public\"],\n)\n", + "integrity": "sha256-ghvf9Io/aDvEuztvC1/nstZHz2XVKutjMoyRpsbfKFo=", + "strip_prefix": "ninja-1.12.1", + "urls": [ + "https://mirror.bazel.build/github.com/ninja-build/ninja/archive/v1.12.1.tar.gz", + "https://github.com/ninja-build/ninja/archive/v1.12.1.tar.gz" + ] + } + }, + "meson_src": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file_content": "exports_files([\"meson.py\"])\n\nfilegroup(\n name = \"runtime\",\n srcs = glob([\"mesonbuild/**\"]),\n visibility = [\"//visibility:public\"],\n)\n", + "sha256": "567e533adf255de73a2de35049b99923caf872a455af9ce03e01077e0d384bed", + "strip_prefix": "meson-1.5.1", + "urls": [ + "https://mirror.bazel.build/github.com/mesonbuild/meson/releases/download/1.5.1/meson-1.5.1.tar.gz", + "https://github.com/mesonbuild/meson/releases/download/1.5.1/meson-1.5.1.tar.gz" + ] + } + }, + "glib_dev": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file_content": "\ncc_import(\n name = \"glib_dev\",\n hdrs = glob([\"include/**\"]),\n shared_library = \"@glib_runtime//:bin/libglib-2.0-0.dll\",\n visibility = [\"//visibility:public\"],\n)\n ", + "sha256": "bdf18506df304d38be98a4b3f18055b8b8cca81beabecad0eece6ce95319c369", + "urls": [ + "https://mirror.bazel.build/download.gnome.org/binaries/win64/glib/2.26/glib-dev_2.26.1-1_win64.zip", + "https://download.gnome.org/binaries/win64/glib/2.26/glib-dev_2.26.1-1_win64.zip" + ] + } + }, + "glib_src": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file_content": "\ncc_import(\n name = \"msvc_hdr\",\n hdrs = [\"msvc_recommended_pragmas.h\"],\n visibility = [\"//visibility:public\"],\n)\n ", + "sha256": "bc96f63112823b7d6c9f06572d2ad626ddac7eb452c04d762592197f6e07898e", + "strip_prefix": "glib-2.26.1", + "urls": [ + "https://mirror.bazel.build/download.gnome.org/sources/glib/2.26/glib-2.26.1.tar.gz", + "https://download.gnome.org/sources/glib/2.26/glib-2.26.1.tar.gz" + ] + } + }, + "glib_runtime": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file_content": "\nexports_files(\n [\n \"bin/libgio-2.0-0.dll\",\n \"bin/libglib-2.0-0.dll\",\n \"bin/libgmodule-2.0-0.dll\",\n \"bin/libgobject-2.0-0.dll\",\n \"bin/libgthread-2.0-0.dll\",\n ],\n visibility = [\"//visibility:public\"],\n)\n ", + "sha256": "88d857087e86f16a9be651ee7021880b3f7ba050d34a1ed9f06113b8799cb973", + "urls": [ + "https://mirror.bazel.build/download.gnome.org/binaries/win64/glib/2.26/glib_2.26.1-1_win64.zip", + "https://download.gnome.org/binaries/win64/glib/2.26/glib_2.26.1-1_win64.zip" + ] + } + }, + "gettext_runtime": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file_content": "\ncc_import(\n name = \"gettext_runtime\",\n shared_library = \"bin/libintl-8.dll\",\n visibility = [\"//visibility:public\"],\n)\n ", + "sha256": "1f4269c0e021076d60a54e98da6f978a3195013f6de21674ba0edbc339c5b079", + "urls": [ + "https://mirror.bazel.build/download.gnome.org/binaries/win64/dependencies/gettext-runtime_0.18.1.1-2_win64.zip", + "https://download.gnome.org/binaries/win64/dependencies/gettext-runtime_0.18.1.1-2_win64.zip" + ] + } + }, + "pkgconfig_src": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file_content": "filegroup(\n name = \"all_srcs\",\n srcs = glob([\"**\"]),\n visibility = [\"//visibility:public\"],\n)\n", + "sha256": "6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591", + "strip_prefix": "pkg-config-0.29.2", + "patches": [ + "@@rules_foreign_cc~//toolchains:pkgconfig-detectenv.patch", + "@@rules_foreign_cc~//toolchains:pkgconfig-makefile-vc.patch", + "@@rules_foreign_cc~//toolchains:pkgconfig-builtin-glib-int-conversion.patch" + ], + "urls": [ + "https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz", + "https://mirror.bazel.build/pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz" + ] + } + }, + "bazel_features": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ba1282c1aa1d1fffdcf994ab32131d7c7551a9bc960fbf05f42d55a1b930cbfb", + "strip_prefix": "bazel_features-1.15.0", + "url": "https://github.com/bazel-contrib/bazel_features/releases/download/v1.15.0/bazel_features-v1.15.0.tar.gz" + } + }, + "bazel_skylib": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz" + ], + "sha256": "f7be3474d42aae265405a592bb7da8e171919d74c16f082a5457840f06054728" + } + }, + "rules_python": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "84aec9e21cc56fbc7f1335035a71c850d1b9b5cc6ff497306f84cced9a769841", + "strip_prefix": "rules_python-0.23.1", + "url": "https://github.com/bazelbuild/rules_python/archive/refs/tags/0.23.1.tar.gz" + } + }, + "rules_shell": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "d8cd4a3a91fc1dc68d4c7d6b655f09def109f7186437e3f50a9b60ab436a0c53", + "strip_prefix": "rules_shell-0.3.0", + "url": "https://github.com/bazelbuild/rules_shell/releases/download/v0.3.0/rules_shell-v0.3.0.tar.gz" + } + }, + "cmake-3.23.2-linux-aarch64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-aarch64.tar.gz" + ], + "sha256": "f2654bf780b53f170bbbec44d8ac67d401d24788e590faa53036a89476efa91e", + "strip_prefix": "cmake-3.23.2-linux-aarch64", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"cmake_bin\",\n srcs = [\"bin/cmake\"],\n)\n\nfilegroup(\n name = \"cmake_data\",\n srcs = glob(\n [\n \"**\",\n ],\n exclude = [\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"**/* *\",\n ],\n ),\n)\n\nnative_tool_toolchain(\n name = \"cmake_tool\",\n path = \"bin/cmake\",\n target = \":cmake_data\",\n env = {\"CMAKE\": \"$(execpath :cmake_bin)\"},\n tools = [\":cmake_bin\"],\n)\n" + } + }, + "cmake-3.23.2-linux-x86_64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-x86_64.tar.gz" + ], + "sha256": "aaced6f745b86ce853661a595bdac6c5314a60f8181b6912a0a4920acfa32708", + "strip_prefix": "cmake-3.23.2-linux-x86_64", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"cmake_bin\",\n srcs = [\"bin/cmake\"],\n)\n\nfilegroup(\n name = \"cmake_data\",\n srcs = glob(\n [\n \"**\",\n ],\n exclude = [\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"**/* *\",\n ],\n ),\n)\n\nnative_tool_toolchain(\n name = \"cmake_tool\",\n path = \"bin/cmake\",\n target = \":cmake_data\",\n env = {\"CMAKE\": \"$(execpath :cmake_bin)\"},\n tools = [\":cmake_bin\"],\n)\n" + } + }, + "cmake-3.23.2-macos-universal": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-macos-universal.tar.gz" + ], + "sha256": "853a0f9af148c5ef47282ffffee06c4c9f257be2635936755f39ca13c3286c88", + "strip_prefix": "cmake-3.23.2-macos-universal/CMake.app/Contents", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"cmake_bin\",\n srcs = [\"bin/cmake\"],\n)\n\nfilegroup(\n name = \"cmake_data\",\n srcs = glob(\n [\n \"**\",\n ],\n exclude = [\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"**/* *\",\n ],\n ),\n)\n\nnative_tool_toolchain(\n name = \"cmake_tool\",\n path = \"bin/cmake\",\n target = \":cmake_data\",\n env = {\"CMAKE\": \"$(execpath :cmake_bin)\"},\n tools = [\":cmake_bin\"],\n)\n" + } + }, + "cmake-3.23.2-windows-i386": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-windows-i386.zip" + ], + "sha256": "6a4fcd6a2315b93cb23c93507efccacc30c449c2bf98f14d6032bb226c582e07", + "strip_prefix": "cmake-3.23.2-windows-i386", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"cmake_bin\",\n srcs = [\"bin/cmake.exe\"],\n)\n\nfilegroup(\n name = \"cmake_data\",\n srcs = glob(\n [\n \"**\",\n ],\n exclude = [\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"**/* *\",\n ],\n ),\n)\n\nnative_tool_toolchain(\n name = \"cmake_tool\",\n path = \"bin/cmake.exe\",\n target = \":cmake_data\",\n env = {\"CMAKE\": \"$(execpath :cmake_bin)\"},\n tools = [\":cmake_bin\"],\n)\n" + } + }, + "cmake-3.23.2-windows-x86_64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-windows-x86_64.zip" + ], + "sha256": "2329387f3166b84c25091c86389fb891193967740c9bcf01e7f6d3306f7ffda0", + "strip_prefix": "cmake-3.23.2-windows-x86_64", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"cmake_bin\",\n srcs = [\"bin/cmake.exe\"],\n)\n\nfilegroup(\n name = \"cmake_data\",\n srcs = glob(\n [\n \"**\",\n ],\n exclude = [\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"**/* *\",\n ],\n ),\n)\n\nnative_tool_toolchain(\n name = \"cmake_tool\",\n path = \"bin/cmake.exe\",\n target = \":cmake_data\",\n env = {\"CMAKE\": \"$(execpath :cmake_bin)\"},\n tools = [\":cmake_bin\"],\n)\n" + } + }, + "cmake_3.23.2_toolchains": { + "bzlFile": "@@rules_foreign_cc~//toolchains:prebuilt_toolchains_repository.bzl", + "ruleClassName": "prebuilt_toolchains_repository", + "attributes": { + "repos": { + "cmake-3.23.2-linux-aarch64": [ + "@platforms//cpu:aarch64", + "@platforms//os:linux" + ], + "cmake-3.23.2-linux-x86_64": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "cmake-3.23.2-macos-universal": [ + "@platforms//os:macos" + ], + "cmake-3.23.2-windows-i386": [ + "@platforms//cpu:x86_32", + "@platforms//os:windows" + ], + "cmake-3.23.2-windows-x86_64": [ + "@platforms//cpu:x86_64", + "@platforms//os:windows" + ] + }, + "tool": "cmake" + } + }, + "ninja_1.12.1_linux": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip" + ], + "sha256": "6f98805688d19672bd699fbbfa2c2cf0fc054ac3df1f0e6a47664d963d530255", + "strip_prefix": "", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"ninja_bin\",\n srcs = [\"ninja\"],\n)\n\nnative_tool_toolchain(\n name = \"ninja_tool\",\n env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n path = \"$(execpath :ninja_bin)\",\n target = \":ninja_bin\",\n)\n" + } + }, + "ninja_1.12.1_linux-aarch64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux-aarch64.zip" + ], + "sha256": "5c25c6570b0155e95fce5918cb95f1ad9870df5768653afe128db822301a05a1", + "strip_prefix": "", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"ninja_bin\",\n srcs = [\"ninja\"],\n)\n\nnative_tool_toolchain(\n name = \"ninja_tool\",\n env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n path = \"$(execpath :ninja_bin)\",\n target = \":ninja_bin\",\n)\n" + } + }, + "ninja_1.12.1_mac": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-mac.zip" + ], + "sha256": "89a287444b5b3e98f88a945afa50ce937b8ffd1dcc59c555ad9b1baf855298c9", + "strip_prefix": "", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"ninja_bin\",\n srcs = [\"ninja\"],\n)\n\nnative_tool_toolchain(\n name = \"ninja_tool\",\n env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n path = \"$(execpath :ninja_bin)\",\n target = \":ninja_bin\",\n)\n" + } + }, + "ninja_1.12.1_mac_aarch64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-mac.zip" + ], + "sha256": "89a287444b5b3e98f88a945afa50ce937b8ffd1dcc59c555ad9b1baf855298c9", + "strip_prefix": "", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"ninja_bin\",\n srcs = [\"ninja\"],\n)\n\nnative_tool_toolchain(\n name = \"ninja_tool\",\n env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n path = \"$(execpath :ninja_bin)\",\n target = \":ninja_bin\",\n)\n" + } + }, + "ninja_1.12.1_win": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-win.zip" + ], + "sha256": "f550fec705b6d6ff58f2db3c374c2277a37691678d6aba463adcbb129108467a", + "strip_prefix": "", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"ninja_bin\",\n srcs = [\"ninja.exe\"],\n)\n\nnative_tool_toolchain(\n name = \"ninja_tool\",\n env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n path = \"$(execpath :ninja_bin)\",\n target = \":ninja_bin\",\n)\n" + } + }, + "ninja_1.12.1_toolchains": { + "bzlFile": "@@rules_foreign_cc~//toolchains:prebuilt_toolchains_repository.bzl", + "ruleClassName": "prebuilt_toolchains_repository", + "attributes": { + "repos": { + "ninja_1.12.1_linux": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "ninja_1.12.1_linux-aarch64": [ + "@platforms//cpu:aarch64", + "@platforms//os:linux" + ], + "ninja_1.12.1_mac": [ + "@platforms//cpu:x86_64", + "@platforms//os:macos" + ], + "ninja_1.12.1_mac_aarch64": [ + "@platforms//cpu:aarch64", + "@platforms//os:macos" + ], + "ninja_1.12.1_win": [ + "@platforms//cpu:x86_64", + "@platforms//os:windows" + ] + }, + "tool": "ninja" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_foreign_cc~", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_foreign_cc~", + "rules_foreign_cc", + "rules_foreign_cc~" + ] + ] + } + }, + "@@rules_fuzzing~//fuzzing/private:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "hVgJRQ3Er45/UUAgNn1Yp2Khcp/Y8WyafA2kXIYmQ5M=", + "usagesDigest": "YnIrdgwnf3iCLfChsltBdZ7yOJh706lpa2vww/i2pDI=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "platforms": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" + ], + "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" + } + }, + "rules_python": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", + "strip_prefix": "rules_python-0.28.0", + "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" + } + }, + "bazel_skylib": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" + ] + } + }, + "com_google_absl": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" + ], + "strip_prefix": "abseil-cpp-20240116.1", + "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" + } + }, + "rules_fuzzing_oss_fuzz": { + "bzlFile": "@@rules_fuzzing~//fuzzing/private/oss_fuzz:repository.bzl", + "ruleClassName": "oss_fuzz_repository", + "attributes": {} + }, + "honggfuzz": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file": "@@rules_fuzzing~//:honggfuzz.BUILD", + "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", + "url": "https://github.com/google/honggfuzz/archive/2.5.zip", + "strip_prefix": "honggfuzz-2.5" + } + }, + "rules_fuzzing_jazzer": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_jar", + "attributes": { + "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" + } + }, + "rules_fuzzing_jazzer_api": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_jar", + "attributes": { + "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_fuzzing~", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_java~//java:rules_java_deps.bzl%compatibility_proxy": { + "general": { + "bzlTransitiveDigest": "KIX40nDfygEWbU+rq3nYpt3tVgTK/iO8PKh5VMBlN7M=", + "usagesDigest": "pwHZ+26iLgQdwvdZeA5wnAjKnNI3y6XO2VbhOTeo5h8=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "compatibility_proxy": { + "bzlFile": "@@rules_java~//java:rules_java_deps.bzl", + "ruleClassName": "_compatibility_proxy_repo_rule", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_java~", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "general": { + "bzlTransitiveDigest": "fus14IFJ/1LGWWGKPH/U18VnJCoMjfDt1ckahqCnM0A=", + "usagesDigest": "aJF6fLy82rR95Ff5CZPAqxNoFgOMLMN5ImfBS0nhnkg=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_jetbrains_kotlin_git": { + "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl", + "ruleClassName": "kotlin_compiler_git_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" + ], + "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" + } + }, + "com_github_jetbrains_kotlin": { + "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl", + "ruleClassName": "kotlin_capabilities_repository", + "attributes": { + "git_repository_name": "com_github_jetbrains_kotlin_git", + "compiler_version": "1.9.23" + } + }, + "com_github_google_ksp": { + "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:ksp.bzl", + "ruleClassName": "ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" + ], + "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", + "strip_version": "1.9.23-1.0.20" + } + }, + "com_github_pinterest_ktlint": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": { + "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_kotlin~", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_perl~//perl:extensions.bzl%perl_repositories": { + "general": { + "bzlTransitiveDigest": "zKzjvlkMYt5ciDqNdVyTtZfAAPO39SuFy2B+xMqgTss=", + "usagesDigest": "tuJgAyNZD8Ewzr/MlAnnittbPMDC60XQF8aGrsjU+nY=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "perl_darwin_arm64": { + "bzlFile": "@@rules_perl~//perl:repo.bzl", + "ruleClassName": "perl_download", + "attributes": { + "strip_prefix": "perl-darwin-arm64", + "sha256": "285769f3c50c339fb59a3987b216ae3c5c573b95babe6875a1ef56fb178433da", + "urls": [ + "https://github.com/skaji/relocatable-perl/releases/download/5.36.0.1/perl-darwin-arm64.tar.xz" + ] + } + }, + "perl_darwin_amd64": { + "bzlFile": "@@rules_perl~//perl:repo.bzl", + "ruleClassName": "perl_download", + "attributes": { + "strip_prefix": "perl-darwin-amd64", + "sha256": "63bc5ee36f5394d71c50cca6cafdd333ee58f9eaa40bca63c85f9bd06f2c1fd6", + "urls": [ + "https://github.com/skaji/relocatable-perl/releases/download/5.36.0.1/perl-darwin-amd64.tar.xz" + ] + } + }, + "perl_linux_amd64": { + "bzlFile": "@@rules_perl~//perl:repo.bzl", + "ruleClassName": "perl_download", + "attributes": { + "strip_prefix": "perl-linux-amd64", + "sha256": "3bdffa9d7a3f97c0207314637b260ba5115b1d0829f97e3e2e301191a4d4d076", + "urls": [ + "https://github.com/skaji/relocatable-perl/releases/download/5.36.0.1/perl-linux-amd64.tar.xz" + ] + } + }, + "perl_linux_arm64": { + "bzlFile": "@@rules_perl~//perl:repo.bzl", + "ruleClassName": "perl_download", + "attributes": { + "strip_prefix": "perl-linux-arm64", + "sha256": "6fa4ece99e790ecbc2861f6ecb7b52694c01c2eeb215b4370f16a3b12d952117", + "urls": [ + "https://github.com/skaji/relocatable-perl/releases/download/5.36.0.1/perl-linux-arm64.tar.xz" + ] + } + }, + "perl_windows_x86_64": { + "bzlFile": "@@rules_perl~//perl:repo.bzl", + "ruleClassName": "perl_download", + "attributes": { + "strip_prefix": "", + "sha256": "aeb973da474f14210d3e1a1f942dcf779e2ae7e71e4c535e6c53ebabe632cc98", + "urls": [ + "https://mirror.bazel.build/strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit.zip", + "https://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_perl~", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_perl~", + "rules_perl", + "rules_perl~" + ] + ] + } + }, + "@@rules_python~//python/extensions:pip.bzl%pip": { + "general": { + "bzlTransitiveDigest": "WR+uUsh3p9y3o7GmRP0iYebUQxKWbZfiV2HtwcTvS6w=", + "usagesDigest": "vPCjYGbmsUtmg1HKnQvp/fnB0iez3h54gbvBCQr75cw=", + "recordedFileInputs": { + "@@rules_python~//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", + "@@protoc-gen-validate~//python/requirements.txt": "519d7dac0ff11c4a855aaef022dc2998ece0669db3b481cdb9e5a5d88e57eb83", + "@@rules_fuzzing~//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", + "@@privacy_sandbox_coordinator_services_and_shared_libraries~//python/privacybudget/gcp/operator_onboarding/requirements.txt": "cff68205e5858f2843371ae61d810cc1209fc045ef505aa84930474f8170d079", + "@@privacy_sandbox_coordinator_services_and_shared_libraries~//python/privacybudget/aws/pbs_identities_migration/requirements.txt": "86026e43fe8cbb6f4907d0e93df12803d6622b1f4ad2f93b91466a9390640424", + "@@grpc~//requirements.bazel.txt": "4c8c19a2a8f22108bf29feb5cc2694eb0c7e0c82ba0364df27fe5f5e4d7936e5", + "@@privacy_sandbox_coordinator_services_and_shared_libraries~//python/privacybudget/gcp/pbs_auth_handler/config/test_requirements.txt": "49d948b725a5dadb343f52bf6d6bddfaf1c3bbcc61c64a6060995dd247165549", + "@@privacy_sandbox_coordinator_services_and_shared_libraries~//python/privacybudget/aws/pbs_synthetic/requirements.txt": "d6044182310142a655da9460a12e6c847e62ef0ba21131d4ec19e612c6fbbad6", + "@@rules_python~//tools/publish/requirements_windows.txt": "d18538a3982beab378fd5687f4db33162ee1ece69801f9a451661b1b64286b76", + "@@privacy_sandbox_coordinator_services_and_shared_libraries~//python/privacybudget/aws/pbs_auth_handler/requirements.txt": "86026e43fe8cbb6f4907d0e93df12803d6622b1f4ad2f93b91466a9390640424", + "@@privacy_sandbox_coordinator_services_and_shared_libraries~//python/mpkhs/aws/privatekey_synthetic/requirements.txt": "d6044182310142a655da9460a12e6c847e62ef0ba21131d4ec19e612c6fbbad6", + "@@protobuf~//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", + "@@rules_python~//tools/publish/requirements_darwin.txt": "095d4a4f3d639dce831cd493367631cd51b53665292ab20194bac2c0c6458fa8" + }, + "recordedDirentsInputs": {}, + "envVariables": { + "RULES_PYTHON_REPO_DEBUG": null, + "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null + }, + "generatedRepoSpecs": { + "grpc_python_dependencies_310_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "absl-py==1.4.0" + } + }, + "grpc_python_dependencies_310_cachetools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "cachetools==5.3.2" + } + }, + "grpc_python_dependencies_310_certifi": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "certifi==2023.7.22" + } + }, + "grpc_python_dependencies_310_chardet": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "chardet==3.0.4" + } + }, + "grpc_python_dependencies_310_charset_normalizer": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "charset-normalizer==3.3.2" + } + }, + "grpc_python_dependencies_310_coverage": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "coverage==4.5.4" + } + }, + "grpc_python_dependencies_310_cython": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "cython==3.0.0" + } + }, + "grpc_python_dependencies_310_deprecated": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "Deprecated==1.2.14" + } + }, + "grpc_python_dependencies_310_gevent": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "gevent==22.08.0" + } + }, + "grpc_python_dependencies_310_google_api_core": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "google-api-core==1.34.1" + } + }, + "grpc_python_dependencies_310_google_auth": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "google-auth==2.23.4" + } + }, + "grpc_python_dependencies_310_google_cloud_monitoring": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "google-cloud-monitoring==2.16.0" + } + }, + "grpc_python_dependencies_310_google_cloud_trace": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "google-cloud-trace==1.11.3" + } + }, + "grpc_python_dependencies_310_googleapis_common_protos": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "googleapis-common-protos==1.63.1" + } + }, + "grpc_python_dependencies_310_greenlet": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "greenlet==1.1.3.post0" + } + }, + "grpc_python_dependencies_310_idna": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "idna==2.7" + } + }, + "grpc_python_dependencies_310_importlib_metadata": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "importlib-metadata==6.11.0" + } + }, + "grpc_python_dependencies_310_oauth2client": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "oauth2client==4.1.0" + } + }, + "grpc_python_dependencies_310_opencensus_context": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "opencensus-context==0.1.3" + } + }, + "grpc_python_dependencies_310_opentelemetry_api": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "opentelemetry-api==1.25.0" + } + }, + "grpc_python_dependencies_310_opentelemetry_exporter_prometheus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "opentelemetry-exporter-prometheus==0.46b0" + } + }, + "grpc_python_dependencies_310_opentelemetry_resourcedetector_gcp": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "opentelemetry-resourcedetector-gcp==1.6.0a0" + } + }, + "grpc_python_dependencies_310_opentelemetry_sdk": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "opentelemetry-sdk==1.25.0" + } + }, + "grpc_python_dependencies_310_opentelemetry_semantic_conventions": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "opentelemetry-semantic-conventions==0.46b0" + } + }, + "grpc_python_dependencies_310_prometheus_client": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "prometheus_client==0.20.0" + } + }, + "grpc_python_dependencies_310_proto_plus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "proto-plus==1.22.3" + } + }, + "grpc_python_dependencies_310_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "protobuf>=5.27.1,<6.0dev" + } + }, + "grpc_python_dependencies_310_pyasn1": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "pyasn1==0.5.0" + } + }, + "grpc_python_dependencies_310_pyasn1_modules": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "pyasn1-modules==0.3.0" + } + }, + "grpc_python_dependencies_310_requests": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "requests==2.25.1" + } + }, + "grpc_python_dependencies_310_rsa": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "rsa==4.9" + } + }, + "grpc_python_dependencies_310_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "setuptools==44.1.1" + } + }, + "grpc_python_dependencies_310_typing_extensions": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "typing-extensions==4.9.0" + } + }, + "grpc_python_dependencies_310_urllib3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "urllib3==1.26.18" + } + }, + "grpc_python_dependencies_310_wheel": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "wheel==0.38.1" + } + }, + "grpc_python_dependencies_310_wrapt": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "wrapt==1.16.0" + } + }, + "grpc_python_dependencies_310_zipp": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "zipp==3.17.0" + } + }, + "grpc_python_dependencies_310_zope_event": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "zope.event==4.5.0" + } + }, + "grpc_python_dependencies_310_zope_interface": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "grpc_python_dependencies_310", + "requirement": "zope.interface==6.1" + } + }, + "grpc_python_dependencies_311_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "absl-py==1.4.0" + } + }, + "grpc_python_dependencies_311_cachetools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "cachetools==5.3.2" + } + }, + "grpc_python_dependencies_311_certifi": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "certifi==2023.7.22" + } + }, + "grpc_python_dependencies_311_chardet": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "chardet==3.0.4" + } + }, + "grpc_python_dependencies_311_charset_normalizer": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "charset-normalizer==3.3.2" + } + }, + "grpc_python_dependencies_311_coverage": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "coverage==4.5.4" + } + }, + "grpc_python_dependencies_311_cython": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "cython==3.0.0" + } + }, + "grpc_python_dependencies_311_deprecated": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "Deprecated==1.2.14" + } + }, + "grpc_python_dependencies_311_gevent": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "gevent==22.08.0" + } + }, + "grpc_python_dependencies_311_google_api_core": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "google-api-core==1.34.1" + } + }, + "grpc_python_dependencies_311_google_auth": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "google-auth==2.23.4" + } + }, + "grpc_python_dependencies_311_google_cloud_monitoring": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "google-cloud-monitoring==2.16.0" + } + }, + "grpc_python_dependencies_311_google_cloud_trace": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "google-cloud-trace==1.11.3" + } + }, + "grpc_python_dependencies_311_googleapis_common_protos": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "googleapis-common-protos==1.63.1" + } + }, + "grpc_python_dependencies_311_greenlet": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "greenlet==1.1.3.post0" + } + }, + "grpc_python_dependencies_311_idna": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "idna==2.7" + } + }, + "grpc_python_dependencies_311_importlib_metadata": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "importlib-metadata==6.11.0" + } + }, + "grpc_python_dependencies_311_oauth2client": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "oauth2client==4.1.0" + } + }, + "grpc_python_dependencies_311_opencensus_context": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "opencensus-context==0.1.3" + } + }, + "grpc_python_dependencies_311_opentelemetry_api": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "opentelemetry-api==1.25.0" + } + }, + "grpc_python_dependencies_311_opentelemetry_exporter_prometheus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "opentelemetry-exporter-prometheus==0.46b0" + } + }, + "grpc_python_dependencies_311_opentelemetry_resourcedetector_gcp": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "opentelemetry-resourcedetector-gcp==1.6.0a0" + } + }, + "grpc_python_dependencies_311_opentelemetry_sdk": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "opentelemetry-sdk==1.25.0" + } + }, + "grpc_python_dependencies_311_opentelemetry_semantic_conventions": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "opentelemetry-semantic-conventions==0.46b0" + } + }, + "grpc_python_dependencies_311_prometheus_client": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "prometheus_client==0.20.0" + } + }, + "grpc_python_dependencies_311_proto_plus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "proto-plus==1.22.3" + } + }, + "grpc_python_dependencies_311_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "protobuf>=5.27.1,<6.0dev" + } + }, + "grpc_python_dependencies_311_pyasn1": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "pyasn1==0.5.0" + } + }, + "grpc_python_dependencies_311_pyasn1_modules": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "pyasn1-modules==0.3.0" + } + }, + "grpc_python_dependencies_311_requests": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "requests==2.25.1" + } + }, + "grpc_python_dependencies_311_rsa": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "rsa==4.9" + } + }, + "grpc_python_dependencies_311_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "setuptools==44.1.1" + } + }, + "grpc_python_dependencies_311_typing_extensions": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "typing-extensions==4.9.0" + } + }, + "grpc_python_dependencies_311_urllib3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "urllib3==1.26.18" + } + }, + "grpc_python_dependencies_311_wheel": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "wheel==0.38.1" + } + }, + "grpc_python_dependencies_311_wrapt": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "wrapt==1.16.0" + } + }, + "grpc_python_dependencies_311_zipp": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "zipp==3.17.0" + } + }, + "grpc_python_dependencies_311_zope_event": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "zope.event==4.5.0" + } + }, + "grpc_python_dependencies_311_zope_interface": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "grpc_python_dependencies_311", + "requirement": "zope.interface==6.1" + } + }, + "grpc_python_dependencies_312_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "absl-py==1.4.0" + } + }, + "grpc_python_dependencies_312_cachetools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "cachetools==5.3.2" + } + }, + "grpc_python_dependencies_312_certifi": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "certifi==2023.7.22" + } + }, + "grpc_python_dependencies_312_chardet": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "chardet==3.0.4" + } + }, + "grpc_python_dependencies_312_charset_normalizer": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "charset-normalizer==3.3.2" + } + }, + "grpc_python_dependencies_312_coverage": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "coverage==4.5.4" + } + }, + "grpc_python_dependencies_312_cython": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "cython==3.0.0" + } + }, + "grpc_python_dependencies_312_deprecated": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "Deprecated==1.2.14" + } + }, + "grpc_python_dependencies_312_gevent": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "gevent==22.08.0" + } + }, + "grpc_python_dependencies_312_google_api_core": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "google-api-core==1.34.1" + } + }, + "grpc_python_dependencies_312_google_auth": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "google-auth==2.23.4" + } + }, + "grpc_python_dependencies_312_google_cloud_monitoring": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "google-cloud-monitoring==2.16.0" + } + }, + "grpc_python_dependencies_312_google_cloud_trace": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "google-cloud-trace==1.11.3" + } + }, + "grpc_python_dependencies_312_googleapis_common_protos": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "googleapis-common-protos==1.63.1" + } + }, + "grpc_python_dependencies_312_greenlet": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "greenlet==1.1.3.post0" + } + }, + "grpc_python_dependencies_312_idna": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "idna==2.7" + } + }, + "grpc_python_dependencies_312_importlib_metadata": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "importlib-metadata==6.11.0" + } + }, + "grpc_python_dependencies_312_oauth2client": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "oauth2client==4.1.0" + } + }, + "grpc_python_dependencies_312_opencensus_context": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "opencensus-context==0.1.3" + } + }, + "grpc_python_dependencies_312_opentelemetry_api": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "opentelemetry-api==1.25.0" + } + }, + "grpc_python_dependencies_312_opentelemetry_exporter_prometheus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "opentelemetry-exporter-prometheus==0.46b0" + } + }, + "grpc_python_dependencies_312_opentelemetry_resourcedetector_gcp": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "opentelemetry-resourcedetector-gcp==1.6.0a0" + } + }, + "grpc_python_dependencies_312_opentelemetry_sdk": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "opentelemetry-sdk==1.25.0" + } + }, + "grpc_python_dependencies_312_opentelemetry_semantic_conventions": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "opentelemetry-semantic-conventions==0.46b0" + } + }, + "grpc_python_dependencies_312_prometheus_client": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "prometheus_client==0.20.0" + } + }, + "grpc_python_dependencies_312_proto_plus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "proto-plus==1.22.3" + } + }, + "grpc_python_dependencies_312_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "protobuf>=5.27.1,<6.0dev" + } + }, + "grpc_python_dependencies_312_pyasn1": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "pyasn1==0.5.0" + } + }, + "grpc_python_dependencies_312_pyasn1_modules": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "pyasn1-modules==0.3.0" + } + }, + "grpc_python_dependencies_312_requests": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "requests==2.25.1" + } + }, + "grpc_python_dependencies_312_rsa": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "rsa==4.9" + } + }, + "grpc_python_dependencies_312_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "setuptools==44.1.1" + } + }, + "grpc_python_dependencies_312_typing_extensions": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "typing-extensions==4.9.0" + } + }, + "grpc_python_dependencies_312_urllib3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "urllib3==1.26.18" + } + }, + "grpc_python_dependencies_312_wheel": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "wheel==0.38.1" + } + }, + "grpc_python_dependencies_312_wrapt": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "wrapt==1.16.0" + } + }, + "grpc_python_dependencies_312_zipp": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "zipp==3.17.0" + } + }, + "grpc_python_dependencies_312_zope_event": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "zope.event==4.5.0" + } + }, + "grpc_python_dependencies_312_zope_interface": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "grpc_python_dependencies_312", + "requirement": "zope.interface==6.1" + } + }, + "grpc_python_dependencies_313_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "absl-py==1.4.0" + } + }, + "grpc_python_dependencies_313_cachetools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "cachetools==5.3.2" + } + }, + "grpc_python_dependencies_313_certifi": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "certifi==2023.7.22" + } + }, + "grpc_python_dependencies_313_chardet": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "chardet==3.0.4" + } + }, + "grpc_python_dependencies_313_charset_normalizer": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "charset-normalizer==3.3.2" + } + }, + "grpc_python_dependencies_313_coverage": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "coverage==4.5.4" + } + }, + "grpc_python_dependencies_313_cython": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "cython==3.0.0" + } + }, + "grpc_python_dependencies_313_deprecated": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "Deprecated==1.2.14" + } + }, + "grpc_python_dependencies_313_gevent": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "gevent==22.08.0" + } + }, + "grpc_python_dependencies_313_google_api_core": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "google-api-core==1.34.1" + } + }, + "grpc_python_dependencies_313_google_auth": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "google-auth==2.23.4" + } + }, + "grpc_python_dependencies_313_google_cloud_monitoring": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "google-cloud-monitoring==2.16.0" + } + }, + "grpc_python_dependencies_313_google_cloud_trace": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "google-cloud-trace==1.11.3" + } + }, + "grpc_python_dependencies_313_googleapis_common_protos": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "googleapis-common-protos==1.63.1" + } + }, + "grpc_python_dependencies_313_greenlet": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "greenlet==1.1.3.post0" + } + }, + "grpc_python_dependencies_313_idna": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "idna==2.7" + } + }, + "grpc_python_dependencies_313_importlib_metadata": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "importlib-metadata==6.11.0" + } + }, + "grpc_python_dependencies_313_oauth2client": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "oauth2client==4.1.0" + } + }, + "grpc_python_dependencies_313_opencensus_context": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "opencensus-context==0.1.3" + } + }, + "grpc_python_dependencies_313_opentelemetry_api": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "opentelemetry-api==1.25.0" + } + }, + "grpc_python_dependencies_313_opentelemetry_exporter_prometheus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "opentelemetry-exporter-prometheus==0.46b0" + } + }, + "grpc_python_dependencies_313_opentelemetry_resourcedetector_gcp": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "opentelemetry-resourcedetector-gcp==1.6.0a0" + } + }, + "grpc_python_dependencies_313_opentelemetry_sdk": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "opentelemetry-sdk==1.25.0" + } + }, + "grpc_python_dependencies_313_opentelemetry_semantic_conventions": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "opentelemetry-semantic-conventions==0.46b0" + } + }, + "grpc_python_dependencies_313_prometheus_client": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "prometheus_client==0.20.0" + } + }, + "grpc_python_dependencies_313_proto_plus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "proto-plus==1.22.3" + } + }, + "grpc_python_dependencies_313_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "protobuf>=5.27.1,<6.0dev" + } + }, + "grpc_python_dependencies_313_pyasn1": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "pyasn1==0.5.0" + } + }, + "grpc_python_dependencies_313_pyasn1_modules": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "pyasn1-modules==0.3.0" + } + }, + "grpc_python_dependencies_313_requests": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "requests==2.25.1" + } + }, + "grpc_python_dependencies_313_rsa": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "rsa==4.9" + } + }, + "grpc_python_dependencies_313_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "setuptools==44.1.1" + } + }, + "grpc_python_dependencies_313_typing_extensions": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "typing-extensions==4.9.0" + } + }, + "grpc_python_dependencies_313_urllib3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "urllib3==1.26.18" + } + }, + "grpc_python_dependencies_313_wheel": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "wheel==0.38.1" + } + }, + "grpc_python_dependencies_313_wrapt": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "wrapt==1.16.0" + } + }, + "grpc_python_dependencies_313_zipp": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "zipp==3.17.0" + } + }, + "grpc_python_dependencies_313_zope_event": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "zope.event==4.5.0" + } + }, + "grpc_python_dependencies_313_zope_interface": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "grpc_python_dependencies_313", + "requirement": "zope.interface==6.1" + } + }, + "grpc_python_dependencies_39_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "absl-py==1.4.0" + } + }, + "grpc_python_dependencies_39_cachetools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "cachetools==5.3.2" + } + }, + "grpc_python_dependencies_39_certifi": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "certifi==2023.7.22" + } + }, + "grpc_python_dependencies_39_chardet": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "chardet==3.0.4" + } + }, + "grpc_python_dependencies_39_charset_normalizer": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "charset-normalizer==3.3.2" + } + }, + "grpc_python_dependencies_39_coverage": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "coverage==4.5.4" + } + }, + "grpc_python_dependencies_39_cython": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "cython==3.0.0" + } + }, + "grpc_python_dependencies_39_deprecated": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "Deprecated==1.2.14" + } + }, + "grpc_python_dependencies_39_gevent": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "gevent==22.08.0" + } + }, + "grpc_python_dependencies_39_google_api_core": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "google-api-core==1.34.1" + } + }, + "grpc_python_dependencies_39_google_auth": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "google-auth==2.23.4" + } + }, + "grpc_python_dependencies_39_google_cloud_monitoring": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "google-cloud-monitoring==2.16.0" + } + }, + "grpc_python_dependencies_39_google_cloud_trace": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "google-cloud-trace==1.11.3" + } + }, + "grpc_python_dependencies_39_googleapis_common_protos": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "googleapis-common-protos==1.63.1" + } + }, + "grpc_python_dependencies_39_greenlet": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "greenlet==1.1.3.post0" + } + }, + "grpc_python_dependencies_39_idna": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "idna==2.7" + } + }, + "grpc_python_dependencies_39_importlib_metadata": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "importlib-metadata==6.11.0" + } + }, + "grpc_python_dependencies_39_oauth2client": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "oauth2client==4.1.0" + } + }, + "grpc_python_dependencies_39_opencensus_context": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "opencensus-context==0.1.3" + } + }, + "grpc_python_dependencies_39_opentelemetry_api": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "opentelemetry-api==1.25.0" + } + }, + "grpc_python_dependencies_39_opentelemetry_exporter_prometheus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "opentelemetry-exporter-prometheus==0.46b0" + } + }, + "grpc_python_dependencies_39_opentelemetry_resourcedetector_gcp": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "opentelemetry-resourcedetector-gcp==1.6.0a0" + } + }, + "grpc_python_dependencies_39_opentelemetry_sdk": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "opentelemetry-sdk==1.25.0" + } + }, + "grpc_python_dependencies_39_opentelemetry_semantic_conventions": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "opentelemetry-semantic-conventions==0.46b0" + } + }, + "grpc_python_dependencies_39_prometheus_client": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "prometheus_client==0.20.0" + } + }, + "grpc_python_dependencies_39_proto_plus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "proto-plus==1.22.3" + } + }, + "grpc_python_dependencies_39_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "protobuf>=5.27.1,<6.0dev" + } + }, + "grpc_python_dependencies_39_pyasn1": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "pyasn1==0.5.0" + } + }, + "grpc_python_dependencies_39_pyasn1_modules": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "pyasn1-modules==0.3.0" + } + }, + "grpc_python_dependencies_39_requests": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "requests==2.25.1" + } + }, + "grpc_python_dependencies_39_rsa": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "rsa==4.9" + } + }, + "grpc_python_dependencies_39_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "setuptools==44.1.1" + } + }, + "grpc_python_dependencies_39_typing_extensions": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "typing-extensions==4.9.0" + } + }, + "grpc_python_dependencies_39_urllib3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "urllib3==1.26.18" + } + }, + "grpc_python_dependencies_39_wheel": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "wheel==0.38.1" + } + }, + "grpc_python_dependencies_39_wrapt": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "wrapt==1.16.0" + } + }, + "grpc_python_dependencies_39_zipp": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "zipp==3.17.0" + } + }, + "grpc_python_dependencies_39_zope_event": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "zope.event==4.5.0" + } + }, + "grpc_python_dependencies_39_zope_interface": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@grpc_python_dependencies//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "grpc_python_dependencies_39", + "requirement": "zope.interface==6.1" + } + }, + "pgv_pip_deps_310_astunparse": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pgv_pip_deps_310", + "requirement": "astunparse==1.6.3" + } + }, + "pgv_pip_deps_310_jinja2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pgv_pip_deps_310", + "requirement": "jinja2==3.1.3" + } + }, + "pgv_pip_deps_310_markupsafe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pgv_pip_deps_310", + "requirement": "markupsafe==2.1.5" + } + }, + "pgv_pip_deps_310_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pgv_pip_deps_310", + "requirement": "protobuf==5.26.0" + } + }, + "pgv_pip_deps_310_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pgv_pip_deps_310", + "requirement": "six==1.16.0" + } + }, + "pgv_pip_deps_310_validate_email": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pgv_pip_deps_310", + "requirement": "validate-email==1.3" + } + }, + "pgv_pip_deps_310_wheel": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pgv_pip_deps_310", + "requirement": "wheel==0.43.0" + } + }, + "pgv_pip_deps_311_astunparse": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pgv_pip_deps_311", + "requirement": "astunparse==1.6.3" + } + }, + "pgv_pip_deps_311_jinja2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pgv_pip_deps_311", + "requirement": "jinja2==3.1.3" + } + }, + "pgv_pip_deps_311_markupsafe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pgv_pip_deps_311", + "requirement": "markupsafe==2.1.5" + } + }, + "pgv_pip_deps_311_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pgv_pip_deps_311", + "requirement": "protobuf==5.26.0" + } + }, + "pgv_pip_deps_311_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pgv_pip_deps_311", + "requirement": "six==1.16.0" + } + }, + "pgv_pip_deps_311_validate_email": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pgv_pip_deps_311", + "requirement": "validate-email==1.3" + } + }, + "pgv_pip_deps_311_wheel": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pgv_pip_deps_311", + "requirement": "wheel==0.43.0" + } + }, + "pgv_pip_deps_312_astunparse": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pgv_pip_deps_312", + "requirement": "astunparse==1.6.3" + } + }, + "pgv_pip_deps_312_jinja2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pgv_pip_deps_312", + "requirement": "jinja2==3.1.3" + } + }, + "pgv_pip_deps_312_markupsafe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pgv_pip_deps_312", + "requirement": "markupsafe==2.1.5" + } + }, + "pgv_pip_deps_312_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pgv_pip_deps_312", + "requirement": "protobuf==5.26.0" + } + }, + "pgv_pip_deps_312_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pgv_pip_deps_312", + "requirement": "six==1.16.0" + } + }, + "pgv_pip_deps_312_validate_email": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pgv_pip_deps_312", + "requirement": "validate-email==1.3" + } + }, + "pgv_pip_deps_312_wheel": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pgv_pip_deps_312", + "requirement": "wheel==0.43.0" + } + }, + "pgv_pip_deps_313_astunparse": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "pgv_pip_deps_313", + "requirement": "astunparse==1.6.3" + } + }, + "pgv_pip_deps_313_jinja2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "pgv_pip_deps_313", + "requirement": "jinja2==3.1.3" + } + }, + "pgv_pip_deps_313_markupsafe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "pgv_pip_deps_313", + "requirement": "markupsafe==2.1.5" + } + }, + "pgv_pip_deps_313_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "pgv_pip_deps_313", + "requirement": "protobuf==5.26.0" + } + }, + "pgv_pip_deps_313_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "pgv_pip_deps_313", + "requirement": "six==1.16.0" + } + }, + "pgv_pip_deps_313_validate_email": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "pgv_pip_deps_313", + "requirement": "validate-email==1.3" + } + }, + "pgv_pip_deps_313_wheel": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_13_host//:python", + "repo": "pgv_pip_deps_313", + "requirement": "wheel==0.43.0" + } + }, + "pgv_pip_deps_39_astunparse": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pgv_pip_deps_39", + "requirement": "astunparse==1.6.3" + } + }, + "pgv_pip_deps_39_jinja2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pgv_pip_deps_39", + "requirement": "jinja2==3.1.3" + } + }, + "pgv_pip_deps_39_markupsafe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pgv_pip_deps_39", + "requirement": "markupsafe==2.1.5" + } + }, + "pgv_pip_deps_39_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pgv_pip_deps_39", + "requirement": "protobuf==5.26.0" + } + }, + "pgv_pip_deps_39_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pgv_pip_deps_39", + "requirement": "six==1.16.0" + } + }, + "pgv_pip_deps_39_validate_email": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pgv_pip_deps_39", + "requirement": "validate-email==1.3" + } + }, + "pgv_pip_deps_39_wheel": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pgv_pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pgv_pip_deps_39", + "requirement": "wheel==0.43.0" + } + }, + "pip_deps_310_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_310_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_311_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_311_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_312_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_312_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_38_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_38_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_39_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_39_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "setuptools<=70.3.0" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_aws_requests_auth": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "aws_requests_auth==0.4.3" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_awscrt": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "awscrt==0.16.16" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_certifi": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "certifi==2022.12.7" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_charset_normalizer": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "charset-normalizer==3.0.1" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_h2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "h2==2.6.2" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_hpack": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "hpack==3.0.0" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_hyper": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "hyper==0.7.0" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_hyperframe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "hyperframe==3.2.0" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_idna": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "idna==3.6" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_requests": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "requests==2.28.2" + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps_38_urllib3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_mpkhs_aws_privatekey_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_mpkhs_aws_privatekey_synthetic_deps_38", + "requirement": "urllib3==1.26.14" + } + }, + "py3_privacybudget_aws_pbs_auth_handler_deps_38_publicsuffixlist": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_auth_handler_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_auth_handler_deps_38", + "requirement": "publicsuffixlist==0.10.*" + } + }, + "py3_privacybudget_aws_pbs_identities_migration_deps_38_publicsuffixlist": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_identities_migration_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_identities_migration_deps_38", + "requirement": "publicsuffixlist==0.10.*" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_aws_requests_auth": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "aws_requests_auth==0.4.3" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_awscrt": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "awscrt==0.16.16" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_certifi": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "certifi==2022.12.7" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_charset_normalizer": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "charset-normalizer==3.0.1" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_h2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "h2==2.6.2" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_hpack": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "hpack==3.0.0" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_hyper": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "hyper==0.7.0" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_hyperframe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "hyperframe==3.2.0" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_idna": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "idna==3.6" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_requests": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "requests==2.28.2" + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps_38_urllib3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_aws_pbs_synthetic_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_aws_pbs_synthetic_deps_38", + "requirement": "urllib3==1.26.14" + } + }, + "py3_privacybudget_gcp_operator_onboarding_deps_38_google_cloud_spanner": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_operator_onboarding_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_operator_onboarding_deps_38", + "requirement": "google-cloud-spanner==3.26.0" + } + }, + "py3_privacybudget_gcp_operator_onboarding_deps_38_google_cloud_storage": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_operator_onboarding_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_operator_onboarding_deps_38", + "requirement": "google-cloud-storage==2.7.0" + } + }, + "py3_privacybudget_gcp_operator_onboarding_deps_38_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_operator_onboarding_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_operator_onboarding_deps_38", + "requirement": "numpy==1.24.4" + } + }, + "py3_privacybudget_gcp_operator_onboarding_deps_38_pandas": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_operator_onboarding_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_operator_onboarding_deps_38", + "requirement": "pandas==1.5.2" + } + }, + "py3_privacybudget_gcp_operator_onboarding_deps_38_python_dateutil": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_operator_onboarding_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_operator_onboarding_deps_38", + "requirement": "python-dateutil==2.9.0" + } + }, + "py3_privacybudget_gcp_operator_onboarding_deps_38_pytz": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_operator_onboarding_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_operator_onboarding_deps_38", + "requirement": "pytz==2024.2" + } + }, + "py3_privacybudget_gcp_operator_onboarding_deps_38_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_operator_onboarding_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_operator_onboarding_deps_38", + "requirement": "six==1.17.0" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_cachetools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "cachetools==5.5.1" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_certifi": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "certifi==2024.12.14" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_charset_normalizer": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "charset-normalizer==3.4.1" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_google_api_core": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "google-api-core==2.19.1" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_google_auth": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "google-auth==2.37.0" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_googleapis_common_protos": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "googleapis-common-protos==1.66.0" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_idna": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "idna==3.10" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_proto_plus": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "proto-plus==1.25.0" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_protobuf": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "protobuf==5.29.3" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_publicsuffixlist": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "publicsuffixlist==0.10.*" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_pyasn1": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "pyasn1==0.6.1" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_pyasn1_modules": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "pyasn1-modules==0.4.1" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_requests": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "requests==2.32.3" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_rsa": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "rsa==4.9" + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_urllib3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@py3_privacybudget_gcp_pbs_auth_handler_test_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "py3_privacybudget_gcp_pbs_auth_handler_test_deps_38", + "requirement": "urllib3==2.2.3" + } + }, + "rules_fuzzing_py_deps_310_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_310_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_311_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_311_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_312_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_312_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_38_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_38_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_39_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_39_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "backports.tarfile-1.2.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", + "urls": [ + "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "backports_tarfile-1.2.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", + "urls": [ + "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "certifi-2024.8.30-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "urls": [ + "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_certifi_sdist_bec941d2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "certifi-2024.8.30.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", + "urls": [ + "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", + "urls": [ + "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", + "urls": [ + "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", + "urls": [ + "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", + "urls": [ + "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", + "urls": [ + "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", + "urls": [ + "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_sdist_1c39c601": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cffi-1.17.1.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", + "urls": [ + "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "urls": [ + "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "urls": [ + "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "urls": [ + "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "urls": [ + "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", + "urls": [ + "https://files.pythonhosted.org/packages/e2/29/d227805bff72ed6d6cb1ce08eec707f7cfbd9868044893617eb331f16295/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "urls": [ + "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "urls": [ + "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "urls": [ + "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", + "urls": [ + "https://files.pythonhosted.org/packages/75/d2/0ab54463d3410709c09266dfb416d032a08f97fd7d60e94b8c6ef54ae14b/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "urls": [ + "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "urls": [ + "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "urls": [ + "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "urls": [ + "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "charset_normalizer-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "urls": [ + "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", + "urls": [ + "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", + "urls": [ + "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", + "urls": [ + "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", + "urls": [ + "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", + "urls": [ + "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", + "urls": [ + "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_sdist_315b9001": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cryptography-43.0.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", + "urls": [ + "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "docutils-0.21.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", + "urls": [ + "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "docutils-0.21.2.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", + "urls": [ + "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "idna-3.10-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", + "urls": [ + "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_idna_sdist_12f65c9b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "idna-3.10.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "urls": [ + "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "importlib_metadata-8.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", + "urls": [ + "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "importlib_metadata-8.5.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", + "urls": [ + "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.classes-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", + "urls": [ + "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco.classes-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", + "urls": [ + "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.context-6.0.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", + "urls": [ + "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_context-6.0.1.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", + "urls": [ + "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.functools-4.1.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", + "urls": [ + "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_functools-4.1.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", + "urls": [ + "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "jeepney-0.8.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", + "urls": [ + "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jeepney-0.8.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", + "urls": [ + "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "keyring-25.4.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", + "urls": [ + "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "keyring-25.4.1.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", + "urls": [ + "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "markdown_it_py-3.0.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", + "urls": [ + "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "markdown-it-py-3.0.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", + "urls": [ + "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "mdurl-0.1.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", + "urls": [ + "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "mdurl-0.1.2.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", + "urls": [ + "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "more_itertools-10.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", + "urls": [ + "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "more-itertools-10.5.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", + "urls": [ + "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", + "urls": [ + "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", + "urls": [ + "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", + "urls": [ + "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", + "urls": [ + "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", + "urls": [ + "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "34c03fa78e328c691f982b7c03d4423bdfd7da69cd707fe572f544cf74ac23ad", + "urls": [ + "https://files.pythonhosted.org/packages/ab/a7/375afcc710dbe2d64cfbd69e31f82f3e423d43737258af01f6a56d844085/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", + "urls": [ + "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", + "urls": [ + "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", + "urls": [ + "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", + "urls": [ + "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", + "urls": [ + "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", + "urls": [ + "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_sdist_94a16692": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "nh3-0.2.18.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", + "urls": [ + "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pkginfo-1.10.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", + "urls": [ + "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pkginfo-1.10.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", + "urls": [ + "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "pycparser-2.22-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", + "urls": [ + "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pycparser-2.22.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", + "urls": [ + "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pygments-2.18.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", + "urls": [ + "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pygments_sdist_786ff802": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pygments-2.18.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", + "urls": [ + "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", + "urls": [ + "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pywin32-ctypes-0.2.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", + "urls": [ + "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "readme_renderer-44.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", + "urls": [ + "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "readme_renderer-44.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", + "urls": [ + "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests-2.32.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", + "urls": [ + "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_sdist_55365417": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-2.32.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", + "urls": [ + "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", + "urls": [ + "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-toolbelt-1.0.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", + "urls": [ + "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", + "urls": [ + "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rfc3986-2.0.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", + "urls": [ + "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rich_py3_none_any_6049d5e6": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rich-13.9.4-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.4", + "sha256": "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", + "urls": [ + "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rich_sdist_43959497": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rich-13.9.4.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.4", + "sha256": "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", + "urls": [ + "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "SecretStorage-3.3.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", + "urls": [ + "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "SecretStorage-3.3.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", + "urls": [ + "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "twine-5.1.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", + "urls": [ + "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_twine_sdist_9aa08251": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "twine-5.1.1.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", + "urls": [ + "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "urllib3-2.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "urls": [ + "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "urllib3-2.2.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", + "urls": [ + "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "zipp-3.20.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", + "urls": [ + "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "zipp-3.20.2.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", + "urls": [ + "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" + ] + } + }, + "grpc_python_dependencies": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "grpc_python_dependencies", + "extra_hub_aliases": {}, + "whl_map": { + "absl_py": "{\"grpc_python_dependencies_310_absl_py\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_absl_py\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_absl_py\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_absl_py\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_absl_py\":[{\"version\":\"3.9\"}]}", + "cachetools": "{\"grpc_python_dependencies_310_cachetools\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_cachetools\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_cachetools\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_cachetools\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_cachetools\":[{\"version\":\"3.9\"}]}", + "certifi": "{\"grpc_python_dependencies_310_certifi\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_certifi\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_certifi\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_certifi\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_certifi\":[{\"version\":\"3.9\"}]}", + "chardet": "{\"grpc_python_dependencies_310_chardet\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_chardet\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_chardet\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_chardet\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_chardet\":[{\"version\":\"3.9\"}]}", + "charset_normalizer": "{\"grpc_python_dependencies_310_charset_normalizer\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_charset_normalizer\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_charset_normalizer\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_charset_normalizer\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_charset_normalizer\":[{\"version\":\"3.9\"}]}", + "coverage": "{\"grpc_python_dependencies_310_coverage\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_coverage\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_coverage\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_coverage\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_coverage\":[{\"version\":\"3.9\"}]}", + "cython": "{\"grpc_python_dependencies_310_cython\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_cython\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_cython\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_cython\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_cython\":[{\"version\":\"3.9\"}]}", + "deprecated": "{\"grpc_python_dependencies_310_deprecated\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_deprecated\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_deprecated\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_deprecated\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_deprecated\":[{\"version\":\"3.9\"}]}", + "gevent": "{\"grpc_python_dependencies_310_gevent\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_gevent\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_gevent\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_gevent\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_gevent\":[{\"version\":\"3.9\"}]}", + "google_api_core": "{\"grpc_python_dependencies_310_google_api_core\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_google_api_core\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_google_api_core\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_google_api_core\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_google_api_core\":[{\"version\":\"3.9\"}]}", + "google_auth": "{\"grpc_python_dependencies_310_google_auth\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_google_auth\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_google_auth\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_google_auth\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_google_auth\":[{\"version\":\"3.9\"}]}", + "google_cloud_monitoring": "{\"grpc_python_dependencies_310_google_cloud_monitoring\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_google_cloud_monitoring\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_google_cloud_monitoring\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_google_cloud_monitoring\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_google_cloud_monitoring\":[{\"version\":\"3.9\"}]}", + "google_cloud_trace": "{\"grpc_python_dependencies_310_google_cloud_trace\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_google_cloud_trace\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_google_cloud_trace\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_google_cloud_trace\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_google_cloud_trace\":[{\"version\":\"3.9\"}]}", + "googleapis_common_protos": "{\"grpc_python_dependencies_310_googleapis_common_protos\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_googleapis_common_protos\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_googleapis_common_protos\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_googleapis_common_protos\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_googleapis_common_protos\":[{\"version\":\"3.9\"}]}", + "greenlet": "{\"grpc_python_dependencies_310_greenlet\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_greenlet\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_greenlet\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_greenlet\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_greenlet\":[{\"version\":\"3.9\"}]}", + "idna": "{\"grpc_python_dependencies_310_idna\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_idna\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_idna\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_idna\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_idna\":[{\"version\":\"3.9\"}]}", + "importlib_metadata": "{\"grpc_python_dependencies_310_importlib_metadata\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_importlib_metadata\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_importlib_metadata\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_importlib_metadata\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_importlib_metadata\":[{\"version\":\"3.9\"}]}", + "oauth2client": "{\"grpc_python_dependencies_310_oauth2client\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_oauth2client\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_oauth2client\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_oauth2client\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_oauth2client\":[{\"version\":\"3.9\"}]}", + "opencensus_context": "{\"grpc_python_dependencies_310_opencensus_context\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_opencensus_context\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_opencensus_context\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_opencensus_context\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_opencensus_context\":[{\"version\":\"3.9\"}]}", + "opentelemetry_api": "{\"grpc_python_dependencies_310_opentelemetry_api\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_opentelemetry_api\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_opentelemetry_api\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_opentelemetry_api\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_opentelemetry_api\":[{\"version\":\"3.9\"}]}", + "opentelemetry_exporter_prometheus": "{\"grpc_python_dependencies_310_opentelemetry_exporter_prometheus\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_opentelemetry_exporter_prometheus\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_opentelemetry_exporter_prometheus\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_opentelemetry_exporter_prometheus\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_opentelemetry_exporter_prometheus\":[{\"version\":\"3.9\"}]}", + "opentelemetry_resourcedetector_gcp": "{\"grpc_python_dependencies_310_opentelemetry_resourcedetector_gcp\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_opentelemetry_resourcedetector_gcp\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_opentelemetry_resourcedetector_gcp\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_opentelemetry_resourcedetector_gcp\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_opentelemetry_resourcedetector_gcp\":[{\"version\":\"3.9\"}]}", + "opentelemetry_sdk": "{\"grpc_python_dependencies_310_opentelemetry_sdk\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_opentelemetry_sdk\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_opentelemetry_sdk\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_opentelemetry_sdk\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_opentelemetry_sdk\":[{\"version\":\"3.9\"}]}", + "opentelemetry_semantic_conventions": "{\"grpc_python_dependencies_310_opentelemetry_semantic_conventions\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_opentelemetry_semantic_conventions\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_opentelemetry_semantic_conventions\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_opentelemetry_semantic_conventions\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_opentelemetry_semantic_conventions\":[{\"version\":\"3.9\"}]}", + "prometheus_client": "{\"grpc_python_dependencies_310_prometheus_client\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_prometheus_client\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_prometheus_client\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_prometheus_client\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_prometheus_client\":[{\"version\":\"3.9\"}]}", + "proto_plus": "{\"grpc_python_dependencies_310_proto_plus\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_proto_plus\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_proto_plus\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_proto_plus\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_proto_plus\":[{\"version\":\"3.9\"}]}", + "protobuf": "{\"grpc_python_dependencies_310_protobuf\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_protobuf\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_protobuf\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_protobuf\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_protobuf\":[{\"version\":\"3.9\"}]}", + "pyasn1": "{\"grpc_python_dependencies_310_pyasn1\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_pyasn1\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_pyasn1\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_pyasn1\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_pyasn1\":[{\"version\":\"3.9\"}]}", + "pyasn1_modules": "{\"grpc_python_dependencies_310_pyasn1_modules\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_pyasn1_modules\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_pyasn1_modules\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_pyasn1_modules\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_pyasn1_modules\":[{\"version\":\"3.9\"}]}", + "requests": "{\"grpc_python_dependencies_310_requests\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_requests\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_requests\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_requests\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_requests\":[{\"version\":\"3.9\"}]}", + "rsa": "{\"grpc_python_dependencies_310_rsa\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_rsa\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_rsa\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_rsa\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_rsa\":[{\"version\":\"3.9\"}]}", + "setuptools": "{\"grpc_python_dependencies_310_setuptools\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_setuptools\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_setuptools\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_setuptools\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_setuptools\":[{\"version\":\"3.9\"}]}", + "typing_extensions": "{\"grpc_python_dependencies_310_typing_extensions\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_typing_extensions\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_typing_extensions\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_typing_extensions\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_typing_extensions\":[{\"version\":\"3.9\"}]}", + "urllib3": "{\"grpc_python_dependencies_310_urllib3\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_urllib3\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_urllib3\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_urllib3\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_urllib3\":[{\"version\":\"3.9\"}]}", + "wheel": "{\"grpc_python_dependencies_310_wheel\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_wheel\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_wheel\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_wheel\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_wheel\":[{\"version\":\"3.9\"}]}", + "wrapt": "{\"grpc_python_dependencies_310_wrapt\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_wrapt\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_wrapt\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_wrapt\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_wrapt\":[{\"version\":\"3.9\"}]}", + "zipp": "{\"grpc_python_dependencies_310_zipp\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_zipp\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_zipp\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_zipp\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_zipp\":[{\"version\":\"3.9\"}]}", + "zope_event": "{\"grpc_python_dependencies_310_zope_event\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_zope_event\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_zope_event\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_zope_event\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_zope_event\":[{\"version\":\"3.9\"}]}", + "zope_interface": "{\"grpc_python_dependencies_310_zope_interface\":[{\"version\":\"3.10\"}],\"grpc_python_dependencies_311_zope_interface\":[{\"version\":\"3.11\"}],\"grpc_python_dependencies_312_zope_interface\":[{\"version\":\"3.12\"}],\"grpc_python_dependencies_313_zope_interface\":[{\"version\":\"3.13\"}],\"grpc_python_dependencies_39_zope_interface\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "absl_py", + "cachetools", + "certifi", + "chardet", + "charset_normalizer", + "coverage", + "cython", + "deprecated", + "gevent", + "google_api_core", + "google_auth", + "google_cloud_monitoring", + "google_cloud_trace", + "googleapis_common_protos", + "greenlet", + "idna", + "importlib_metadata", + "oauth2client", + "opencensus_context", + "opentelemetry_api", + "opentelemetry_exporter_prometheus", + "opentelemetry_resourcedetector_gcp", + "opentelemetry_sdk", + "opentelemetry_semantic_conventions", + "prometheus_client", + "proto_plus", + "protobuf", + "pyasn1", + "pyasn1_modules", + "requests", + "rsa", + "setuptools", + "typing_extensions", + "urllib3", + "wheel", + "wrapt", + "zipp", + "zope_event", + "zope_interface" + ], + "groups": {} + } + }, + "pgv_pip_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "pgv_pip_deps", + "extra_hub_aliases": {}, + "whl_map": { + "astunparse": "{\"pgv_pip_deps_310_astunparse\":[{\"version\":\"3.10\"}],\"pgv_pip_deps_311_astunparse\":[{\"version\":\"3.11\"}],\"pgv_pip_deps_312_astunparse\":[{\"version\":\"3.12\"}],\"pgv_pip_deps_313_astunparse\":[{\"version\":\"3.13\"}],\"pgv_pip_deps_39_astunparse\":[{\"version\":\"3.9\"}]}", + "jinja2": "{\"pgv_pip_deps_310_jinja2\":[{\"version\":\"3.10\"}],\"pgv_pip_deps_311_jinja2\":[{\"version\":\"3.11\"}],\"pgv_pip_deps_312_jinja2\":[{\"version\":\"3.12\"}],\"pgv_pip_deps_313_jinja2\":[{\"version\":\"3.13\"}],\"pgv_pip_deps_39_jinja2\":[{\"version\":\"3.9\"}]}", + "markupsafe": "{\"pgv_pip_deps_310_markupsafe\":[{\"version\":\"3.10\"}],\"pgv_pip_deps_311_markupsafe\":[{\"version\":\"3.11\"}],\"pgv_pip_deps_312_markupsafe\":[{\"version\":\"3.12\"}],\"pgv_pip_deps_313_markupsafe\":[{\"version\":\"3.13\"}],\"pgv_pip_deps_39_markupsafe\":[{\"version\":\"3.9\"}]}", + "protobuf": "{\"pgv_pip_deps_310_protobuf\":[{\"version\":\"3.10\"}],\"pgv_pip_deps_311_protobuf\":[{\"version\":\"3.11\"}],\"pgv_pip_deps_312_protobuf\":[{\"version\":\"3.12\"}],\"pgv_pip_deps_313_protobuf\":[{\"version\":\"3.13\"}],\"pgv_pip_deps_39_protobuf\":[{\"version\":\"3.9\"}]}", + "six": "{\"pgv_pip_deps_310_six\":[{\"version\":\"3.10\"}],\"pgv_pip_deps_311_six\":[{\"version\":\"3.11\"}],\"pgv_pip_deps_312_six\":[{\"version\":\"3.12\"}],\"pgv_pip_deps_313_six\":[{\"version\":\"3.13\"}],\"pgv_pip_deps_39_six\":[{\"version\":\"3.9\"}]}", + "validate_email": "{\"pgv_pip_deps_310_validate_email\":[{\"version\":\"3.10\"}],\"pgv_pip_deps_311_validate_email\":[{\"version\":\"3.11\"}],\"pgv_pip_deps_312_validate_email\":[{\"version\":\"3.12\"}],\"pgv_pip_deps_313_validate_email\":[{\"version\":\"3.13\"}],\"pgv_pip_deps_39_validate_email\":[{\"version\":\"3.9\"}]}", + "wheel": "{\"pgv_pip_deps_310_wheel\":[{\"version\":\"3.10\"}],\"pgv_pip_deps_311_wheel\":[{\"version\":\"3.11\"}],\"pgv_pip_deps_312_wheel\":[{\"version\":\"3.12\"}],\"pgv_pip_deps_313_wheel\":[{\"version\":\"3.13\"}],\"pgv_pip_deps_39_wheel\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "astunparse", + "jinja2", + "markupsafe", + "protobuf", + "six", + "validate_email", + "wheel" + ], + "groups": {} + } + }, + "pip_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "pip_deps", + "extra_hub_aliases": {}, + "whl_map": { + "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", + "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "numpy", + "setuptools" + ], + "groups": {} + } + }, + "py3_mpkhs_aws_privatekey_synthetic_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "py3_mpkhs_aws_privatekey_synthetic_deps", + "extra_hub_aliases": {}, + "whl_map": { + "aws_requests_auth": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_aws_requests_auth\":[{\"version\":\"3.8\"}]}", + "awscrt": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_awscrt\":[{\"version\":\"3.8\"}]}", + "certifi": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_certifi\":[{\"version\":\"3.8\"}]}", + "charset_normalizer": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_charset_normalizer\":[{\"version\":\"3.8\"}]}", + "h2": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_h2\":[{\"version\":\"3.8\"}]}", + "hpack": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_hpack\":[{\"version\":\"3.8\"}]}", + "hyper": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_hyper\":[{\"version\":\"3.8\"}]}", + "hyperframe": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_hyperframe\":[{\"version\":\"3.8\"}]}", + "idna": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_idna\":[{\"version\":\"3.8\"}]}", + "requests": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_requests\":[{\"version\":\"3.8\"}]}", + "urllib3": "{\"py3_mpkhs_aws_privatekey_synthetic_deps_38_urllib3\":[{\"version\":\"3.8\"}]}" + }, + "packages": [ + "aws_requests_auth", + "awscrt", + "certifi", + "charset_normalizer", + "h2", + "hpack", + "hyper", + "hyperframe", + "idna", + "requests", + "urllib3" + ], + "groups": {} + } + }, + "py3_privacybudget_aws_pbs_auth_handler_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "py3_privacybudget_aws_pbs_auth_handler_deps", + "extra_hub_aliases": {}, + "whl_map": { + "publicsuffixlist": "{\"py3_privacybudget_aws_pbs_auth_handler_deps_38_publicsuffixlist\":[{\"version\":\"3.8\"}]}" + }, + "packages": [ + "publicsuffixlist" + ], + "groups": {} + } + }, + "py3_privacybudget_aws_pbs_identities_migration_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "py3_privacybudget_aws_pbs_identities_migration_deps", + "extra_hub_aliases": {}, + "whl_map": { + "publicsuffixlist": "{\"py3_privacybudget_aws_pbs_identities_migration_deps_38_publicsuffixlist\":[{\"version\":\"3.8\"}]}" + }, + "packages": [ + "publicsuffixlist" + ], + "groups": {} + } + }, + "py3_privacybudget_aws_pbs_synthetic_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "py3_privacybudget_aws_pbs_synthetic_deps", + "extra_hub_aliases": {}, + "whl_map": { + "aws_requests_auth": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_aws_requests_auth\":[{\"version\":\"3.8\"}]}", + "awscrt": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_awscrt\":[{\"version\":\"3.8\"}]}", + "certifi": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_certifi\":[{\"version\":\"3.8\"}]}", + "charset_normalizer": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_charset_normalizer\":[{\"version\":\"3.8\"}]}", + "h2": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_h2\":[{\"version\":\"3.8\"}]}", + "hpack": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_hpack\":[{\"version\":\"3.8\"}]}", + "hyper": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_hyper\":[{\"version\":\"3.8\"}]}", + "hyperframe": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_hyperframe\":[{\"version\":\"3.8\"}]}", + "idna": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_idna\":[{\"version\":\"3.8\"}]}", + "requests": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_requests\":[{\"version\":\"3.8\"}]}", + "urllib3": "{\"py3_privacybudget_aws_pbs_synthetic_deps_38_urllib3\":[{\"version\":\"3.8\"}]}" + }, + "packages": [ + "aws_requests_auth", + "awscrt", + "certifi", + "charset_normalizer", + "h2", + "hpack", + "hyper", + "hyperframe", + "idna", + "requests", + "urllib3" + ], + "groups": {} + } + }, + "py3_privacybudget_gcp_operator_onboarding_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "py3_privacybudget_gcp_operator_onboarding_deps", + "extra_hub_aliases": {}, + "whl_map": { + "google_cloud_spanner": "{\"py3_privacybudget_gcp_operator_onboarding_deps_38_google_cloud_spanner\":[{\"version\":\"3.8\"}]}", + "google_cloud_storage": "{\"py3_privacybudget_gcp_operator_onboarding_deps_38_google_cloud_storage\":[{\"version\":\"3.8\"}]}", + "numpy": "{\"py3_privacybudget_gcp_operator_onboarding_deps_38_numpy\":[{\"version\":\"3.8\"}]}", + "pandas": "{\"py3_privacybudget_gcp_operator_onboarding_deps_38_pandas\":[{\"version\":\"3.8\"}]}", + "python_dateutil": "{\"py3_privacybudget_gcp_operator_onboarding_deps_38_python_dateutil\":[{\"version\":\"3.8\"}]}", + "pytz": "{\"py3_privacybudget_gcp_operator_onboarding_deps_38_pytz\":[{\"version\":\"3.8\"}]}", + "six": "{\"py3_privacybudget_gcp_operator_onboarding_deps_38_six\":[{\"version\":\"3.8\"}]}" + }, + "packages": [ + "google_cloud_spanner", + "google_cloud_storage", + "numpy", + "pandas", + "python_dateutil", + "pytz", + "six" + ], + "groups": {} + } + }, + "py3_privacybudget_gcp_pbs_auth_handler_test_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "py3_privacybudget_gcp_pbs_auth_handler_test_deps", + "extra_hub_aliases": {}, + "whl_map": { + "cachetools": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_cachetools\":[{\"version\":\"3.8\"}]}", + "certifi": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_certifi\":[{\"version\":\"3.8\"}]}", + "charset_normalizer": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_charset_normalizer\":[{\"version\":\"3.8\"}]}", + "google_api_core": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_google_api_core\":[{\"version\":\"3.8\"}]}", + "google_auth": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_google_auth\":[{\"version\":\"3.8\"}]}", + "googleapis_common_protos": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_googleapis_common_protos\":[{\"version\":\"3.8\"}]}", + "idna": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_idna\":[{\"version\":\"3.8\"}]}", + "proto_plus": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_proto_plus\":[{\"version\":\"3.8\"}]}", + "protobuf": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_protobuf\":[{\"version\":\"3.8\"}]}", + "publicsuffixlist": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_publicsuffixlist\":[{\"version\":\"3.8\"}]}", + "pyasn1": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_pyasn1\":[{\"version\":\"3.8\"}]}", + "pyasn1_modules": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_pyasn1_modules\":[{\"version\":\"3.8\"}]}", + "requests": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_requests\":[{\"version\":\"3.8\"}]}", + "rsa": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_rsa\":[{\"version\":\"3.8\"}]}", + "urllib3": "{\"py3_privacybudget_gcp_pbs_auth_handler_test_deps_38_urllib3\":[{\"version\":\"3.8\"}]}" + }, + "packages": [ + "cachetools", + "certifi", + "charset_normalizer", + "google_api_core", + "google_auth", + "googleapis_common_protos", + "idna", + "proto_plus", + "protobuf", + "publicsuffixlist", + "pyasn1", + "pyasn1_modules", + "requests", + "rsa", + "urllib3" + ], + "groups": {} + } + }, + "rules_fuzzing_py_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "rules_fuzzing_py_deps", + "extra_hub_aliases": {}, + "whl_map": { + "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", + "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "absl_py", + "six" + ], + "groups": {} + } + }, + "rules_python_publish_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "rules_python_publish_deps", + "extra_hub_aliases": {}, + "whl_map": { + "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", + "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", + "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", + "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", + "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", + "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", + "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", + "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", + "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", + "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", + "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", + "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", + "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", + "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", + "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", + "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", + "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_6049d5e6\":[{\"filename\":\"rich-13.9.4-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_43959497\":[{\"filename\":\"rich-13.9.4.tar.gz\",\"version\":\"3.11\"}]}", + "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", + "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", + "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" + }, + "packages": [ + "backports_tarfile", + "certifi", + "charset_normalizer", + "docutils", + "idna", + "importlib_metadata", + "jaraco_classes", + "jaraco_context", + "jaraco_functools", + "keyring", + "markdown_it_py", + "mdurl", + "more_itertools", + "nh3", + "pkginfo", + "pygments", + "readme_renderer", + "requests", + "requests_toolbelt", + "rfc3986", + "rich", + "twine", + "urllib3", + "zipp" + ], + "groups": {} + } + } + }, + "moduleExtensionMetadata": { + "useAllRepos": "NO", + "reproducible": false + }, + "recordedRepoMappingEntries": [ + [ + "bazel_features~", + "bazel_features_globals", + "bazel_features~~version_extension~bazel_features_globals" + ], + [ + "bazel_features~", + "bazel_features_version", + "bazel_features~~version_extension~bazel_features_version" + ], + [ + "rules_python~", + "bazel_features", + "bazel_features~" + ], + [ + "rules_python~", + "bazel_skylib", + "bazel_skylib~" + ], + [ + "rules_python~", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python~", + "pypi__build", + "rules_python~~internal_deps~pypi__build" + ], + [ + "rules_python~", + "pypi__click", + "rules_python~~internal_deps~pypi__click" + ], + [ + "rules_python~", + "pypi__colorama", + "rules_python~~internal_deps~pypi__colorama" + ], + [ + "rules_python~", + "pypi__importlib_metadata", + "rules_python~~internal_deps~pypi__importlib_metadata" + ], + [ + "rules_python~", + "pypi__installer", + "rules_python~~internal_deps~pypi__installer" + ], + [ + "rules_python~", + "pypi__more_itertools", + "rules_python~~internal_deps~pypi__more_itertools" + ], + [ + "rules_python~", + "pypi__packaging", + "rules_python~~internal_deps~pypi__packaging" + ], + [ + "rules_python~", + "pypi__pep517", + "rules_python~~internal_deps~pypi__pep517" + ], + [ + "rules_python~", + "pypi__pip", + "rules_python~~internal_deps~pypi__pip" + ], + [ + "rules_python~", + "pypi__pip_tools", + "rules_python~~internal_deps~pypi__pip_tools" + ], + [ + "rules_python~", + "pypi__pyproject_hooks", + "rules_python~~internal_deps~pypi__pyproject_hooks" + ], + [ + "rules_python~", + "pypi__setuptools", + "rules_python~~internal_deps~pypi__setuptools" + ], + [ + "rules_python~", + "pypi__tomli", + "rules_python~~internal_deps~pypi__tomli" + ], + [ + "rules_python~", + "pypi__wheel", + "rules_python~~internal_deps~pypi__wheel" + ], + [ + "rules_python~", + "pypi__zipp", + "rules_python~~internal_deps~pypi__zipp" + ], + [ + "rules_python~", + "pythons_hub", + "rules_python~~python~pythons_hub" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_10_host", + "rules_python~~python~python_3_10_host" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_11_host", + "rules_python~~python~python_3_11_host" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_12_host", + "rules_python~~python~python_3_12_host" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_13_host", + "rules_python~~python~python_3_13_host" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_8_host", + "rules_python~~python~python_3_8_host" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_9_host", + "rules_python~~python~python_3_9_host" + ] + ] + } + }, + "@@rules_swift~//swift:extensions.bzl%non_module_deps": { + "general": { + "bzlTransitiveDigest": "sYMR3xOa5sLdm8MWGLAwlRJRX5m6BJwGpHvifl8VR70=", + "usagesDigest": "oOk0O0F9tROCJYa1ynfWbfouHMALDjhAJmpxXr8qfeE=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_apple_swift_protobuf": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-protobuf/archive/1.20.2.tar.gz" + ], + "sha256": "3fb50bd4d293337f202d917b6ada22f9548a0a0aed9d9a4d791e6fbd8a246ebb", + "strip_prefix": "swift-protobuf-1.20.2/", + "build_file": "@@rules_swift~//third_party:com_github_apple_swift_protobuf/BUILD.overlay" + } + }, + "com_github_grpc_grpc_swift": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/grpc/grpc-swift/archive/1.16.0.tar.gz" + ], + "sha256": "58b60431d0064969f9679411264b82e40a217ae6bd34e17096d92cc4e47556a5", + "strip_prefix": "grpc-swift-1.16.0/", + "build_file": "@@rules_swift~//third_party:com_github_grpc_grpc_swift/BUILD.overlay" + } + }, + "com_github_apple_swift_nio": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-nio/archive/2.42.0.tar.gz" + ], + "sha256": "e3304bc3fb53aea74a3e54bd005ede11f6dc357117d9b1db642d03aea87194a0", + "strip_prefix": "swift-nio-2.42.0/", + "build_file": "@@rules_swift~//third_party:com_github_apple_swift_nio/BUILD.overlay" + } + }, + "com_github_apple_swift_nio_http2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-nio-http2/archive/1.26.0.tar.gz" + ], + "sha256": "f0edfc9d6a7be1d587e5b403f2d04264bdfae59aac1d74f7d974a9022c6d2b25", + "strip_prefix": "swift-nio-http2-1.26.0/", + "build_file": "@@rules_swift~//third_party:com_github_apple_swift_nio_http2/BUILD.overlay" + } + }, + "com_github_apple_swift_nio_transport_services": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-nio-transport-services/archive/1.15.0.tar.gz" + ], + "sha256": "f3498dafa633751a52b9b7f741f7ac30c42bcbeb3b9edca6d447e0da8e693262", + "strip_prefix": "swift-nio-transport-services-1.15.0/", + "build_file": "@@rules_swift~//third_party:com_github_apple_swift_nio_transport_services/BUILD.overlay" + } + }, + "com_github_apple_swift_nio_extras": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-nio-extras/archive/1.4.0.tar.gz" + ], + "sha256": "4684b52951d9d9937bb3e8ccd6b5daedd777021ef2519ea2f18c4c922843b52b", + "strip_prefix": "swift-nio-extras-1.4.0/", + "build_file": "@@rules_swift~//third_party:com_github_apple_swift_nio_extras/BUILD.overlay" + } + }, + "com_github_apple_swift_log": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-log/archive/1.4.4.tar.gz" + ], + "sha256": "48fe66426c784c0c20031f15dc17faf9f4c9037c192bfac2f643f65cb2321ba0", + "strip_prefix": "swift-log-1.4.4/", + "build_file": "@@rules_swift~//third_party:com_github_apple_swift_log/BUILD.overlay" + } + }, + "com_github_apple_swift_nio_ssl": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-nio-ssl/archive/2.23.0.tar.gz" + ], + "sha256": "4787c63f61dd04d99e498adc3d1a628193387e41efddf8de19b8db04544d016d", + "strip_prefix": "swift-nio-ssl-2.23.0/", + "build_file": "@@rules_swift~//third_party:com_github_apple_swift_nio_ssl/BUILD.overlay" + } + }, + "com_github_apple_swift_collections": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-collections/archive/1.0.4.tar.gz" + ], + "sha256": "d9e4c8a91c60fb9c92a04caccbb10ded42f4cb47b26a212bc6b39cc390a4b096", + "strip_prefix": "swift-collections-1.0.4/", + "build_file": "@@rules_swift~//third_party:com_github_apple_swift_collections/BUILD.overlay" + } + }, + "com_github_apple_swift_atomics": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-atomics/archive/1.1.0.tar.gz" + ], + "sha256": "1bee7f469f7e8dc49f11cfa4da07182fbc79eab000ec2c17bfdce468c5d276fb", + "strip_prefix": "swift-atomics-1.1.0/", + "build_file": "@@rules_swift~//third_party:com_github_apple_swift_atomics/BUILD.overlay" + } + }, + "build_bazel_rules_swift_index_import": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file": "@@rules_swift~//third_party:build_bazel_rules_swift_index_import/BUILD.overlay", + "canonical_id": "index-import-5.8", + "urls": [ + "https://github.com/MobileNativeFoundation/index-import/releases/download/5.8.0.1/index-import.tar.gz" + ], + "sha256": "28c1ffa39d99e74ed70623899b207b41f79214c498c603915aef55972a851a15" + } + }, + "build_bazel_rules_swift_local_config": { + "bzlFile": "@@rules_swift~//swift/internal:swift_autoconfiguration.bzl", + "ruleClassName": "swift_autoconfiguration", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_swift~", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_swift~", + "build_bazel_rules_swift", + "rules_swift~" + ] + ] + } + } + } +} diff --git a/README.md b/README.md index 4f9e6a77..4903c5b9 100644 --- a/README.md +++ b/README.md @@ -33,9 +33,10 @@ and other use cases, read the ## Support -You can reach out to us for support through creating issues on this repository or sending us an -email at aggregation-service-support\google.com. This address is monitored and only visible to -selected support staff. +For product questions, discussing features, and providing feedback, you can create an issue on this +repository. For requesting technical troubleshooting support if you're facing an error while +deploying, maintaining, or running jobs with Aggregation Service, use this +[Technical Support Form](https://support.google.com/faqs/contact/privacysandbox_aggregation_service). ## License diff --git a/VERSION b/VERSION index 834f2629..fb2c0766 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.8.0 +2.13.0 diff --git a/WORKSPACE b/WORKSPACE index b3ac0d1d..95811eab 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -20,25 +20,27 @@ http_archive( # `$ bazel run @unpinned_maven//:pin` and include `maven_install.json` in your change. # Declare explicit protobuf version, to override any implicit dependencies. -PROTOBUF_CORE_VERSION = "3.25.2" +PROTOBUF_CORE_VERSION = "28.3" -PROTOBUF_SHA_256 = "3c83e4301b968d0b4f29a0c29c0b3cde1da81d790ffd344b111c523ba1954392" +PROTOBUF_JAVA_VERSION_PREFIX = "4." -COORDINATOR_VERSION = "v1.10.0-rc07" # version updated on 2024-09-12 +PROTOBUF_SHA_256 = "7c3ebd7aaedd86fa5dc479a0fda803f602caaf78d8aff7ce83b89e1b8ae7442a" + +COORDINATOR_VERSION = "v1.19.0-rc01" # version updated on 2025-03-24 JACKSON_VERSION = "2.16.1" -AUTO_VALUE_VERSION = "1.7.4" +AUTO_VALUE_VERSION = "1.10.1" AWS_SDK_VERSION = "2.21.16" -AWS_JAVA_SDK_VERSION = "1.12.641" +AWS_JAVA_SDK_VERSION = "1.12.772" GOOGLE_GAX_VERSION = "2.38.0" AUTO_SERVICE_VERSION = "1.1.1" -OTEL_VERSION = "1.31.0" +OTEL_VERSION = "1.43.0" load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps") @@ -79,8 +81,6 @@ git_repository( remote = "https://github.com/privacysandbox/coordinator-services-and-shared-libraries", patches = [ "//build_defs/shared_libraries:coordinator.patch", - "//build_defs/shared_libraries:rules_pkg_build_fix.patch", - "//build_defs/shared_libraries:v1.10_serverless_connector.patch", ], tag = COORDINATOR_VERSION, workspace_file = "@shared_libraries_workspace//file", @@ -101,6 +101,15 @@ OTEL_ARTIFACTS = [ "io.opentelemetry:opentelemetry-sdk-logs:" + OTEL_VERSION, "io.opentelemetry:opentelemetry-sdk-trace:" + OTEL_VERSION, "io.opentelemetry.contrib:opentelemetry-aws-xray:" + OTEL_VERSION, + "com.google.cloud.opentelemetry:exporter-metrics:0.33.0", + # Note from https://github.com/open-telemetry/semantic-conventions-java: + # Although this is for stable semantic conventions, the artifact still has the -alpha and comes with no + # compatibility guarantees. The goal is to mark this artifact stable. + "io.opentelemetry.semconv:opentelemetry-semconv:1.27.0-alpha", + # As of adding, https://repo1.maven.org/maven2/io/opentelemetry/contrib/opentelemetry-gcp-resources/ only shows + # that alpha version is available. + "io.opentelemetry.contrib:opentelemetry-gcp-resources:" + OTEL_VERSION + "-alpha", + "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:" + OTEL_VERSION, ] # IMPORTANT: If you added dependencies and/or updated dependency versions below, run @@ -135,15 +144,15 @@ maven_install( "com.google.auto.value:auto-value-annotations:" + AUTO_VALUE_VERSION, "com.google.auto.value:auto-value:" + AUTO_VALUE_VERSION, "com.google.code.findbugs:jsr305:3.0.2", - "com.google.cloud:google-cloud-kms:2.37.0", - "com.google.cloud:google-cloud-secretmanager:2.34.0", - "com.google.cloud:google-cloud-pubsub:1.126.2", - "com.google.cloud:google-cloud-storage:2.32.1", - "com.google.cloud:google-cloud-spanner:6.56.0", - "com.google.cloud:google-cloud-compute:1.44.0", - "com.google.cloud:google-cloud-logging:1.92.0", - "com.google.api.grpc:proto-google-cloud-logging-v2:0.109.0", - "com.google.api.grpc:proto-google-cloud-compute-v1:1.44.0", + "com.google.cloud:google-cloud-logging:3.21.2", + "com.google.cloud:google-cloud-kms:2.60.0", + "com.google.cloud:google-cloud-pubsub:1.136.1", + "com.google.cloud:google-cloud-storage:2.48.0", + "com.google.cloud:google-cloud-spanner:6.86.0", + "com.google.cloud:google-cloud-secretmanager:2.57.0", + "com.google.cloud:google-cloud-compute:1.67.0", + "com.google.api.grpc:proto-google-cloud-logging-v2:0.110.2", + "com.google.api.grpc:proto-google-cloud-compute-v1:1.67.0", "com.google.cloud.functions:functions-framework-api:1.1.0", "commons-logging:commons-logging:1.3.0", "com.google.api.grpc:proto-google-common-protos:2.34.0", @@ -154,21 +163,21 @@ maven_install( "io.reactivex.rxjava3:rxjava:3.1.8", "com.google.cloud:google-cloud-monitoring:3.35.0", "com.google.api.grpc:proto-google-cloud-monitoring-v3:3.35.0", - "com.google.protobuf:protobuf-java:" + PROTOBUF_CORE_VERSION, - "com.google.protobuf:protobuf-java-util:" + PROTOBUF_CORE_VERSION, + "com.google.protobuf:protobuf-java:" + PROTOBUF_JAVA_VERSION_PREFIX + PROTOBUF_CORE_VERSION, + "com.google.protobuf:protobuf-java-util:" + PROTOBUF_JAVA_VERSION_PREFIX + PROTOBUF_CORE_VERSION, "com.google.guava:guava:33.0.0-jre", "com.google.guava:guava-testlib:33.0.0-jre", "com.google.jimfs:jimfs:1.3.0", "com.google.testparameterinjector:test-parameter-injector:1.15", - "com.google.truth.extensions:truth-java8-extension:1.3.0", - "com.google.truth.extensions:truth-proto-extension:1.3.0", - "com.google.truth:truth:1.3.0", + "com.google.truth.extensions:truth-java8-extension:1.4.2", + "com.google.truth.extensions:truth-proto-extension:1.4.2", + "com.google.truth:truth:1.4.2", "com.jayway.jsonpath:json-path:2.9.0", "javax.inject:javax.inject:1", "io.github.resilience4j:resilience4j-core:1.7.1", "io.github.resilience4j:resilience4j-retry:1.7.1", "junit:junit:4.13.2", - "org.apache.avro:avro:1.11.3", + "org.apache.avro:avro:1.12.0", "org.apache.commons:commons-compress:1.26.2", "org.apache.commons:commons-math3:3.6.1", "org.apache.httpcomponents:httpcore:4.4.16", @@ -206,7 +215,10 @@ maven_install( "software.amazon.awssdk:lambda:" + AWS_SDK_VERSION, "com.google.crypto.tink:tink:1.13.0", "com.google.crypto.tink:tink-gcpkms:1.9.0", - "com.google.oauth-client:google-oauth-client:1.35.0", + "com.google.oauth-client:google-oauth-client:1.37.0", + "com.google.auth:google-auth-library-oauth2-http:1.31.0", + "io.netty:netty-codec-http:4.1.115.Final", + "com.google.cloud:google-cloud-iamcredentials:2.57.0", ] + OTEL_ARTIFACTS, maven_install_json = "//:maven_install.json", repositories = [ @@ -222,9 +234,9 @@ pinned_maven_install() http_archive( name = "rules_java", - sha256 = "3121a00588b1581bd7c1f9b550599629e5adcc11ba9c65f482bbd5cfe47fdf30", + sha256 = "a9690bc00c538246880d5c83c233e4deb83fe885f54c21bb445eb8116a180b83", urls = [ - "https://github.com/bazelbuild/rules_java/releases/download/7.3.2/rules_java-7.3.2.tar.gz", + "https://github.com/bazelbuild/rules_java/releases/download/7.12.2/rules_java-7.12.2.tar.gz", ], ) @@ -267,12 +279,32 @@ protobuf_deps() # PKG Rules # ############# +http_archive( + name = "rules_cc", + sha256 = "abc605dd850f813bb37004b77db20106a19311a96b2da1c92b789da529d28fe1", + strip_prefix = "rules_cc-0.0.17", + urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.0.17/rules_cc-0.0.17.tar.gz"], +) + +http_archive( + name = "rules_python", + sha256 = "62ddebb766b4d6ddf1712f753dac5740bea072646f630eb9982caa09ad8a7687", + strip_prefix = "rules_python-0.39.0", + urls = [ + "https://github.com/bazelbuild/rules_python/releases/download/0.39.0/rules_python-0.39.0.tar.gz", + ], +) + +load("@rules_python//python:repositories.bzl", "py_repositories") + +py_repositories() + http_archive( name = "rules_pkg", - sha256 = "a89e203d3cf264e564fcb96b6e06dd70bc0557356eb48400ce4b5d97c2c3720d", + sha256 = "cad05f864a32799f6f9022891de91ac78f30e0fa07dc68abac92a628121b5b11", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.5.1/rules_pkg-0.5.1.tar.gz", - "https://github.com/bazelbuild/rules_pkg/releases/download/0.5.1/rules_pkg-0.5.1.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/1.0.0/rules_pkg-1.0.0.tar.gz", + "https://github.com/bazelbuild/rules_pkg/releases/download/1.0.0/rules_pkg-1.0.0.tar.gz", ], ) @@ -385,6 +417,14 @@ container_pull( tag = "latest", ) +# Debug image for Java used only for load testing. +container_pull( + name = "java_base_debug", + registry = "docker.io", + repository = "bellsoft/liberica-openjdk-debian", + tag = "latest", +) + ############# # CPP Rules # ############# @@ -395,12 +435,6 @@ http_archive( urls = ["https://github.com/google/googletest/archive/e2239ee6043f73722e7aa812a459f54a28552929.zip"], ) -http_archive( - name = "rules_cc", - strip_prefix = "rules_cc-daf6ace7cfeacd6a83e9ff2ed659f416537b6c74", - urls = ["https://github.com/bazelbuild/rules_cc/archive/daf6ace7cfeacd6a83e9ff2ed659f416537b6c74.zip"], -) - ############### # Proto rules # ############### @@ -506,12 +540,6 @@ http_archive( ], ) -# Declare explicit protobuf version and hash, to override any implicit dependencies. -# Please update both while upgrading to new versions. -PROTOBUF_CORE_VERSION = "3.25.2" - -PROTOBUF_SHA_256 = "3c83e4301b968d0b4f29a0c29c0b3cde1da81d790ffd344b111c523ba1954392" - ########################## # SDK Dependencies Rules # ########################## diff --git a/WORKSPACE.bzlmod b/WORKSPACE.bzlmod new file mode 100644 index 00000000..90926b30 --- /dev/null +++ b/WORKSPACE.bzlmod @@ -0,0 +1,164 @@ +# 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. + +load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +# Load specific version of differential privacy from github 2nd March 2022. + +DIFFERENTIAL_PRIVACY_COMMIT = "099080e49c4c047802d785bc818898c0caf84d45" + +# value recommended by the differential privacy repo. +# date, not after the specified commit to allow for more shallow clone of repo +# for faster build times. +DIFFERENTIAL_PRIVACY_SHALLOW_SINCE = "1618997113 +0200" + +git_repository( + name = "com_google_differential_privacy", + commit = DIFFERENTIAL_PRIVACY_COMMIT, + remote = "https://github.com/google/differential-privacy.git", + shallow_since = DIFFERENTIAL_PRIVACY_SHALLOW_SINCE, +) + +# Load dependencies for the base workspace. +load("@com_google_differential_privacy//:differential_privacy_deps.bzl", "differential_privacy_deps") + +differential_privacy_deps() + +############ +# Go rules # +############ + +# Note: Go build rules are an indirect dependency of "io_bazel_rules_docker" and +# a direct dependency of rpmpack and buildifier. These rules are not used for +# deploying go code at the time of writing. + +http_archive( + name = "io_bazel_rules_go", + sha256 = "6734a719993b1ba4ebe9806e853864395a8d3968ad27f9dd759c196b3eb3abe8", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.45.1/rules_go-v0.45.1.zip", + "https://github.com/bazelbuild/rules_go/releases/download/v0.45.1/rules_go-v0.45.1.zip", + ], +) + +http_archive( + name = "bazel_gazelle", + integrity = "sha256-MpOL2hbmcABjA1R5Bj2dJMYO2o15/Uc5Vj9Q0zHLMgk=", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.35.0/bazel-gazelle-v0.35.0.tar.gz", + "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.35.0/bazel-gazelle-v0.35.0.tar.gz", + ], +) + +load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") +load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") + +go_rules_dependencies() + +go_register_toolchains(version = "1.20.5") + +gazelle_dependencies() + +################### +# Container rules # +################### + +# Note: these rules add a dependency on the golang toolchain and must be ordered +# after any `go_register_toolchains` calls in this file (or else the toolchain +# defined in io_bazel_rules_docker are used for future go toolchains) + +http_archive( + name = "io_bazel_rules_docker", + sha256 = "b1e80761a8a8243d03ebca8845e9cc1ba6c82ce7c5179ce2b295cd36f7e394bf", + urls = ["https://github.com/bazelbuild/rules_docker/releases/download/v0.25.0/rules_docker-v0.25.0.tar.gz"], +) + +load( + "@io_bazel_rules_docker//repositories:repositories.bzl", + container_repositories = "repositories", +) + +container_repositories() + +load("@io_bazel_rules_docker//repositories:deps.bzl", container_deps = "deps") + +container_deps() + +load("@io_bazel_rules_docker//container:container.bzl", "container_pull") + +############## +# Containers # +############## + +load("//build_defs:container_dependencies.bzl", container_dependencies = "CONTAINER_DEPS") + +[ + container_pull( + name = img_name, + digest = img_info["digest"], + registry = img_info["registry"], + repository = img_info["repository"], + ) + for img_name, img_info in container_dependencies.items() +] + +# Distroless image for running C++. +container_pull( + name = "cc_base", + registry = "gcr.io", + repository = "distroless/cc", + # Using SHA-256 for reproducibility. + # TODO: use digest instead of tag, currently it's not working. + tag = "latest", +) + +# Distroless image for running statically linked binaries. +container_pull( + name = "static_base", + registry = "gcr.io", + repository = "distroless/static", + # Using SHA-256 for reproducibility. + # TODO: use digest instead of tag, currently it's not working. + tag = "latest", +) + +# Debug image for Java used only for load testing. +container_pull( + name = "java_base_debug", + registry = "docker.io", + repository = "bellsoft/liberica-openjdk-debian", + tag = "latest", +) + +############################### +# Binary Runtime Dependencies # +############################### + +# Download the AWS enclave SDK repo and apply a patch for building the kmstool dependencies. +# load("@shared_libraries//build_defs/shared:enclaves_kmstools.bzl", "import_aws_nitro_enclaves_sdk_c") +# import_aws_nitro_enclaves_sdk_c(repo_name = "@shared_libraries") + +# http_archive( +# name = "aws_nitro_enclaves_sdk_c", +# build_file = Label("//build_defs/aws/kmstool:kmstool.BUILD"), +# patches = [ +# Label("//build_defs/aws/kmstool:kmstool.patch"), +# Label("//build_defs/aws/kmstool:dockerfile_git_shallow_clone.patch"), +# ], +# patch_args = ["-p1"], +# sha256 = "bc937626e1058c2464e60dde3a410855b87987e6da23433d78e77aedc8a152ec", +# strip_prefix = "aws-nitro-enclaves-sdk-c-e3425251b5fd573a730101b091f770ad21b9ee56", +# urls = ["https://github.com/aws/aws-nitro-enclaves-sdk-c/archive/e3425251b5fd573a730101b091f770ad21b9ee56.zip"], +# ) diff --git a/build-scripts/DEBIAN_CONTAINER_DIGEST b/build-scripts/DEBIAN_CONTAINER_DIGEST index 36807436..cc7e644b 100644 --- a/build-scripts/DEBIAN_CONTAINER_DIGEST +++ b/build-scripts/DEBIAN_CONTAINER_DIGEST @@ -1 +1 @@ -sha256:903d3225acecaa272bbdd7273c6c312c2af8b73644058838d23a8c9e6e5c82cf +sha256:e9ac68ffde903b241342267a51cd74c5417414af652cb2e380c6ddcf522589bc diff --git a/build-scripts/aws/README.md b/build-scripts/aws/README.md index 8190b3aa..8b249ae3 100644 --- a/build-scripts/aws/README.md +++ b/build-scripts/aws/README.md @@ -99,3 +99,36 @@ Run `bash fetch_terraform.sh`. After downloading the artifacts and running above script continue with [Set up your deployment environment](/docs/aws-aggregation-service.md#set-up-your-deployment-environment) + +## Upgrade Terraform AWS provider to `5.x` version + +1. Update the Terraform code to the most recent version in the repository. +2. Remove Terraform variable `compute_type` in `codebuild.auto.tfvars`. +3. Update aws provider version in `main.tf` to the latest `5.x`. + + ```hcl + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 5.0" + } + } + ``` + +4. Update the locked dependency selections and apply changes. + + ```shell + terraform init -upgrade + terraform apply + ``` + +5. (Optional) Update the Terraform variables `aggregation_service_compute_type` and + `bazel_compute_type` to change the compute type for the bazel or aggregation-service CodeBuild, + if necessary. + +## Terraform variable changes (AWS provider version `3.x`) + +1. Update the Terraform code to the most recent version in the repository. +2. Remove Terraform variable `compute_type` in `codebuild.auto.tfvars`. +3. Set the Terraform variable `aggregation_service_compute_type` to `BUILD_GENERAL1_2XLARGE` in + `codebuild.auto.tfvars`. diff --git a/build-scripts/aws/buildspec.yml b/build-scripts/aws/buildspec.yml index 7e8d5957..dfd910f0 100644 --- a/build-scripts/aws/buildspec.yml +++ b/build-scripts/aws/buildspec.yml @@ -32,7 +32,10 @@ phases: commands: - echo Bazel Build started on `date` - bazel run //worker/aws:worker_mp_aws_prod --sandbox_writable_path=$HOME/.docker --//worker/aws:ami_name_flag=aggregation-service-enclave_$(cat VERSION) --//worker/aws:aws_region_flag=$AWS_DEFAULT_REGION - - bash build-scripts/aws/set_ami_to_public.sh set_ami_to_public_by_prefix aggregation-service-enclave_$(cat VERSION) $AWS_DEFAULT_REGION $AWS_ACCOUNT_ID + - | + if [ "$MAKE_AMI_PUBLIC" = "true" ]; then + bash build-scripts/aws/set_ami_to_public.sh set_ami_to_public_by_prefix aggregation-service-enclave_$(cat VERSION) $AWS_DEFAULT_REGION $AWS_ACCOUNT_ID + fi - cd build-scripts/aws && bash publish.sh post_build: commands: diff --git a/build-scripts/aws/terraform/.terraform.lock.hcl b/build-scripts/aws/terraform/.terraform.lock.hcl index 13e8c5a9..b4f812d1 100644 --- a/build-scripts/aws/terraform/.terraform.lock.hcl +++ b/build-scripts/aws/terraform/.terraform.lock.hcl @@ -2,40 +2,43 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/aws" { - version = "3.75.2" - constraints = "~> 3.0" + version = "5.86.0" + constraints = "~> 5.0" hashes = [ - "h1:x0gluX9ZKEmz+JJW3Ut5GgWDFOq/lhs2vkqJ+xt57zs=", - "zh:0e75fb14ec42d69bc46461dd54016bb2487d38da324222cec20863918b8954c4", - "zh:30831a1fe29f005d8b809250b43d09522288db45d474c9d238b26f40bdca2388", - "zh:36163d625ab2999c9cd31ef2475d978f9f033a8dfa0d585f1665f2d6492fac4b", - "zh:48ec39685541e4ddd8ddd196e2cfb72516b87f471d86ac3892bc11f83c573199", - "zh:707b9c8775efd6962b6226d914ab25f308013bba1f68953daa77adca99ff6807", - "zh:72bd9f4609a827afa366c6f119c7dec7d73a35d712dad1457c0497d87bf8d160", - "zh:930e3ae3d0cb152e17ee5a8aee5cb47f7613d6421bc7c22e7f50c19da484a100", + "h1:dVxrQ67Ikqv/1/rfopK/wvCdETlUbQ6ZFuNOH+vEWqs=", + "zh:1587c6a0199dc33d066c13e1628bc0dd966d7d6740cb2007b636524a3ec99430", + "zh:15af46cc5bb43a37c24438cb3a36d44209a89d923ea4d4d631b56b1a89717b26", + "zh:166902101ac1cc8ec4f53e3bdcbab2eac7eb448b1c428c2e622adbf9ce1a679c", + "zh:284d116ac9d4a4de74cd1f52486f00e10bc400d9654f92a8990ea0093c43ff78", + "zh:4135e928f20d456172c8ab4ae3d4d8e411b6feddc94aaa1347c92469d52f1e61", + "zh:72b317d17182c3e0ee72f2851d25565d369cb6ee803b12adc9b6c6d3dbfca8d7", "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", - "zh:a19bf49b80101a0f0272b994153eeff8f8c206ecc592707bfbce7563355b6882", - "zh:a34b5d2bbaf52285b0c9a8df6258f4789f4d927ff777e126bdc77e7887abbeaa", - "zh:caad6fd5e79eae33e6d74e38c3b15c28a5482f2a1a8ca46cc1ee70089de61adb", - "zh:f2eae988635030de9a088f8058fbcd91e2014a8312a48b16bfd09a9d69d9d6f7", + "zh:9dd0e80964e215ff658b708be72ccda8a20f63af7eaebdd6f11eb0461633bb03", + "zh:a18e502c16b7b6b216b888eab9a5c66b1ed103847fce6985850e4fc9e364a3e8", + "zh:c239f12648d7f7bbadbf5db0b57aaa9429abe70b574975b581784b4f17b7ed79", + "zh:c5164ca8254b9973ee985a3841a4b1f776844c7dcbc112ab3a88a0096e7e2198", + "zh:d93ac58092c3fffc5ddc688b39721fbfacc353e8965001060a5a1ce934d97246", + "zh:e877f1be2ebe67a2d163b7488f47cff4c95aca9c541ddfa25ad16c6ecc98f6a8", + "zh:eb71af6dfdd2b5670b5b957397a576d6053587c75750c17acc105fb44ed806eb", + "zh:ff6aa4f88f8e789375391bc8c886c636fb3e4a45a3fd7dc291bca17c2b8d4184", ] } provider "registry.terraform.io/hashicorp/local" { - version = "2.2.3" + version = "2.5.2" hashes = [ - "h1:aWp5iSUxBGgPv1UnV5yag9Pb0N+U1I0sZb38AXBFO8A=", - "zh:04f0978bb3e052707b8e82e46780c371ac1c66b689b4a23bbc2f58865ab7d5c0", - "zh:6484f1b3e9e3771eb7cc8e8bab8b35f939a55d550b3f4fb2ab141a24269ee6aa", - "zh:78a56d59a013cb0f7eb1c92815d6eb5cf07f8b5f0ae20b96d049e73db915b238", + "h1:JlMZD6nYqJ8sSrFfEAH0Vk/SL8WLZRmFaMUF9PJK5wM=", + "zh:136299545178ce281c56f36965bf91c35407c11897f7082b3b983d86cb79b511", + "zh:3b4486858aa9cb8163378722b642c57c529b6c64bfbfc9461d940a84cd66ebea", + "zh:4855ee628ead847741aa4f4fc9bed50cfdbf197f2912775dd9fe7bc43fa077c0", + "zh:4b8cd2583d1edcac4011caafe8afb7a95e8110a607a1d5fb87d921178074a69b", + "zh:52084ddaff8c8cd3f9e7bcb7ce4dc1eab00602912c96da43c29b4762dc376038", + "zh:71562d330d3f92d79b2952ffdda0dad167e952e46200c767dd30c6af8d7c0ed3", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:8aa9950f4c4db37239bcb62e19910c49e47043f6c8587e5b0396619923657797", - "zh:996beea85f9084a725ff0e6473a4594deb5266727c5f56e9c1c7c62ded6addbb", - "zh:9a7ef7a21f48fabfd145b2e2a4240ca57517ad155017e86a30860d7c0c109de3", - "zh:a63e70ac052aa25120113bcddd50c1f3cfe61f681a93a50cea5595a4b2cc3e1c", - "zh:a6e8d46f94108e049ad85dbed60354236dc0b9b5ec8eabe01c4580280a43d3b8", - "zh:bb112ce7efbfcfa0e65ed97fa245ef348e0fd5bfa5a7e4ab2091a9bd469f0a9e", - "zh:d7bec0da5c094c6955efed100f3fe22fca8866859f87c025be1760feb174d6d9", - "zh:fb9f271b72094d07cef8154cd3d50e9aa818a0ea39130bc193132ad7b23076fd", + "zh:805f81ade06ff68fa8b908d31892eaed5c180ae031c77ad35f82cb7a74b97cf4", + "zh:8b6b3ebeaaa8e38dd04e56996abe80db9be6f4c1df75ac3cccc77642899bd464", + "zh:ad07750576b99248037b897de71113cc19b1a8d0bc235eb99173cc83d0de3b1b", + "zh:b9f1c3bfadb74068f5c205292badb0661e17ac05eb23bfe8bd809691e4583d0e", + "zh:cc4cbcd67414fefb111c1bf7ab0bc4beb8c0b553d01719ad17de9a047adff4d1", ] } diff --git a/build-scripts/aws/terraform/codebuild.tf b/build-scripts/aws/terraform/codebuild.tf index ef98fca5..f34a7737 100644 --- a/build-scripts/aws/terraform/codebuild.tf +++ b/build-scripts/aws/terraform/codebuild.tf @@ -38,8 +38,8 @@ resource "aws_s3_bucket" "artifacts_output" { } resource "aws_s3_bucket_acl" "artifacts_output" { - bucket = aws_s3_bucket.artifacts_output.id - acl = "private" + bucket = aws_s3_bucket.artifacts_output.id + acl = "private" depends_on = [aws_s3_bucket_ownership_controls.artifacts_output_ownership_controls] } @@ -200,7 +200,7 @@ resource "aws_codebuild_project" "bazel_build_container" { } environment { - compute_type = var.compute_type + compute_type = var.bazel_compute_type image = "aws/codebuild/standard:6.0" type = "LINUX_CONTAINER" image_pull_credentials_type = "CODEBUILD" @@ -265,7 +265,7 @@ resource "aws_codebuild_project" "aggregation-service-artifacts-build" { } environment { - compute_type = var.compute_type + compute_type = var.aggregation_service_compute_type image = "${aws_ecr_repository.ecr_repository.repository_url}:${local.release_version}" type = "LINUX_CONTAINER" image_pull_credentials_type = "SERVICE_ROLE" @@ -295,6 +295,11 @@ resource "aws_codebuild_project" "aggregation-service-artifacts-build" { name = "JARS_PUBLISH_BUCKET_PATH" value = "aggregation-service" } + + environment_variable { + name = "MAKE_AMI_PUBLIC" + value = tostring(var.make_ami_public) + } } source { @@ -303,6 +308,10 @@ resource "aws_codebuild_project" "aggregation-service-artifacts-build" { git_clone_depth = 1 buildspec = "build-scripts/aws/buildspec.yml" + + git_submodules_config { + fetch_submodules = false + } } source_version = var.aggregation_service_github_repo_branch == "" ? "v${local.release_version}" : var.aggregation_service_github_repo_branch diff --git a/build-scripts/aws/terraform/codebuild_variables.tf b/build-scripts/aws/terraform/codebuild_variables.tf index fbbc32ab..9b896f37 100644 --- a/build-scripts/aws/terraform/codebuild_variables.tf +++ b/build-scripts/aws/terraform/codebuild_variables.tf @@ -30,9 +30,15 @@ variable "region" { description = "Region to deploy services to and publish artifacts" } -variable "compute_type" { +variable "aggregation_service_compute_type" { type = string - description = "CodeBuild compute type to use for build." + description = "CodeBuild compute type to use for Aggregation Service build." + default = "BUILD_GENERAL1_XLARGE" +} + +variable "bazel_compute_type" { + type = string + description = "CodeBuild compute type to use for utility bazel build." default = "BUILD_GENERAL1_MEDIUM" } @@ -68,3 +74,9 @@ variable "aggregation_service_github_repo_branch" { description = "Aggregation Service Github repository branch" default = "" } + +variable "make_ami_public" { + type = bool + description = "Set the AMI and its EBS snapshots to be publicly accessible" + default = false +} diff --git a/build-scripts/aws/terraform/main.tf_sample b/build-scripts/aws/terraform/main.tf_sample index 0f0171db..078da44e 100644 --- a/build-scripts/aws/terraform/main.tf_sample +++ b/build-scripts/aws/terraform/main.tf_sample @@ -18,7 +18,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = "~> 3.0" + version = "~> 5.0" } } } diff --git a/build_defs/container_dependencies.bzl b/build_defs/container_dependencies.bzl index 75565752..2f81baec 100644 --- a/build_defs/container_dependencies.bzl +++ b/build_defs/container_dependencies.bzl @@ -24,11 +24,11 @@ # - java_base: Distroless image for running Java. ################################################################################ -# Updated as of: 2024-09-08 +# Updated as of: 2025-03-19 CONTAINER_DEPS = { "amazonlinux_2": { - "digest": "sha256:238da73d5f7e26f01b30f1e30b4a7156d3b344d9368c278ef5bd14d2294f27f6", + "digest": "sha256:6f5f1a86b54c965ce6547fbb5fea13125be4f14cef8aeb627c27bdc3af203522", "registry": "index.docker.io", "repository": "amazonlinux", }, @@ -42,4 +42,9 @@ CONTAINER_DEPS = { "registry": "gcr.io", "repository": "distroless/java17-debian11", }, + "java_base_gcp": { + "digest": "sha256:b620ae24437cb21b69c5b53ddf05be4436070e3800482a8bf240116051ec451e", + "registry": "gcr.io", + "repository": "distroless/java17-debian12", + }, } diff --git a/build_defs/googleapis.patch b/build_defs/googleapis.patch new file mode 100644 index 00000000..2cce81fc --- /dev/null +++ b/build_defs/googleapis.patch @@ -0,0 +1,128 @@ +diff --git a/BUILD.bazel b/BUILD.bazel +index 95e4c12e5..a901fd573 100644 +--- a/BUILD.bazel ++++ b/BUILD.bazel +@@ -1,3 +1,7 @@ ++package(default_visibility = ["//visibility:public"]) ++ ++licenses(["notice"]) # Apache 2.0 ++ + genrule( + name = "build_gen", + outs = ["build_gen.sh"], +@@ -16,3 +20,15 @@ EOD + fi + """, + ) ++ ++# This build file overlays on top of the BUILD files for the googleapis repo, ++# and it adds a target that lets us include their header files using ++# angle-brackets, thus treating their headers as system includes. This allows ++# us to dial-up the warnings in our own code, without seeing compiler warnings ++# from their headers, which we do not own. ++cc_library( ++ name = "googleapis_system_includes", ++ includes = [ ++ ".", ++ ], ++) +diff --git a/MODULE.bazel b/MODULE.bazel +new file mode 100644 +index 000000000..169133e43 +--- /dev/null ++++ b/MODULE.bazel +@@ -0,0 +1,29 @@ ++module( ++ name = "googleapis", ++ version = "0.0.0-20240819-fe8ba054a", ++ repo_name = "com_google_googleapis", ++) ++ ++bazel_dep(name = "grpc", version = "1.66.0.bcr.2", repo_name = "com_github_grpc_grpc") ++bazel_dep(name = "grpc-java", version = "1.66.0", repo_name = "io_grpc_grpc_java") ++bazel_dep(name = "protobuf", version = "21.7", repo_name = "com_google_protobuf") ++bazel_dep(name = "rules_go", version = "0.46.0", repo_name = "io_bazel_rules_go") ++bazel_dep(name = "rules_proto", version = "5.3.0-21.7") ++bazel_dep(name = "rules_python", version = "0.31.0") ++ ++switched_rules = use_extension("//:extensions.bzl", "switched_rules") ++ ++# TODO: Enable support for other languages with bzlmod ++switched_rules.use_languages( ++ cc = True, ++ # csharp = True, ++ # gapic = True, ++ # go = True, ++ grpc = True, ++ java = True, ++ # nodejs = True, ++ # php = True, ++ # python = True, ++ # ruby = True, ++) ++use_repo(switched_rules, "com_google_googleapis_imports") +diff --git a/extensions.bzl b/extensions.bzl +new file mode 100644 +index 000000000..9aa161841 +--- /dev/null ++++ b/extensions.bzl +@@ -0,0 +1,59 @@ ++load(":repository_rules.bzl", "switched_rules_by_language") ++ ++_use_languages_tag = tag_class( ++ attrs = { ++ "cc": attr.bool(default = False), ++ "csharp": attr.bool(default = False), ++ "gapic": attr.bool(default = False), ++ "go": attr.bool(default = False), ++ "go_test": attr.bool(default = False), ++ "grpc": attr.bool(default = False), ++ "java": attr.bool(default = False), ++ "nodejs": attr.bool(default = False), ++ "php": attr.bool(default = False), ++ "python": attr.bool(default = False), ++ "ruby": attr.bool(default = False), ++ }, ++) ++ ++def _switched_rules_impl(ctx): ++ attrs = {} ++ for module in ctx.modules: ++ if not module.is_root: ++ continue ++ ++ is_tag_set = False ++ set_tag_name = "" ++ ++ for t in module.tags.use_languages: ++ if is_tag_set: ++ fail("Multiple use_language tags are set in the root module: '{}' and '{}'. Only one is allowed.".format(set_tag_name, module.name)) ++ ++ is_tag_set = True ++ set_tag_name = module.name ++ ++ attrs = { ++ "cc": t.cc, ++ "csharp": t.csharp, ++ "gapic": t.gapic, ++ "go": t.go, ++ "go_test": t.go_test, ++ "grpc": t.grpc, ++ "java": t.java, ++ "nodejs": t.nodejs, ++ "php": t.php, ++ "python": t.python, ++ "ruby": t.ruby, ++ } ++ ++ switched_rules_by_language( ++ name = "com_google_googleapis_imports", ++ **attrs ++ ) ++ ++switched_rules = module_extension( ++ implementation = _switched_rules_impl, ++ tag_classes = { ++ "use_languages": _use_languages_tag, ++ }, ++) \ No newline at end of file diff --git a/build_defs/pbs_loadtest.bzl b/build_defs/pbs_loadtest.bzl new file mode 100644 index 00000000..b36c5ad5 --- /dev/null +++ b/build_defs/pbs_loadtest.bzl @@ -0,0 +1,43 @@ +# Copyright 2024 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. + +load("@io_bazel_rules_docker//container:container.bzl", "container_image", "container_push") + +def pbs_loadtest_container( + *, + name, + cmd = [], + files = [], + entrypoint = [], + labels = {}): + docker_target_name = "%s_container" % name + + container_image( + name = docker_target_name, + base = "@java_base_debug//image", + cmd = cmd, + entrypoint = entrypoint, + files = files, + labels = labels, + ) + + # registry,repository,tag will be assigned by "-dst" argument. + container_push( + name = name, + format = "Docker", + image = docker_target_name, + registry = "", + repository = "", + tag = "", + ) diff --git a/build_defs/release.bzl b/build_defs/release.bzl index b173c45d..f6dfcc8c 100644 --- a/build_defs/release.bzl +++ b/build_defs/release.bzl @@ -15,6 +15,7 @@ load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo") def _s3_jar_release_impl(ctx): jar_file = ctx.file.jar_target + licenses = ctx.file.licenses script_template = """#!/bin/bash set -eux # parse arguments and set up variables @@ -49,6 +50,7 @@ echo "bazel working directory:" pwd echo "-------------------------" outputfile=$(mktemp) +jar uf {jar_file} {licenses} aws s3 cp {jar_file} s3://{release_bucket}/{release_key}/$version/$artifact_name 2>&1 | tee $outputfile if grep -q "Skipping" "$outputfile"; then echo "ERROR: Artifact already exists" @@ -61,15 +63,17 @@ openssl sha256 {jar_file} || true jar_file = jar_file.short_path, release_bucket = ctx.attr.release_bucket[BuildSettingInfo].value, release_key = ctx.attr.release_key[BuildSettingInfo].value, + licenses = licenses.short_path, artifact_base_name = ctx.attr.artifact_base_name, ) ctx.actions.write(script, script_content, is_executable = True) runfiles = ctx.runfiles(files = [ jar_file, + licenses, ]) return [DefaultInfo( executable = script, - files = depset([script, jar_file]), + files = depset([script, jar_file, licenses]), runfiles = runfiles, )] @@ -84,6 +88,10 @@ s3_jar_release_rule = rule( mandatory = True, providers = [BuildSettingInfo], ), + "licenses": attr.label( + allow_single_file = True, + mandatory = True, + ), "release_bucket": attr.label( mandatory = True, providers = [BuildSettingInfo], @@ -100,6 +108,7 @@ def s3_jar_release( *, name, jar_target = ":jar_target_flag", + licenses = ":licenses_flag", release_bucket = ":bucket_flag", release_key = ":bucket_path_flag", artifact_base_name): @@ -115,6 +124,7 @@ def s3_jar_release( Args: name: The target name used to generate the targets described above. jar_target: Path to the jar build target. + licenses: Licenses that should be packaged with the release jar. release_bucket: s3 bucket to which the release the artifact. release_key: s3 key for the release artifact. artifact_base_name: base name of the artifact. The base name should include a "{VERSION}" substring which will be @@ -123,6 +133,7 @@ def s3_jar_release( s3_jar_release_rule( name = name, jar_target = jar_target, + licenses = licenses, release_bucket = release_bucket, release_key = release_key, artifact_base_name = artifact_base_name, @@ -130,6 +141,7 @@ def s3_jar_release( def _gcs_jar_release_impl(ctx): jar_file = ctx.file.jar_target + licenses = ctx.file.licenses script_template = """#!/bin/bash set -eux # parse arguments and set up variables @@ -164,6 +176,7 @@ echo "bazel working directory:" pwd echo "-------------------------" outputfile=$(mktemp) +jar uf {jar_file} {licenses} gsutil cp {jar_file} gs://{release_bucket}/{release_key}/$version/$artifact_name 2>&1 | tee $outputfile if grep -q "Skipping" "$outputfile"; then echo "ERROR: Artifact already exists" @@ -176,15 +189,17 @@ openssl sha256 {jar_file} || true jar_file = jar_file.short_path, release_bucket = ctx.attr.release_bucket[BuildSettingInfo].value, release_key = ctx.attr.release_key[BuildSettingInfo].value, + licenses = licenses.short_path, artifact_base_name = ctx.attr.artifact_base_name, ) ctx.actions.write(script, script_content, is_executable = True) runfiles = ctx.runfiles(files = [ jar_file, + licenses, ]) return [DefaultInfo( executable = script, - files = depset([script, jar_file]), + files = depset([script, jar_file, licenses]), runfiles = runfiles, )] @@ -199,6 +214,10 @@ gcs_jar_release_rule = rule( mandatory = True, providers = [BuildSettingInfo], ), + "licenses": attr.label( + allow_single_file = True, + mandatory = True, + ), "release_bucket": attr.label( mandatory = True, providers = [BuildSettingInfo], @@ -217,6 +236,7 @@ def gcs_jar_release( jar_target = ":jar_target_flag", release_bucket = ":bucket_flag", release_key = ":bucket_path_flag", + licenses = ":licenses_flag", artifact_base_name): """ Creates targets for releasing aggregation service artifact to gcs. @@ -240,5 +260,6 @@ def gcs_jar_release( jar_target = jar_target, release_bucket = release_bucket, release_key = release_key, + licenses = licenses, artifact_base_name = artifact_base_name, ) diff --git a/build_defs/shared_libraries/client_config_fix.patch b/build_defs/shared_libraries/client_config_fix.patch new file mode 100644 index 00000000..d8fce344 --- /dev/null +++ b/build_defs/shared_libraries/client_config_fix.patch @@ -0,0 +1,259 @@ +diff --git a/java/com/google/scp/operator/cpio/configclient/aws/Aws2GcpOperatorClientConfigModule.java b/java/com/google/scp/operator/cpio/configclient/aws/Aws2GcpOperatorClientConfigModule.java +index 5b58d3783..482d458f4 100644 +--- a/java/com/google/scp/operator/cpio/configclient/aws/Aws2GcpOperatorClientConfigModule.java ++++ b/java/com/google/scp/operator/cpio/configclient/aws/Aws2GcpOperatorClientConfigModule.java +@@ -124,7 +124,7 @@ public final class Aws2GcpOperatorClientConfigModule extends AbstractModule { + coordinatorBCredentials, + config + .coordinatorBEncryptionKeyServiceCloudfunctionUrl() +- .orElse(config.coordinatorBEncryptionKeyServiceBaseUrl().get())); ++ .orElse(config.coordinatorBEncryptionKeyServiceBaseUrl())); + } + + /** Provider for a {@code AwsSessionCredentialsProvider} class to access coordinator A. */ +diff --git a/java/com/google/scp/operator/cpio/configclient/common/OperatorClientConfig.java b/java/com/google/scp/operator/cpio/configclient/common/OperatorClientConfig.java +index 8a7a70502..4f881ac7f 100644 +--- a/java/com/google/scp/operator/cpio/configclient/common/OperatorClientConfig.java ++++ b/java/com/google/scp/operator/cpio/configclient/common/OperatorClientConfig.java +@@ -32,12 +32,12 @@ public abstract class OperatorClientConfig { + } + + /** CoordinatorA Workload Identity Pool Provider. */ +- public abstract String coordinatorAWipProvider(); ++ public abstract Optional coordinatorAWipProvider(); + + /** + * CoordinatorA Service Account which TEE can impersonate and has access to protected resources. + */ +- public abstract String coordinatorAServiceAccountToImpersonate(); ++ public abstract Optional coordinatorAServiceAccountToImpersonate(); + + /** CoordinatorB Workload Identity Pool Provider. */ + public abstract Optional coordinatorBWipProvider(); +@@ -54,7 +54,7 @@ public abstract class OperatorClientConfig { + public abstract String coordinatorAEncryptionKeyServiceBaseUrl(); + + /** Coordinator B encryption key service url */ +- public abstract Optional coordinatorBEncryptionKeyServiceBaseUrl(); ++ public abstract String coordinatorBEncryptionKeyServiceBaseUrl(); + + /** Coordinator A encryption key service cloudfunction url */ + public abstract Optional coordinatorAEncryptionKeyServiceCloudfunctionUrl(); +@@ -67,11 +67,11 @@ public abstract class OperatorClientConfig { + public abstract static class Builder { + + /** Set the CoordinatorA Workload Identity Pool Provider. */ +- public abstract Builder setCoordinatorAWipProvider(String coordinatorAWipProvider); ++ public abstract Builder setCoordinatorAWipProvider(Optional coordinatorAWipProvider); + + /** Set the CoordinatorA Service Account which can be impersonated by TEE. */ + public abstract Builder setCoordinatorAServiceAccountToImpersonate( +- String coordinatorAServiceAccountToImpersonate); ++ Optional coordinatorAServiceAccountToImpersonate); + + /** Set the CoordinatorB Workload Identity Pool Provider. */ + public abstract Builder setCoordinatorBWipProvider(Optional coordinatorBWipProvider); +@@ -89,7 +89,7 @@ public abstract class OperatorClientConfig { + + /** Set coordinator B encryption key service base url */ + public abstract Builder setCoordinatorBEncryptionKeyServiceBaseUrl( +- Optional coordinatorBEncryptionKeyServiceBaseUrl); ++ String coordinatorBEncryptionKeyServiceBaseUrl); + + /** Set coordinator A encryption key service base url */ + public abstract Builder setCoordinatorAEncryptionKeyServiceCloudfunctionUrl( +diff --git a/java/com/google/scp/operator/cpio/configclient/gcp/GcpOperatorClientConfigModule.java b/java/com/google/scp/operator/cpio/configclient/gcp/GcpOperatorClientConfigModule.java +index 4b74c418c..88b3752b4 100644 +--- a/java/com/google/scp/operator/cpio/configclient/gcp/GcpOperatorClientConfigModule.java ++++ b/java/com/google/scp/operator/cpio/configclient/gcp/GcpOperatorClientConfigModule.java +@@ -49,7 +49,8 @@ public final class GcpOperatorClientConfigModule extends AbstractModule { + return GoogleCredentials.getApplicationDefault(); + } + return CredentialsHelper.getAttestedCredentials( +- config.coordinatorAWipProvider(), config.coordinatorAServiceAccountToImpersonate()); ++ config.coordinatorAWipProvider().get(), ++ config.coordinatorAServiceAccountToImpersonate().get()); + } + + /** +@@ -60,9 +61,7 @@ public final class GcpOperatorClientConfigModule extends AbstractModule { + @CoordinatorBCredentials + @Singleton + GoogleCredentials provideCoordinatorBCredentials(OperatorClientConfig config) throws IOException { +- // For single party solution, we will not have coordinatorB details, so use default +- // credentials. These are not used for single party solution. +- if (config.useLocalCredentials() || config.coordinatorBWipProvider().isEmpty()) { ++ if (config.useLocalCredentials()) { + return GoogleCredentials.getApplicationDefault(); + } + return CredentialsHelper.getAttestedCredentials( +@@ -88,13 +87,10 @@ public final class GcpOperatorClientConfigModule extends AbstractModule { + @Singleton + public HttpClientWrapper provideCoordinatorBHttpClient(OperatorClientConfig config) + throws IOException { +- if (config.coordinatorBEncryptionKeyServiceBaseUrl().isPresent()) { +- return getHttpClientWrapper( +- config +- .coordinatorBEncryptionKeyServiceCloudfunctionUrl() +- .orElse(config.coordinatorBEncryptionKeyServiceBaseUrl().get())); +- } +- return HttpClientWrapper.createDefault(); ++ return getHttpClientWrapper( ++ config ++ .coordinatorBEncryptionKeyServiceCloudfunctionUrl() ++ .orElse(config.coordinatorBEncryptionKeyServiceBaseUrl())); + } + + @Override +@@ -102,9 +98,9 @@ public final class GcpOperatorClientConfigModule extends AbstractModule { + install(new GcpClientConfigModule()); + } + +- private static HttpClientWrapper getHttpClientWrapper(String url) throws IOException { ++ private static HttpClientWrapper getHttpClientWrapper(String audience) throws IOException { + return HttpClientWrapper.builder() +- .setInterceptor(GcpHttpInterceptorUtil.createHttpInterceptor(url)) ++ .setInterceptor(GcpHttpInterceptorUtil.createHttpInterceptor(audience)) + .setExponentialBackoff( + COORDINATOR_HTTPCLIENT_RETRY_INITIAL_INTERVAL, + COORDINATOR_HTTPCLIENT_RETRY_MULTIPLIER, +diff --git a/java/com/google/scp/operator/worker/SimpleWorkerModule.java b/java/com/google/scp/operator/worker/SimpleWorkerModule.java +index 40a071117..e0b6694e3 100644 +--- a/java/com/google/scp/operator/worker/SimpleWorkerModule.java ++++ b/java/com/google/scp/operator/worker/SimpleWorkerModule.java +@@ -25,8 +25,8 @@ import com.google.scp.operator.cpio.blobstorageclient.aws.S3BlobStorageClientMod + import com.google.scp.operator.cpio.blobstorageclient.gcp.Annotations.GcsEndpointUrl; + import com.google.scp.operator.cpio.configclient.Annotations.CoordinatorARegionBindingOverride; + import com.google.scp.operator.cpio.configclient.Annotations.CoordinatorBRegionBindingOverride; +-import com.google.scp.operator.cpio.configclient.common.OperatorClientConfig; + import com.google.scp.operator.cpio.configclient.Annotations.TrustedServicesClientVersion; ++import com.google.scp.operator.cpio.configclient.common.OperatorClientConfig; + import com.google.scp.operator.cpio.configclient.local.Annotations.CoordinatorARoleArn; + import com.google.scp.operator.cpio.configclient.local.Annotations.CoordinatorBRoleArn; + import com.google.scp.operator.cpio.configclient.local.Annotations.CoordinatorKmsArnParameter; +@@ -266,26 +266,22 @@ public final class SimpleWorkerModule extends AbstractModule { + } + OperatorClientConfig.Builder configBuilder = + OperatorClientConfig.builder() +- .setCoordinatorAServiceAccountToImpersonate(args.getCoordinatorAServiceAccount()) +- .setCoordinatorAWipProvider(args.getCoordinatorAWipProvider()) ++ .setCoordinatorAServiceAccountToImpersonate( ++ Optional.of(args.getCoordinatorAServiceAccount())) ++ .setCoordinatorBServiceAccountToImpersonate( ++ Optional.of(args.getCoordinatorBServiceAccount())) ++ .setCoordinatorAWipProvider(Optional.of(args.getCoordinatorAWipProvider())) ++ .setCoordinatorBWipProvider(Optional.of(args.getCoordinatorBWipProvider())) + .setUseLocalCredentials(args.getCoordinatorAWipProvider().isEmpty()) + .setCoordinatorAEncryptionKeyServiceBaseUrl( + args.getPrimaryEncryptionKeyServiceBaseUrl()) ++ .setCoordinatorBEncryptionKeyServiceBaseUrl( ++ args.getSecondaryEncryptionKeyServiceBaseUrl()) + .setCoordinatorAEncryptionKeyServiceCloudfunctionUrl( +- args.getPrimaryEncryptionKeyServiceCloudfunctionUrl()); +- if (!args.getCoordinatorBWipProvider().isEmpty()) { +- configBuilder.setCoordinatorBWipProvider(Optional.of(args.getCoordinatorBWipProvider())); +- } +- if (!args.getCoordinatorBServiceAccount().isEmpty()) { +- configBuilder.setCoordinatorBServiceAccountToImpersonate( +- Optional.of(args.getCoordinatorBServiceAccount())); +- } +- if (!args.getSecondaryEncryptionKeyServiceBaseUrl().isEmpty()) { +- configBuilder.setCoordinatorBEncryptionKeyServiceBaseUrl( +- Optional.of(args.getSecondaryEncryptionKeyServiceBaseUrl())); +- } +- configBuilder.setCoordinatorBEncryptionKeyServiceCloudfunctionUrl( +- args.getSecondaryEncryptionKeyServiceCloudfunctionUrl()); ++ args.getPrimaryEncryptionKeyServiceCloudfunctionUrl()) ++ .setCoordinatorBEncryptionKeyServiceCloudfunctionUrl( ++ args.getSecondaryEncryptionKeyServiceCloudfunctionUrl()); ++ + bind(OperatorClientConfig.class).toInstance(configBuilder.build()); + install(args.getClientConfigSelector().getClientConfigGuiceModule()); + +diff --git a/java/com/google/scp/shared/gcp/util/GcpHttpInterceptorUtil.java b/java/com/google/scp/shared/gcp/util/GcpHttpInterceptorUtil.java +index 3a3255d16..fbf63f0ca 100644 +--- a/java/com/google/scp/shared/gcp/util/GcpHttpInterceptorUtil.java ++++ b/java/com/google/scp/shared/gcp/util/GcpHttpInterceptorUtil.java +@@ -16,32 +16,32 @@ import org.apache.hc.core5.http.protocol.HttpContext; + public final class GcpHttpInterceptorUtil { + + /** Create http interceptor for gcp http clients with url as audience */ +- public static org.apache.http.HttpRequestInterceptor createHttpInterceptor(String url) ++ public static org.apache.http.HttpRequestInterceptor createHttpInterceptor(String audience) + throws IOException { +- return createHttpInterceptor(GoogleCredentials.getApplicationDefault(), url); ++ return createHttpInterceptor(GoogleCredentials.getApplicationDefault(), audience); + } + + public static org.apache.http.HttpRequestInterceptor createHttpInterceptor( +- GoogleCredentials credentials, String url) { +- return new GcpHttpInterceptor(credentials, url); ++ GoogleCredentials credentials, String audience) { ++ return new GcpHttpInterceptor(credentials, audience); + } + + /** + * Create HTTP Interceptor for GCP HTTP clients with url as audience. This is for use when + * communicating with the PBS server - not with GCP directly. + * +- * @param url The TargetAudience url to use ++ * @param audience The TargetAudience url to use + * @return A HttpRequestInterceptor that applies the generated GCP AccessToken to the intercepted + * HTTP request. + */ + public static org.apache.hc.core5.http.HttpRequestInterceptor createPbsHttpInterceptor( +- GoogleCredentials credentials, String url) { +- return new GcpPbsHttpInterceptor(credentials, url); ++ GoogleCredentials credentials, String audience) { ++ return new GcpPbsHttpInterceptor(credentials, audience); + } + +- public static org.apache.hc.core5.http.HttpRequestInterceptor createPbsHttpInterceptor(String url) +- throws IOException { +- return new GcpPbsHttpInterceptor(GoogleCredentials.getApplicationDefault(), url); ++ public static org.apache.hc.core5.http.HttpRequestInterceptor createPbsHttpInterceptor( ++ String audience) throws IOException { ++ return new GcpPbsHttpInterceptor(GoogleCredentials.getApplicationDefault(), audience); + } + + private abstract static class GcpHttpInterceptorBase { +@@ -50,13 +50,13 @@ public final class GcpHttpInterceptorUtil { + + public GcpHttpInterceptorBase( + GoogleCredentials sourceCredentials, +- String url, ++ String audience, + Consumer... extraSettings) { + + IdTokenCredentials.Builder builder = + IdTokenCredentials.newBuilder() + .setIdTokenProvider((IdTokenProvider) sourceCredentials) +- .setTargetAudience(url) ++ .setTargetAudience(audience) + // Setting the ID token options. + .setOptions( + Arrays.asList(Option.FORMAT_FULL, Option.LICENSES_TRUE, Option.INCLUDE_EMAIL)); +@@ -75,8 +75,8 @@ public final class GcpHttpInterceptorUtil { + private static final class GcpHttpInterceptor extends GcpHttpInterceptorBase + implements org.apache.http.HttpRequestInterceptor { + +- public GcpHttpInterceptor(GoogleCredentials sourceCredentials, String url) { +- super(sourceCredentials, url); ++ public GcpHttpInterceptor(GoogleCredentials sourceCredentials, String audience) { ++ super(sourceCredentials, audience); + } + + @Override +@@ -90,10 +90,10 @@ public final class GcpHttpInterceptorUtil { + private static final class GcpPbsHttpInterceptor extends GcpHttpInterceptorBase + implements org.apache.hc.core5.http.HttpRequestInterceptor { + +- public GcpPbsHttpInterceptor(GoogleCredentials sourceCredentials, String url) { ++ public GcpPbsHttpInterceptor(GoogleCredentials sourceCredentials, String audience) { + super( + sourceCredentials, +- url, ++ audience, + builder -> + builder + .setExpirationMargin(Duration.ofMinutes(10)) diff --git a/build_defs/shared_libraries/emulator_container.patch b/build_defs/shared_libraries/emulator_container.patch new file mode 100644 index 00000000..f5954f65 --- /dev/null +++ b/build_defs/shared_libraries/emulator_container.patch @@ -0,0 +1,13 @@ +diff --git a/javatests/com/google/scp/shared/testutils/gcp/CloudFunctionEmulatorContainer.java b/javatests/com/google/scp/shared/testutils/gcp/CloudFunctionEmulatorContainer.java +index 9775176eb..1a0bf52b1 100644 +--- a/javatests/com/google/scp/shared/testutils/gcp/CloudFunctionEmulatorContainer.java ++++ b/javatests/com/google/scp/shared/testutils/gcp/CloudFunctionEmulatorContainer.java +@@ -28,7 +28,7 @@ public final class CloudFunctionEmulatorContainer + + private static final String invokerJarFilename = "java-function-invoker-1.1.0.jar"; + private static final String invokerJarPath = +- "external/maven/v1/https/repo1.maven.org/maven2/com/google/cloud/functions/invoker/java-function-invoker/1.1.0/" ++ "external/rules_jvm_external~~maven~maven/com/google/cloud/functions/invoker/java-function-invoker/1.1.0/" + + invokerJarFilename; + private static final int invokerPort = 8080; // default internal port for the invoker jar process + diff --git a/build_defs/shared_libraries/golang.patch b/build_defs/shared_libraries/golang.patch new file mode 100644 index 00000000..6edd29ae --- /dev/null +++ b/build_defs/shared_libraries/golang.patch @@ -0,0 +1,29 @@ +diff --git a/MODULE.bazel b/MODULE.bazel +index 16f8d85..0881461 100644 +--- a/MODULE.bazel ++++ b/MODULE.bazel +@@ -209,7 +209,8 @@ go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk") + go_sdk.download(version = "1.23.0") + + go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps") +-go_deps.from_file(go_work = "//:go.work") ++ ++# go_deps.from_file(go_work = "//:go.work") + go_deps.module( + path = "github.com/bazelbuild/buildtools", + sum = "h1:FGzENZi+SX9I7h9xvMtRA3rel8hCEfyzSixteBgn7MU=", +@@ -221,10 +222,10 @@ go_deps.module( + use_repo( + go_deps, + "com_github_bazelbuild_buildtools", +- "com_github_googleapis_gax_go_v2", +- "com_github_kylelemons_godebug", +- "com_github_stretchr_testify", +- "com_google_cloud_go_spanner", ++ # "com_github_googleapis_gax_go_v2", ++ # "com_github_kylelemons_godebug", ++ # "com_github_stretchr_testify", ++ # "com_google_cloud_go_spanner", + ) + + python = use_extension("@rules_python//python/extensions:python.bzl", "python") diff --git a/build_defs/shared_libraries/rules_docker.patch b/build_defs/shared_libraries/rules_docker.patch new file mode 100644 index 00000000..7c613580 --- /dev/null +++ b/build_defs/shared_libraries/rules_docker.patch @@ -0,0 +1,209 @@ +diff --git a/.bazelrc b/.bazelrc +index 879cb6c..a241f5d 100644 +--- a/.bazelrc ++++ b/.bazelrc +@@ -10,7 +10,7 @@ build --test_output=errors + + # Required for io_bazel_rules_docker. Reference: + # https://github.com/bazelbuild/rules_docker/issues/2275 +-common --@io_bazel_rules_docker//transitions:enable=false ++common --@@io_bazel_rules_docker//transitions:enable=false + + build:cpp --client_env=BAZEL_CXXOPTS=-std=c++20 + build:cpp --cxxopt=-std=c++20 +diff --git a/build_defs/aws/enclave/container.bzl b/build_defs/aws/enclave/container.bzl +index 873a452..ca662aa 100644 +--- a/build_defs/aws/enclave/container.bzl ++++ b/build_defs/aws/enclave/container.bzl +@@ -12,7 +12,7 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-load("@io_bazel_rules_docker//container:container.bzl", "container_image") ++load("@@io_bazel_rules_docker//container:container.bzl", "container_image") + + # Note: use reproducible versions of these binaries. + _PROXY_BINARY_FILES = [Label("//cc/aws/proxy:libproxy_preload.so"), Label("//cc/aws/proxy:proxify"), Label("//cc/aws/proxy:socket_vendor")] +@@ -74,7 +74,7 @@ def java_enclave_image( + + container_image( + name = name, +- base = "@java_base//image", ++ base = "@@java_base//image", + cmd = enclave_cmd, + env = enclave_env_variables, + files = container_files, +diff --git a/build_defs/cc/aws/enclave/container.bzl b/build_defs/cc/aws/enclave/container.bzl +index 9330d32..7ebc0fa 100644 +--- a/build_defs/cc/aws/enclave/container.bzl ++++ b/build_defs/cc/aws/enclave/container.bzl +@@ -12,9 +12,9 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-load("@io_bazel_rules_docker//container:container.bzl", "container_image") +-load("@io_bazel_rules_docker//docker/package_managers:download_pkgs.bzl", "download_pkgs") +-load("@io_bazel_rules_docker//docker/package_managers:install_pkgs.bzl", "install_pkgs") ++load("@@io_bazel_rules_docker//container:container.bzl", "container_image") ++load("@@io_bazel_rules_docker//docker/package_managers:download_pkgs.bzl", "download_pkgs") ++load("@@io_bazel_rules_docker//docker/package_managers:install_pkgs.bzl", "install_pkgs") + load("@rules_pkg//:pkg.bzl", "pkg_tar") + load("//cc/process_launcher:helpers.bzl", "executable_struct_to_json_str") + +diff --git a/cc/aws/proxy/BUILD b/cc/aws/proxy/BUILD +index f9f0301..1d001a5 100644 +--- a/cc/aws/proxy/BUILD ++++ b/cc/aws/proxy/BUILD +@@ -13,7 +13,7 @@ + # limitations under the License. + + load("@com_github_google_rpmpack//:def.bzl", "pkg_tar2rpm") +-load("@io_bazel_rules_docker//container:container.bzl", "container_image") ++load("@@io_bazel_rules_docker//container:container.bzl", "container_image") + load("@rules_pkg//:pkg.bzl", "pkg_tar") + + package( +@@ -63,7 +63,7 @@ pkg_tar( + + container_image( + name = "build_container", +- base = "@amazonlinux_2//image", ++ base = "@@amazonlinux_2//image", + ) + + # Mounts the source code into an AmazonLinux2 docker container and performs a +diff --git a/cc/pbs/deploy/pbs_server/build_defs/pbs_container_multi_stage_build_tools.bzl b/cc/pbs/deploy/pbs_server/build_defs/pbs_container_multi_stage_build_tools.bzl +index d9c02f5..3124a15 100644 +--- a/cc/pbs/deploy/pbs_server/build_defs/pbs_container_multi_stage_build_tools.bzl ++++ b/cc/pbs/deploy/pbs_server/build_defs/pbs_container_multi_stage_build_tools.bzl +@@ -12,10 +12,10 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-load("@io_bazel_rules_docker//container:container.bzl", "container_image") +-load("@io_bazel_rules_docker//docker/package_managers:download_pkgs.bzl", "download_pkgs") +-load("@io_bazel_rules_docker//docker/package_managers:install_pkgs.bzl", "install_pkgs") +-load("@io_bazel_rules_docker//docker/util:run.bzl", "container_run_and_commit_layer", "container_run_and_extract") ++load("@@io_bazel_rules_docker//container:container.bzl", "container_image") ++load("@@io_bazel_rules_docker//docker/package_managers:download_pkgs.bzl", "download_pkgs") ++load("@@io_bazel_rules_docker//docker/package_managers:install_pkgs.bzl", "install_pkgs") ++load("@@io_bazel_rules_docker//docker/util:run.bzl", "container_run_and_commit_layer", "container_run_and_extract") + load("@rules_pkg//:pkg.bzl", "pkg_tar") + load("//cc/process_launcher:helpers.bzl", "executable_struct_to_json_str") + +diff --git a/cc/tools/build/BUILD b/cc/tools/build/BUILD +index acfce04..2cc1f37 100644 +--- a/cc/tools/build/BUILD ++++ b/cc/tools/build/BUILD +@@ -12,10 +12,10 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-load("@io_bazel_rules_docker//container:container.bzl", "container_image") +-load("@io_bazel_rules_docker//docker/package_managers:download_pkgs.bzl", "download_pkgs") +-load("@io_bazel_rules_docker//docker/package_managers:install_pkgs.bzl", "install_pkgs") +-load("@io_bazel_rules_docker//docker/util:run.bzl", "container_run_and_commit", "container_run_and_commit_layer") ++load("@@io_bazel_rules_docker//container:container.bzl", "container_image") ++load("@@io_bazel_rules_docker//docker/package_managers:download_pkgs.bzl", "download_pkgs") ++load("@@io_bazel_rules_docker//docker/package_managers:install_pkgs.bzl", "install_pkgs") ++load("@@io_bazel_rules_docker//docker/util:run.bzl", "container_run_and_commit", "container_run_and_commit_layer") + load("@rules_pkg//:pkg.bzl", "pkg_tar") + + package(default_visibility = ["//cc:pbs_visibility"]) +diff --git a/coordinator/keygeneration/gcp/build_defs.bzl b/coordinator/keygeneration/gcp/build_defs.bzl +index e846f6a..648f886 100644 +--- a/coordinator/keygeneration/gcp/build_defs.bzl ++++ b/coordinator/keygeneration/gcp/build_defs.bzl +@@ -12,7 +12,7 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-load("@io_bazel_rules_docker//container:container.bzl", "container_image", "container_push") ++load("@@io_bazel_rules_docker//container:container.bzl", "container_image", "container_push") + + def keygeneration_container(name, tag, registry, repository, log_policy_override = False): + container_name = name + "_container" +@@ -21,7 +21,7 @@ def keygeneration_container(name, tag, registry, repository, log_policy_override + labels["tee.launch_policy.log_redirect"] = "always" + container_image( + name = container_name, +- base = "@java_base//image", ++ base = "@@java_base//image", + cmd = [ + "KeyGenerationApp_deploy.jar", + "--multiparty", +diff --git a/coordinator/keyhosting/gcp/build_defs.bzl b/coordinator/keyhosting/gcp/build_defs.bzl +index 24f107c..405814d 100644 +--- a/coordinator/keyhosting/gcp/build_defs.bzl ++++ b/coordinator/keyhosting/gcp/build_defs.bzl +@@ -12,14 +12,14 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-load("@io_bazel_rules_docker//container:container.bzl", "container_image", "container_push") ++load("@@io_bazel_rules_docker//container:container.bzl", "container_image", "container_push") + load("//build_defs/shared:variables.bzl", "CLOUD_FUNCTIONS_JAVA_INVOKER_VERSION") + + def keyhosting_public_key_container(name, tag, registry, repository): + container_name = name + "_container" + container_image( + name = container_name, +- base = "@java_base//image", ++ base = "@@java_base//image", + cmd = [ + "/java-function-invoker-{}.jar".format(CLOUD_FUNCTIONS_JAVA_INVOKER_VERSION), + "--classpath", +@@ -46,7 +46,7 @@ def keyhosting_private_key_container(name, tag, registry, repository): + container_name = name + "_container" + container_image( + name = container_name, +- base = "@java_base//image", ++ base = "@@java_base//image", + cmd = [ + "/java-function-invoker-{}.jar".format(CLOUD_FUNCTIONS_JAVA_INVOKER_VERSION), + "--classpath", +diff --git a/coordinator/keystorage/gcp/build_defs.bzl b/coordinator/keystorage/gcp/build_defs.bzl +index 7a8b692..f11fc58 100644 +--- a/coordinator/keystorage/gcp/build_defs.bzl ++++ b/coordinator/keystorage/gcp/build_defs.bzl +@@ -12,14 +12,14 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-load("@io_bazel_rules_docker//container:container.bzl", "container_image", "container_push") ++load("@@io_bazel_rules_docker//container:container.bzl", "container_image", "container_push") + load("//build_defs/shared:variables.bzl", "CLOUD_FUNCTIONS_JAVA_INVOKER_VERSION") + + def keystorage_container(name, tag, registry, repository): + container_name = name + "_container" + container_image( + name = container_name, +- base = "@java_base//image", ++ base = "@@java_base//image", + cmd = [ + "/java-function-invoker-{}.jar".format(CLOUD_FUNCTIONS_JAVA_INVOKER_VERSION), + "--classpath", +diff --git a/coordinator/privacybudget/gcp/BUILD b/coordinator/privacybudget/gcp/BUILD +index 36e1a77..3bca731 100644 +--- a/coordinator/privacybudget/gcp/BUILD ++++ b/coordinator/privacybudget/gcp/BUILD +@@ -12,7 +12,7 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-load("@io_bazel_rules_docker//container:container.bzl", "container_push") ++load("@@io_bazel_rules_docker//container:container.bzl", "container_push") + + container_push( + name = "pbs_cloud_run_container_image", +diff --git a/operator/worker/gcp/BUILD b/operator/worker/gcp/BUILD +index bf94567..a4c83a0 100644 +--- a/operator/worker/gcp/BUILD ++++ b/operator/worker/gcp/BUILD +@@ -12,6 +12,4 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-load("@io_bazel_rules_docker//container:container.bzl", "container_image", "container_push") +- + package(default_visibility = ["//visibility:public"]) diff --git a/build_defs/shared_libraries/rules_pkg_build_fix.patch b/build_defs/shared_libraries/rules_pkg_build_fix.patch deleted file mode 100644 index f447f7dd..00000000 --- a/build_defs/shared_libraries/rules_pkg_build_fix.patch +++ /dev/null @@ -1,227 +0,0 @@ -diff --git a/BUILD b/BUILD -index 12cf08abb..9e25a6747 100644 ---- a/BUILD -+++ b/BUILD -@@ -12,7 +12,6 @@ - # See the License for the specific language governing permissions and - # limitations under the License. - --load("@bazel_skylib//rules:copy_directory.bzl", "copy_directory") - load("@com_github_bazelbuild_buildtools//buildifier:def.bzl", "buildifier") - load("@rules_pkg//:mappings.bzl", "pkg_files") - load("@rules_pkg//:pkg.bzl", "pkg_tar") -@@ -30,53 +29,6 @@ buildifier( - mode = "fix", - ) - --# pkg_tar no longer allows directories to be specified. --# Must use copy_directory to create Tree Artifacts. --# https://github.com/bazelbuild/rules_pkg/issues/611 --# --# The srcs directory is prefixed to avoid the error conflicting with --# other build rules: --# "One of the output paths ... is a prefix of the other. --# These actions cannot be simultaneously present; --# please rename one of the output files or build just one of them" --# It will be stripped by pkg_tar remap_paths. -- --copy_directory( -- name = "build_defs_dir", -- src = "build_defs", -- out = "srcs/build_defs", --) -- --copy_directory( -- name = "cc_dir", -- src = "cc", -- out = "srcs/cc", --) -- --copy_directory( -- name = "java_dir", -- src = "java", -- out = "srcs/java", --) -- --copy_directory( -- name = "javatests_dir", -- src = "javatests", -- out = "srcs/javatests", --) -- --copy_directory( -- name = "licenses_dir", -- src = "licenses", -- out = "srcs/licenses", --) -- --copy_directory( -- name = "operator_dir", -- src = "operator", -- out = "srcs/operator", --) -- - # This rule is used to copy the source code from other bazel rules. - # This can be used for reproducible builds. - # Only cc targets are needed at this point, so only the files needed to build -@@ -88,18 +40,15 @@ pkg_tar( - ".bazelversion", - "BUILD", - "WORKSPACE", -- ":build_defs_dir", -- ":cc_dir", -- ":java_dir", -- ":javatests_dir", -- ":licenses_dir", -- ":operator_dir", -+ "build_defs", -+ "cc", -+ "java", -+ "javatests", -+ "licenses", -+ "operator", - ] + glob(["*.bzl"]), - mode = "0777", - package_dir = "scp", -- remap_paths = { -- "srcs/": "", -- }, - ) - - pkg_files( -diff --git a/build_defs/aws/kmstool/kmstool.BUILD b/build_defs/aws/kmstool/kmstool.BUILD -index 022ca6791..5a5d95a2e 100644 ---- a/build_defs/aws/kmstool/kmstool.BUILD -+++ b/build_defs/aws/kmstool/kmstool.BUILD -@@ -1,62 +1,19 @@ --load("@bazel_skylib//rules:copy_directory.bzl", "copy_directory") - load("@rules_pkg//:pkg.bzl", "pkg_tar") - - package(default_visibility = ["//visibility:public"]) - - exports_files(glob(["*"])) - --copy_directory( -- name = "bin_dir", -- src = "bin", -- out = "bin", --) -- --copy_directory( -- name = "cmake_dir", -- src = "cmake", -- out = "cmake", --) -- --copy_directory( -- name = "containers_dir", -- src = "containers", -- out = "containers", --) -- --copy_directory( -- name = "docs_dir", -- src = "docs", -- out = "docs", --) -- --copy_directory( -- name = "include_dir", -- src = "include", -- out = "include", --) -- --copy_directory( -- name = "source_dir", -- src = "source", -- out = "source", --) -- --copy_directory( -- name = "tests_dir", -- src = "tests", -- out = "tests", --) -- - pkg_tar( - name = "source_code_tar", - srcs = [ -- ":bin_dir", -- ":cmake_dir", -- ":containers_dir", -- ":docs_dir", -- ":include_dir", -- ":source_dir", -- ":tests_dir", -+ "bin", -+ "cmake", -+ "containers", -+ "docs", -+ "include", -+ "source", -+ "tests", - ] + glob(["*"]), - mode = "0777", - package_dir = "aws_nitro_enclaves_sdk_c", -diff --git a/operator/terraform/aws/environments/demo/BUILD b/operator/terraform/aws/environments/demo/BUILD -index 82726daf5..fdde467c2 100644 ---- a/operator/terraform/aws/environments/demo/BUILD -+++ b/operator/terraform/aws/environments/demo/BUILD -@@ -64,20 +64,20 @@ pkg_files( - # copied. - pkg_mklink( - name = "operator_service_link", -- link_name = "demo/operator_service.tf", -- target = "../shared/operator_service.tf", -+ src = "../shared/operator_service.tf", -+ dest = "demo/operator_service.tf", - ) - - pkg_mklink( - name = "operator_service_vars_link", -- link_name = "demo/operator_service_variables.tf", -- target = "../shared/operator_service_variables.tf", -+ src = "../shared/operator_service_variables.tf", -+ dest = "demo/operator_service_variables.tf", - ) - - pkg_mklink( - name = "ami_params_link", -- link_name = "demo/ami_params.auto.tfvars", -- target = "../shared/ami_params.auto.tfvars", -+ src = "../shared/ami_params.auto.tfvars", -+ dest = "demo/ami_params.auto.tfvars", - ) - - pkg_filegroup( -diff --git a/operator/terraform/gcp/environments/demo/BUILD b/operator/terraform/gcp/environments/demo/BUILD -index 5f5d9f54d..ee109ecf9 100644 ---- a/operator/terraform/gcp/environments/demo/BUILD -+++ b/operator/terraform/gcp/environments/demo/BUILD -@@ -20,20 +20,20 @@ package(default_visibility = ["//visibility:public"]) - # copied. - pkg_mklink( - name = "job_service_link", -- link_name = "demo/job_service.tf", -- target = "../shared/job_service.tf", -+ src = "../shared/job_service.tf", -+ dest = "demo/job_service.tf", - ) - - pkg_mklink( - name = "job_service_vars_link", -- link_name = "demo/job_service_variables.tf", -- target = "../shared/job_service_variables.tf", -+ src = "../shared/job_service_variables.tf", -+ dest = "demo/job_service_variables.tf", - ) - - pkg_mklink( - name = "job_service_outputs_link", -- link_name = "demo/job_service_outputs.tf", -- target = "../shared/job_service_outputs.tf", -+ src = "../shared/job_service_outputs.tf", -+ dest = "demo/job_service_outputs.tf", - ) - - pkg_files( diff --git a/build_defs/shared_libraries/tmp_build.patch b/build_defs/shared_libraries/tmp_build.patch new file mode 100644 index 00000000..265518e7 --- /dev/null +++ b/build_defs/shared_libraries/tmp_build.patch @@ -0,0 +1,25 @@ +diff --git a/.bazelrc b/.bazelrc +index 879cb6cfd..7c019b93c 100644 +--- a/.bazelrc ++++ b/.bazelrc +@@ -1,5 +1,5 @@ + # Migration to Bzlmod is not ready yet +-common --noenable_bzlmod ++# common --noenable_bzlmod + + build --announce_rc + build --verbose_failures +diff --git a/BUILD b/BUILD +index 41107c77f..5094911d3 100644 +--- a/BUILD ++++ b/BUILD +@@ -119,7 +119,9 @@ pkg_tar( + ".bazelrc", + ".bazelversion", + "BUILD", ++ "MODULE.bazel", + "WORKSPACE", ++ "WORKSPACE.bzlmod", + ":build_defs_dir", + ":cc_dir", + ":java_dir", diff --git a/build_defs/shared_libraries/v1.10_serverless_connector.patch b/build_defs/shared_libraries/v1.10_serverless_connector.patch deleted file mode 100644 index 780d54ca..00000000 --- a/build_defs/shared_libraries/v1.10_serverless_connector.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/operator/terraform/gcp/modules/vpc/serverless-connector.tf b/operator/terraform/gcp/modules/vpc/serverless-connector.tf -index be2932bae..0c17a0da5 100644 ---- a/operator/terraform/gcp/modules/vpc/serverless-connector.tf -+++ b/operator/terraform/gcp/modules/vpc/serverless-connector.tf -@@ -1,6 +1,7 @@ - module "serverless-connector" { - count = var.create_connectors ? 1 : 0 - source = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta" -+ version = "<= 9.1.0" - project_id = var.project_id - vpc_connectors = [ - for index, region in tolist(var.regions) : { diff --git a/build_defs/shared_libraries/workspace.patch b/build_defs/shared_libraries/workspace.patch new file mode 100644 index 00000000..1197c765 --- /dev/null +++ b/build_defs/shared_libraries/workspace.patch @@ -0,0 +1,7 @@ +diff --git a/WORKSPACE b/WORKSPACE +index 809c65855..f67caa8b2 100644 +--- a/WORKSPACE ++++ b/WORKSPACE +@@ -1 +1 @@ +-workspace(name = "privacy_sandbox_coordinator_services_and_shared_libraries~") ++workspace(name = "privacy_sandbox_coordinator_services_and_shared_libraries") diff --git a/build_defs/worker/gcp/deploy.bzl b/build_defs/worker/gcp/deploy.bzl index a439cd2f..a27d8488 100644 --- a/build_defs/worker/gcp/deploy.bzl +++ b/build_defs/worker/gcp/deploy.bzl @@ -25,7 +25,7 @@ def worker_gcp_deployment( container_image( name = docker_target_name, - base = "@java_base//image", + base = "@java_base_gcp//image", cmd = cmd, entrypoint = entrypoint, files = files, diff --git a/docs/api.md b/docs/api.md index c46ab1c7..5a6ae01b 100644 --- a/docs/api.md +++ b/docs/api.md @@ -35,6 +35,17 @@ POST // available to the enclave and 1000. "input_data_blob_prefix": , + // [Optional] Input prefixes list. A maximum of 50 entries can be specified in the list. + // Each entry in the list should either be a path to + // a single file or a prefix in file path for multiple files. + // For example, specifying "["folder1/shard", "folder2/shard/test2.avro"]" would + // take as input all files with paths starting with "folder1/shard" + // along with the file "folder2/shard/test2.avro". + // This parameter and the "input_data_blob_prefix" parameter are mutually + // exclusive. Exactly one of the two parameters should be provided in the request. + // The parameter "input_data_blob_prefixes" will be supported in version 2.11 and onward. + "input_data_blob_prefixes": >, + // Storage bucket for input data. "input_data_bucket_name": , @@ -46,6 +57,9 @@ POST // If "output_data_blob_prefix" includes the Avro file extension (.avro), // the output shard names will also include the Avro file extension at // the end. + // If the Aggregation job returns the error code PRIVACY_BUDGET_EXHAUSTED, + // a JSON file with debugging information will be written in + // output_data_bucket_name at the output_data_blob_prefix. "output_data_blob_prefix": , // Storage bucket for output data. @@ -59,6 +73,9 @@ POST // "folder1/shard_domain.avro" and "folder1/shard/folder2/domain.avro". // It is recommended to keep the number of shards between the number of CPUs // available to the enclave and 1000. + // Only keys in the domain file are written to the summary report. + // More details on domain keys can be found here: + // https://developers.google.com/privacy-sandbox/private-advertising/aggregation-service/privacy-protection-report-strategy#pre-declared_aggregation_keys. "output_domain_blob_prefix": , // Domain file bucket. @@ -101,7 +118,8 @@ POST // [Optional] When executing a debug run, noised and unnoised debug summary // report and annotations are added to indicate which keys are present in the // domain input and/or reports. Additionally, duplicates across batches are - // also not enforced. Note that the debug run only considers reports that have the flag + // also not enforced. Privacy budget will not be consumed when debug_run is + // enabled. Note that the debug run only considers reports that have the flag // "debug_mode": "enabled". Read /docs/debugging.md for details. "debug_run": } @@ -168,6 +186,8 @@ These are the validations that are done before the aggregation begins. `reporting_site`. 5. If `job_parameters.reporting_site` is provided, `shared_info.reporting_origin` of all aggregatable reports should belong to this reporting site. +6. Job request should contain exactly one of `input_data_blob_prefix` and `input_data_blob_prefixes` + parameters. This validation will be enforced in version 2.11 and onward. Return code: [INVALID_JOB](java/com/google/aggregate/adtech/worker/AggregationWorkerReturnCode.java#L38) @@ -213,6 +233,9 @@ Not found: 404 Not Found "request_updated_at": , // Location of input reports "input_data_blob_prefix": , + // [Optional] List of locations of input reports from the CreateJob request, + // if provided. This parameter will be available in version 2.11 and onward. + "input_data_blob_prefixes": >, "input_data_bucket_name": , // Location of output summary report "output_data_blob_prefix": , @@ -361,7 +384,9 @@ aggregatable reports using collected data. ``` Additionally a domain file is needed to declare all expected aggregation keys for aggregating the -aggregatable reports (keys not listed in the domain file won't be aggregated) +aggregatable reports (keys not listed in the domain file won't be aggregated). More details on +domain keys can be found +[here](https://developers.google.com/privacy-sandbox/private-advertising/aggregation-service/privacy-protection-report-strategy#pre-declared_aggregation_keys). #### [output_domain.avsc](/protocol/avro/output_domain.avsc) diff --git a/docs/assets/resource-based-recommendation.png b/docs/assets/resource-based-recommendation.png new file mode 100644 index 00000000..81b5dc32 Binary files /dev/null and b/docs/assets/resource-based-recommendation.png differ diff --git a/docs/aws-aggregation-service.md b/docs/aws-aggregation-service.md index d146017b..bce45a19 100644 --- a/docs/aws-aggregation-service.md +++ b/docs/aws-aggregation-service.md @@ -6,7 +6,8 @@ To test the aggregation service with support for encrypted reports, you need the - Have an [AWS account](https://portal.aws.amazon.com/gp/aws/developer/registration/index.html) available to you. -- Complete the aggregation service [onboarding form](https://forms.gle/EHoecersGKhpcLPNA) +- Complete the aggregation service + [onboarding & enrollment flow](https://console.privacysandbox.google.com) Once you've submitted the onboarding form, we will contact you to verify your information. Then, we'll send you the remaining instructions and information needed for this setup.
_You won't be @@ -117,27 +118,19 @@ Make the following adjustments in the `/terraform/aws/environme # } ``` -1. Rename `example.auto.tfvars` to `.auto.tfvars` and add the `...assume_role...` - values using the information you received in the onboarding email. Delete the line that reads - `assume_role_parameter = "arn:aws:iam::example:role/example"` Leave all other values as-is for +1. Rename `example.auto.tfvars` to `.auto.tfvars`. Delete the line that reads + `assume_role_parameter = "arn:aws:iam::example:role/example"`. Leave all other values as-is for the initial deployment. ```sh environment = "" ... - - coordinator_a_assume_role_parameter = "arn:aws:iam:::role/a__coordinator_assume_role" - coordinator_b_assume_role_parameter = "arn:aws:iam:::role/b__coordinator_assume_role" ... alarm_notification_email = "" ``` - environment: name of your environment - - coordinator_a_assume_role_parameter: IAM role for Coordinator A given by us in the - onboarding or upgrade email - - coordinator_b_assume_role_parameter: IAM role for Coordinator B given by us in the - onboarding or upgrade email - alarm_notification_email: Email to receive alarm notifications. Requires confirmation subscription through sign up email sent to this address. - region: The region of the AMI. It is set to "us-east-1" by default. If the AMI is self-built @@ -276,6 +269,19 @@ file into smaller shards. ## Updating the system +_Note: Versions 2.13.0 and higher will contain the terraform files previously available in the +[Coordinator Services and Shared Libraries Repository](https://github.com/privacysandbox/coordinator-services-and-shared-libraries). +When upgrading from a version lower than or equal to 2.12.x, please run the below commands to remove +untracked copies of the folders that will now be managed via the aggregation service repository:_ + +```sh +rm -rf terraform/aws/environments/demo +rm -rf terraform/aws/environments/shared +rm -rf terraform/aws/applications +rm -rf terraform/aws/modules +rm -rf terraform/aws/coordinator-services-and-shared-libraries +``` + Run the following in the ``. ```sh @@ -291,6 +297,14 @@ _Note: If you use self-built artifacts described in `bash download_prebuilt_dependencies.sh` and make sure you updated your dependencies in the `jars` folder._ +If you're updating from pre-2.13 to 2.13+ : + +1. Make sure to update shared terraform, following this + [section](#download-terraform-scripts-and-prebuilt-dependencies). +2. In your `.auto.tfvars`, delete `coordinator_a_assume_role_parameter` and + `coordinator_b_assume_role_parameter` since the cross-cloud coordinators no longer require these + values. + ## Troubleshooting - The following error message points to a potential lack of instance availability. If you diff --git a/docs/debugging.md b/docs/debugging.md index 2c78b381..6409ecd6 100644 --- a/docs/debugging.md +++ b/docs/debugging.md @@ -160,23 +160,11 @@ The schema of debug summary reports is in the following [Avro](https://avro.apac ### Privacy Budget Service Errors -When aggregation is performed in debug mode, the privacy budget is still consumed. If the budget is -available and consumed successfully, the return code and message in the case of success are the same -as in a non-debug run. - -Otherwise, a summary report will still be generated. A custom return code and a corresponding return -message will be present in the getJob API response indicating if budget errors would occur for this -aggregation in a non-debug run. - -#### Debug Mode Aggregation Outcomes - -**Success:** Returns code `SUCCESS` | Aggregation job successfully processed. - -**Success with aggregation errors:** Returns code `SUCCESS_WITH_ERRORS` | Aggregation job -successfully processed but some reports have errors. - -**PBS Exception:** Returns code `DEBUG_SUCCESS_WITH_PRIVACY_BUDGET_ERROR` | Aggregation would have -failed in non-debug mode due to a privacy budget error. - -**PBS Exhausted:** Returns code `DEBUG_SUCCESS_WITH_PRIVACY_BUDGET_EXHAUSTED` | Aggregation would -have failed in non-debug mode due to privacy budget exhaustion. +When an aggregation job is performed with `debug_run` enabled, the privacy budget is **not** +consumed. Furthermore, budget availability will not be checked while `debug_run` is enabled -- even +if budget is not available, the summary report will still be generated successfully. + +This change was made in version 2.10. For versions 2.9 and lower, debug runs _would_ consume privacy +budget. Budget that was consumed with previous debug runs will not be recovered automatically. If +budget recovery is necessary for previously consumed budget, please see the +[budget recovery process](https://github.com/privacysandbox/aggregation-service/wiki/Aggregate-Report-Accounting-Budget-Recovery-Criteria-&-Process) diff --git a/docs/error-codes-and-mitigation.md b/docs/error-codes-and-mitigation.md index e24e5f74..b47804c7 100644 --- a/docs/error-codes-and-mitigation.md +++ b/docs/error-codes-and-mitigation.md @@ -6,23 +6,21 @@ This section covers the return code provided by the Aggregation Service job once running. The `return_code` field within the `result_info` section of the getJob API response will provide these return codes listed in [/docs/api.md#getjob-endpoint](/docs/api.md#getjob-endpoint). -| Return Code | Message | When does this error happen? | Job can be retried | Adtech actionable? | Mitigation | -| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| SUCCESS | Aggregation Job completed successfully. | Aggregation Job completed successfully. | N/A | N/A | N/A | -| SUCCESS_WITH_ERRORS | "Aggregation job successfully processed but some reports have errors." | Some of the reports had processing errors. | No | No | Check the Error Summary to see Aggregation Service Report Error Codes. More details about error summary at [/docs/api.md#error-response-body-1](/docs/api.md#error-response-body-1) | -| PRIVACY_BUDGET_EXHAUSTED | "Insufficient privacy budget for one or more aggregatable reports. No aggregatable report can appear in more than one aggregation job." | When a job is trying to process reports that have been processed before or have the same shared ID as another report that is already processed. | No | Yes | Remove reports that have shared IDs with no budget left. Note: All reports regardless of production or debug endpoint will need to be batched according to shared ID. If you have a batch where the shared ID both exists in production and debug, you will encounter a privacy budget exhausted error. See our batching strategies [/docs/batching-strategies.md](/docs/batching-strategies.md) for more information. | -| PRIVACY_BUDGET_ERROR | "Exception while consuming privacy budget. Exception message: " + {exception message} | An error happened while consuming the privacy budget. | Yes | Yes | Retry the job. We also recommend each batch to be per advertiser or destination. Batching strategies can be found at [/docs/batching-strategies.md](/docs/batching-strategies.md) | -| INVALID_JOB | "Error due to validation exception." | When the job parameters fail validation. | Yes | Yes | Correct the job parameters for the job based on the validation message returned. Please see the createJob request parameter documentation for more details : [/docs/api.md#payload](/docs/api.md#payload) | -| RESULT_WRITE_ERROR | "Exception occured while writing result." | When the write to the output directory fails. | No | Yes | 1. Check that the account running Aggregation Service has write permissions for the output directory. 2. If a budget recovery process is available then contact Aggregation Service support for recovering the budget. | -| INTERNAL_ERROR | "Exception in processing domain." or "Internal Service Exception when processing reports." | An error occurred while processing output domains or Internal Error encountered. | Yes | Yes | Ensure that output domain location is a valid path. Retry the job. If error persists, contact Aggregation Service support. | -| UNSUPPORTED_REPORT_VERSION | "Exception due to unsupported report version" | An aggregatable report with a higher major sharedInfo version was provided and Aggregation Service is not up-to-date to support this version. | No | Yes | Update Aggregation Service deployment to a version that supports the report versions. | -| PERMISSION_ERROR | "Exception because of missing permission." | Aggregation service did not have access to storage or other requested resources. | No | Yes | 1. Ensure that Aggregation Service has access to the storage and requested resources to run the job. 2. This could be due to permission error while fetching decryption keys. Ensure that the account running Aggregation Service is the same as the one provided during onboarding. | -| INPUT_DATA_READ_FAILED | "No report shards found for location: " + reportsLocationor "Exception while reading reports input data." or "Exception while reading domain input data." | No reports or output domain shards were found, or the Aggregation Service was unable to read them. | Yes | Yes | 1.Ensure that the input report data location has the reports to be processed. 2.Ensure that the job has the right permissions to read the input/domain shards. Make sure the worker/job has the correct permissions to read the shards. 3.Ensure that the input_data_bucket_name, input_data_blob_prefix, output_data_bucket_name and output_data_blob_prefix fields are correct in your createJob request | -| DEBUG_SUCCESS_WITH_PRIVACY_BUDGET_ERROR | "Aggregation would have failed in non-debug mode due to a privacy budget error." | Job run using debug_run param succeeded but would have failed due to privacy budget error if run in normal mode. | Yes | No | N/A | -| DEBUG_SUCCESS_WITH_PRIVACY_BUDGET_EXHAUSTED | "Aggregation would have failed in non-debug mode due to privacy budget exhaustion" | Job running in Debug Mode succeeded but would have failed if running in non-debug mode due to privacy budget exhaustion. | Yes | No | N/A | -| REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD | "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold." | The number reports with an issue exceeded the threshold. | Yes. | Yes | Check the Error Summary to see Aggregation Service Report Error Codes. Retry the job once reports with errors are removed from the batch. | -| PRIVACY_BUDGET_AUTHENTICATION_ERROR | "Aggregation service is not authenticated to call privacy budget service. This could happen due to a misconfiguration during enrollment. Please contact support for resolution." | Aggregation Service is not set up correctly for Aggregatable report accounting. | Yes, retry after setup is fixed. | Yes | Check that the account running the Aggregation Service matches the account that was provided during onboarding. | -| PRIVACY_BUDGET_AUTHORIZATION_ERROR | "Aggregation service is not authorized to call privacy budget service. This could happen if the createJob API job_paramaters.attribution_report_to does not match the one registered at enrollment. Please verify and contact support if needed." | The attribution reporting origin in the job parameters doesn't match the one registered during enrollment. | Yes, retry after changing the reporting origin job parameter. | Yes | Correct the job parameter `attribution_report_to`. | +| Return Code | Message | When does this error happen? | Job can be retried | Adtech actionable? | Mitigation | +| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| SUCCESS | Aggregation Job completed successfully. | Aggregation Job completed successfully. | N/A | N/A | N/A | +| SUCCESS_WITH_ERRORS | "Aggregation job successfully processed but some reports have errors." | Some of the reports had processing errors. | No | No | Check the Error Summary to see Aggregation Service Report Error Codes. More details about error summary at [/docs/api.md#error-response-body-1](/docs/api.md#error-response-body-1) | +| PRIVACY_BUDGET_EXHAUSTED | "Insufficient privacy budget for one or more aggregatable reports. No aggregatable report can appear in more than one aggregation job. Information related to reports that do not have budget can be found in the following file: File path: `//` Filename: `privacy_budget_exhausted_.json` " | When a job is trying to process reports that have been processed before or have the same shared ID as another report that is already processed. | No | Yes | Remove reports that have shared IDs with no budget left. A JSON file with information on the inputs that led to the privacy budget exhausted error is at output_data_blob_prefix. This file contains the {shared_info, filtering_id} combinations that are causing the related privacy budget error. Aggregatable reports matching the {shared_info, filtering_id} combinations can be removed from the job to mitigate the issue. Note: All reports regardless of production or debug endpoint will need to be batched according to shared ID. If you have a batch where the shared ID both exists in production and debug, you will encounter a privacy budget exhausted error. See our batching strategies [/docs/batching-strategies.md](/docs/batching-strategies.md) for more information. | +| PRIVACY_BUDGET_ERROR | "Exception while consuming privacy budget. Exception message: " + {exception message} | An error happened while consuming the privacy budget. | Yes | Yes | Retry the job. We also recommend each batch to be per advertiser or destination. Batching strategies can be found at [/docs/batching-strategies.md](/docs/batching-strategies.md) | +| INVALID_JOB | "Error due to validation exception." | When the job parameters fail validation. | Yes | Yes | Correct the job parameters for the job based on the validation message returned. Please see the createJob request parameter documentation for more details : [/docs/api.md#payload](/docs/api.md#payload) | +| RESULT_WRITE_ERROR | "Exception occured while writing result." | When the write to the output directory fails. | No | Yes | 1. Check that the account running Aggregation Service has write permissions for the output directory. 2. If a budget recovery process is available then contact Aggregation Service support for recovering the budget. | +| INTERNAL_ERROR | "Exception in processing domain." or "Internal Service Exception when processing reports." | An error occurred while processing output domains or Internal Error encountered. | Yes | Yes | Ensure that output domain location is a valid path. Retry the job. If error persists, contact Aggregation Service support. | +| UNSUPPORTED_REPORT_VERSION | "Exception due to unsupported report version" | An aggregatable report with a higher major sharedInfo version was provided and Aggregation Service is not up-to-date to support this version. | No | Yes | Update Aggregation Service deployment to a version that supports the report versions. | +| PERMISSION_ERROR | "Exception because of missing permission." | Aggregation service did not have access to storage or other requested resources. | No | Yes | 1. Ensure that Aggregation Service has access to the storage and requested resources to run the job. 2. This could be due to permission error while fetching decryption keys. Ensure that the account running Aggregation Service is the same as the one provided during onboarding. | +| INPUT_DATA_READ_FAILED | "No report shards found for location: " + reportsLocationor "Exception while reading reports input data." or "Exception while reading domain input data." | No reports or output domain shards were found, or the Aggregation Service was unable to read them. | Yes | Yes | 1.Ensure that the input report data location has the reports to be processed. 2.Ensure that the job has the right permissions to read the input/domain shards. Make sure the worker/job has the correct permissions to read the shards. 3.Ensure that the input_data_bucket_name, input_data_blob_prefix, output_data_bucket_name and output_data_blob_prefix fields are correct in your createJob request | +| REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD | "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold." | The number reports with an issue exceeded the threshold. | Yes. | Yes | Check the Error Summary to see Aggregation Service Report Error Codes. Retry the job once reports with errors are removed from the batch. | +| PRIVACY_BUDGET_AUTHENTICATION_ERROR | "Aggregation service is not authenticated to call privacy budget service. This could happen due to a misconfiguration during enrollment. Please contact support for resolution." | Aggregation Service is not set up correctly for Aggregatable report accounting. | Yes, retry after setup is fixed. | Yes | Check that the account running the Aggregation Service matches the account that was provided during onboarding. | +| PRIVACY_BUDGET_AUTHORIZATION_ERROR | "Aggregation service is not authorized to call privacy budget service. This could happen if the createJob API job_paramaters.attribution_report_to does not match the one registered at enrollment. Please verify and contact support if needed." | The attribution reporting origin in the job parameters doesn't match the one registered during enrollment. | Yes, retry after changing the reporting origin job parameter. | Yes | Correct the job parameter `attribution_report_to`. | ## Aggregation Service Report Error Codes and Mitigations diff --git a/docs/gcp-aggregation-service.md b/docs/gcp-aggregation-service.md index f8652c21..30932070 100644 --- a/docs/gcp-aggregation-service.md +++ b/docs/gcp-aggregation-service.md @@ -7,7 +7,8 @@ To test the aggregation service with support for encrypted reports, you need the - Have a [GCP project](https://cloud.google.com/). - Run the [Adtech Setup Terraform](#adtech-setup-terraform) to create/configure the service account needed for onboarding. -- Complete the aggregation service [onboarding form](https://forms.gle/EHoecersGKhpcLPNA) +- Complete the aggregation service + [onboarding & enrollment flow](https://console.privacysandbox.google.com) Once you've submitted the onboarding form, we will contact you to verify your information. Then, we'll send you the remaining instructions and information needed for this setup.
_You won't be @@ -184,7 +185,7 @@ Make the following adjustments in the `/terraform/gcp/environme environment = "" ... alarms_enabled = true - alarm_notification_email = "" + alarms_notification_email = "" ``` - project_id: Google Cloud project ID for your deployment @@ -192,8 +193,8 @@ Make the following adjustments in the `/terraform/gcp/environme - user_provided_worker_sa_email: Set to worker service account created in [Adtech Setup section](./docs/gcp-aggregation-service.md#adtech-setup-terraform) and submitted in [onboarding form](./docs/gcp-aggregation-service.md#prerequisites) - - alarm_enabled: boolean flag to enable alarms (default: false) - - alarm_notification_email: Email to receive alarm notifications. + - alarms_enabled: boolean flag to enable alarms (default: false) + - alarms_notification_email: Email to receive alarm notifications. 1. **Skip this step if you use our prebuilt container image and Cloud Function jars** @@ -326,7 +327,28 @@ file into smaller shards. [Google Cloud Function instructions](https://cloud.google.com/functions/docs/securing/authenticating) for sending an authenticated request. [Detailed API spec](/docs/api.md#getjob-endpoint)_ -## Updating the system +# **Upgrade Environment** + +_Note: Versions 2.13.0 and higher will contain the terraform files previously available in the +[Coordinator Services and Shared Libraries Repository](https://github.com/privacysandbox/coordinator-services-and-shared-libraries). +When upgrading from a version lower than or equal to 2.12.x, please run the below commands to remove +untracked copies of the folders that will now be managed via the aggregation service repository. If +you made manual modifications to the adtech_setup.tf, adtech_setup_output.tf, or +adtech_setup_variables.tf files, you should not remove them._ + +```sh +rm -rf terraform/gcp/applications +rm -rf terraform/gcp/environments/demo +rm -rf terraform/gcp/environments/shared +rm -rf terraform/gcp/modules +rm -rf terraform/gcp/coordinator-services-and-shared-libraries +rm -rf terraform/gcp/environments/adtech_setup/adtech_setup.auto.tfvars_sample +rm -rf terraform/gcp/environments/adtech_setup/main.tf_sample +mkdir backup +mv terraform/gcp/environments/adtech_setup/adtech_setup.tf backup/ +mv terraform/gcp/environments/adtech_setup/adtech_setup_output.tf backup/ +mv terraform/gcp/environments/adtech_setup/adtech_setup_variables.tf backup/ +``` Run the following in the ``. @@ -334,7 +356,23 @@ Run the following in the ``. git fetch origin && git checkout -b dev-v{VERSION} v{VERSION} cd terraform/gcp bash download_prebuilt_dependencies.sh -cd environments/dev +``` + +Execute the following commands with your own Google Cloud account. If you were previously +impersonating a service account, clean the environment variable : + +```sh +export GOOGLE_IMPERSONATE_SERVICE_ACCOUNT="" +cd environments/adtech_setup +terraform plan +terraform apply +``` + +Execute the following command by impersonating the Deploy Service Account : + +```sh +export GOOGLE_IMPERSONATE_SERVICE_ACCOUNT="@.iam.gserviceaccount.com" +cd ../dev terraform apply ``` @@ -351,3 +389,20 @@ values:_ coordinator_a_impersonate_service_account = "a-opallowedusr@ps-msmt-coord-prd-g3p-svcacc.iam.gserviceaccount.com" coordinator_b_impersonate_service_account = "b-opallowedusr@ps-prod-msmt-type2-e541.iam.gserviceaccount.com" ``` + +## Troubleshooting + +- After successfully deploying the Aggregation Service, if the submitted jobs remain in a + 'RECEIVED' state, check for the following error message in the VM's + [serial log](https://cloud.google.com/compute/docs/troubleshooting/viewing-serial-port-output#cloud-logging): + +```txt +Error: Failed to fetch OIDC token: failed to retreive service attestation service +token: failed to get principle token: failed to get impersonated token for [a-opverifiedusr@ps-msmt-coord-prd-g3p-wif.iam.gserviceaccount.com | b-opverifiedusr@ps-prod-msmt-type2-e541.iam.gserviceaccount.com]. +Status code: 403 +Message: Permission 'iam.serviceAccounts.getOpenIdToken' denied on resource (or it may not exist) +``` + +It points to an incomplete Service Account (SA) onboarding. If you encounter this situation, verify +that your SA onboarding was successfully completed and that your deployment is using the onboarded +SA account. diff --git a/docs/local-testing-tool.md b/docs/local-testing-tool.md index 5dd1e97a..6386d865 100644 --- a/docs/local-testing-tool.md +++ b/docs/local-testing-tool.md @@ -37,7 +37,7 @@ cd aggregation-service Download the local testing tool with the below command. ```sh -VERSION=$(cat VERSION); curl -f -o LocalTestingTool_$VERSION.jar https://aggregation-service-published-artifacts.s3.amazonaws.com/aggregation-service/$VERSION/LocalTestingTool_$VERSION.jar +VERSION=$(cat VERSION); curl -f -o LocalTestingTool_$VERSION.jar https://storage.googleapis.com/aggregation-service-published-artifacts/aggregation-service/$VERSION/LocalTestingTool_$VERSION.jar ``` You'll need [Java JRE](https://adoptium.net/) installed to use the tool. diff --git a/docs/sizing-guidance.md b/docs/sizing-guidance.md index 819d8b5c..dbdd78e7 100644 --- a/docs/sizing-guidance.md +++ b/docs/sizing-guidance.md @@ -1,8 +1,8 @@ -# Sizing Guidance for Aggregation Service on AWS +# Sizing Guidance for Aggregation Service ## Background -Ad techs use the aggregation service to generate summary reports from aggregatable reports (see the +Adtechs use the aggregation service to generate summary reports from aggregatable reports (see the [workflow](https://github.com/WICG/attribution-reporting-api/blob/main/AGGREGATION_SERVICE_TEE.md#aggregation-workflow)). The aggregation service can process jobs of different input sizes (reports and pre-declared aggregation buckets). Each report can include a different number of events. Each event is a @@ -10,159 +10,289 @@ key-value pair in an aggregatable report's encrypted payload. A pre-declared agg an entry (also referred to as domain key in this document) in the pre-declared buckets file that is provided as an input in the aggregation job (see [createJob API documentation](https://github.com/privacysandbox/aggregation-service/blob/main/docs/api.md#payload)). -Reports used in generating this guidance, each have a payload with 10 events. Reports and domain are -sharded into 1000 files individually when running the benchmark. +Reports used in generating this guidance each have a payload with 10 events and were padded to the +report size of 20 (standard for +[Attribution Reporting API](https://github.com/WICG/attribution-reporting-api/blob/main/AGGREGATE.md#contribution-bounding-and-budgeting) +and +[Shared Storage](https://github.com/patcg-individual-drafts/private-aggregation-api?tab=readme-ov-file#limiting-the-number-of-contributions-per-report)). +Reports and domain keys are sharded into 1000 files individually when running the benchmark. -## Which Cloud compute instance type to use for aggregation? - +## Which Cloud compute instance type to use for aggregation? -The table below provides cloud instance type guidelines for cost-efficient processing of aggregation -jobs with different sizes of reports and domain. The recommendation is based on -[job processing time](#how-long-does-an-aggregation-job-take--) and estimated EC2 instance cost from -[Amazon EC2 Pricing](https://aws.amazon.com/ec2/pricing/on-demand/). For example, if your individual -jobs are below the 50K reports/50 million domain size, m5.2xlarge EC2 instance type is recommended. +The [table below](#minimum-workable-instance-with-memory) provides cloud instance type guidelines +for minimum required instance memory for aggregation jobs with different sizes of reports and domain +keys. For example, if your individual jobs are around the 10K reports/50 million domain keys, an +instance type with at least 32 GB memory is required. -Note that this is a general guideline, and ad techs may need to use a different instance type -depending on their specific needs. For example, if jobs need a tighter time-bound, one may need to -provision larger compute capacity instance types. +Note that this is a general guideline based on the input data as mentioned above and adtechs may use +a different instance type depending on their specific needs. For example, if an adtech wants lower +latency results, one may need to provision larger compute capacity instance types -The table considers the following AWS EC2 instances types: m5.2xlarge (default), m5.4xlarge, -m5.8xlarge, m5.12xlarge, r5.2xlarge, r5.4xlarge, and r5.8xlarge. +After the instance type has been selected, the +[running times](#how-long-does-an-aggregation-job-take) provided below can be used to estimate the +cost per job and the total cost: -For a given aggregation job, the rows (R) correspond to the input reports. The columns (D) -correspond to the domain keys (in millions). +- Cost per job = job running time \* cost of selected instance type + ([AWS pricing](https://aws.amazon.com/ec2/pricing/on-demand/), + [GCP pricing](https://cloud.google.com/compute/vm-instance-pricing)) +- Total estimated cost = # of jobs \* cost per job -![instance-type-recommendation](assets/instance-type-recommendation.png) +Adtechs may use the formula above to determine the most cost-efficient machine for their jobs. For +example, an adTech chooses a r5.12xlarge instance for jobs with 1 million aggregatable reports and +200 million output domain keys. The running time for a job of this size is 1 hour per job: -The instance types here are subject to change. +- Instance cost: $3.024 / hour +- Cost per job = 1 hour \* $3.024 / hour = $3.024 +- Total cost = 10 jobs \* $3.024 / job = $30.24 -## How long does an aggregation job take? - +The [table below](#minimum-workable-instance-with-memory) considers the following AWS and GCP +instances types: -The aggregation job completion time is the time an instance picks up the job from the job queue to -when the results were written to S3. It depends on a number of factors like the size of the job -inputs, the service instance compute capacity, the auto scaling size, and more. +- [AWS](https://aws.amazon.com/ec2/instance-types/): m5.2xlarge (default), m5.4xlarge, m5.8xlarge, + m5.12xlarge, r5.2xlarge, r5.4xlarge, r5.8xlarge, r5.12xlarge +- [GCP](https://cloud.google.com/compute/docs/general-purpose-machines#n2-standard): + n2d-standard-8 (default), n2d-standard-16, n2d-standard-32, n2d-standard-48, n2d-highmem-8, + n2d-highmem-16, n2d-highmem-32, n2d-highmem-48, n2d-highmem-64, n2d-highmem-80, n2d-highmem-96 + +On AWS, if your jobs have larger domain keys (~1 billion), you may use the AWS machine type +x2iedn.8xlarge. For any other questions, please feel free to reach out to +[Aggregation Support](https://developers.google.com/privacy-sandbox/private-advertising/aggregation-service#engage_and_share_feedback). + +For a given aggregation job, the rows (R) correspond to the input reports, the columns (D) +correspond to the domain keys (in millions), and the value is the minimum workable instance with +memory (GiB). + +#### Minimum workable instance with memory -The following tables show the approximate processing time bounds of jobs of varying size after a job -is picked up for processing by an aggregation worker. Each report includes 10 events and each event -is a key-value pair in the report's payload. The domain key is a bucket/key in the pre-declared -buckets file that is provided as an input parameter to the aggregation job. +![instance-type-recommendation](assets/resource-based-recommendation.png) + +## How long does an aggregation job take? + +The aggregation job completion time is the time an instance picks up the job from the job queue to +when the results were written to storage. The job completion time can be calculated from the fields +returned from the +[getJob](https://github.com/privacysandbox/aggregation-service/blob/86356cd5ac86aefc35ec62f82b154b1108e137a9/docs/api.md?plain=1#L267) +API using `request_updated_at` minus `request_processing_started_at` field. It depends on a number +of factors such as the size of the job inputs, the service instance compute capacity, the +auto-scaling size, and more. -The processing time of the jobs are split into different brackets. For example, the "00 hr 02 min" -bracket indicates that the job ran for more than 1 minute but less than or equal to 2 minutes. The -"n/a" bracket indicates that the instance was not able to process the job, and a higher capacity -instance is needed. +The aggregation job completion times are split into different brackets. For example, the "00 hr 40 +min" bracket indicates that the job ran for more than 20 minutes but less than or equal to 40 +minutes. The "n/a" bracket indicates that the instance was not able to process the job, and a higher +capacity instance is needed. The processing time values here are subject to change. | Running time buckets | | -------------------- | -| 00 hr 01 min | -| 00 hr 02 min | -| 00 hr 10 min | +| 00 hr 05 min | | 00 hr 20 min | +| 00 hr 40 min | | 01 hr 00 min | | 02 hr 00 min | | 03 hr 00 min | | 04 hr 00 min | | 06 hr 00 min | | 10 hr 00 min | +| 12 hr 00 min | In the following table, the rows (R) correspond to the input reports. The columns (D) correspond to the domain keys (in millions). -- m5.2xlarge - -| R / D | 1M | 50M | 70M | 80M | 100M | 200M | -| ----- | ------------ | ------------ | ------------ | --- | ---- | ---- | -| 10K | 00 hr 02 min | 00 hr 20 min | 00 hr 20 min | n/a | n/a | n/a | -| 50K | 00 hr 02 min | 00 hr 20 min | 00 hr 20 min | n/a | n/a | n/a | -| 100K | 00 hr 02 min | 00 hr 20 min | 00 hr 20 min | n/a | n/a | n/a | -| 1M | 00 hr 02 min | 00 hr 20 min | 00 hr 20 min | n/a | n/a | n/a | -| 10M | 00 hr 20 min | 01 hr 00 min | 01 hr 00 min | n/a | n/a | n/a | -| 100M | 03 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | -| 200M | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | -| 300M | 10 hr 00 min | n/a | n/a | n/a | n/a | n/a | -| 400M | n/a | n/a | n/a | n/a | n/a | n/a | - -- m5.4xlarge - -| R / D | 1M | 50M | 70M | 80M | 100M | 200M | -| ----- | ------------ | ------------ | ------------ | ------------ | ------------ | ---- | -| 10K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | n/a | -| 50K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | n/a | -| 100K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | n/a | -| 1M | 00 hr 02 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | n/a | -| 10M | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | n/a | n/a | -| 100M | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | n/a | n/a | -| 200M | 02 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | -| 300M | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | -| 400M | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | - -- m5.8xlarge - -| R / D | 1M | 50M | 70M | 80M | 100M | 200M | -| ----- | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | -| 10K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 50K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 100K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 1M | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 10M | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 100M | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 02 hr 00 min | -| 200M | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | n/a | -| 300M | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | n/a | -| 400M | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | n/a | - -- m5.12xlarge - -| R / D | 1M | 50M | 70M | 80M | 100M | 200M | -| ----- | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | -| 10K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 50K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 100K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 1M | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 10M | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 100M | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | -| 200M | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 02 hr 00 min | -| 300M | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | -| 400M | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | - -- r5.2xlarge - -| R / D | 1M | 50M | 70M | 80M | 100M | 200M | -| ----- | ------------ | ------------ | ------------ | ------------ | ------------ | ---- | -| 10K | 00 hr 02 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | n/a | -| 50K | 00 hr 02 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | n/a | -| 100K | 00 hr 02 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | n/a | -| 1M | 00 hr 02 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | n/a | -| 10M | 00 hr 20 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | n/a | -| 100M | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | n/a | n/a | -| 200M | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | -| 300M | 10 hr 00 min | n/a | n/a | n/a | n/a | n/a | -| 400M | n/a | n/a | n/a | n/a | n/a | n/a | - -- r5.4xlarge - -| R / D | 1M | 50M | 70M | 80M | 100M | 200M | -| ----- | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | -| 10K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 50K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 100K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 1M | 00 hr 02 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 10M | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | 01 hr 00 min | -| 100M | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | -| 200M | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | n/a | -| 300M | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | n/a | -| 400M | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | - -- r5.8xlarge - -| R / D | 1M | 50M | 70M | 80M | 100M | 200M | -| ----- | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | -| 10K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 50K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 100K | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 1M | 00 hr 01 min | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | -| 10M | 00 hr 10 min | 00 hr 20 min | 00 hr 20 min | 00 hr 20 min | 01 hr 00 min | 01 hr 00 min | -| 100M | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 01 hr 00 min | 02 hr 00 min | -| 200M | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | -| 300M | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | -| 400M | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | +- Memory(GiB): 32 / vCPU: 8 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ----- | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 10m | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 200m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 300m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 400m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 600m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 700m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 800m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1b | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | + +- Memory(GiB): 64 / vCPU: 8 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ------------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ----- | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 10m | 00 hr 40 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 200m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 300m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 400m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 600m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 700m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 800m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1b | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | + +- Memory(GiB):64 / vCPU: 16 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ------------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ----- | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 10m | 00 hr 20 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 200m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 300m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 400m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 600m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 700m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 800m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1b | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | + +- Memory(GiB): 128 / vCPU: 16 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ------------ | ------------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ----- | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 10m | 00 hr 20 min | 00 hr 40 min | 00 hr 40 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100m | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 200m | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 300m | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 400m | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 600m | 10 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 700m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 800m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1b | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | + +- Memory(GiB): 128 / vCPU: 32 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ------------ | ------------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ----- | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 10m | 00 hr 20 min | 00 hr 20 min | 00 hr 40 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100m | 01 hr 00 min | 01 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 200m | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 300m | 02 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 400m | 03 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 600m | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 700m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 800m | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1b | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | + +- Memory(GiB): 256 / vCPU: 32 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ----- | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 10m | 00 hr 20 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100m | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 200m | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 300m | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 400m | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 600m | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 700m | 10 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 800m | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1b | 10 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | + +- Memory(GiB): 256 / vCPU: 48 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ---- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ----- | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 10m | 00 hr 20 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100m | 00 hr 40 min | 01 hr 00 min | 01 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 200m | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 300m | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 400m | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 600m | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 700m | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 800m | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1b | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | + +- Memory(GiB): 384 / vCPU: 48 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ---- | ----- | ----- | ----- | ----- | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 10m | 00 hr 20 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 100m | 00 hr 40 min | 01 hr 00 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 200m | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 300m | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 400m | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 600m | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 700m | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 800m | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +| 1b | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | + +- Memory(GiB): 512 / vCPU: 64 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ----- | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | +| 10m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | +| 100m | 00 hr 40 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | +| 200m | 01 hr 00 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | +| 300m | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | +| 400m | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 06 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | +| 600m | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | +| 700m | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | n/a | n/a | n/a | +| 800m | 04 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | +| 1b | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | + +- Memory(GiB): 640 / vCPU: 80 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 06 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 06 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 10m | 00 hr 05 min | 00 hr 40 min | 00 hr 40 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 100m | 00 hr 40 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 200m | 01 hr 00 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 300m | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 400m | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 600m | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 700m | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 800m | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | n/a | +| 1b | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | n/a | + +- Memory(GiB): 768 / vCPU: 96 + +| R/D | 1m | 50m | 100m | 200m | 300m | 400m | 500m | 600m | 700m | 800m | 900m | 1000m | 1100m | 1200m | 1300m | 1400m | 1500m | +| ---- | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ------------ | ----- | ----- | +| 10k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | n/a | n/a | +| 50k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | n/a | n/a | +| 100k | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | n/a | n/a | +| 1m | 00 hr 05 min | 00 hr 20 min | 00 hr 40 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | n/a | n/a | +| 10m | 00 hr 05 min | 00 hr 40 min | 00 hr 40 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | n/a | n/a | +| 100m | 00 hr 40 min | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | n/a | n/a | +| 200m | 00 hr 40 min | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 300m | 01 hr 00 min | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 400m | 02 hr 00 min | 02 hr 00 min | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 600m | 02 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 700m | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 800m | 03 hr 00 min | 03 hr 00 min | 03 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | 10 hr 00 min | n/a | n/a | +| 1b | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 04 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | 06 hr 00 min | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | diff --git a/docs/telemetry.md b/docs/telemetry.md index 7d300356..d5d82bb4 100644 --- a/docs/telemetry.md +++ b/docs/telemetry.md @@ -1,9 +1,9 @@ # Telemetry in Aggregation Service Aggregation Service exports the following metrics and traces through -[OpenTelemetry](https://opentelemetry.io/): CPU usage, memory, total execution time. These -metrics/traces can be helpful during the debugging process or when deciding on the appropriate cloud -[instance size](./sizing-guidance.md). +[OpenTelemetry](https://opentelemetry.io/): CPU usage, memory, total execution time, job success +metrics. These metrics/traces can be helpful during the debugging process or when deciding on the +appropriate cloud [instance size](./sizing-guidance.md). Metrics/traces: @@ -13,6 +13,15 @@ Metrics/traces: rounded to the nearest 10th (e.g. 12% rounded to 10%) and reported max to 90%. - Total execution time (in seconds): time spent in worker processing from the time job is picked for processing to its completion. This is generated per job. +- Job success metrics - Track the success and failure rates of jobs using two counters: + - **Job success counter:** + - A counter that increments each time a job completes successfully. + - This metric is emitted per job and can be used to track the overall success rate of jobs + processed by the worker. + - **Job failure counter:** + - A counter that increments each time a job fails to complete. + - This metric is emitted per job and, along with the success counter, can be used to + calculate the job failure rate. Memory and CPU usage are tracked for each environment. For debugging purposes only, we recommend setting the following in your terraform variables file (`{name}.auto.tfvars`) to debug issues with a @@ -32,23 +41,24 @@ The metrics and traces collection is disabled by default. To enable it, please a want to export in your terraform variables file (`{name}.auto.tfvars`) as shown here: ```sh -allowed_otel_metrics = ["cpu_usage", "memory", "total_execution_time"] +allowed_otel_metrics = ["cpu_usage", "memory", "total_execution_time", "job_success_metrics"] ``` -In this case, "cpu_usage", "memory" and "total_execution_time" would be exported. +In this case, "cpu_usage", "memory", "total_execution_time", and the job success metrics (which +include "job_success_counter" and "job_fail_counter") would be exported. ## Where to find the metrics/traces: The env_name here is the same as what was set in your Aggregation Service deployment terraform. - AWS - - "cpu_usage" and "memory" graphs can be found in Cloudwatch > all metrics > {env_name} > - OTelLib. + - "cpu_usage", "memory", "job_success_counter", and "job_fail_counter" graphs can be found in + Cloudwatch > all metrics > {env_name} > OTelLib. - "total_execution_time" is exported to "Traces" in Cloudwatch. You can run a query with `annotation.job_id = {job_id}` to get traces for a specific job. - GCP - - "cpu_usage" and "memory" graphs can be found in Monitoring > Metric explorer > Generic - Node > Process. You can put `custom_namespace={env_name}` in the filter to see the metrics - from a specific environment. + - "cpu_usage", "memory", "job_success_counter", and "job_fail_counter" graphs can be found in + Monitoring > Metric explorer > Generic Node > Process. You can put + `custom_namespace={env_name}` in the filter to see the metrics from a specific environment. - "total_execution_time" is exported to "Trace Explorer". You can set `job-id: {job_id}` in the filter to get traces for a specific job. diff --git a/explainers/assets/encrypted_intermediates_aggregation_example.png b/explainers/assets/encrypted_intermediates_aggregation_example.png new file mode 100644 index 00000000..dff8d5cf Binary files /dev/null and b/explainers/assets/encrypted_intermediates_aggregation_example.png differ diff --git a/explainers/assets/encrypted_intermediates_flow.png b/explainers/assets/encrypted_intermediates_flow.png new file mode 100644 index 00000000..e6213517 Binary files /dev/null and b/explainers/assets/encrypted_intermediates_flow.png differ diff --git a/explainers/encrypted_intermediates.md b/explainers/encrypted_intermediates.md new file mode 100644 index 00000000..c0f9aa85 --- /dev/null +++ b/explainers/encrypted_intermediates.md @@ -0,0 +1,427 @@ +# Encrypted Intermediates + +## Table of Contents + +- [Introduction](#introduction) +- [Terminology](#terminology) +- [Motivating Use Cases](#motivating-use-cases) +- [Proposal](#proposal) + - [Contribution Filtering](#contribution-filtering) + - [Aggregatable Report Accounting](#aggregatable-report-accounting) + - [Inputs and Outputs](#inputs-and-outputs) + - [Encrypted Intermediates](#encrypted-intermediates) + - [Output Location](#output-location) + - [Other Considerations](#other-considerations) + - [Processing Cost](#processing-cost) + - [Aggregatable Report Accounting Failures](#aggregatable-report-accounting-failures) + - [Output Domain](#output-domain) + - [Sample Query Flow](#sample-query-flow) + - [Privacy Considerations](#privacy-considerations) + - [Security Considerations](#security-considerations) +- [Potential Future Changes](#potential-future-changes) + +## Introduction + +The +[Aggregation Service](https://github.com/WICG/attribution-reporting-api/blob/main/AGGREGATION_SERVICE_TEE.md) +currently processes raw encrypted reports to produce noised aggregated histograms. However, when +adtechs need to repeatedly aggregate the same data, for example, when using +[filtering ID](https://github.com/patcg-individual-drafts/private-aggregation-api/blob/main/flexible_filtering.md)s +or querying across different time ranges with the proposed +[re-querying feature](https://github.com/privacysandbox/aggregation-service/blob/main/explainers/requerying.md), +they could benefit from pre-aggregated intermediate reports. We propose introducing Encrypted +Intermediates. Encrypted Intermediates are reports that store aggregated contributions in an +un-noised but encrypted format, allowing subsequent aggregation queries to reuse these +intermediates. The noise will be added only in the summary report query aggregating these Encrypted +Intermediates. This approach can reduce redundant processing cost by decrypting and aggregating each +raw report only once, leading to faster query performance and lower costs for adtechs. + +_Note: This document describes possible new functionality in the Aggregation Service. It is not +necessarily a feature that will ship in the near future, but we are considering it as a largely +backwards-compatible fast-follow. While this new functionality is being developed, we still highly +encourage testing the existing API functionalities to support core utility and compatibility needs._ + +## Terminology + +- **Job/Query** : A query in Aggregation Service to aggregate the contributions from input + reports. + +- **Regular/Summary Report Query** : Aggregation Service job that generates noised summary + reports. + +- **Encrypted Intermediates** : Reports that generated from Encrypted Intermediates query. + +- **Encrypted Intermediates Query** : Aggregation Service job that will generate un-noised + Encrypted Intermediates. + +- **[Shared ID](https://github.com/WICG/attribution-reporting-api/blob/main/AGGREGATION_SERVICE_TEE.md#disjoint-batches)**: + Each aggregatable report is associated with a Shared ID. This is the ID against which the budget + accounting takes place. + +- **[Output Domains](https://developers.google.com/privacy-sandbox/private-advertising/aggregation-service/privacy-protection-report-strategy#pre-declared_aggregation_keys)** + : These aggregatable keys are given as input to the Aggregation job, and only the aggregation + output that corresponds to these keys is written in Summary Reports or Encrypted Intermediates. + +## Motivating Use Cases + +### Contribution Filtering + +When using +[filtering IDs](https://github.com/patcg-individual-drafts/private-aggregation-api/blob/main/flexible_filtering.md), +the same reports need to be processed multiple times in separate jobs for each unique ID (except if +the adtech queries all filtering IDs in the same job). This repetition creates significant +processing overhead, especially with a large number of reports. Encrypted Intermediates offer a +solution by allowing a single job to generate multiple Encrypted Intermediates, one for each +filtering ID. This means the original raw reports only get processed once. Future processing then +utilizes the relevant and smaller Encrypted Intermediates, reducing processing cost and time. + +### Rolling Window/Extended Range Queries + +[Requerying](https://github.com/privacysandbox/aggregation-service/blob/main/explainers/requerying.md) +support in Aggregation Service would allow for reprocessing reports for daily/weekly/monthly queries +and rolling window queries i.e. queries over a sliding time range, like the last 7 days. If adtechs +need to reprocess the reports for every such query, they'd end up aggregating the same set of +records over and over again, creating redundant computation. This becomes especially expensive when +using contribution filtering because the reports undergo additional repeated processing for every +filtering ID. Encrypted Intermediates provides pre-aggregated reports allowing future analyses to +work with these smaller, pre-aggregated reports, reducing processing time and costs. + +### Reach measurement + +[Reach Measurement](https://github.com/patcg-individual-drafts/private-aggregation-api/blob/main/reach_whitepaper.md) +is a combination of all the above use cases. By utilizing Encrypted Intermediates, we can +[optimize Reach Measurement](https://github.com/patcg-individual-drafts/private-aggregation-api/blob/main/reach_whitepaper.md#sketch-based-methods) +by minimizing redundant processing, reducing latency, and lowering costs. + +## Proposal + +We propose Aggregation Service to support 2 kinds of queries: + +1. The existing regular aggregation query, aka the Summary Report query that does aggregatable + report accounting, +2. Encrypted Intermediates query producing encrypted un-noised aggregated intermediate reports + without aggregatable report accounting. + +In the +[CreateJobRequest](https://docs.google.com/document/d/1DmPcC_y9P2f-2RUzW7_6_gaoi10hkZe1r3afgdA5hW4/edit?pli=1&tab=t.0#heading=h.mkprtinqk9hi), +the new and optional job parameter "job_type" will serve the purpose of identifying the specific +query type. If not specified, the job type defaults to the existing behavior of generating summary +reports. + +```console +{ + "job_request_id": , + ... + // Identifies the query type as AGGREGATION producing summary report + // or INTERMEDIATE producing Encrypted Intermediates. + // If not set, defaults to AGGREGATION. + "job_type": , + + "job_parameters": { + ... + } +} +``` + +Both kinds of queries can process raw aggregatable reports and Encrypted Intermediates as inputs. + +![encrypted_intermediates_flow](assets/encrypted_intermediates_flow.png) + +### Contribution Filtering + +One job will produce multiple Encrypted Intermediates corresponding to the filtering Ids queried. +The filtering IDs for the Encrypted Intermediates will be persisted in the shared_info. If there is +no filtering ID specified, then only one Encrypted Intermediate will be produced, corresponding to +the +[default filtering ID of 0](https://github.com/patcg-individual-drafts/private-aggregation-api/blob/main/flexible_filtering.md#backwards-compatibility). + +To start with, we plan to write one intermediate report per filtering ID. In the future, we will +consider adding support for combining multiple filtering IDs into a single report. + +### Aggregatable Report Accounting + +Aggregatable Report Accounting will be done only in the summary report query. To accommodate that, +with every intermediate query, the associated report shared IDs list will be persisted in the +intermediate report's shared_info. Intermediate queries will not consume Aggregatable Report +Accounting Budget. The Aggregation Service will only consume budget in the summary report query and +use the shared IDs corresponding to the queried filtering ID from the Encrypted Intermediates. + +With no budget consumption for intermediate queries, Encrypted Intermediates can act as inputs for +subsequent intermediate queries without cost to the budgets, creating a sequential chain of +intermediates. This approach is particularly useful for scenarios involving incremental aggregation. + +Even if a report contributes to multiple Encrypted Intermediates, it only contributes to a summary +report in a Summary Report query. + +#### Disjointedness of Shared Ids + +Even though a report can contribute to multiple Encrypted Intermediates, a single job cannot contain +multiple Encrypted Intermediates that aggregate the same report as it would violate the +"[No Duplicate Rule](https://github.com/WICG/attribution-reporting-api/blob/main/AGGREGATION_SERVICE_TEE.md#no-duplicates-rule)". +If the shared IDs in the input Encrypted Intermediates and the raw reports are not disjoint, the +Aggregation Service will invalidate the job and return an appropriate error. + +An implication of this is if a delayed report shares a shared ID with an existing encrypted +intermediate, it can't be appended to that Encrypted Intermediate. To combine the delayed reports +with all the raw reports sharing shared IDs in the same query, an adtech will have to generate a new +Encrypted Intermediate, and discard the existing one generated without the delayed reports. + +### Inputs and Outputs + +#### Encrypted Intermediates + +Each job will output one Encrypted Intermediate for every filtering ID queried. If multiple +filtering IDs are queried, the job will have a corresponding number of Encrypted Intermediates. + +![encrypted_intermediates_aggregation_example](assets/encrypted_intermediates_aggregation_example.png) + +The format of Encrypted Intermediates will be similar to raw aggregatable reports: they will have 1) +a visible and unencrypted part i.e. shared_info, and 2) an encrypted payload with aggregated (key, +value) pairs. The Encrypted Intermediates' shared_info will have some additional information +pertinent to Encrypted Intermediates as highlighted below. + +**Intermediate Report shared_info** + +```jsonc +// Report +{ + "aggregation_service_payloads": [ + { + "key_id": "", + "payload": "vxia0shX3Kf..." + } + ], + "shared_info": "{\"report_id\":\"\",\"earliest_report_time\":\"