diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..033df5f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.venv +__pycache__ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9ada695 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM python:3.12 + +ARG PIP_EXTRA_INDEX_URL +ARG ESG_FASTAPI_VERSION + +WORKDIR /app + +RUN export PIP_EXTRA_INDEX_URL="$PIP_EXTRA_INDEX_URL" && \ + export ESGFHUB_VERSION="$ESG_FASTAPI_VERSION" && \ + pip install \ + esg_fastapi==$ESG_FASTAPI_VERSION \ + --no-cache-dir \ + --report - + +ENV PROMETHEUS_MULTIPROC_DIR /dev/shm + +CMD ["python", "-m", "esg_fastapi"] \ No newline at end of file diff --git a/Dockerfile.local b/Dockerfile.local new file mode 100644 index 0000000..aec9d35 --- /dev/null +++ b/Dockerfile.local @@ -0,0 +1,9 @@ +FROM python:3.11 + +WORKDIR /app +COPY ../ . +RUN pip install . + +ENV PROMETHEUS_MULTIPROC_DIR /dev/shm + +CMD ["python", "-m", "esg_fastapi"] \ No newline at end of file diff --git a/README.md b/README.md index 278e9f1..dee3d31 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,20 @@ -# esg_fastapi +# ESGF Search API +This Project is developed as a speculative replacement for the existing Java based ESG Search API layer. The current implementation is based on FastAPI for an asynchronous framework. +## Installation +The primary installation target is Kubernetes via Helm, but since that requires a Docker container, you can also run that container locally via Docker or Podman. For example: ```bash -pip install -r requirements +podman run -it code.ornl.gov:4567/esgf/mirrors/esg_fastapi/esgf-esg-fastapi ``` +## Contributing +To install and develop locally, use Poetry to create a virtual environment with the dependencies and configuration setup: ```bash -uvicorn main:app --reload -``` \ No newline at end of file +poetry install +``` + +And start the server in `watch` mode with uvicorn: +```bash +uvicorn esg_fastapi.api --reload +``` +While running in this mode, uvicorn will serve the API on http://localhost:8080 and watch for any changes to the source files. When detected, the server will reload the application automatically to include the new changes. \ No newline at end of file diff --git a/docker-compose/docker-compose.yaml b/docker-compose/docker-compose.yaml new file mode 100644 index 0000000..1ec3cdf --- /dev/null +++ b/docker-compose/docker-compose.yaml @@ -0,0 +1,101 @@ +version: "3" +name: esg-fastapi + +volumes: + tempo-data: + +services: + + esg-fastapi: + build: + context: .. + dockerfile: Dockerfile.local + network_mode: host + ports: + - "1337:1337" + logging: + driver: journald + options: + tag: esg-fastapi + + pyroscope: + image: grafana/pyroscope + environment: + JAEGER_AGENT_HOST: localhost + JAEGER_SAMPLER_TYPE: const + JAEGER_SAMPLER_PARAM: 1 + network_mode: host + command: + - "-server.grpc-listen-port=3030" + - "-config.file=/etc/pyroscope.yaml" + ports: + - '4040:4040' + volumes: + - ./pyroscope.yaml:/etc/pyroscope.yaml + + tempo: + image: grafana/tempo + network_mode: host + command: [ "-config.file=/etc/tempo.yaml" ] + volumes: + - ./tempo.yaml:/etc/tempo.yaml + - tempo-data:/var/tempo:rw,z + ports: + - "14268:14268" # jaeger ingest + - "3200:3200" # tempo + - "9095:9095" # tempo grpc + - "4317:4317" # otlp grpc + - "4318:4318" # otlp http + - "9411:9411" # zipkin + + prometheus: + image: prom/prometheus + network_mode: host + command: + - --config.file=/etc/prometheus.yaml + - --web.enable-remote-write-receiver + - --enable-feature=exemplar-storage + volumes: + - ./prometheus.yaml:/etc/prometheus.yaml + ports: + - "9090:9090" + + grafana: + image: grafana/grafana + network_mode: host + volumes: + - ./grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml + environment: + - GF_AUTH_ANONYMOUS_ENABLED=true + - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin + - GF_AUTH_DISABLE_LOGIN_FORM=true + - GF_INSTALL_PLUGINS=pyroscope-panel + - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor traceQLStreaming metricsSummary traceToProfiles tracesEmbeddedFlameGraph traceToMetrics + ports: + - "3000:3000" + + elasticsearch: + image: elasticsearch:8.13.0 + network_mode: host + environment: + - bootstrap.memory_lock=false + - 'ES_JAVA_OPTS=-Xms512m -Xmx512m' + - discovery.type=single-node + - xpack.security.enabled=false + ports: + - '9200:9200' + - '9300:9300' + + fluent-bit: + image: fluent/fluent-bit + network_mode: host + command: + - -c + - /fluent-bit/etc/fluent-bit.yaml + volumes: + - ./fluent-bit.yaml:/fluent-bit/etc/fluent-bit.yaml + - /etc/machine-id:/etc/machine-id:ro + - /var/log/journal:/var/log/journal + # depends_on: + # - elasticsearch + privileged: true \ No newline at end of file diff --git a/docker-compose/fluent-bit.yaml b/docker-compose/fluent-bit.yaml new file mode 100644 index 0000000..73e4b19 --- /dev/null +++ b/docker-compose/fluent-bit.yaml @@ -0,0 +1,49 @@ +service: + daemon: Off + flush: 5 + log_level: info + +pipeline: + inputs: + - name: systemd + Systemd_Filter: CONTAINER_TAG=esg-fastapi + tag: systemd + + processors: + logs: + - name: content_modifier + action: extract + key: "MESSAGE" + context: body + pattern: 'trace_id=(?[^\s]+)' + - name: content_modifier + action: extract + key: "MESSAGE" + context: body + pattern: 'span_id=(?[^\s]+)' + - name: content_modifier + action: extract + key: "MESSAGE" + context: body + pattern: 'resource\.service\.name=(?[^\s]+)' + - name: content_modifier + action: rename + key: resource_service_name + value: resource.service.name + - name: content_modifier + action: extract + key: "MESSAGE" + context: body + pattern: 'trace_sampled=(?True|False)' + + outputs: + # - name: stdout + # match: '*' + # format: json_lines + - name: es + match: '*' + type: elasticsearch + host: localhost + port: 9200 + logstash_format: On + suppress_type_name: On diff --git a/docker-compose/grafana-datasources.yaml b/docker-compose/grafana-datasources.yaml new file mode 100644 index 0000000..b570ceb --- /dev/null +++ b/docker-compose/grafana-datasources.yaml @@ -0,0 +1,73 @@ +apiVersion: 1 + +datasources: + +- name: Prometheus + type: prometheus + uid: prometheus + access: proxy + orgId: 1 + url: http://localhost:9090 + basicAuth: false + isDefault: false + version: 1 + editable: false + jsonData: + httpMethod: GET + serviceMap: + datasourceUid: prometheus + tracesToProfiles: + customQuery: false + datasourceUid: "pyroscope" + profileTypeId: "process_cpu:cpu:nanoseconds:cpu:nanoseconds" + +- name: Tempo + type: tempo + access: proxy + orgId: 1 + url: http://localhost:3200 + basicAuth: false + isDefault: true + version: 1 + editable: false + apiVersion: 1 + uid: tempo + jsonData: + httpMethod: GET + nodeGraph: + enabled: true + serviceMap: + datasourceUid: prometheus + tracesToMetrics: + datasourceUid: prometheus + tracesToProfiles: + datasourceUid: pyroscope + profileTypeId: process_cpu:cpu:nanoseconds:cpu:nanoseconds + tracesToLogsV2: + datasourceUid: elasticsearch + filterByTraceID: true + tags: [{key: 'trace_id'}] + +- name: Pyroscope + type: grafana-pyroscope-datasource + access: proxy + orgId: 1 + uid: pyroscope + url: http://localhost:4040 + +- name: Elasticsearch + type: elasticsearch + access: proxy + orgId: 1 + uid: elasticsearch + url: http://localhost:9200 + jsonData: + index: '[logstash-]YYYY.MM.DD' + interval: Daily + timeField: '@timestamp' + logMessageField: MESSAGE + # logLevelField: fields.level + dataLinks: + - datasourceUid: tempo + field: trace_id + url: '$${__value.raw}' diff --git a/docker-compose/prometheus.yaml b/docker-compose/prometheus.yaml new file mode 100644 index 0000000..4150d45 --- /dev/null +++ b/docker-compose/prometheus.yaml @@ -0,0 +1,8 @@ +global: + scrape_interval: 15s + evaluation_interval: 15s + +scrape_configs: +- job_name: 'esg-fastapi' + static_configs: + - targets: ['localhost:1337'] diff --git a/docker-compose/pyroscope.yaml b/docker-compose/pyroscope.yaml new file mode 100644 index 0000000..4c7fcc4 --- /dev/null +++ b/docker-compose/pyroscope.yaml @@ -0,0 +1,9 @@ +tracing: + enabled: true + profiling_enabled: true + +pyroscopedb: + max_block_duration: 5m + +self_profiling: + disable_push: true diff --git a/docker-compose/tempo.yaml b/docker-compose/tempo.yaml new file mode 100644 index 0000000..99d73f3 --- /dev/null +++ b/docker-compose/tempo.yaml @@ -0,0 +1,41 @@ +stream_over_http_enabled: true +server: + http_listen_port: 3200 + log_level: info + +query_frontend: + search: + duration_slo: 5s + throughput_bytes_slo: 1.073741824e+09 + trace_by_id: + duration_slo: 5s + +distributor: + receivers: # this configuration will listen on all ports and protocols that tempo is capable of. + jaeger: # the receives all come from the OpenTelemetry collector. more configuration information can + protocols: # be found there: https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver + thrift_http: # + grpc: # for a production deployment you should only enable the receivers you need! + thrift_binary: + thrift_compact: + zipkin: + otlp: + protocols: + http: + grpc: + opencensus: + +ingester: + max_block_duration: 5m # cut the headblock when this much time passes. this is being set for demo purposes and should probably be left alone normally + +compactor: + compaction: + block_retention: 1h # overall Tempo trace retention. set for demo purposes + +storage: + trace: + backend: local # backend configuration to use + wal: + path: /var/tempo/wal # where to store the the wal locally + local: + path: /var/tempo/blocks diff --git a/esg_fastapi/__init__.py b/esg_fastapi/__init__.py new file mode 100644 index 0000000..b3e8fa5 --- /dev/null +++ b/esg_fastapi/__init__.py @@ -0,0 +1,18 @@ +"""A REST API for Globus-based searches that mimics esg-search. + +This API is designed to be a thin wrapper around the `post_search` functionality of the Globus Search Index. It is intended to be bug-for-bug compatible with the ESG-Search API in both requests and responses to used by community tools that are based on the esg-search RESTful API, so that they do not need to change to be compatible with the new Globus indices. + +If you are designing a new project, you should look to use the globus-sdk directly. + +The stack consists of a FastAPI application that is configured to serve multiple versions of the API. Each version is represented by a separate FastAPI application, which is mounted as a sub-route of the main API at sub-routes like "/v1", "/v2", and so on. + +The main API also includes an observability endpoint at the "/observability" sub-route. This endpoint is used to expose OpenTelemetry generated by the API, such as health checks, request counts, response times, and error rates. +""" + +from .configuration import settings + +__all__ = ["settings"] + +from .utils import print_loggers + +print_loggers() diff --git a/esg_fastapi/__main__.py b/esg_fastapi/__main__.py new file mode 100644 index 0000000..9449025 --- /dev/null +++ b/esg_fastapi/__main__.py @@ -0,0 +1,52 @@ +"""Entry point for running the API with the embedded Gunicorn server.""" + +from typing import Self + +import pyroscope +from fastapi import FastAPI +from gunicorn.app.base import BaseApplication +from gunicorn.arbiter import Arbiter +from opentelemetry import trace +from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter +from opentelemetry.sdk.trace import TracerProvider +from opentelemetry.sdk.trace.export import BatchSpanProcessor +from pyroscope.otel import PyroscopeSpanProcessor + +from esg_fastapi import settings + +from .api.main import app_factory + + +class Server(BaseApplication): + """Wrapper around a WSGI app that Gunicorn's Arbiter can manage.""" + + def load_config(self: Self) -> None: + """Transfer settings from our settings module to the Gunicorn settings object.""" + for field in settings.gunicorn.model_fields: + # TODO: until we can fully build the model dynamically, we only set + # settings from model_fields that are named in the native Gunicorn + # settings object, that way we can use other properties on the model + # without Gunicorn throwing unknown setting errors. For example, having + # `host` and `port` properties used to build the `bind` property. + if field in self.cfg.settings: + self.cfg.set(field, getattr(settings.gunicorn, field)) + + def load(self: Self) -> FastAPI: + """Instantiate the app from the factory function. + + We use a factory function instead of importing an instantiated app so that Gunicorn can reload + the app on the fly as needed. + """ + return app_factory() + + +# TODO: more accurate init: https://opentelemetry-python.readthedocs.io/en/latest/api/trace.html#opentelemetry.trace.TracerProvider +provider = TracerProvider() +provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter())) +provider.add_span_processor(PyroscopeSpanProcessor()) +# provider.add_span_processor(SimpleSpanProcessor(ConsoleSpanExporter())) +trace.set_tracer_provider(provider) + +pyroscope.configure(**settings.pyroscope.model_dump(mode="json")) + +Arbiter(Server()).run() diff --git a/esg_fastapi/api/__init__.py b/esg_fastapi/api/__init__.py new file mode 100644 index 0000000..f713e5e --- /dev/null +++ b/esg_fastapi/api/__init__.py @@ -0,0 +1 @@ +"""The main package for the ESG FastAPI service.""" diff --git a/esg_fastapi/api/main.py b/esg_fastapi/api/main.py new file mode 100644 index 0000000..06ee2bf --- /dev/null +++ b/esg_fastapi/api/main.py @@ -0,0 +1,30 @@ +from fastapi import FastAPI +from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor +from starlette.routing import Mount + +from esg_fastapi.observability.main import observe + + +def app_factory() -> FastAPI: + api = FastAPI( + title="ESGF FastAPI", + summary="An adapter service to translate and execute ESGSearch queries on a Globus Search Index.", + description="# Long form CommonMark content\n---\nTODO: source this from the same place as the python package description?", + ) + + FastAPIInstrumentor.instrument_app(app=api) + + from .versions.v1.routes import app_factory as v1_app_factory + + versions = [v1_app_factory] + for app_factory in versions: + app = app_factory() + api.mount(f"/{app.version}", app) + + for route in api.routes: + if isinstance(route, Mount) and isinstance(route.app, FastAPI): + api.router.include_router(route.app.router) + api.router.tags.extend(route.app.router.tags) + + observe(api) + return api diff --git a/esg_fastapi/api/versions/__init__.py b/esg_fastapi/api/versions/__init__.py new file mode 100644 index 0000000..24f53ca --- /dev/null +++ b/esg_fastapi/api/versions/__init__.py @@ -0,0 +1,14 @@ +"""Module for discovering and importing all versioned API submodules. + +This module provides a mechanism for discovering and importing all versioned API submodules within the current package. It uses the `pkgutil` and `importlib` modules to iterate through all the submodules in the package and import those that have a version number in their name. + +The discovered submodules are then added to the main application using the `app.mount()` method. This allows developers to easily extend and customize the functionality of the main application by adding new submodules that provide additional API endpoints. +""" + +# import pkgutil +# from importlib import import_module + +# discovered = [] +# for submodule in pkgutil.iter_modules(__path__): +# if submodule.name.lstrip("v").isdigit(): +# discovered.append(import_module("." + submodule.name, __package__)) diff --git a/esg_fastapi/api/versions/v1/__init__.py b/esg_fastapi/api/versions/v1/__init__.py new file mode 100644 index 0000000..187c161 --- /dev/null +++ b/esg_fastapi/api/versions/v1/__init__.py @@ -0,0 +1,8 @@ +"""v1 of the ESG FastAPI. + +Future versions will extend and inherit from this class. +""" + +# from .routes import app_factory + +# __all__ = ["app_factory"] diff --git a/esg_fastapi/api/versions/v1/models.py b/esg_fastapi/api/versions/v1/models.py new file mode 100644 index 0000000..8d885f7 --- /dev/null +++ b/esg_fastapi/api/versions/v1/models.py @@ -0,0 +1,857 @@ +"""Pydantic models used by v1 of the API and its inheritants. + +The models in this module are used to define the structure of the API requests and responses. + +They are organized into two main sections: +1. **Models for the ESG Search API** +2. **Models for the Globus Search API** + +This provides an easy way to validate and serialize the API requests and responses, ensuring that they conform to the specified structure. +""" + +from collections import defaultdict +from collections.abc import Sequence +from datetime import datetime +from decimal import Decimal +from typing import ( + Annotated, + Any, + Literal, + Self, + TypeGuard, + cast, + get_args, +) + +from annotated_types import T +from fastapi import Query +from pydantic import ( + BaseModel, + BeforeValidator, + ConfigDict, + Field, + SerializeAsAny, + StringConstraints, + computed_field, + field_validator, + validate_call, +) +from pydantic_core import Url + +from esg_fastapi.api.versions.v1.types import ( + LowerCased, + MultiValued, + SolrDoc, + SolrFQ, + Stringified, + SupportedAsFacets, + SupportedAsFilters, + SupportedAsFQ, + SupportedAsSolrDocs, +) +from esg_fastapi.utils import ( + ensure_list, + format_fq_field, + one_or_list, +) + +NON_QUERIABLE_FIELDS = {"query", "format", "limit", "offset", "replica", "distrib", "facets"} + + +class ESGSearchQuery(BaseModel): + """Represents the query parameters accepted by the ESG Search API. + + TODO: Build this list dynamically from Solr's luke API to ensure all possible params are captured. + """ + + model_config = ConfigDict(validate_default=True) + + id: str | None = None + dataset_id: str | None = None + + access: MultiValued[str] | None = None + """Access level of the dataset.""" + activity: MultiValued[str] | None = None + """Activity of the dataset.""" + activity_drs: MultiValued[str] | None = None + """Activity DRS of the dataset.""" + activity_id: MultiValued[str] | None = None + """Activity ID of the dataset.""" + atmos_grid_resolution: MultiValued[str] | None = None + """Atmospheric grid resolution of the dataset.""" + branch_method: MultiValued[str] | None = None + """Branch method of the dataset.""" + campaign: MultiValued[str] | None = None + """Campaign of the dataset.""" + Campaign: MultiValued[str] | None = None + """Campaign of the dataset.""" + catalog_version: MultiValued[str] | None = None + """Catalog version of the dataset.""" + cf_standard_name: MultiValued[str] | None = None + """CF standard name of the dataset.""" + cmor_table: MultiValued[str] | None = None + """CMOR table of the dataset.""" + contact: MultiValued[str] | None = None + """Contact of the dataset.""" + Conventions: MultiValued[str] | None = None + """Conventions of the dataset.""" + creation_date: MultiValued[str] | None = None + """Creation date of the dataset.""" + data_node: MultiValued[str] | None = None + """Data node of the dataset.""" + data_specs_version: MultiValued[str] | None = None + """Data specs version of the dataset.""" + data_structure: MultiValued[str] | None = None + """Data structure of the dataset.""" + data_type: MultiValued[str] | None = None + """Data type of the dataset.""" + dataset_category: MultiValued[str] | None = None + """Dataset category of the dataset.""" + dataset_status: MultiValued[str] | None = None + """Dataset status of the dataset.""" + dataset_version: MultiValued[str] | None = None + """Dataset version of the dataset.""" + dataset_version_number: MultiValued[str] | None = None + """Dataset version number of the dataset.""" + datetime_end: MultiValued[str] | None = None + """Datetime end of the dataset.""" + deprecated: MultiValued[str] | None = None + """Deprecated of the dataset.""" + directory_format_template_: MultiValued[str] | None = None + """Directory format template of the dataset.""" + ensemble: MultiValued[str] | None = None + """Ensemble of the dataset.""" + ensemble_member: MultiValued[str] | None = None + """Ensemble member of the dataset.""" + ensemble_member_: MultiValued[str] | None = None + """Ensemble member of the dataset.""" + experiment: MultiValued[str] | None = None + """Experiment of the dataset.""" + experiment_family: MultiValued[str] | None = None + """Experiment family of the dataset.""" + experiment_id: MultiValued[str] | None = None + """Experiment ID of the dataset.""" + experiment_title: MultiValued[str] | None = None + """Experiment title of the dataset.""" + forcing: MultiValued[str] | None = None + """Forcing of the dataset.""" + frequency: MultiValued[str] | None = None + """Frequency of the dataset.""" + grid: MultiValued[str] | None = None + """Grid of the dataset.""" + grid_label: MultiValued[str] | None = None + """Grid label of the dataset.""" + grid_resolution: MultiValued[str] | None = None + """Grid resolution of the dataset.""" + height_units: MultiValued[str] | None = Query(alias="height-units", default=None) + """Height units of the dataset.""" + index_node: MultiValued[str] | None = None + """Index node of the dataset.""" + institute: MultiValued[str] | None = None + """Institute of the dataset.""" + institution: MultiValued[str] | None = None + """Institution of the dataset.""" + institution_id: MultiValued[str] | None = None + """Institution ID of the dataset.""" + instrument: MultiValued[str] | None = None + """Instrument of the dataset.""" + land_grid_resolution: MultiValued[str] | None = None + """Land grid resolution of the dataset.""" + master_gateway: MultiValued[str] | None = None + """Master gateway of the dataset.""" + member_id: MultiValued[str] | None = None + """Member ID of the dataset.""" + metadata_format: MultiValued[str] | None = None + """Metadata format of the dataset.""" + mip_era: MultiValued[str] | None = None + """MIP era of the dataset.""" + model: MultiValued[str] | None = None + """Model of the dataset.""" + _model_cohort: Annotated[MultiValued[str], Query(alias="model_cohort")] | None = None + """Model cohort of the dataset.""" + _model_version: Annotated[MultiValued[str], Query(alias="model_version")] | None = None + """Model version of the dataset.""" + nominal_resolution: MultiValued[str] | None = None + """Nominal resolution of the dataset.""" + ocean_grid_resolution: MultiValued[str] | None = None + """Ocean grid resolution of the dataset.""" + Period: MultiValued[str] | None = None + """Period of the dataset.""" + period: MultiValued[str] | None = None + """Period of the dataset.""" + processing_level: MultiValued[str] | None = None + """Processing level of the dataset.""" + product: MultiValued[str] | None = None + """Product of the dataset.""" + project: str | None = None + """Project of the dataset.""" + quality_control_flags: MultiValued[str] | None = None + """Quality control flags of the dataset.""" + range: MultiValued[str] | None = None + """Range of the dataset.""" + realm: MultiValued[str] | None = None + """Realm of the dataset.""" + realm_drs: MultiValued[str] | None = None + """Realm DRS of the dataset.""" + region: MultiValued[str] | None = None + """Region of the dataset.""" + regridding: MultiValued[str] | None = None + """Regridding of the dataset.""" + run_category: MultiValued[str] | None = None + """Run category of the dataset.""" + Science_Driver: Annotated[MultiValued[str] | None, Query(alias="Science Driver")] = None + """Science Driver of the dataset.""" + science_driver_: Annotated[MultiValued[str] | None, Query(alias="science driver")] = None + """Science driver of the dataset.""" + science_driver: MultiValued[str] | None = None + """Science driver of the dataset.""" + seaice_grid_resolution: MultiValued[str] | None = None + """Sea ice grid resolution of the dataset.""" + set_name: MultiValued[str] | None = None + """Set name of the dataset.""" + short_description: MultiValued[str] | None = None + """Short description of the dataset.""" + source: MultiValued[str] | None = None + """Source of the dataset.""" + source_id: MultiValued[str] | None = None + """Source ID of the dataset.""" + source_type: MultiValued[str] | None = None + """Source type of the dataset.""" + source_version: MultiValued[str] | None = None + """Source version of the dataset.""" + source_version_number: MultiValued[str] | None = None + """Source version number of the dataset.""" + status: MultiValued[str] | None = None + """Status of the dataset.""" + sub_experiment_id: MultiValued[str] | None = None + """Sub experiment ID of the dataset.""" + table: MultiValued[str] | None = None + """Table of the dataset.""" + table_id: MultiValued[str] | None = None + """Table ID of the dataset.""" + target_mip: MultiValued[str] | None = None + """Target MIP of the dataset.""" + target_mip_list: MultiValued[str] | None = None + """Target MIP list of the dataset.""" + target_mip_listsource: MultiValued[str] | None = None + """Target MIP listsource of the dataset.""" + target_mip_single: MultiValued[str] | None = None + """Target MIP single of the dataset.""" + time_frequency: MultiValued[str] | None = None + """Time frequency of the dataset.""" + tuning: MultiValued[str] | None = None + """Tuning of the dataset.""" + variable: MultiValued[str] | None = None + """Variable of the dataset.""" + variable_id: MultiValued[str] | None = None + """Variable ID of the dataset.""" + variable_label: MultiValued[str] | None = None + """Variable label of the dataset.""" + variable_long_name: MultiValued[str] | None = None + """Variable long name of the dataset.""" + variant_label: MultiValued[str] | None = None + """Variant label of the dataset.""" + version: MultiValued[str] | None = None + """Version of the dataset.""" + versionnum: MultiValued[str] | None = None + """Version number of the dataset.""" + year_of_aggregation: MultiValued[str] | None = None + """Year of aggregation of the dataset.""" + query: Annotated[str, Query(description="a general search string")] | None = "*:*" + """A Solr search string.""" + format: Annotated[ + Literal["application/solr+xml", "application/solr+json"], + Query(description="the type of data returned in the response"), + ] = "application/solr+xml" + """The format of the response.""" + type: Annotated[Literal["Dataset", "File", "Aggregation"], Query(description="the type of database record")] = ( + "Dataset" + ) + """The type of record to search for.""" + bbox: Annotated[str | None, Query(description="the geospatial search box [west, south, east, north]")] = None + """The geospatial search box [west, south, east, north]""" + start: Annotated[datetime | None, Query(description="beginning of the temporal coverage in the dataset")] = None + """Beginning of the temporal coverage in the dataset""" + end: Annotated[datetime | None, Query(description="ending of the temporal coverage in the dataset")] = None + """Ending of the temporal coverage in the dataset""" + _from: Annotated[ + datetime | None, Query(alias="from", description="return records last modified after this timestamp") + ] = None + """Return records last modified after this timestamp""" + to: Annotated[datetime | None, Query(description="return records last modified before this timestamp")] = None + """Return records last modified before this timestamp""" + offset: Annotated[int, Query(ge=0, description="the number of records to skip")] = 0 + """The number of records to skip""" + limit: Annotated[int, Query(ge=0, description="the number of records to return")] = 0 + """The number of records to return""" + replica: Annotated[bool | None, Query(description="enable to include replicas in the search results")] = None + """Enable to include replicas in the search results""" + latest: Annotated[bool | None, Query(description="enable to only return the latest versions")] = None + """Enable to only return the latest versions""" + distrib: Annotated[bool | None, Query(description="enable to search across all federated nodes")] = None + """Enable to search across all federated nodes""" + facets: Annotated[str, StringConstraints(strip_whitespace=True, pattern=r"\w+(,\w+)*?")] | None = None + """A comma-separated list of field names to facet on.""" + + @property + def _queriable_fields(self: Self) -> set[str]: + """All fields that are queriable in Solr.""" + return {field for field in self.model_fields if field not in NON_QUERIABLE_FIELDS} + + +class GlobusFilter(BaseModel): + """Parent container model for Globus Search Filter Documents. + + TODO: range, geo_bounding_box, exists, not + ref: https://docs.globus.org/api/search/reference/post_query/#gfilter + """ + + type: Literal["match_all", "match_any"] + """The type of filter to apply.""" + + +class GlobusMatchFilter(GlobusFilter): + """Globus Filter Specialization for Match type filters.""" + + type: Literal["match_all", "match_any"] = "match_any" + """The type of filter to apply.""" + field_name: str + """The name of the field to filter on.""" + # TODO: restrict this to only known fields (maybe after refactor to pull fields live from Solr) + values: Annotated[list[str | bool], BeforeValidator(ensure_list)] + """The values to filter on.""" + + +class GlobusFacet(BaseModel): + """Represents a Globus Search Facet Document. + + TODO: "date_histogram", "numeric_histogram", "sum", "avg" + ref: https://docs.globus.org/api/search/reference/post_query/#gfacet + """ + + name: str + """The name of the facet.""" + type: Literal["terms",] = "terms" + """The type of facet.""" + field_name: str + """The name of the field to facet on.""" + + +def is_sequence_of(value: object, value_type: type[T]) -> TypeGuard[Sequence[T]]: + """Check if a given value is a sequence of a specific type. + + Parameters: + value (object): The value to be checked. + value_type (type[T]): The type of the elements in the sequence. + + Returns: + TypeGuard[Sequence[T]]: A type guard that returns `True` if the given value is a sequence of the specified type, and `False` otherwise. + + Raises: + TypeError: If the `value_type` parameter is not a type. + + Example: + ```python + from typing import List, Dict + + # Check if a list is a sequence of integers + is_sequence_of([1, 2, 3], int) # Returns True + + # Check if a dictionary is a sequence of integers + is_sequence_of({1: 'one', 2: 'two'}, int) # Returns False + ``` + """ + return isinstance(value, Sequence) and all(isinstance(i, value_type) for i in value) + + +class GlobusSearchQuery(BaseModel): + """Container model to describe the fields of a Globus Search Query Document. + + TODO: boosts and sorts + """ + + @field_validator("facets", mode="before") + @staticmethod + def convert_esg_seach_facets_field(value: SupportedAsFacets | None) -> Sequence[GlobusFacet] | None: + """Convert a comma-and-space-separated list of Globus Facets to a list of GlobusFacet objects. + + Example: "activity_id, data_node, source_id, institution_id, source_type, experiment_id, sub_experiment_id, nominal_resolution, variant_label, grid_label, table_id, frequency, realm, variable_id, cf_standard_name" + """ + if value is None or is_sequence_of(value, GlobusFacet): + return value + elif isinstance(value, str): + return [ + GlobusFacet(name=facet.strip(), field_name=facet.strip(), type="terms") for facet in value.split(",") + ] + else: + raise ValueError( + f"Expected input convertible to Sequence[GlobusFacet] one of {get_args(SupportedAsFacets)}, got {type(value)}" + ) + + @field_validator("q") + @staticmethod + def convert_esg_seach_q_field_default(value: str | None) -> str | None: + """Convert the default ESG Search query to the default Globus Search query. + + ESG Search (read: Solr)'s default query is '*:*' for 'all values in all fields'. + Globus Search doesn't handle this format, so we have to convert it to empty string for 'all.' + + TODO: Globus docs say q is only required if there are no filters: https://docs.globus.org/api/search/reference/post_query/#gsearchrequest + Once the model can distinguish "queryable" fields from others (like limit, offset, etc), + set a @model_validator() to set q appropriately where there are/aren't filters. + """ + return None if value in ("", "*", "*:*") else value + + @field_validator("filters", mode="before") + @staticmethod + @validate_call + def convert_esg_seach_filters_field(value: SupportedAsFilters) -> Sequence[GlobusFilter]: + """Convert an ESG Search style fields dict to a list of GlobusFilter objects. + + Parameters: + value (dict | list[GlobusFilter]): The input value to be converted. If it is a dictionary, it should have field + names as keys and values as lists of strings. If it is a list, it should contain instances of `GlobusFilter`. + + Returns: + list[GlobusFilter]: A list of `GlobusFilter` objects, each representing a filter condition. + + Raises: + ValueError: If the input value is neither a dictionary nor a list. + + Note: + This method is used to convert the filters field in the ESG Search Query into a list of `GlobusFilter` objects. + It does not perform any actual search operations. + """ + if is_sequence_of(value, GlobusFilter): + return value + elif isinstance(value, dict): + return [GlobusMatchFilter(field_name=k, values=v) for k, v in value.items()] + else: + raise ValueError( # pragma: no cover TODO: pytest.raises() masks this line so coverage doesn't think it was executed + f"Expected input convertible to list[GlobusFilter] one of {get_args(SupportedAsFilters)}, got {type(value)}" + ) + + @classmethod + def from_esg_search_query(cls, query: ESGSearchQuery) -> Self: + """Create a new instance of `GlobusSearchResult` from an `ESGSearchQuery`. + + Parameters: + query (ESGSearchQuery): The `ESGSearchQuery` instance to use for creating the new instance. + + Returns: + GlobusSearchResult: A new instance of `GlobusSearchResult` created from the provided `ESGSearchQuery`. + + Raises: + ValueError: If the `query` instance is not valid. + + Note: + This method converts the `query` instance into a `GlobusSearchResult` instance by extracting the relevant fields and parameters. It does not perform any actual search operations. + """ + return cls( + q=query.query, + advanced=True, + limit=query.limit, + offset=query.offset, + filters=query.model_dump(exclude_none=True, include=query._queriable_fields), + facets=query.facets, + ) + + q: str | None = None + """The search query.""" + advanced: bool = True + """Whether or not to use advanced search.""" + limit: int + """The maximum number of results to return.""" + offset: int + """The number of results to skip.""" + + filters: SerializeAsAny[SupportedAsFilters] | None = None + """A list of filters to apply to the query. + Note: Globus Filters is a parent model for the specific types of filters that Globus supports. + The `SerializeAsAny` type annotation is necessary for Pydantic to include attributes defined + in the child model, but not in the parent model, while still allowing any subtype to be used. + """ + + facets: SupportedAsFacets | None = None + """A list of facets to apply to the query.""" + + # filter_principal_sets: str | None = None + """A comma-separated list of principal sets to filter on. + Note: Globus Search wont accept this for an unauthenticated search, so commented out for now. + """ + + # bypass_visible_to: bool = False + """Whether or not to bypass the visible_to filter. + Note: Globus Search accepts this one but ignores it for unauthenticated searches, + so commented out for now to make parsing easier. + """ + + +class GlobusMetaEntry(BaseModel): + """Parent container model for Globus GMeta Entries.""" + + content: dict[str, Any] + """The content of the metadata entry.""" + entry_id: str | None + """The ID of the metadata entry.""" + matched_principal_sets: list[str] + """A list of principal sets that matched the metadata entry.""" + + +class GlobusMetaResult(BaseModel): + """Parent container for a group of Globus Search results for a Subject.""" + + subject: str + """The ID of the subject.""" + entries: list[GlobusMetaEntry] + """A list of metadata entries for the subject.""" + + +class GlobusBucket(BaseModel): + """Represents a bucket in a Globus Search result. + + Attributes: + value (str | dict[Literal["from", "to"], Any]): The value of the bucket. + count (int): The count of items in the bucket. + """ + + value: str | dict[Literal["from", "to"], Any] + """The value of the bucket.""" + count: int + """The count of items in the bucket.""" + + +class GlobusFacetResult(BaseModel): + """Represents a bucket in a Globus Search result. + + Attributes: + name (str): The name of the facet. + value (float): The value of the facet. + buckets (list[GlobusBucket]]): A list of buckets associated with the facet. + """ + + name: str + """The name of the facet.""" + + value: float | None = None + """The value of the facet. + + TODO: The docs aren't super clear that GFacetResult.value is only returned if the facet query was + a sum or avg facet. We need to determine if ESG Search supports these types and thus + whether we need to implement them. + ref: https://docs.globus.org/api/search/reference/post_query/#gfacetresult + """ + + buckets: list[GlobusBucket] + """A list of buckets associated with the facet.""" + + +class GlobusSearchResult(BaseModel): + """Represents a search result from the Globus platform. + + Ref: https://docs.globus.org/api/search/reference/post_query/#gsearchresult + + Attributes: + gmeta (list[GlobusMetaResult]]): A list of metadata entries for the search result. + facet_results (list[GlobusFacetResult]] | None = None): A list of facet results for the search result. + offset (int): The offset of the search result. + count (int): The count of items in the search result. + total (int): The total number of items in the search result. + has_next_page (bool): A flag indicating whether there is a next page of search results. + datatype (Literal["GSearchResult"]): The data type of the search result. + version (Literal["2017-09-01"]): The version of the search result. + """ + + gmeta: list[GlobusMetaResult] + """ + A list of `GlobusMetaResult` objects. These objects represent metadata entries for the search result. + """ + + facet_results: list[GlobusFacetResult] | None = None + """ + A list of `GlobusFacetResult` objects. These objects represent facet results for the search result. This attribute is optional and can be `None`. + """ + + offset: int + """ + An integer representing the offset of the search result. + """ + + count: int + """ + An integer representing the count of items in the search result. + """ + + total: int + """ + An integer representing the total number of items in the search result. + """ + + has_next_page: bool + """ + A boolean flag indicating whether there is a next page of search results. + """ + + ### WARNING: these attributes are shown in the examples of the Globus SDK + # docs (https://docs.globus.org/api/search/reference/post_query/#examples_10) + # but are not documented as part of the "spec" (such as it is...) + # They do not appear to return from SearchClient().post_query() so commenting them out for now. + # datatype: Literal["GSearchResult"] = Field(alias="@datatype") + """ + A string literal representing the data type of the search result. Its value is always `"GSearchResult"`. + """ + + # version: Literal["2017-09-01"] = Field(alias="@version") + """ + A string literal representing the version of the search result. Its value is always `"2017-09-01"`. + """ + + +class ESGSearchResultParams(BaseModel): + """Parameters for the ESG Search Result. + + Attributes: + facet_field (None | list[str]): The field to use for faceting. + df (str): The default field to use for searching. + q_alt (str): The alternative query string. + indent (str): A boolean flag indicating whether to indent the JSON response. + echoParams (str): A boolean flag indicating whether to echo the parameters in the response. + fl (str): A comma-separated list of fields to include in the response. + start (Decimal): The starting index for the search results. + fq (SolrFQ): The list of Solr Facet Queries. + rows (Decimal): The maximum number of search results to return. + q (str): The query string to use for searching. + shards (Url): The URL of the Solr shards to use for searching. + tie (Decimal): The tie-breaking parameter for Solr faceting. + facet_limit (Decimal): The maximum number of facet values to return. + qf (str): The query field to use for searching. + facet_method (str): The method to use for faceting. + facet_mincount (Stringified[int]): The minimum count required for a facet value to be included in the response. + facet (LowerCased[Stringified[bool]]): A boolean flag indicating whether to include facet values in the response. + wt (Literal["json", "xml"]): The format of the response. + facet_sort (str): The sorting method to use for facet values. + """ + + model_config = ConfigDict(validate_default=True) + + @field_validator("fq", mode="before") + @staticmethod + def convert_and_validate_fq(value: SupportedAsFQ) -> SolrFQ: + """Convert and validate the input for the `fq` field. + + Parameters: + input (SupportedAsFQ): The input value to be converted and validated. + + Returns: + SolrFQ: A SolrFQ object representing the list of Solr Facet Queries. + + Raises: + ValueError: If the input value is not a list of Solr Facet Queries, or if it is not convertible to a SolrFQ object. + + Note: + - If the input value is a string, it is split into a list of strings and then validated. + - If the input value is a list of strings, it is validated as a SolrFQ object. + - If the input value is an instance of `ESGSearchQuery`, it is converted to a SolrFQ object by first converting the queryable fields of the query into a list of strings, and then validating the resulting list. + """ + if isinstance(value, str): + value = [atom.strip() for atom in value.split(",")] + if is_sequence_of(value, str): + return one_or_list(value) + elif isinstance(value, ESGSearchQuery): + fq_fields = value.model_dump(exclude_none=True, include=value._queriable_fields) + return one_or_list([format_fq_field(field) for field in fq_fields.items()]) + else: + raise ValueError( # pragma: no cover TODO: pytest.raises() masks this line so coverage doesn't think it was executed + f"Expected input convertible to SolrFQ one of {get_args(SupportedAsFQ)}, got {type(value)}" + ) + + facet_field: None | list[str] = Field(alias="facet.field", default=None, exclude=True) + """ + The `facet_field` attribute is a list of strings representing the fields to use for faceting. If `None`, no faceting will be performed. + """ + df: str = "text" + """ + The `df` attribute is a string representing the default field to use for searching. Its default value is "text". + """ + q_alt: str = Field(alias="q.alt", default="*:*") + """The `q_alt` attribute is an optional string parameter that represents a Solr "alternative query" string. This attribute is used to provide an additional query string for the search operation. If not provided, the default value is "*:*", which means that all documents will be returned.""" + indent: LowerCased[Stringified[bool]] = True + """ + The `indent` attribute is a boolean flag indicating whether to indent the JSON response. Its default value is `"true"`. + """ + echoParams: str = "all" + """ + A boolean flag indicating whether to echo the parameters in the response. Its default value is "all". + """ + fl: str = "*,score" + """ + The `fl` attribute is a comma-separated list of fields to include in the response. Its default value is `"*,score"`. + """ + start: Decimal + """ + The `start` attribute is an integer representing the starting index for the search results. Its default value is `0`. + """ + + fq: SolrFQ + """ + The `fq` attribute is a `SolrFQ` object representing the list of Solr Facet Queries. + Note: The project field seems to be "special" in the ESG Search Response. It comes back wrapped in + literal quotes, at least Dataset and Latest do not, ie: + ``` + "fq":[ + "type:Dataset", + "project:\"CMIP6\"", + "latest:true" + ] + ``` + """ + + rows: Decimal = cast(Decimal, 10) + """ + The `rows` attribute is an integer representing the maximum number of search results to return. Its default value is `10`. + """ + q: str + """ + The `q` attribute is a string representing the query string to use for searching. + """ + shards: Url = Url("esgf-data-node-solr-query:8983/solr/datasets") + """ + The `shards` attribute is a `Url` object representing the URL of the Solr shards to use for searching. Its default value is `"esgf-data-node-solr-query:8983/solr/datasets"`. + """ + tie: Decimal = cast(Decimal, 0.01) + """ + The `tie` attribute is a float representing the tie-breaking parameter for Solr faceting. Its default value is `0.01`. + """ + facet_limit: Decimal = Field(alias="facet.limit", default=-1) + """ + The `facet_limit` attribute is an integer representing the maximum number of facet values to return. Its default value is `-1`, which means that all facet values will be returned. + """ + qf: str = "text" + """ + The `qf` attribute is a string representing the query field to use for searching. Its default value is `"text"`. + """ + facet_method: str = Field(alias="facet.method", default="enum") + """ + The `facet_method` attribute is a string representing the method to use for faceting. Its default value is `"enum"`. + """ + facet_mincount: Decimal = Field(alias="facet.mincount", default=1) + """ + The `facet_mincount` attribute is an integer representing the minimum count required for a facet value to be included in the response. Its default value is `1`. + """ + facet: LowerCased[Stringified[bool]] = True + """ + The `facet` attribute is a boolean flag indicating whether to include facet values in the response. Its default value is `"true"`. + """ + wt: Literal["json", "xml"] = "json" + """ + The `wt` attribute is a string literal representing the format of the response. Its default value is `"json"`. + """ + facet_sort: str = Field(alias="facet.sort", default="lex") + """ + The `facet_sort` attribute is a string literal representing the sorting method to use for facet values. Its default value is `"lex"`. + """ + + +class ESGSearchHeader(BaseModel): + """Represents the response header for the ESG Search Result.""" + + status: int = 0 + """Status of the response.""" + QTime: int + """Time taken to process the request.""" + params: ESGSearchResultParams + """Parameters for the ESG Search Result.""" + + +class ESGSearchResult(BaseModel): + """Represents a search result from ESG Search.""" + + @field_validator("docs", mode="before") + @staticmethod + def convert_to_docs(value: SupportedAsSolrDocs) -> Sequence[SolrDoc]: + """Convert a list of GlobusMetaResults to a list of Solr docs.""" + if is_sequence_of(value, dict): + return value + elif is_sequence_of(value, GlobusMetaResult): + # Globus Search doesn't return score, so fake it for consistency + return [{**record.entries[0].content | {"id": record.subject, "score": 0.5}} for record in value] + else: + raise ValueError( # pragma: no cover TODO: pytest.raises() masks this line so coverage doesn't think it was executed + f"Expected input convertible to SolrDoc one of {get_args(SupportedAsSolrDocs)}, got {type(value)}" + ) + + numFound: int + """Number of documents found.""" + start: int + """Starting index for the search results.""" + docs: list[SolrDoc] + """List of documents found.""" + + @computed_field + @property + def maxScore(self: Self) -> float | None: + """Maximum score for the search results.""" + return max((record.get("score", 0) for record in self.docs), default=None) + + +class ESGFSearchFacetResult(BaseModel): + """Represents a facet result from ESG Search.""" + + facet_queries: dict = {} + """Facet queries for the facet result.""" + facet_fields: dict[str, tuple[str | int, ...]] = {} + """Facet fields for the facet result.""" + facet_ranges: dict = {} + """Facet ranges for the facet result.""" + facet_intervals: dict = {} + """Facet intervals for the facet result.""" + facet_heatmaps: dict = {} + """Facet heatmaps for the facet result.""" + + +class ESGSearchResponse(BaseModel): + """Represents a response from ESG Search.""" + + @field_validator("facet_counts", mode="before") + @staticmethod + def convert_to_esg_search_facet_counts(value: SupportedAsFacets) -> ESGFSearchFacetResult: + """Convert a list of GlobusFacetResults to a list of ESGSearchFacetCounts. + + Parameters: + value (list[dict[str, Any]] | list[GlobusFacetResult] | None): The input value to be converted. + + Returns: + ESGFSearchFacetResult: A list of ESGSearchFacetCounts. + + Raises: + ValueError: If the input value is not a list of GlobusFacetResults. + + Note: + - If the input value is `None`, an empty ESGSearchFacetResult object is returned. + - If the input value is a list of dictionaries, it is assumed that the list represents a list of facet results from Globus Search. + """ + if isinstance(value, dict): + return ESGFSearchFacetResult.model_validate(value) + if isinstance(value, ESGFSearchFacetResult): + return value + if is_sequence_of(value, GlobusFacetResult): + facet_fields = defaultdict(list) + for facet in value: + facet_fields[facet.name].extend( + [attr for bucket in facet.buckets for attr in (bucket.value, bucket.count)] + ) + return ESGFSearchFacetResult.model_validate({"facet_fields": facet_fields}) + if value is None: + # Globus facet_results can be `None` if there are no facets, but ESG Search + # returns empty dicts if there are no facets. + return ESGFSearchFacetResult() + raise ValueError( + f"Expected input convertible to ESGFSearchFacetResult one of {get_args(SupportedAsFacets)}, got {type(value)}" + ) + + responseHeader: ESGSearchHeader + """Represents the response header for the ESG Search Response.""" + response: ESGSearchResult + """Represents a search result from ESG Search.""" + facet_counts: ESGFSearchFacetResult = ESGFSearchFacetResult() + """Represents a facet result from ESG Search.""" diff --git a/esg_fastapi/api/versions/v1/routes.py b/esg_fastapi/api/versions/v1/routes.py new file mode 100644 index 0000000..ca84584 --- /dev/null +++ b/esg_fastapi/api/versions/v1/routes.py @@ -0,0 +1,177 @@ +"""Starting point/base for the ESG FastAPI service and it's versions and components.""" + +import logging +from contextvars import ContextVar +from typing import Any, Generator + +import pyroscope +import requests +from fastapi import APIRouter, Depends, FastAPI, Request +from globus_sdk import SearchClient +from opentelemetry import trace +from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor +from typing_extensions import TypedDict + +from esg_fastapi import settings +from esg_fastapi.utils import Timer + +from .models import ( + ESGSearchQuery, + ESGSearchResponse, + GlobusSearchQuery, + GlobusSearchResult, +) + +logger = logging.getLogger() + +router = APIRouter() + + +def app_factory() -> FastAPI: + app = FastAPI( + version="v1", + title="title", + summary="summary", + description="description", + openapi_tags=[ + { + "name": "v1", + "description": "description", + }, + ], + ) + app.include_router(router) + app.router.tags = ["v1"] + FastAPIInstrumentor().instrument_app(app) + return app + + +tracing_tags = ContextVar("tracing_tags") + + +def query_instrumentor(query: ESGSearchQuery = Depends()) -> Generator[ESGSearchQuery, Any, None]: + current_span: trace.Span = trace.get_current_span() + tracing_tags.set({key: str(value) for key, value in query.model_dump(exclude_none=True).items()}) + current_span.set_attributes(tracing_tags.get()) + with pyroscope.tag_wrapper(tracing_tags.get()): + yield query + + +TrackedESGSearchQuery: ESGSearchQuery = Depends(query_instrumentor) + + +@router.get("/") +async def search_globus(q: ESGSearchQuery = TrackedESGSearchQuery) -> ESGSearchResponse: + """This function performs a search using the Globus API based on the provided ESG search query. + + Parameters: + - q (ESGSearchQuery): The ESG search query object. + + Returns: + - ESGSearchResponse: A response object containing the search results from the Globus API. + + The function first constructs a Globus search query from the ESG query. It then sends a POST request to the Globus search endpoint with the constructed query. + + The function then constructs a response object from the received data, adhering to the format returned by ESG Search. + + The response object contains the following fields: + - responseHeader: Contains information about the search query and its execution, such as the query time and the number of returned results. + - response: Contains the actual search results, including the total number of results, the starting offset, and the actual search results. + - facet_counts: Contains the counts of distinct values for each facet in the search results. + """ + logger.info("Starting query") + globus_query = GlobusSearchQuery.from_esg_search_query(q) + with Timer() as t: + # TODO: OTEL will time this anyway -- can we get the time from it? + tracer = trace.get_tracer("esg_fastapi") + with tracer.start_as_current_span("globus_search"): + response = ( + SearchClient() + .post_search(settings.globus_search_index, globus_query.model_dump(exclude_none=True)) + .data + ) + globus_response = GlobusSearchResult.model_validate(response) + + return ESGSearchResponse.model_validate( + { + "responseHeader": { + "QTime": t.time, + "params": { + "q": q.query, + "start": q.offset, + "rows": q.limit, + "fq": q, + "shards": f"esgf-data-node-solr-query:8983/solr/{q.type.lower()}s", + }, + }, + "response": { + "numFound": globus_response.total, + "start": globus_response.offset, + "docs": globus_response.gmeta, + }, + "facet_counts": globus_response.facet_results, + } + ) + + +class SearchParityFixture(TypedDict): + """A dictionary containing the request, queries, and responses from both ESG and Globus searches. + + This allows us to test FastAPI version returns the same results as ESG Search, assuming the same result records + were returned by the Globus search endpoint. + + Attributes: + request (str): The raw HTTP query parameters used to generate the Globus and ESG Search responses. + globus_query (GlobusSearchQuery): The Globus search query object constructed from the ESG query. + globus_response (GlobusSearchResult): The response from the Globus search endpoint. + esg_search_response (ESGSearchResponse): The response from the ESG search endpoint. + """ + + request: str + globus_query: GlobusSearchQuery + globus_response: GlobusSearchResult + esg_search_response: ESGSearchResponse + + +@router.get("/make_fixture") +def make_fixture(raw_request: Request, q: ESGSearchQuery = TrackedESGSearchQuery) -> SearchParityFixture: + """This function makes a fixture for comparing ESG and Globus search results. + + Parameters: + - raw_request (Request): The raw HTTP request object. + - q (ESGSearchQuery): The ESG search query object. + + Returns: + - SearchParityFixture: A dictionary containing the request, queries, and responses from both ESG and Globus searches. + + The function first sends an HTTP GET request to the ESG search endpoint with the provided query parameters. + It then constructs a Globus search query from the ESG query and sends a POST request to the Globus search endpoint. + + The function then constructs a theoretical response for the Globus search results, assuming that the ESG and Globus searches returned the same records. + + Finally, the function returns a dictionary containing the request, queries, and responses from both ESG and Globus searches. + """ + esg_search_response = requests.get( # noqa: S113 -- Only timeout if the globus call times out. + "https://esgf-node.ornl.gov/proxy/search", params=q.model_dump(exclude_none=True) + ).json() + globus_query = GlobusSearchQuery.from_esg_search_query(q) + globus_response = ( + SearchClient().post_search(settings.globus_search_index, globus_query.model_dump(exclude_none=True)).data + ) + + # Most test cases are unordered and so return different records between the globus and ESG searches. + # Here, we throw away the actual globus results and construct a theoretical response of what it should + # look like if the two searches had returned the same records. + # TODO: would it be better to take the ESG result id's and add extra filters to the globus search to + # ensure it returns the same records? + globus_response["gmeta"] = [ + {"subject": doc["id"], "entries": [{"content": doc, "entry_id": doc["type"], "matched_principal_sets": []}]} + for doc in esg_search_response["response"]["docs"] + ] + + return { + "request": raw_request.scope["query_string"], + "globus_query": GlobusSearchQuery.from_esg_search_query(q), + "globus_response": globus_response, + "esg_search_response": esg_search_response, + } diff --git a/esg_fastapi/api/versions/v1/types.py b/esg_fastapi/api/versions/v1/types.py new file mode 100644 index 0000000..c9944ec --- /dev/null +++ b/esg_fastapi/api/versions/v1/types.py @@ -0,0 +1,90 @@ +from collections.abc import Sequence +from typing import TYPE_CHECKING, Annotated, Any, Callable, ForwardRef + +from annotated_types import T +from fastapi import Query +from pydantic import AfterValidator, BeforeValidator, GetJsonSchemaHandler, PlainSerializer +from pydantic.json_schema import JsonSchemaValue +from pydantic_core import CoreSchema +from pydantic_core.core_schema import ( + chain_schema, + is_instance_schema, + json_or_python_schema, + no_info_plain_validator_function, + str_schema, + to_string_ser_schema, + union_schema, +) +from semver import Version + +from esg_fastapi.utils import ensure_list + +if TYPE_CHECKING: # pragma: no cover + from .models import ESGSearchQuery, GlobusFacet, GlobusFilter, GlobusMetaResult +else: + GlobusMetaResult = ForwardRef("GlobusMetaResult") + ESGSearchQuery = ForwardRef("ESGSearchQuery") + GlobusFacet = ForwardRef("GlobusFacet") + GlobusFilter = ForwardRef("GlobusFilter") + + +Stringified = Annotated[T, AfterValidator(lambda x: str(x))] +"""String representation of the parameterized type.""" + +MultiValued = Annotated[list[T], BeforeValidator(ensure_list), Query()] +"""Solr MultiValued Field of the parameterized type.""" + +LowerCased = Annotated[T, PlainSerializer(lambda x: x.lower())] +"""Lower-case string representation of the parameterized type.""" + +SupportedAsFacets = str | Sequence[GlobusFacet] +"""Represents types convertable to a list of GlobusFacet objects.""" + +SupportedAsFilters = dict | Sequence[GlobusFilter] +"""Represents types convertable to a list of GlobusFilter objects.""" + +SolrFQ = str | Sequence[str] +"""Presentation type for the Solr `fq` field.""" + +SupportedAsFQ = ESGSearchQuery | SolrFQ +"""Represents types convertable to SolrFQ objects.""" + +# TODO: we should be able to better specify the typing of docs +SolrDoc = dict[str, Any] + +SupportedAsSolrDocs = SolrDoc | Sequence[GlobusMetaResult] +"""Represents types convertable to a list of GlobusMetaResult objects.""" + + +class SemVer(str): + """Represents a semantic version string.""" + + @staticmethod + def validate_from_str(value: str) -> Version: + return Version.parse(value) + + @classmethod + def __get_pydantic_core_schema__(cls, _source_type: Any, _handler: Callable[[Any], CoreSchema]) -> CoreSchema: + """Generates the Pydantic core schema for a specific source type using the provided handler.""" + from_str_schema = chain_schema( + [ + str_schema(), + no_info_plain_validator_function(cls.validate_from_str), + ] + ) + + return json_or_python_schema( + json_schema=from_str_schema, + python_schema=union_schema( + [ + is_instance_schema(Version), + from_str_schema, + ] + ), + serialization=to_string_ser_schema(), + ) + + @classmethod + def __get_pydantic_json_schema__(cls, _: CoreSchema, handler: GetJsonSchemaHandler) -> JsonSchemaValue: + """Generates the Pydantic JSON schema using the provided core schema and handler.""" + return handler(str_schema()) diff --git a/esg_fastapi/configuration/__init__.py b/esg_fastapi/configuration/__init__.py new file mode 100644 index 0000000..ab6b6dc --- /dev/null +++ b/esg_fastapi/configuration/__init__.py @@ -0,0 +1,41 @@ +"""This module exists to contain the settings wiring and components. + +Its been moved from the main init so that instrumentation can be setup as early as possible. +""" + +from importlib.metadata import version +from uuid import UUID + +from pydantic import UUID4, Field +from pydantic_loggings.base import Logging as LoggingConfig +from pydantic_settings import BaseSettings, SettingsConfigDict + +from esg_fastapi.api.versions.v1.types import SemVer +from esg_fastapi.configuration.gunicorn import GunicornSettings +from esg_fastapi.configuration.logging import ESGFLogging +from esg_fastapi.configuration.opentelemetry import OTELSettings +from esg_fastapi.configuration.profiling import Pyroscope + + +class UnifiedSettingsModel(BaseSettings): + """An importable Pydantic Settings object.""" + + model_config = SettingsConfigDict(env_prefix="ESG_FASTAPI_", env_nested_delimiter="__") + app_id: str = "esg_fastapi" + app_version: SemVer = Field(default=version("esg_fastapi")) + + pyroscope: Pyroscope = Pyroscope(application_name=app_id) + gunicorn: GunicornSettings = Field(default_factory=GunicornSettings) + logging: LoggingConfig = ESGFLogging(service_name=app_id) + otel: OTELSettings = OTELSettings(otel_service_name=app_id) + + # Globus functions are typed to accept UUIDs so use the coercion for validation + # ref: https://github.com/globus/globus-sdk-python/blob/b6fa2edc7e81201494d150585078a99d3926dfc7/src/globus_sdk/_types.py#L18 + globus_search_index: UUID4 = Field( + default=UUID("ea4595f4-7b71-4da7-a1f0-e3f5d8f7f062", version=4), + title="Globus Search Index ID", + description="The ID of the Globus Search Index queries will be submitted to. The default is the ORNL Globus Search Index.", + ) + + +settings = UnifiedSettingsModel() diff --git a/esg_fastapi/configuration/gunicorn.py b/esg_fastapi/configuration/gunicorn.py new file mode 100644 index 0000000..5aad29f --- /dev/null +++ b/esg_fastapi/configuration/gunicorn.py @@ -0,0 +1,124 @@ +from functools import partial +from multiprocessing import cpu_count +from pathlib import Path +from tempfile import mkdtemp +from typing import Annotated, Callable, Optional + +from annotated_types import T +from gunicorn.arbiter import Arbiter +from gunicorn.workers.base import Worker +from pydantic import BaseModel, Field, IPvAnyAddress, ValidationInfo, field_validator + +from esg_fastapi.api.versions.v1.models import Stringified + +from .logging import LogLevels + +ValidatedDefault = Annotated[T, Field(validate_default=True)] + +# TODO: we should be able to build this dynamically, but I gave up on figuring out the typing +# def map_annotation(setting: Setting) -> type: +# type_mapping = { +# int: int, +# str: str, +# callable: Callable, +# auto_int: Annotated[int, BeforeValidator(auto_int)], +# None: str, +# } +# return type_mapping[setting.type] + +# GunicornSettings = create_model( +# "GunicornSettings", +# __config__=None, +# __doc__=None, +# __base__=BaseModel, +# __module__=__name__, +# __cls_kwargs__=None, +# __validators__={setting.name: setting.validator for setting in KNOWN_SETTINGS}, +# __slots__=None, +# **{ +# setting.name: ( +# map_annotation(setting), +# FieldInfo( +# title=setting.name, +# default=setting(), +# description=setting.desc, +# ), +# ) +# for setting in KNOWN_SETTINGS +# }, +# ) + + +class GunicornSettings(BaseModel): + """Settings for the Gunicorn web server.""" + + # Fields used for calculation of other Guincorn settings, + # but not actually passed directly to Gunicorn + workers_per_core: int = 1 + web_concurrency: int = 0 + max_workers: int = 1 + host: Optional[IPvAnyAddress] = Field(default="0.0.0.0") # noqa: S104 -- primarily used for k8s so default to making that easier + port: Optional[int] = 1337 + + # Actual Gunicorn config variables + workers: ValidatedDefault[int] = 0 + worker_class: str = "uvicorn.workers.UvicornWorker" + worker_tmp_dir: Stringified[Path] = Field(default_factory=partial(mkdtemp, prefix="/dev/shm/")) # noqa: S108 -- `mkdtemp` is secure, we need to ensure a memory-backed tmp or the worker threads will hang waiting on disk i/o + loglevel: LogLevels = Field(default="INFO") + errorlog: Path = Field(default="-") + accesslog: Path = Field(default="-") + graceful_timeout: int = 120 + timeout: int = 120 + keepalive: int = 5 + bind: ValidatedDefault[str] = Field(default=None) + reload: bool = True + default_proc_name: str = "ESG-Fastapi" + preload_app: bool = True + + @field_validator("workers", mode="before") + @classmethod + def calculate_workers(cls, value: int, info: ValidationInfo) -> int: + """Calculate the number of workers for the Gunicorn server. + + Parameters: + - value (int): The initial value provided for the 'workers' field. + - info (ValidationInfo): An object containing information about the current validation process. + + Returns: + - int: The final value for the 'workers' field after applying the validation logic. + + The method first checks if a value has been provided for 'workers'. If not, it attempts to retrieve the value from the 'web_concurrency' or 'max_workers' fields in the info.data dictionary. + If neither of these fields has a value, the method calculates the number of workers based on the number of CPU cores and rounds the result to the nearest integer, with a minimum value of 2. + """ + return ( + value + or info.data["web_concurrency"] + or info.data["max_workers"] + or round(max(info.data["workers_per_core"] * cpu_count(), 2)) + ) + + @field_validator("bind", mode="before") + @classmethod + def get_binding_addr(cls, value: str | None, info: ValidationInfo) -> str: + """Determine the binding address for the Gunicorn server. + + Parameters: + - value (str): The initial value provided for the 'bind' field. + - info (ValidationInfo): An object containing information about the current validation process. + + Returns: + - str: The final value for the 'bind' field after applying the validation logic. + + The method first checks if a value has been provided for 'bind'. If not, it attempts to retrieve the value from the 'host' and 'port' fields in the info.data dictionary. + If the 'host' and 'port' fields are not provided, raise a ValueError with an appropriate error message. + """ + if value is not None: + return value + host = info.data["host"] + port = info.data["port"] + if host and port: + return f"{info.data['host']}:{info.data['port']}" + raise ValueError( + "Could not determine a binding address for the Gunicorn server. " + "Please provide a value for either 'bind' or both 'host' and 'port'." + ) diff --git a/esg_fastapi/configuration/logging.py b/esg_fastapi/configuration/logging.py new file mode 100644 index 0000000..65324d5 --- /dev/null +++ b/esg_fastapi/configuration/logging.py @@ -0,0 +1,62 @@ +import logging +from enum import Enum +from functools import partial +from typing import Self + +from opentelemetry import trace +from pydantic_loggings.base import Formatter, Handler +from pydantic_loggings.base import Logger as LoggerModel +from pydantic_loggings.base import Logging as LoggingConfig +from pydantic_loggings.types_ import OptionalModel, OptionalModelDict + +LogLevels = Enum("LogLevels", logging.getLevelNamesMapping()) + +default_log_record_factory = logging.getLogRecordFactory() + + +def record_factory(*args, **kwargs) -> logging.LogRecord: + span = trace.get_current_span() + ctx = span.get_span_context() + record = default_log_record_factory(*args, **kwargs) + + record.otelServiceName = kwargs["service_name"] + record.otelSpanID = format(ctx.span_id, "016x") + record.otelTraceID = format(ctx.trace_id, "032x") + record.otelTraceSampled = ctx.trace_flags.sampled + + return record + + +class ESGFLogging(LoggingConfig): + """Python's logging DictConfig represented as a typed and validated Pydantic model.""" + + service_name: str + + formatters: OptionalModelDict[Formatter] = { + "otel": Formatter.model_validate( + { + "datefmt": "[%Y-%m-%d %H:%M:%S %z]", + "style": "%", + # based on opentelemetry.instrumentation.logging.DEFAULT_LOGGING_FORMAT but with a newline before the message to make + # container logs more readable + "format": "%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] [trace_id=%(otelTraceID)s span_id=%(otelSpanID)s resource.service.name=%(otelServiceName)s trace_sampled=%(otelTraceSampled)s]\n- %(message)s", + } + ) + } + handlers: OptionalModelDict[Handler] = { + "stdout": Handler.model_validate({"formatter": "otel", "stream": "ext://sys.stdout"}), + "stderr": Handler.model_validate({"formatter": "otel", "stream": "ext://sys.stderr"}), + } + loggers: OptionalModelDict[LoggerModel] = { + "gunicorn": {"handlers": ["stdout"]}, + "uvicorn": {"handlers": ["stdout"]}, + } + root: OptionalModel[LoggerModel] = LoggerModel.model_validate( + {"handlers": ["stdout"], "level": "INFO", "propagate": True} + ) + + def model_post_init(self: Self, __context) -> None: + """Ensure the logger is configured as soon as the model is validated.""" + self.configure() + factory = partial(record_factory, service_name=self.service_name) + logging.setLogRecordFactory(factory) diff --git a/esg_fastapi/configuration/opentelemetry.py b/esg_fastapi/configuration/opentelemetry.py new file mode 100644 index 0000000..555a8f3 --- /dev/null +++ b/esg_fastapi/configuration/opentelemetry.py @@ -0,0 +1,73 @@ +import os +from functools import partial +from importlib.metadata import entry_points +from tempfile import mkdtemp +from typing import Annotated, Self + +from annotated_types import T +from pydantic import AnyUrl, BaseModel, Field, create_model +from pydantic_core import Url + +Exportable = Annotated[T, "Exportable"] + + +class ExportingModel(BaseModel): + def model_post_init(self: Self, _) -> None: + """Export any set model field values that are annotated with `Exportable` as environment variables. + + It iterates through the model fields, checks if the field is annotated with "Exportable", + and if a value is set for the field, it sets the corresponding environment variable. + OpenTelemetry is configured entirely through environment variables. Since they don't provide a way + to set these options programmatically, we generate a model from all environment variables that + they respect and during this post-init hook, export any that have values to the environment so that + OpenTelemetry will see them and we can configure everything in one place and generate docs and etc. + """ + for name, field in self.model_fields.items(): + if "Exportable" in field.metadata and (field_value := getattr(self, name)): + os.environ[name.upper()] = str(field_value) + + +def GeneratedOTELBase() -> type[BaseModel]: + """Generates a BaseModel class with fields for all OpenTelemetry environment variables. + + We use the same method (`importlib.metadata.entrypoints`) as OpenTelemetry's auto_instrumentation to + gather the list of all environment variables that OpenTelemetry respects. All such discovered environment + variables are `.lower()` and created as Fields on the generated model. They're also Annoted by the + `Exportable` Generic Type so that they can be distinguished from types and properties on sub classes + that we might not want to export to the environment. + """ + return create_model( + "OTELBase", + __config__=None, + __doc__=None, + __base__=ExportingModel, + __cls_kwargs__=None, + __validators__=None, + __module__=__name__, + __slots__=None, + **{ + var.lower(): (Exportable[str], Field(default=None)) + for ep in entry_points(group="opentelemetry_environment_variables") + for var in dir(ep.load()) + if var.startswith("OTEL_") + }, + ) + + +class OTELSettings(GeneratedOTELBase()): + """Settings class that exports all OpenTelemetry settings as environment variables. + + We inherit from the model produced by the GeneratedOTELBase class factory to keep that logic separate. + The fields generated on that model all have a default value of `None` and the `model_post_init` hook + will only export fields that have a value set, that way we don't need to know what all the OpenTelemetry + settings env vars default to (it doesn't seem to be exposed anywhere). + """ + + otel_service_name: Exportable[str] # Will be set by the parent model + otel_python_log_level: Exportable[str] = "info" + otel_python_logging_auto_instrumentation_enabled: Exportable[str] = "true" + otel_python_log_correlation: Exportable[str] = "true" + otel_exporter_otlp_traces_endpoint: Exportable[AnyUrl] = Url("http://localhost:4317") + + # TODO: This doesn't really fit here, but for now, stick it with the other Exportables + prometheus_multiproc_dir: Exportable[str] = Field(default_factory=partial(mkdtemp, prefix="/dev/shm/")) # noqa: S108 -- `mkdtemp` is secure, we need to ensure a memory-backed tmp or the worker threads will hang waiting on disk i/o diff --git a/esg_fastapi/configuration/profiling.py b/esg_fastapi/configuration/profiling.py new file mode 100644 index 0000000..83808d8 --- /dev/null +++ b/esg_fastapi/configuration/profiling.py @@ -0,0 +1,31 @@ +from pydantic import AnyUrl, BaseModel +from pydantic_core import Url + + +class Pyroscope(BaseModel): + application_name: str # set by the parent model + + server_address: AnyUrl = Url("http://localhost:4040") + """Pyroscope server address""" + + sample_rate: int = 100 + """Pyroscope sample rate""" + + detect_subprocesses: bool = True + """Detect subprocesses started by the main process.""" + + oncpu: bool = False + """Report CPU time only""" + + gil_only: bool = False + """Only include traces for threads that are holding on to the Global Interpreter Lock""" + + enable_logging: bool = False + + # tags: dict[str, str] = { + # "region": '{os.getenv("REGION")}', + # } + + # basic_auth_username: str = "" + # basic_auth_password: str = "" + # tenant_id: str = "" diff --git a/esg_fastapi/observability/__init__.py b/esg_fastapi/observability/__init__.py new file mode 100644 index 0000000..b9705c0 --- /dev/null +++ b/esg_fastapi/observability/__init__.py @@ -0,0 +1,6 @@ +"""Elevate the observability app for ease of import.""" + +from .main import observe +from .routes import app + +__all__ = ["app", "observe"] diff --git a/esg_fastapi/observability/main.py b/esg_fastapi/observability/main.py new file mode 100644 index 0000000..de64a53 --- /dev/null +++ b/esg_fastapi/observability/main.py @@ -0,0 +1,12 @@ +from fastapi import FastAPI +from starlette.middleware.base import BaseHTTPMiddleware + +from .metrics import track_prometheus_metrics +from .routes import app as observability_app + + +def observe(measured_app: FastAPI) -> FastAPI: + measured_app.add_middleware(BaseHTTPMiddleware, dispatch=track_prometheus_metrics) + measured_app.mount("/observability", observability_app) + measured_app.router.include_router(observability_app.router) + return measured_app diff --git a/esg_fastapi/observability/metrics.py b/esg_fastapi/observability/metrics.py new file mode 100644 index 0000000..c8d4d6a --- /dev/null +++ b/esg_fastapi/observability/metrics.py @@ -0,0 +1,108 @@ +"""Functions and classes related to gathering metrics from the API.""" + +from contextlib import ExitStack + +from prometheus_client import ( + Counter, + Gauge, + Histogram, + Info, +) +from starlette.middleware.base import RequestResponseEndpoint +from starlette.requests import Request +from starlette.responses import Response + +from esg_fastapi import settings +from esg_fastapi.api.versions.v1.models import ESGSearchQuery + +FACET_LABELS = ESGSearchQuery()._queriable_fields +GLOBAL_LABELS: list[str] = ["method", "path", "app_name", *FACET_LABELS] + +ESG_FASTAPI = Info("fastapi_app_info", "FastAPI application information.").info( + { + "app_name": settings.app_id, + "version": settings.app_version, + } +) +EXCEPTIONS = Counter( + "fastapi_exceptions_total", + "Total count of exceptions raised by path and exception type", + [*GLOBAL_LABELS, "exception_type"], +) +REQUESTS_IN_PROGRESS = Gauge( + "fastapi_requests_in_progress", + "Gauge of requests by method and path currently being processed", + GLOBAL_LABELS, +) +REQUESTS = Counter( + "fastapi_requests_total", + "Total count of requests by method and path.", + GLOBAL_LABELS, +) +RESPONSES = Counter( + "fastapi_responses_total", + "Total count of responses by method, path and status codes.", + [*GLOBAL_LABELS, "status_code"], +) +REQUESTS_PROCESSING_TIME = Histogram( + "fastapi_request_processing_time", + "Histogram of requests processing time by path (in seconds)", + GLOBAL_LABELS, +) + + +async def track_prometheus_metrics(request: Request, call_next: RequestResponseEndpoint) -> Response: + """A middleware function that tracks Prometheus metrics for incoming requests and responses. + + Args: + request (Request): The incoming request. + call_next (RequestResponseEndpoint): The function to call to get the response for the request. + + Returns: + Response: The response for the request. + """ + request_labels = {"method": request.method, "path": request.url.path, "app_name": settings.app_id} + request_facets = {field: request.query_params.get(field) for field in FACET_LABELS} + stack = ExitStack() + REQUESTS.labels(**request_labels, **request_facets).inc() + with stack: + # Start a timer for the request. + stack.enter_context(REQUESTS_PROCESSING_TIME.labels(**request_labels, **request_facets).time()) + # Mark the request as in progress. + stack.enter_context(REQUESTS_IN_PROGRESS.labels(**request_labels, **request_facets).track_inprogress()) + + # Call the next middleware in the stack. + response = await call_next(request) + + # Mark the response as complete. + RESPONSES.labels(**request_labels, **request_facets, status_code=response.status_code).inc() + return response + + +async def track_exceptions(request: Request, exc: Exception) -> None: + """FastAPI exception handler for tracking excpetion types in Prometheus metrics. + + If a handler is set for the exception type, it will be passed on to that handler, otherwise it will be re-raised. + + Args: + request (Request): The incoming request object. + exc (Exception): The exception object raised by the application. + + Returns: + None: This function does not return a value. + + Raises: + Exception: If no handler is found for the raised exception, it will be re-raised. + """ + request_labels = { + "method": request.method, + "path": request.url.path, + "exception_type": exc, + "app_name": settings.app_id, + } + request_facets = {field: request.query_params.get(field) for field in FACET_LABELS} + EXCEPTIONS.labels(**request_labels, **request_facets).inc() + if handler := request.app.exception_handlers.get(exc): + return await handler(request, exc) + else: + raise exc diff --git a/esg_fastapi/observability/models.py b/esg_fastapi/observability/models.py new file mode 100644 index 0000000..5a68fb1 --- /dev/null +++ b/esg_fastapi/observability/models.py @@ -0,0 +1,11 @@ +"""Models related to the Observability component.""" + +from typing import Literal + +from pydantic import BaseModel + + +class ProbeResponse(BaseModel): + """Represents the possible response statuses of a Probe.""" + + status: Literal["ready", "live"] diff --git a/esg_fastapi/observability/routes.py b/esg_fastapi/observability/routes.py new file mode 100644 index 0000000..6fba33f --- /dev/null +++ b/esg_fastapi/observability/routes.py @@ -0,0 +1,56 @@ +"""Routes related to the Observability component.""" + +from fastapi import FastAPI, Request, Response +from prometheus_client import CONTENT_TYPE_LATEST, CollectorRegistry, generate_latest +from prometheus_client.multiprocess import MultiProcessCollector + +from .models import ProbeResponse + +app = FastAPI( + title="Observability", + summary="Endpoints used for observability of the system.", + description="# Long form CommonMark content\n---\nTODO: Create a discription for the Observability sub-service.", + openapi_tags=[ + { + "name": "Kubernetes", + "description": "Provide information to the Kubernetes controller.", + "externalDocs": { + "description": "Kubernetes Probe Documentation", + "url": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/", + }, + }, + ], +) + +app.router.tags = ["Observability"] + + +@app.get("/healthz/liveness", tags=["Kubernetes"]) +async def liveness_probe() -> ProbeResponse: + """Reports liveness status to Kubernetes controller. + + Returns: + ProbeResponse: {'status': 'live'} + """ + return ProbeResponse(status="live") + + +@app.get("/healthz/readiness", tags=["Kubernetes"]) +async def readiness_probe() -> ProbeResponse: + """Reports liveness status to Kubernetes controller. + + Returns: + ProbeResponse: {'status': 'ready'} + """ + return ProbeResponse(status="ready") + + +@app.get("/metrics") +def metrics_route(request: Request, response: Response) -> Response: + """Endpoint that serves Prometheus metrics.""" + ephemeral_registry = CollectorRegistry() + MultiProcessCollector(ephemeral_registry) + return Response( + content=generate_latest(ephemeral_registry), + headers={"Content-Type": CONTENT_TYPE_LATEST}, + ) diff --git a/esg_fastapi/py.typed b/esg_fastapi/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/esg_fastapi/utils.py b/esg_fastapi/utils.py new file mode 100644 index 0000000..427a198 --- /dev/null +++ b/esg_fastapi/utils.py @@ -0,0 +1,211 @@ +"""Utilities that don't fit well in other modules.""" + +import asyncio +import logging +import time +from collections.abc import Sequence +from functools import wraps +from types import TracebackType +from typing import Any, Optional, Self, Type + +import pyroscope +from annotated_types import T + + +class Timer: + """Context manager for timing the seconds elapsed during a context. + + The `Timer` context manager is used to measure the time taken for a block of code to execute. + + Attributes: + start_time (int): The start time of the context in nanoseconds. + end_time (int): The end time of the context in nanoseconds. + time (int): The time taken by the context in seconds. + """ + + def __enter__(self: Self) -> Self: + """Open the context and start the timer. + + Returns: + Timer: Exposes the start, end, and delta in seconds of the context. + """ + self.start_time = time.monotonic_ns() + return self + + def __exit__( + self: Self, + ex_typ: Optional[Type[BaseException]], + ex_val: Optional[BaseException], + traceback: Optional[TracebackType], + ) -> None: + """Close the context and stop the timer.""" + self.end_time = time.monotonic_ns() + self.time = int((self.end_time - self.start_time) // 1e9) + + +def one_or_list(value: Sequence[T] | T) -> T | Sequence[T]: + """Unwrap length 1 lists. + + This function takes a value that can be either a single item or a list of items. If the passed value is a list of length 1, the function returns the single item in the list. Otherwise, it returns the original list. + + Args: + value (list[T] | T): The value to be unwrapped. + + Returns: + T | list[T]: If the passed list is length 1, the function returns the single item in the list. Otherwise, it returns the original list. + + Example: + >>> one_or_list([1, 2, 3]) + [1, 2, 3] + >>> one_or_list(4) + 4 + >>> one_or_list("hello") + 'hello' + >>> one_or_list([1]) + 1 + """ + return value[0] if isinstance(value, list) and len(value) == 1 else value + + +def ensure_list(value: T) -> T | list[T]: + """If value is a list, return as is. Otherwise, wrap it in a list. + + Args: + value (T): The value to be ensured as a list. + + Returns: + list: Either the original list passed in, or the passed value wrapped in a list. + + Raises: + TypeError: If the passed value is not a list and cannot be converted to one. + + Examples: + >>> ensure_list(123) + [123] + >>> ensure_list([123, 456]) + [123, 456] + """ + return value if isinstance(value, list) else [value] + + +def quote_str(value: str | T) -> str | T: + r"""Wrap a string in double quotes. + + Args: + value (str): The value to be wrapped in double quotes. + + Returns: + str: The wrapped string. + + Examples: + >>> quote_str("hello") + '"hello"' + >>> quote_str("hello'world") + '"hello'world"' + """ + if isinstance(value, str) and not value.startswith('"') and not value.endswith('"'): + return f'"{value}"' + return value + + +def format_fq_field(field: tuple[str, Any]) -> str: + """Convert key, value pairs to key:value str expected to be returned by Solr.""" + # TODO: what determines if a field is non-quoted? I suspect things that are represented as + # enums in the java code. If we can determine which fields are non-quoted, we should + # tag them with annotations and a computed field like we do with non-queriable fields. + non_quoted_fields = {"type"} + key, value = field + value = one_or_list(value) + return f"{key}:{value if key in non_quoted_fields else quote_str(value)}" + + +def print_loggers(verbose: bool = True) -> None: # pragma: no cover -- not used yet + """Print out all initialized loggers. + + This is helpful for you to visualize + exactly how loggers have been set up in your project (and your dependencies). By + default, all loggers will be printed. If you want to filter out logging + placeholders, loggers with NullHandlers, and loggers that only propagate to parent, + set the verbose parameter to False. + + Shamelessly pilfered from https://github.com/kolonialno/troncos/blob/f7e27727f43be57af41a4531afc46a889c6d45f0/troncos/contrib/logging/tools/__init__.py#L4 + + This flowchart helps to debug logging issues: + https://docs.python.org/3/howto/logging.html#logging-flow + + The output from this function will look something like this: + + Loggers: + [ root ] logs.RootLogger LEVEL:0 PROPAGATE:True + └ HANDLER logs.StreamHandler LVL 20 + └ FILTER velodrome.observability.logs.TraceIdFilter + └ FORMATTER velodrome.observability.logs.LogfmtFormatter + [ uvicorn.access ] logs.Logger LEVEL:20 PROPAGATE:False + [ uvicorn.error ] logs.Logger LEVEL:20 PROPAGATE:True + └ FILTER velodrome.utils.obs._UvicornErrorFilter + [ velodrome.access ] logs.Logger LEVEL:20 PROPAGATE:True + └ FILTER velodrome.observability.logs.HttpPathFilter + """ + + def internal( + curr: tuple[str, logging.Logger], + rest: list[tuple[str, logging.Logger]], + ) -> None: + i_name, i_log = curr + + print( + f"[ {i_name.ljust(20)[:20]} ]" + f" {str(i_log.__class__)[8:-2]}" + f" LEVEL: {i_log.level if hasattr(i_log, 'level') else '?'}" + f" PROPAGATE: {i_log.propagate if hasattr(i_log, 'propagate') else '?'}" + ) + + if hasattr(i_log, "filters"): + for f in i_log.filters: + print(" └ FILTER", str(f.__class__)[8:-2]) + + if hasattr(i_log, "handlers"): + for h in i_log.handlers: + print( + " └ HANDLER", + str(h.__class__)[8:-2], + " LEVEL:", + h.level if hasattr(h, "level") else "?", + ) + if hasattr(h, "filters"): + for f in h.filters: + print(" └ FILTER", str(f.__class__)[8:-2]) + if hasattr(h, "formatter"): + print(" └ FORMATTER", str(h.formatter.__class__)[8:-2]) + + if rest: + curr = rest[0] + rest = rest[1:] + internal(curr, rest) + + all_but_root = [] + for name, logger in logging.Logger.manager.loggerDict.items(): + if not verbose: + # Ignore placeholders + if isinstance(logger, logging.PlaceHolder): + continue + + # If it is a logger that does nothing but propagate to the parent, ignore + if len(logger.filters) == 0 and len(logger.handlers) == 0 and logger.propagate: + continue + + # If this logger only has the Null handler + if ( + len(logger.filters) == 0 + and len(logger.handlers) == 1 + and isinstance(logger.handlers[0], logging.NullHandler) + ): + continue + + all_but_root.append((name, logger)) + + all_but_root.sort() + + print("Loggers:") + internal(("root", logging.getLogger()), all_but_root) # type: ignore[arg-type] + print("") diff --git a/features/ESGSearch_Parity/esg_search_parity.feature b/features/ESGSearch_Parity/esg_search_parity.feature new file mode 100644 index 0000000..43f5412 --- /dev/null +++ b/features/ESGSearch_Parity/esg_search_parity.feature @@ -0,0 +1,17 @@ +Feature: ESG Search Request/Response parity + + The response bodies for a given request should be the same between ESG Search and ESG FastAPI + + Scenario Outline: Minimal request parameters + + Given a + When the request is sent to ESG FastAPI + Then the ESG Fast API response should be the same as the ESG Search response + + Examples: + | query_example | + | 1_record_dataset_response.json | + | 2_record_dataset_response.json | + | 1_file_metagrid_response.json | + | metagrid_default_request.json | + | minimal_response.json | diff --git a/features/Observability/observability_endpoints.feature b/features/Observability/observability_endpoints.feature new file mode 100644 index 0000000..b4bf939 --- /dev/null +++ b/features/Observability/observability_endpoints.feature @@ -0,0 +1,15 @@ +Feature: The API provides observability endpoints for use by Kubernetes + + Kubernetes expects pods to provide a method to query their liveness (running or not) + and readiness (whether its ready to serve traffic) states. + + Scenario Outline: Happy path (live and ready) + + Given a + When its is querried + Then it should return a positive + + Examples: + | probe_type | endpoint | status | + | readiness | /healthz/readiness | ready | + | liveness | /healthz/liveness | live | diff --git a/helm/.helmignore b/helm/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/helm/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/helm/Chart.yaml b/helm/Chart.yaml new file mode 100644 index 0000000..fb9128b --- /dev/null +++ b/helm/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: esg-fastapi +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/helm/templates/NOTES.txt b/helm/templates/NOTES.txt new file mode 100644 index 0000000..a434cfc --- /dev/null +++ b/helm/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "esg-fastapi.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "esg-fastapi.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "esg-fastapi.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "esg-fastapi.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl new file mode 100644 index 0000000..97aa581 --- /dev/null +++ b/helm/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "esg-fastapi.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "esg-fastapi.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "esg-fastapi.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "esg-fastapi.labels" -}} +helm.sh/chart: {{ include "esg-fastapi.chart" . }} +{{ include "esg-fastapi.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "esg-fastapi.selectorLabels" -}} +app.kubernetes.io/name: {{ include "esg-fastapi.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "esg-fastapi.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "esg-fastapi.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml new file mode 100644 index 0000000..91579d5 --- /dev/null +++ b/helm/templates/deployment.yaml @@ -0,0 +1,73 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "esg-fastapi.fullname" . }} + labels: + {{- include "esg-fastapi.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "esg-fastapi.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "esg-fastapi.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- range $name, $_ := $.Values.imagePullSecrets }} + - name: {{ include "esg-fastapi.fullname" $ }}-{{ regexReplaceAll "\\W+" $name "-" }} + {{- end }} + {{- end }} + serviceAccountName: {{ include "esg-fastapi.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + - name: UVICORN_PORT + value: {{ .Values.service.port | quote }} + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/hpa.yaml b/helm/templates/hpa.yaml new file mode 100644 index 0000000..914cc8b --- /dev/null +++ b/helm/templates/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "esg-fastapi.fullname" . }} + labels: + {{- include "esg-fastapi.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "esg-fastapi.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/helm/templates/imagepullsecrets.yaml b/helm/templates/imagepullsecrets.yaml new file mode 100644 index 0000000..7f1b8f2 --- /dev/null +++ b/helm/templates/imagepullsecrets.yaml @@ -0,0 +1,9 @@ +{{- range $name, $spec := .Values.imagePullSecrets }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "esg-fastapi.fullname" $ }}-{{ regexReplaceAll "\\W+" $name "-" }} +type: kubernetes.io/dockerconfigjson +data: + .dockerconfigjson: {{ toJson (dict "auths" (dict $name $spec) ) | b64enc | quote }} +{{- end }} \ No newline at end of file diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml new file mode 100644 index 0000000..4dac85c --- /dev/null +++ b/helm/templates/ingress.yaml @@ -0,0 +1,29 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ include "esg-fastapi.fullname" . }} + labels: + {{- include "esg-fastapi.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- with .Values.ingress.className }} + ingressClassName: {{ . }} + {{- end }} + tls: + - hosts: + - {{ .Values.ingress.host | quote }} + secretName: {{ include "esg-fastapi.fullname" . }}-ingress-cert + rules: + - host: {{ .Values.ingress.host | quote }} + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: {{ include "esg-fastapi.fullname" . }} + port: + number: {{ .Values.service.port }} diff --git a/helm/templates/service.yaml b/helm/templates/service.yaml new file mode 100644 index 0000000..1acd6d2 --- /dev/null +++ b/helm/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "esg-fastapi.fullname" . }} + labels: + {{- include "esg-fastapi.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "esg-fastapi.selectorLabels" . | nindent 4 }} diff --git a/helm/templates/serviceaccount.yaml b/helm/templates/serviceaccount.yaml new file mode 100644 index 0000000..51b62eb --- /dev/null +++ b/helm/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "esg-fastapi.serviceAccountName" . }} + labels: + {{- include "esg-fastapi.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automount }} +{{- end }} diff --git a/helm/templates/tests/test-connection.yaml b/helm/templates/tests/test-connection.yaml new file mode 100644 index 0000000..ff30b3c --- /dev/null +++ b/helm/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "esg-fastapi.fullname" . }}-test-connection" + labels: + {{- include "esg-fastapi.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "esg-fastapi.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/helm/values.yaml b/helm/values.yaml new file mode 100644 index 0000000..9b8d13f --- /dev/null +++ b/helm/values.yaml @@ -0,0 +1,98 @@ +# Default values for esg-fastapi. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: code.ornl.gov:4567/esgf/mirrors/esg_fastapi/esgf-esg-fastapi + pullPolicy: Always + # Overrides the image tag whose default is the chart appVersion. + tag: ci-setup + +imagePullSecrets: {} +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} +podLabels: {} + +podSecurityContext: {} +# fsGroup: 2000 + +securityContext: {} +# capabilities: +# drop: +# - ALL +# readOnlyRootFilesystem: true +# runAsNonRoot: true +# runAsUser: 1000 + +service: + type: ClusterIP + port: 1337 + +ingress: + enabled: true + host: + className: "" + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + +resources: {} +# We usually recommend not to specify default resources and to leave this as a conscious +# choice for the user. This also increases chances charts run on environments with little +# resources, such as Minikube. If you do want to specify resources, uncomment the following +# lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# limits: +# cpu: 100m +# memory: 128Mi +# requests: +# cpu: 100m +# memory: 128Mi + +livenessProbe: + httpGet: + path: /observability/healthz/liveness + port: http +readinessProbe: + httpGet: + path: /observability/healthz/readiness + port: http + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# Additional volumes on the output Deployment definition. +volumes: [] +# - name: foo +# secret: +# secretName: mysecret +# optional: false + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/main.py b/main.py deleted file mode 100644 index fc6c457..0000000 --- a/main.py +++ /dev/null @@ -1,614 +0,0 @@ -""" -A REST API for Globus-based searches that mimics esg-search. -This API is so that community tools that are based on the esg-search -RESTful API need not change to be compatible with the new Globus indices. -If you are designing a new project, you should look to use the globus-sdk -directly and this is only a small wrapper around the `post_search` -functionality. The standalone script does not need installed. You will -need FastAPI on which it is based and the Globus sdk. - -python -m pip install fastapi[all] globus_sdk - -This will also install Uvicorn (an ASGI web server implementation for Python). -This allows you to test this locally with: - -uvicorn concept:app --reload - - -Questions: -- format: do we need to be able to return the two formats? -- distrib: how should this behave? -- latest: does not work with CMIP3 -""" - -import time -from datetime import datetime -from typing import Annotated, Any, Literal - -from fastapi import FastAPI, Query -from globus_sdk import SearchClient, SearchQuery - -INDEX_ID = "ea4595f4-7b71-4da7-a1f0-e3f5d8f7f062" # ORNL holdings - -app = FastAPI() - - -def form_globus_query(search: dict[str, Any]) -> SearchQuery: - """Form a globus SearchQuery from a dictionary of search facets.""" - # remove these from the search, we need to decide how they should behave - for d in ["format", "distrib"]: - del search[d] - - # Build up a query, first we handle the non-general search facets... - query = SearchQuery(search.pop("query") if "query" in search else "") - query.set_limit(search.pop("limit")) - query.set_offset(search.pop("offset")) - - # ...and if facets are desired... - if "facets" in search: - facets = search.pop("facets") - for facet in facets.split(","): - facet = facet.strip() - query.add_facet(facet, facet, size=1000) # is that big enough? - - # ...and now all the filters. - for key, value in search.items(): - if not value: - continue - if isinstance(value, str): - value = [v.strip() for v in value.split(",")] - if not isinstance(value, list): - value = [value] - query.add_filter(key, value, type="match_any") - - return query - - -def search_to_fq(search: dict[str, Any]) -> list[str]: - """Convert the search to the `fq` field in the response.""" - skips = ["limit", "offset", "format", "facets", "latest"] - fq = [] - for facet, value in search.items(): - if facet in skips: - continue - if isinstance(value, list) and len(value) == 1: - value = value[0] - if isinstance(value, str): - value = [v.strip() for v in value.split(",")] - fq.append(" || ".join([f'{facet}:"{val}"' for val in value])) - else: - fq.append(f"{facet}:{value}") - return fq - - -def globus_response_to_solr( - response: dict[str, Any], QTime: int = 0, search: dict = {} -) -> dict[str, Any]: - """Convert the Globus search response to a Solr response. - - Parameters - ---------- - QTime - The optional query time in milliseconds. Unlike the Solr response, the QTime is - not part of the Globus response and will include transfer times. - search - The dictionary containing the search. If given, we will use this to encode the - `fq` field the header of the response. - - """ - # Unpack the response: facets and records (gmeta/docs) - facet_map = {} - facets = [] - if "facet_results" in response: - fr = response["facet_results"] - for x in fr: - arr = [] - facets.append(x["name"]) - for y in x["buckets"]: - arr.append(y["value"]) - arr.append(y["count"]) - facet_map[x["name"]] = arr - - # Unpack the dataset Records - docs = [] - for x in response["gmeta"]: - rec = x["entries"][0]["content"] - rec["id"] = x["subject"] - docs.append(rec) - - # Package the response - ret = { - "responseHeader": { - "status": 0, - "QTime": QTime, - "params": { - "facet.field": facets, - "df": "text", - "q.alt": "*:*", - "indent": "true", - "echoParams": "all", - "fl": "*,score", - "start": str(response["offset"]), - "fq": search_to_fq(search), - "rows": "1", - "q": "*:*", - "shards": "esgf-data-node-solr-query:8983/solr/datasets", - "tie": "0.01", - "facet.limit": "1000", # -1 does not work for globus - "qf": "text", - "facet.method": "enum", - "facet.mincount": "1", - "facet": "true", - "wt": "json", - "facet.sort": "lex", - }, - }, - "response": { - "numFound": response["total"], - "start": response["offset"], - "maxScore": 1.0, # ??? - "docs": docs, - }, - } - - # ??? - ret["facet_counts"] = { - f"facet_{category}": {} - for category in ["fields", "queries", "ranges", "intervals", "heatmaps"] - } - if len(facet_map) > 0: - ret["facet_counts"]["facet_fields"] = facet_map - return ret - - -@app.get("/") -async def query( - access: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - activity: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - activity_drs: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - activity_id: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - atmos_grid_resolution: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - branch_method: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - campaign: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - Campaign: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - catalog_version: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - cf_standard_name: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - cmor_table: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - contact: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - Conventions: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - creation_date: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - data_node: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - data_specs_version: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - data_structure: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - data_type: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - dataset_category: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - dataset_status: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - dataset_version: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - dataset_version_number: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - datetime_end: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - deprecated: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - directory_format_template_: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - ensemble: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - ensemble_member: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - ensemble_member_: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - experiment: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - experiment_family: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - experiment_id: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - experiment_title: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - forcing: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - frequency: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - grid: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - grid_label: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - grid_resolution: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - height_units: Annotated[ - list[str] | None, - Query(alias="height-units", description=""), - ] = None, - index_node: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - institute: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - institution: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - institution_id: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - instrument: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - land_grid_resolution: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - master_gateway: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - member_id: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - metadata_format: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - mip_era: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - model: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - model_cohort: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - model_version: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - nominal_resolution: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - ocean_grid_resolution: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - Period: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - period: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - processing_level: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - product: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - project: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - quality_control_flags: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - range: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - realm: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - realm_drs: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - region: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - regridding: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - run_category: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - Science_Driver: Annotated[ - list[str] | None, - Query(alias="Science Driver", description=""), - ] = None, - science_driver_: Annotated[ - list[str] | None, - Query(alias="science driver", description=""), - ] = None, - science_driver: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - seaice_grid_resolution: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - set_name: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - short_description: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - source: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - source_id: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - source_type: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - source_version: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - source_version_number: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - status: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - sub_experiment_id: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - table: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - table_id: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - target_mip: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - target_mip_list: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - target_mip_listsource: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - target_mip_single: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - time_frequency: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - tuning: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - variable: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - variable_id: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - variable_label: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - variable_long_name: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - variant_label: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - version: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - versionnum: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - year_of_aggregation: Annotated[ - list[str] | None, - Query(description=""), - ] = None, - query: Annotated[ - str | None, - Query(description="a general search string"), - ] = None, - format: Annotated[ - Literal["application/solr+xml", "application/solr+json"], - Query(description="the type of data returned in the response"), - ] = "application/solr+xml", - type: Annotated[ - Literal["Dataset", "File", "Aggregation"], - Query(description="the type of database record"), - ] = "Dataset", - bbox: Annotated[ - str | None, - Query(description="the geospatial search box [west, south, east, north]"), - ] = None, - start: Annotated[ - datetime | None, - Query(description="beginning of the temporal coverage in the dataset"), - ] = None, - end: Annotated[ - datetime | None, - Query(description="ending of the temporal coverage in the dataset"), - ] = None, - _from: Annotated[ - datetime | None, - Query( - alias="from", # because you can't call a argument `from` - description="return records last modified after this timestamp", - ), - ] = None, - to: Annotated[ - datetime | None, - Query(description="return records last modified before this timestamp"), - ] = None, - offset: Annotated[ - int, - Query(ge=0, description="the number of records to skip"), - ] = 0, - limit: Annotated[ - int, - Query(ge=0, description="the number of records to return"), - ] = 10, - replica: Annotated[ - bool | None, - Query(description="enable to include replicas in the search results"), - ] = None, - latest: Annotated[ - bool | None, - Query(description="enable to only return the latest versions"), - ] = None, - distrib: Annotated[ - bool, - Query(description="enable to search across all federated nodes"), - ] = True, - facets: Annotated[ - str | None, - Query(description=""), - ] = None, -): - search = { - key: value for key, value in locals().items() if value is not None - } # remove None's - query = form_globus_query(search) - response_time = time.time() - globus_response = SearchClient().post_search(INDEX_ID, query) - response_time = time.time() - response_time - solr_response = globus_response_to_solr( - globus_response, - QTime=int(response_time * 1000), - search=search, - ) - return solr_response diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..8ab8116 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,2209 @@ +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.6.2.post1" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +files = [ + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "argcomplete" +version = "3.5.1" +description = "Bash tab completion for argparse" +optional = false +python-versions = ">=3.8" +files = [ + {file = "argcomplete-3.5.1-py3-none-any.whl", hash = "sha256:1a1d148bdaa3e3b93454900163403df41448a248af01b6e849edc5ac08e6c363"}, + {file = "argcomplete-3.5.1.tar.gz", hash = "sha256:eb1ee355aa2557bd3d0145de7b06b2a45b0ce461e1e7813f5d066039ab4177b4"}, +] + +[package.extras] +test = ["coverage", "mypy", "pexpect", "ruff", "wheel"] + +[[package]] +name = "asgiref" +version = "3.8.1" +description = "ASGI specs, helper code, and adapters" +optional = false +python-versions = ">=3.8" +files = [ + {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, + {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, +] + +[package.extras] +tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] + +[[package]] +name = "black" +version = "24.10.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.9" +files = [ + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.10)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "certifi" +version = "2024.8.30" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, +] + +[[package]] +name = "cffi" +version = "1.17.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "coverage" +version = "7.6.8" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "coverage-7.6.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b39e6011cd06822eb964d038d5dff5da5d98652b81f5ecd439277b32361a3a50"}, + {file = "coverage-7.6.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63c19702db10ad79151a059d2d6336fe0c470f2e18d0d4d1a57f7f9713875dcf"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3985b9be361d8fb6b2d1adc9924d01dec575a1d7453a14cccd73225cb79243ee"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:644ec81edec0f4ad17d51c838a7d01e42811054543b76d4ba2c5d6af741ce2a6"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f188a2402f8359cf0c4b1fe89eea40dc13b52e7b4fd4812450da9fcd210181d"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e19122296822deafce89a0c5e8685704c067ae65d45e79718c92df7b3ec3d331"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13618bed0c38acc418896005732e565b317aa9e98d855a0e9f211a7ffc2d6638"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:193e3bffca48ad74b8c764fb4492dd875038a2f9925530cb094db92bb5e47bed"}, + {file = "coverage-7.6.8-cp310-cp310-win32.whl", hash = "sha256:3988665ee376abce49613701336544041f2117de7b7fbfe91b93d8ff8b151c8e"}, + {file = "coverage-7.6.8-cp310-cp310-win_amd64.whl", hash = "sha256:f56f49b2553d7dd85fd86e029515a221e5c1f8cb3d9c38b470bc38bde7b8445a"}, + {file = "coverage-7.6.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:86cffe9c6dfcfe22e28027069725c7f57f4b868a3f86e81d1c62462764dc46d4"}, + {file = "coverage-7.6.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d82ab6816c3277dc962cfcdc85b1efa0e5f50fb2c449432deaf2398a2928ab94"}, + {file = "coverage-7.6.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13690e923a3932e4fad4c0ebfb9cb5988e03d9dcb4c5150b5fcbf58fd8bddfc4"}, + {file = "coverage-7.6.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4be32da0c3827ac9132bb488d331cb32e8d9638dd41a0557c5569d57cf22c9c1"}, + {file = "coverage-7.6.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e6c85bbdc809383b509d732b06419fb4544dca29ebe18480379633623baafb"}, + {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:768939f7c4353c0fac2f7c37897e10b1414b571fd85dd9fc49e6a87e37a2e0d8"}, + {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e44961e36cb13c495806d4cac67640ac2866cb99044e210895b506c26ee63d3a"}, + {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ea8bb1ab9558374c0ab591783808511d135a833c3ca64a18ec927f20c4030f0"}, + {file = "coverage-7.6.8-cp311-cp311-win32.whl", hash = "sha256:629a1ba2115dce8bf75a5cce9f2486ae483cb89c0145795603d6554bdc83e801"}, + {file = "coverage-7.6.8-cp311-cp311-win_amd64.whl", hash = "sha256:fb9fc32399dca861584d96eccd6c980b69bbcd7c228d06fb74fe53e007aa8ef9"}, + {file = "coverage-7.6.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e683e6ecc587643f8cde8f5da6768e9d165cd31edf39ee90ed7034f9ca0eefee"}, + {file = "coverage-7.6.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1defe91d41ce1bd44b40fabf071e6a01a5aa14de4a31b986aa9dfd1b3e3e414a"}, + {file = "coverage-7.6.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ad66e8e50225ebf4236368cc43c37f59d5e6728f15f6e258c8639fa0dd8e6d"}, + {file = "coverage-7.6.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fe47da3e4fda5f1abb5709c156eca207eacf8007304ce3019eb001e7a7204cb"}, + {file = "coverage-7.6.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:202a2d645c5a46b84992f55b0a3affe4f0ba6b4c611abec32ee88358db4bb649"}, + {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4674f0daa1823c295845b6a740d98a840d7a1c11df00d1fd62614545c1583787"}, + {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:74610105ebd6f33d7c10f8907afed696e79c59e3043c5f20eaa3a46fddf33b4c"}, + {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37cda8712145917105e07aab96388ae76e787270ec04bcb9d5cc786d7cbb8443"}, + {file = "coverage-7.6.8-cp312-cp312-win32.whl", hash = "sha256:9e89d5c8509fbd6c03d0dd1972925b22f50db0792ce06324ba069f10787429ad"}, + {file = "coverage-7.6.8-cp312-cp312-win_amd64.whl", hash = "sha256:379c111d3558272a2cae3d8e57e6b6e6f4fe652905692d54bad5ea0ca37c5ad4"}, + {file = "coverage-7.6.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b0c69f4f724c64dfbfe79f5dfb503b42fe6127b8d479b2677f2b227478db2eb"}, + {file = "coverage-7.6.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c15b32a7aca8038ed7644f854bf17b663bc38e1671b5d6f43f9a2b2bd0c46f63"}, + {file = "coverage-7.6.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63068a11171e4276f6ece913bde059e77c713b48c3a848814a6537f35afb8365"}, + {file = "coverage-7.6.8-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f4548c5ead23ad13fb7a2c8ea541357474ec13c2b736feb02e19a3085fac002"}, + {file = "coverage-7.6.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b4b4299dd0d2c67caaaf286d58aef5e75b125b95615dda4542561a5a566a1e3"}, + {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c9ebfb2507751f7196995142f057d1324afdab56db1d9743aab7f50289abd022"}, + {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c1b4474beee02ede1eef86c25ad4600a424fe36cff01a6103cb4533c6bf0169e"}, + {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d9fd2547e6decdbf985d579cf3fc78e4c1d662b9b0ff7cc7862baaab71c9cc5b"}, + {file = "coverage-7.6.8-cp313-cp313-win32.whl", hash = "sha256:8aae5aea53cbfe024919715eca696b1a3201886ce83790537d1c3668459c7146"}, + {file = "coverage-7.6.8-cp313-cp313-win_amd64.whl", hash = "sha256:ae270e79f7e169ccfe23284ff5ea2d52a6f401dc01b337efb54b3783e2ce3f28"}, + {file = "coverage-7.6.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:de38add67a0af869b0d79c525d3e4588ac1ffa92f39116dbe0ed9753f26eba7d"}, + {file = "coverage-7.6.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b07c25d52b1c16ce5de088046cd2432b30f9ad5e224ff17c8f496d9cb7d1d451"}, + {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62a66ff235e4c2e37ed3b6104d8b478d767ff73838d1222132a7a026aa548764"}, + {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09b9f848b28081e7b975a3626e9081574a7b9196cde26604540582da60235fdf"}, + {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:093896e530c38c8e9c996901858ac63f3d4171268db2c9c8b373a228f459bbc5"}, + {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9a7b8ac36fd688c8361cbc7bf1cb5866977ece6e0b17c34aa0df58bda4fa18a4"}, + {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:38c51297b35b3ed91670e1e4efb702b790002e3245a28c76e627478aa3c10d83"}, + {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2e4e0f60cb4bd7396108823548e82fdab72d4d8a65e58e2c19bbbc2f1e2bfa4b"}, + {file = "coverage-7.6.8-cp313-cp313t-win32.whl", hash = "sha256:6535d996f6537ecb298b4e287a855f37deaf64ff007162ec0afb9ab8ba3b8b71"}, + {file = "coverage-7.6.8-cp313-cp313t-win_amd64.whl", hash = "sha256:c79c0685f142ca53256722a384540832420dff4ab15fec1863d7e5bc8691bdcc"}, + {file = "coverage-7.6.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ac47fa29d8d41059ea3df65bd3ade92f97ee4910ed638e87075b8e8ce69599e"}, + {file = "coverage-7.6.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:24eda3a24a38157eee639ca9afe45eefa8d2420d49468819ac5f88b10de84f4c"}, + {file = "coverage-7.6.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4c81ed2820b9023a9a90717020315e63b17b18c274a332e3b6437d7ff70abe0"}, + {file = "coverage-7.6.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd55f8fc8fa494958772a2a7302b0354ab16e0b9272b3c3d83cdb5bec5bd1779"}, + {file = "coverage-7.6.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f39e2f3530ed1626c66e7493be7a8423b023ca852aacdc91fb30162c350d2a92"}, + {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:716a78a342679cd1177bc8c2fe957e0ab91405bd43a17094324845200b2fddf4"}, + {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:177f01eeaa3aee4a5ffb0d1439c5952b53d5010f86e9d2667963e632e30082cc"}, + {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:912e95017ff51dc3d7b6e2be158dedc889d9a5cc3382445589ce554f1a34c0ea"}, + {file = "coverage-7.6.8-cp39-cp39-win32.whl", hash = "sha256:4db3ed6a907b555e57cc2e6f14dc3a4c2458cdad8919e40b5357ab9b6db6c43e"}, + {file = "coverage-7.6.8-cp39-cp39-win_amd64.whl", hash = "sha256:428ac484592f780e8cd7b6b14eb568f7c85460c92e2a37cb0c0e5186e1a0d076"}, + {file = "coverage-7.6.8-pp39.pp310-none-any.whl", hash = "sha256:5c52a036535d12590c32c49209e79cabaad9f9ad8aa4cbd875b68c4d67a9cbce"}, + {file = "coverage-7.6.8.tar.gz", hash = "sha256:8b2b8503edb06822c86d82fa64a4a5cb0760bb8f31f26e138ec743f422f37cfc"}, +] + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "cryptography" +version = "43.0.3" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +optional = false +python-versions = ">=3.7" +files = [ + {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18"}, + {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd"}, + {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73"}, + {file = "cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2"}, + {file = "cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd"}, + {file = "cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405"}, + {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16"}, + {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73"}, + {file = "cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995"}, + {file = "cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4a02ded6cd4f0a5562a8887df8b3bd14e822a90f97ac5e544c162899bc467664"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53a583b6637ab4c4e3591a15bc9db855b8d9dee9a669b550f311480acab6eb08"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1ec0bcf7e17c0c5669d881b1cd38c4972fade441b27bda1051665faaa89bdcaa"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ce6fae5bdad59577b44e4dfed356944fbf1d925269114c28be377692643b4ff"}, + {file = "cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} + +[package.extras] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] +nox = ["nox"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] +sdist = ["build"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["certifi", "cryptography-vectors (==43.0.3)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] + +[[package]] +name = "datamodel-code-generator" +version = "0.25.9" +description = "Datamodel Code Generator" +optional = false +python-versions = "<4.0,>=3.7" +files = [ + {file = "datamodel_code_generator-0.25.9-py3-none-any.whl", hash = "sha256:9e0324233123d6e39a35bc0004771956935889a974aacfd7a0651de11d2219a9"}, + {file = "datamodel_code_generator-0.25.9.tar.gz", hash = "sha256:65ca9807d8edbd88a7f7931c10f4bc1c08bd9bbc5bb0508418a2b6a16590eb65"}, +] + +[package.dependencies] +argcomplete = ">=1.10,<4.0" +black = ">=19.10b0" +genson = ">=1.2.1,<2.0" +inflect = ">=4.1.0,<6.0" +isort = ">=4.3.21,<6.0" +jinja2 = ">=2.10.1,<4.0" +packaging = "*" +pydantic = [ + {version = ">=1.10.0,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.4.0 || >2.4.0,<3.0", extras = ["email"], markers = "python_version >= \"3.12\" and python_version < \"4.0\""}, + {version = ">=1.10.0,<2.4.0 || >2.4.0,<3.0", extras = ["email"], markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, +] +pyyaml = ">=6.0.1" + +[package.extras] +debug = ["PySnooper (>=0.4.1,<2.0.0)"] +graphql = ["graphql-core (>=3.2.3,<4.0.0)"] +http = ["httpx"] +validation = ["openapi-spec-validator (>=0.2.8,<0.7.0)", "prance (>=0.18.2)"] + +[[package]] +name = "deprecated" +version = "1.2.15" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +files = [ + {file = "Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320"}, + {file = "deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d"}, +] + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "jinja2 (>=3.0.3,<3.1.0)", "setuptools", "sphinx (<2)", "tox"] + +[[package]] +name = "dnspython" +version = "2.7.0" +description = "DNS toolkit" +optional = false +python-versions = ">=3.9" +files = [ + {file = "dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86"}, + {file = "dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1"}, +] + +[package.extras] +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "hypercorn (>=0.16.0)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "quart-trio (>=0.11.0)", "sphinx (>=7.2.0)", "sphinx-rtd-theme (>=2.0.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] +dnssec = ["cryptography (>=43)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] +doq = ["aioquic (>=1.0.0)"] +idna = ["idna (>=3.7)"] +trio = ["trio (>=0.23)"] +wmi = ["wmi (>=1.5.1)"] + +[[package]] +name = "email-validator" +version = "2.2.0" +description = "A robust email address syntax and deliverability validation library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631"}, + {file = "email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7"}, +] + +[package.dependencies] +dnspython = ">=2.0.0" +idna = ">=2.0.0" + +[[package]] +name = "fastapi" +version = "0.115.5" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi-0.115.5-py3-none-any.whl", hash = "sha256:596b95adbe1474da47049e802f9a65ab2ffa9c2b07e7efee70eb8a66c9f2f796"}, + {file = "fastapi-0.115.5.tar.gz", hash = "sha256:0e7a4d0dc0d01c68df21887cce0945e72d3c48b9f4f79dfe7a7d53aa08fbb289"}, +] + +[package.dependencies] +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +starlette = ">=0.40.0,<0.42.0" +typing-extensions = ">=4.8.0" + +[package.extras] +all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=2.11.2)", "python-multipart (>=0.0.7)", "uvicorn[standard] (>=0.12.0)"] + +[[package]] +name = "genson" +version = "1.3.0" +description = "GenSON is a powerful, user-friendly JSON Schema generator." +optional = false +python-versions = "*" +files = [ + {file = "genson-1.3.0-py3-none-any.whl", hash = "sha256:468feccd00274cc7e4c09e84b08704270ba8d95232aa280f65b986139cec67f7"}, + {file = "genson-1.3.0.tar.gz", hash = "sha256:e02db9ac2e3fd29e65b5286f7135762e2cd8a986537c075b06fc5f1517308e37"}, +] + +[[package]] +name = "globus-sdk" +version = "3.48.0" +description = "Globus SDK for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "globus_sdk-3.48.0-py3-none-any.whl", hash = "sha256:c3e8568402a575d0fab1b0820d9c31d9afc4db291241fd46f59215ab2b1c2385"}, + {file = "globus_sdk-3.48.0.tar.gz", hash = "sha256:54eab5bbed54924d7d1ad15f7059b6efdb7ef1a1d7c49e06a662b4f3f85428de"}, +] + +[package.dependencies] +cryptography = ">=3.3.1,<3.4.0 || >3.4.0" +pyjwt = {version = ">=2.0.0,<3.0.0", extras = ["crypto"]} +requests = ">=2.19.1,<3.0.0" + +[[package]] +name = "googleapis-common-protos" +version = "1.66.0" +description = "Common protobufs used in Google APIs" +optional = false +python-versions = ">=3.7" +files = [ + {file = "googleapis_common_protos-1.66.0-py2.py3-none-any.whl", hash = "sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed"}, + {file = "googleapis_common_protos-1.66.0.tar.gz", hash = "sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c"}, +] + +[package.dependencies] +protobuf = ">=3.20.2,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0" + +[package.extras] +grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] + +[[package]] +name = "grpcio" +version = "1.68.0" +description = "HTTP/2-based RPC framework" +optional = false +python-versions = ">=3.8" +files = [ + {file = "grpcio-1.68.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:619b5d0f29f4f5351440e9343224c3e19912c21aeda44e0c49d0d147a8d01544"}, + {file = "grpcio-1.68.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:a59f5822f9459bed098ffbceb2713abbf7c6fd13f2b9243461da5c338d0cd6c3"}, + {file = "grpcio-1.68.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:c03d89df516128febc5a7e760d675b478ba25802447624edf7aa13b1e7b11e2a"}, + {file = "grpcio-1.68.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44bcbebb24363d587472089b89e2ea0ab2e2b4df0e4856ba4c0b087c82412121"}, + {file = "grpcio-1.68.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79f81b7fbfb136247b70465bd836fa1733043fdee539cd6031cb499e9608a110"}, + {file = "grpcio-1.68.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:88fb2925789cfe6daa20900260ef0a1d0a61283dfb2d2fffe6194396a354c618"}, + {file = "grpcio-1.68.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:99f06232b5c9138593ae6f2e355054318717d32a9c09cdc5a2885540835067a1"}, + {file = "grpcio-1.68.0-cp310-cp310-win32.whl", hash = "sha256:a6213d2f7a22c3c30a479fb5e249b6b7e648e17f364598ff64d08a5136fe488b"}, + {file = "grpcio-1.68.0-cp310-cp310-win_amd64.whl", hash = "sha256:15327ab81131ef9b94cb9f45b5bd98803a179c7c61205c8c0ac9aff9d6c4e82a"}, + {file = "grpcio-1.68.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:3b2b559beb2d433129441783e5f42e3be40a9e1a89ec906efabf26591c5cd415"}, + {file = "grpcio-1.68.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e46541de8425a4d6829ac6c5d9b16c03c292105fe9ebf78cb1c31e8d242f9155"}, + {file = "grpcio-1.68.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:c1245651f3c9ea92a2db4f95d37b7597db6b246d5892bca6ee8c0e90d76fb73c"}, + {file = "grpcio-1.68.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f1931c7aa85be0fa6cea6af388e576f3bf6baee9e5d481c586980c774debcb4"}, + {file = "grpcio-1.68.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b0ff09c81e3aded7a183bc6473639b46b6caa9c1901d6f5e2cba24b95e59e30"}, + {file = "grpcio-1.68.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8c73f9fbbaee1a132487e31585aa83987ddf626426d703ebcb9a528cf231c9b1"}, + {file = "grpcio-1.68.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6b2f98165ea2790ea159393a2246b56f580d24d7da0d0342c18a085299c40a75"}, + {file = "grpcio-1.68.0-cp311-cp311-win32.whl", hash = "sha256:e1e7ed311afb351ff0d0e583a66fcb39675be112d61e7cfd6c8269884a98afbc"}, + {file = "grpcio-1.68.0-cp311-cp311-win_amd64.whl", hash = "sha256:e0d2f68eaa0a755edd9a47d40e50dba6df2bceda66960dee1218da81a2834d27"}, + {file = "grpcio-1.68.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:8af6137cc4ae8e421690d276e7627cfc726d4293f6607acf9ea7260bd8fc3d7d"}, + {file = "grpcio-1.68.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4028b8e9a3bff6f377698587d642e24bd221810c06579a18420a17688e421af7"}, + {file = "grpcio-1.68.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f60fa2adf281fd73ae3a50677572521edca34ba373a45b457b5ebe87c2d01e1d"}, + {file = "grpcio-1.68.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e18589e747c1e70b60fab6767ff99b2d0c359ea1db8a2cb524477f93cdbedf5b"}, + {file = "grpcio-1.68.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0d30f3fee9372796f54d3100b31ee70972eaadcc87314be369360248a3dcffe"}, + {file = "grpcio-1.68.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7e0a3e72c0e9a1acab77bef14a73a416630b7fd2cbd893c0a873edc47c42c8cd"}, + {file = "grpcio-1.68.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a831dcc343440969aaa812004685ed322cdb526cd197112d0db303b0da1e8659"}, + {file = "grpcio-1.68.0-cp312-cp312-win32.whl", hash = "sha256:5a180328e92b9a0050958ced34dddcb86fec5a8b332f5a229e353dafc16cd332"}, + {file = "grpcio-1.68.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bddd04a790b69f7a7385f6a112f46ea0b34c4746f361ebafe9ca0be567c78e9"}, + {file = "grpcio-1.68.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:fc05759ffbd7875e0ff2bd877be1438dfe97c9312bbc558c8284a9afa1d0f40e"}, + {file = "grpcio-1.68.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:15fa1fe25d365a13bc6d52fcac0e3ee1f9baebdde2c9b3b2425f8a4979fccea1"}, + {file = "grpcio-1.68.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:32a9cb4686eb2e89d97022ecb9e1606d132f85c444354c17a7dbde4a455e4a3b"}, + {file = "grpcio-1.68.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dba037ff8d284c8e7ea9a510c8ae0f5b016004f13c3648f72411c464b67ff2fb"}, + {file = "grpcio-1.68.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0efbbd849867e0e569af09e165363ade75cf84f5229b2698d53cf22c7a4f9e21"}, + {file = "grpcio-1.68.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:4e300e6978df0b65cc2d100c54e097c10dfc7018b9bd890bbbf08022d47f766d"}, + {file = "grpcio-1.68.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:6f9c7ad1a23e1047f827385f4713b5b8c6c7d325705be1dd3e31fb00dcb2f665"}, + {file = "grpcio-1.68.0-cp313-cp313-win32.whl", hash = "sha256:3ac7f10850fd0487fcce169c3c55509101c3bde2a3b454869639df2176b60a03"}, + {file = "grpcio-1.68.0-cp313-cp313-win_amd64.whl", hash = "sha256:afbf45a62ba85a720491bfe9b2642f8761ff348006f5ef67e4622621f116b04a"}, + {file = "grpcio-1.68.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:f8f695d9576ce836eab27ba7401c60acaf9ef6cf2f70dfe5462055ba3df02cc3"}, + {file = "grpcio-1.68.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9fe1b141cda52f2ca73e17d2d3c6a9f3f3a0c255c216b50ce616e9dca7e3441d"}, + {file = "grpcio-1.68.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:4df81d78fd1646bf94ced4fb4cd0a7fe2e91608089c522ef17bc7db26e64effd"}, + {file = "grpcio-1.68.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:46a2d74d4dd8993151c6cd585594c082abe74112c8e4175ddda4106f2ceb022f"}, + {file = "grpcio-1.68.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a17278d977746472698460c63abf333e1d806bd41f2224f90dbe9460101c9796"}, + {file = "grpcio-1.68.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:15377bce516b1c861c35e18eaa1c280692bf563264836cece693c0f169b48829"}, + {file = "grpcio-1.68.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cc5f0a4f5904b8c25729a0498886b797feb817d1fd3812554ffa39551112c161"}, + {file = "grpcio-1.68.0-cp38-cp38-win32.whl", hash = "sha256:def1a60a111d24376e4b753db39705adbe9483ef4ca4761f825639d884d5da78"}, + {file = "grpcio-1.68.0-cp38-cp38-win_amd64.whl", hash = "sha256:55d3b52fd41ec5772a953612db4e70ae741a6d6ed640c4c89a64f017a1ac02b5"}, + {file = "grpcio-1.68.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:0d230852ba97654453d290e98d6aa61cb48fa5fafb474fb4c4298d8721809354"}, + {file = "grpcio-1.68.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:50992f214264e207e07222703c17d9cfdcc2c46ed5a1ea86843d440148ebbe10"}, + {file = "grpcio-1.68.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:14331e5c27ed3545360464a139ed279aa09db088f6e9502e95ad4bfa852bb116"}, + {file = "grpcio-1.68.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f84890b205692ea813653ece4ac9afa2139eae136e419231b0eec7c39fdbe4c2"}, + {file = "grpcio-1.68.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0cf343c6f4f6aa44863e13ec9ddfe299e0be68f87d68e777328bff785897b05"}, + {file = "grpcio-1.68.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fd2c2d47969daa0e27eadaf15c13b5e92605c5e5953d23c06d0b5239a2f176d3"}, + {file = "grpcio-1.68.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:18668e36e7f4045820f069997834e94e8275910b1f03e078a6020bd464cb2363"}, + {file = "grpcio-1.68.0-cp39-cp39-win32.whl", hash = "sha256:2af76ab7c427aaa26aa9187c3e3c42f38d3771f91a20f99657d992afada2294a"}, + {file = "grpcio-1.68.0-cp39-cp39-win_amd64.whl", hash = "sha256:e694b5928b7b33ca2d3b4d5f9bf8b5888906f181daff6b406f4938f3a997a490"}, + {file = "grpcio-1.68.0.tar.gz", hash = "sha256:7e7483d39b4a4fddb9906671e9ea21aaad4f031cdfc349fec76bdfa1e404543a"}, +] + +[package.extras] +protobuf = ["grpcio-tools (>=1.68.0)"] + +[[package]] +name = "gunicorn" +version = "21.2.0" +description = "WSGI HTTP Server for UNIX" +optional = false +python-versions = ">=3.5" +files = [ + {file = "gunicorn-21.2.0-py3-none-any.whl", hash = "sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0"}, + {file = "gunicorn-21.2.0.tar.gz", hash = "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033"}, +] + +[package.dependencies] +packaging = "*" + +[package.extras] +eventlet = ["eventlet (>=0.24.1)"] +gevent = ["gevent (>=1.4.0)"] +setproctitle = ["setproctitle"] +tornado = ["tornado (>=0.2)"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.7" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, + {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httptools" +version = "0.6.4" +description = "A collection of framework independent HTTP protocol utils." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0"}, + {file = "httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da"}, + {file = "httptools-0.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deee0e3343f98ee8047e9f4c5bc7cedbf69f5734454a94c38ee829fb2d5fa3c1"}, + {file = "httptools-0.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca80b7485c76f768a3bc83ea58373f8db7b015551117375e4918e2aa77ea9b50"}, + {file = "httptools-0.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:90d96a385fa941283ebd231464045187a31ad932ebfa541be8edf5b3c2328959"}, + {file = "httptools-0.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59e724f8b332319e2875efd360e61ac07f33b492889284a3e05e6d13746876f4"}, + {file = "httptools-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:c26f313951f6e26147833fc923f78f95604bbec812a43e5ee37f26dc9e5a686c"}, + {file = "httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069"}, + {file = "httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a"}, + {file = "httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975"}, + {file = "httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636"}, + {file = "httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721"}, + {file = "httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988"}, + {file = "httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17"}, + {file = "httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2"}, + {file = "httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44"}, + {file = "httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1"}, + {file = "httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2"}, + {file = "httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81"}, + {file = "httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f"}, + {file = "httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970"}, + {file = "httptools-0.6.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ade273d7e767d5fae13fa637f4d53b6e961fb7fd93c7797562663f0171c26660"}, + {file = "httptools-0.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:856f4bc0478ae143bad54a4242fccb1f3f86a6e1be5548fecfd4102061b3a083"}, + {file = "httptools-0.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:322d20ea9cdd1fa98bd6a74b77e2ec5b818abdc3d36695ab402a0de8ef2865a3"}, + {file = "httptools-0.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d87b29bd4486c0093fc64dea80231f7c7f7eb4dc70ae394d70a495ab8436071"}, + {file = "httptools-0.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:342dd6946aa6bda4b8f18c734576106b8a31f2fe31492881a9a160ec84ff4bd5"}, + {file = "httptools-0.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b36913ba52008249223042dca46e69967985fb4051951f94357ea681e1f5dc0"}, + {file = "httptools-0.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:28908df1b9bb8187393d5b5db91435ccc9c8e891657f9cbb42a2541b44c82fc8"}, + {file = "httptools-0.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d3f0d369e7ffbe59c4b6116a44d6a8eb4783aae027f2c0b366cf0aa964185dba"}, + {file = "httptools-0.6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:94978a49b8f4569ad607cd4946b759d90b285e39c0d4640c6b36ca7a3ddf2efc"}, + {file = "httptools-0.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40dc6a8e399e15ea525305a2ddba998b0af5caa2566bcd79dcbe8948181eeaff"}, + {file = "httptools-0.6.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab9ba8dcf59de5181f6be44a77458e45a578fc99c31510b8c65b7d5acc3cf490"}, + {file = "httptools-0.6.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc411e1c0a7dcd2f902c7c48cf079947a7e65b5485dea9decb82b9105ca71a43"}, + {file = "httptools-0.6.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d54efd20338ac52ba31e7da78e4a72570cf729fac82bc31ff9199bedf1dc7440"}, + {file = "httptools-0.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:df959752a0c2748a65ab5387d08287abf6779ae9165916fe053e68ae1fbdc47f"}, + {file = "httptools-0.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85797e37e8eeaa5439d33e556662cc370e474445d5fab24dcadc65a8ffb04003"}, + {file = "httptools-0.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:db353d22843cf1028f43c3651581e4bb49374d85692a85f95f7b9a130e1b2cab"}, + {file = "httptools-0.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1ffd262a73d7c28424252381a5b854c19d9de5f56f075445d33919a637e3547"}, + {file = "httptools-0.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c346571fa50d2e9856a37d7cd9435a25e7fd15e236c397bf224afaa355fe9"}, + {file = "httptools-0.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:aafe0f1918ed07b67c1e838f950b1c1fabc683030477e60b335649b8020e1076"}, + {file = "httptools-0.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0e563e54979e97b6d13f1bbc05a96109923e76b901f786a5eae36e99c01237bd"}, + {file = "httptools-0.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:b799de31416ecc589ad79dd85a0b2657a8fe39327944998dea368c1d4c9e55e6"}, + {file = "httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c"}, +] + +[package.extras] +test = ["Cython (>=0.29.24)"] + +[[package]] +name = "httpx" +version = "0.27.2" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, + {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "importlib-metadata" +version = "8.5.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, + {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, +] + +[package.dependencies] +zipp = ">=3.20" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +perf = ["ipython"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] + +[[package]] +name = "inflect" +version = "5.6.2" +description = "Correctly generate plurals, singular nouns, ordinals, indefinite articles; convert numbers to words" +optional = false +python-versions = ">=3.7" +files = [ + {file = "inflect-5.6.2-py3-none-any.whl", hash = "sha256:b45d91a4a28a4e617ff1821117439b06eaa86e2a4573154af0149e9be6687238"}, + {file = "inflect-5.6.2.tar.gz", hash = "sha256:aadc7ed73928f5e014129794bbac03058cca35d0a973a5fc4eb45c7fa26005f9"}, +] + +[package.extras] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] +testing = ["pygments", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "isort" +version = "5.13.2" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + +[package.extras] +colors = ["colorama (>=0.4.6)"] + +[[package]] +name = "jinja2" +version = "3.1.4" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "mako" +version = "1.3.6" +description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "Mako-1.3.6-py3-none-any.whl", hash = "sha256:a91198468092a2f1a0de86ca92690fb0cfc43ca90ee17e15d93662b4c04b241a"}, + {file = "mako-1.3.6.tar.gz", hash = "sha256:9ec3a1583713479fae654f83ed9fa8c9a4c16b7bb0daba0e6bbebff50c0d983d"}, +] + +[package.dependencies] +MarkupSafe = ">=0.9.2" + +[package.extras] +babel = ["Babel"] +lingua = ["lingua"] +testing = ["pytest"] + +[[package]] +name = "markupsafe" +version = "3.0.2" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.9" +files = [ + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "opentelemetry-api" +version = "1.28.2" +description = "OpenTelemetry Python API" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_api-1.28.2-py3-none-any.whl", hash = "sha256:6fcec89e265beb258fe6b1acaaa3c8c705a934bd977b9f534a2b7c0d2d4275a6"}, + {file = "opentelemetry_api-1.28.2.tar.gz", hash = "sha256:ecdc70c7139f17f9b0cf3742d57d7020e3e8315d6cffcdf1a12a905d45b19cc0"}, +] + +[package.dependencies] +deprecated = ">=1.2.6" +importlib-metadata = ">=6.0,<=8.5.0" + +[[package]] +name = "opentelemetry-distro" +version = "0.49b2" +description = "OpenTelemetry Python Distro" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_distro-0.49b2-py3-none-any.whl", hash = "sha256:a7f57427d5128617b200dcae7f69923ef1a8f84576d9b185fffd8a2232c005ab"}, + {file = "opentelemetry_distro-0.49b2.tar.gz", hash = "sha256:ce9961bc6df0937c6157642c9e1212caeec9049161523f43fafadc1e4191c8e9"}, +] + +[package.dependencies] +opentelemetry-api = ">=1.12,<2.0" +opentelemetry-instrumentation = "0.49b2" +opentelemetry-sdk = ">=1.13,<2.0" + +[package.extras] +otlp = ["opentelemetry-exporter-otlp (==1.28.2)"] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-common" +version = "1.28.2" +description = "OpenTelemetry Protobuf encoding" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_exporter_otlp_proto_common-1.28.2-py3-none-any.whl", hash = "sha256:545b1943b574f666c35b3d6cc67cb0b111060727e93a1e2866e346b33bff2a12"}, + {file = "opentelemetry_exporter_otlp_proto_common-1.28.2.tar.gz", hash = "sha256:7aebaa5fc9ff6029374546df1f3a62616fda07fccd9c6a8b7892ec130dd8baca"}, +] + +[package.dependencies] +opentelemetry-proto = "1.28.2" + +[[package]] +name = "opentelemetry-exporter-otlp-proto-grpc" +version = "1.28.2" +description = "OpenTelemetry Collector Protobuf over gRPC Exporter" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_exporter_otlp_proto_grpc-1.28.2-py3-none-any.whl", hash = "sha256:6083d9300863aab35bfce7c172d5fc1007686e6f8dff366eae460cd9a21592e2"}, + {file = "opentelemetry_exporter_otlp_proto_grpc-1.28.2.tar.gz", hash = "sha256:07c10378380bbb01a7f621a5ce833fc1fab816e971140cd3ea1cd587840bc0e6"}, +] + +[package.dependencies] +deprecated = ">=1.2.6" +googleapis-common-protos = ">=1.52,<2.0" +grpcio = ">=1.63.2,<2.0.0" +opentelemetry-api = ">=1.15,<2.0" +opentelemetry-exporter-otlp-proto-common = "1.28.2" +opentelemetry-proto = "1.28.2" +opentelemetry-sdk = ">=1.28.2,<1.29.0" + +[[package]] +name = "opentelemetry-instrumentation" +version = "0.49b2" +description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_instrumentation-0.49b2-py3-none-any.whl", hash = "sha256:f6d782b0ef9fef4a4c745298651c65f5c532c34cd4c40d230ab5b9f3b3b4d151"}, + {file = "opentelemetry_instrumentation-0.49b2.tar.gz", hash = "sha256:8cf00cc8d9d479e4b72adb9bd267ec544308c602b7188598db5a687e77b298e2"}, +] + +[package.dependencies] +opentelemetry-api = ">=1.4,<2.0" +opentelemetry-semantic-conventions = "0.49b2" +packaging = ">=18.0" +wrapt = ">=1.0.0,<2.0.0" + +[[package]] +name = "opentelemetry-instrumentation-asgi" +version = "0.49b2" +description = "ASGI instrumentation for OpenTelemetry" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_instrumentation_asgi-0.49b2-py3-none-any.whl", hash = "sha256:c8ede13ed781402458a800411cb7ec16a25386dc21de8e5b9a568b386a1dc5f4"}, + {file = "opentelemetry_instrumentation_asgi-0.49b2.tar.gz", hash = "sha256:2af5faf062878330714efe700127b837038c4d9d3b70b451ab2424d5076d6c1c"}, +] + +[package.dependencies] +asgiref = ">=3.0,<4.0" +opentelemetry-api = ">=1.12,<2.0" +opentelemetry-instrumentation = "0.49b2" +opentelemetry-semantic-conventions = "0.49b2" +opentelemetry-util-http = "0.49b2" + +[package.extras] +instruments = ["asgiref (>=3.0,<4.0)"] + +[[package]] +name = "opentelemetry-instrumentation-fastapi" +version = "0.49b2" +description = "OpenTelemetry FastAPI Instrumentation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_instrumentation_fastapi-0.49b2-py3-none-any.whl", hash = "sha256:c66331d05bf806d7ca4f9579c1db7383aad31a9f6665dbaa2b7c9a4c1e830892"}, + {file = "opentelemetry_instrumentation_fastapi-0.49b2.tar.gz", hash = "sha256:3aa81ed7acf6aa5236d96e90a1218c5e84a9c0dce8fa63bf34ceee6218354b63"}, +] + +[package.dependencies] +opentelemetry-api = ">=1.12,<2.0" +opentelemetry-instrumentation = "0.49b2" +opentelemetry-instrumentation-asgi = "0.49b2" +opentelemetry-semantic-conventions = "0.49b2" +opentelemetry-util-http = "0.49b2" + +[package.extras] +instruments = ["fastapi (>=0.58,<1.0)"] + +[[package]] +name = "opentelemetry-instrumentation-logging" +version = "0.49b2" +description = "OpenTelemetry Logging instrumentation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_instrumentation_logging-0.49b2-py3-none-any.whl", hash = "sha256:5ef73c37b34d8f564d37731cb399e7237636e2c8d7d97061d20526f6ece8afb1"}, + {file = "opentelemetry_instrumentation_logging-0.49b2.tar.gz", hash = "sha256:625c825cb180d1a4da8008af2dc21de5f668af120f3821af16317cd3a2378d7e"}, +] + +[package.dependencies] +opentelemetry-api = ">=1.12,<2.0" +opentelemetry-instrumentation = "0.49b2" + +[[package]] +name = "opentelemetry-instrumentation-requests" +version = "0.49b2" +description = "OpenTelemetry requests instrumentation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_instrumentation_requests-0.49b2-py3-none-any.whl", hash = "sha256:d49b0022b29fb7f07a38b8e68750304c29a6d6114b94b56e3e811eff59efd318"}, + {file = "opentelemetry_instrumentation_requests-0.49b2.tar.gz", hash = "sha256:ea7216f13f42d3220ccd60cefd104fae656c9206bf5e3030d59fa367a9452e99"}, +] + +[package.dependencies] +opentelemetry-api = ">=1.12,<2.0" +opentelemetry-instrumentation = "0.49b2" +opentelemetry-semantic-conventions = "0.49b2" +opentelemetry-util-http = "0.49b2" + +[package.extras] +instruments = ["requests (>=2.0,<3.0)"] + +[[package]] +name = "opentelemetry-proto" +version = "1.28.2" +description = "OpenTelemetry Python Proto" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_proto-1.28.2-py3-none-any.whl", hash = "sha256:0837498f59db55086462915e5898d0b1a18c1392f6db4d7e937143072a72370c"}, + {file = "opentelemetry_proto-1.28.2.tar.gz", hash = "sha256:7c0d125a6b71af88bfeeda16bfdd0ff63dc2cf0039baf6f49fa133b203e3f566"}, +] + +[package.dependencies] +protobuf = ">=5.0,<6.0" + +[[package]] +name = "opentelemetry-sdk" +version = "1.28.2" +description = "OpenTelemetry Python SDK" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_sdk-1.28.2-py3-none-any.whl", hash = "sha256:93336c129556f1e3ccd21442b94d3521759541521861b2214c499571b85cb71b"}, + {file = "opentelemetry_sdk-1.28.2.tar.gz", hash = "sha256:5fed24c5497e10df30282456fe2910f83377797511de07d14cec0d3e0a1a3110"}, +] + +[package.dependencies] +opentelemetry-api = "1.28.2" +opentelemetry-semantic-conventions = "0.49b2" +typing-extensions = ">=3.7.4" + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.49b2" +description = "OpenTelemetry Semantic Conventions" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_semantic_conventions-0.49b2-py3-none-any.whl", hash = "sha256:51e7e1d0daa958782b6c2a8ed05e5f0e7dd0716fc327ac058777b8659649ee54"}, + {file = "opentelemetry_semantic_conventions-0.49b2.tar.gz", hash = "sha256:44e32ce6a5bb8d7c0c617f84b9dc1c8deda1045a07dc16a688cc7cbeab679997"}, +] + +[package.dependencies] +deprecated = ">=1.2.6" +opentelemetry-api = "1.28.2" + +[[package]] +name = "opentelemetry-util-http" +version = "0.49b2" +description = "Web util for OpenTelemetry" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_util_http-0.49b2-py3-none-any.whl", hash = "sha256:e325d6511c6bee7b43170eb0c93261a210ec57e20ab1d7a99838515ef6d2bf58"}, + {file = "opentelemetry_util_http-0.49b2.tar.gz", hash = "sha256:5958c7009f79146bbe98b0fdb23d9d7bf1ea9cd154a1c199029b1a89e0557199"}, +] + +[[package]] +name = "packaging" +version = "24.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, +] + +[[package]] +name = "parse" +version = "1.20.2" +description = "parse() is the opposite of format()" +optional = false +python-versions = "*" +files = [ + {file = "parse-1.20.2-py2.py3-none-any.whl", hash = "sha256:967095588cb802add9177d0c0b6133b5ba33b1ea9007ca800e526f42a85af558"}, + {file = "parse-1.20.2.tar.gz", hash = "sha256:b41d604d16503c79d81af5165155c0b20f6c8d6c559efa66b4b695c3e5a0a0ce"}, +] + +[[package]] +name = "parse-type" +version = "0.6.4" +description = "Simplifies to build parse types based on the parse module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,>=2.7" +files = [ + {file = "parse_type-0.6.4-py2.py3-none-any.whl", hash = "sha256:83d41144a82d6b8541127bf212dd76c7f01baff680b498ce8a4d052a7a5bce4c"}, + {file = "parse_type-0.6.4.tar.gz", hash = "sha256:5e1ec10440b000c3f818006033372939e693a9ec0176f446d9303e4db88489a6"}, +] + +[package.dependencies] +parse = {version = ">=1.18.0", markers = "python_version >= \"3.0\""} +six = ">=1.15" + +[package.extras] +develop = ["build (>=0.5.1)", "coverage (>=4.4)", "pylint", "pytest (<5.0)", "pytest (>=5.0)", "pytest-cov", "pytest-html (>=1.19.0)", "ruff", "setuptools", "setuptools-scm", "tox (>=2.8,<4.0)", "twine (>=1.13.0)", "virtualenv (<20.22.0)", "virtualenv (>=20.0.0)", "wheel"] +docs = ["Sphinx (>=1.6)", "sphinx-bootstrap-theme (>=0.6.0)"] +testing = ["pytest (<5.0)", "pytest (>=5.0)", "pytest-html (>=1.19.0)"] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "prometheus-client" +version = "0.21.0" +description = "Python client for the Prometheus monitoring system." +optional = false +python-versions = ">=3.8" +files = [ + {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, + {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, +] + +[package.extras] +twisted = ["twisted"] + +[[package]] +name = "prometheus-fastapi-instrumentator" +version = "7.0.0" +description = "Instrument your FastAPI with Prometheus metrics." +optional = false +python-versions = ">=3.8.1,<4.0.0" +files = [ + {file = "prometheus_fastapi_instrumentator-7.0.0-py3-none-any.whl", hash = "sha256:96030c43c776ee938a3dae58485ec24caed7e05bfc60fe067161e0d5b5757052"}, + {file = "prometheus_fastapi_instrumentator-7.0.0.tar.gz", hash = "sha256:5ba67c9212719f244ad7942d75ded80693b26331ee5dfc1e7571e4794a9ccbed"}, +] + +[package.dependencies] +prometheus-client = ">=0.8.0,<1.0.0" +starlette = ">=0.30.0,<1.0.0" + +[[package]] +name = "protobuf" +version = "5.28.3" +description = "" +optional = false +python-versions = ">=3.8" +files = [ + {file = "protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24"}, + {file = "protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868"}, + {file = "protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687"}, + {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584"}, + {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135"}, + {file = "protobuf-5.28.3-cp38-cp38-win32.whl", hash = "sha256:3e6101d095dfd119513cde7259aa703d16c6bbdfae2554dfe5cfdbe94e32d548"}, + {file = "protobuf-5.28.3-cp38-cp38-win_amd64.whl", hash = "sha256:27b246b3723692bf1068d5734ddaf2fccc2cdd6e0c9b47fe099244d80200593b"}, + {file = "protobuf-5.28.3-cp39-cp39-win32.whl", hash = "sha256:135658402f71bbd49500322c0f736145731b16fc79dc8f367ab544a17eab4535"}, + {file = "protobuf-5.28.3-cp39-cp39-win_amd64.whl", hash = "sha256:70585a70fc2dd4818c51287ceef5bdba6387f88a578c86d47bb34669b5552c36"}, + {file = "protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed"}, + {file = "protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b"}, +] + +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + +[[package]] +name = "pydantic" +version = "2.10.1" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.10.1-py3-none-any.whl", hash = "sha256:a8d20db84de64cf4a7d59e899c2caf0fe9d660c7cfc482528e7020d7dd189a7e"}, + {file = "pydantic-2.10.1.tar.gz", hash = "sha256:a4daca2dc0aa429555e0656d6bf94873a7dc5f54ee42b1f5873d666fb3f35560"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +email-validator = {version = ">=2.0.0", optional = true, markers = "extra == \"email\""} +pydantic-core = "2.27.1" +typing-extensions = ">=4.12.2" + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.27.1" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a"}, + {file = "pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206"}, + {file = "pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c"}, + {file = "pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17"}, + {file = "pydantic_core-2.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac3b20653bdbe160febbea8aa6c079d3df19310d50ac314911ed8cc4eb7f8cb8"}, + {file = "pydantic_core-2.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a5a8e19d7c707c4cadb8c18f5f60c843052ae83c20fa7d44f41594c644a1d330"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f7059ca8d64fea7f238994c97d91f75965216bcbe5f695bb44f354893f11d52"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bed0f8a0eeea9fb72937ba118f9db0cb7e90773462af7962d382445f3005e5a4"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3cb37038123447cf0f3ea4c74751f6a9d7afef0eb71aa07bf5f652b5e6a132c"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84286494f6c5d05243456e04223d5a9417d7f443c3b76065e75001beb26f88de"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acc07b2cfc5b835444b44a9956846b578d27beeacd4b52e45489e93276241025"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fefee876e07a6e9aad7a8c8c9f85b0cdbe7df52b8a9552307b09050f7512c7e"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:258c57abf1188926c774a4c94dd29237e77eda19462e5bb901d88adcab6af919"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35c14ac45fcfdf7167ca76cc80b2001205a8d5d16d80524e13508371fb8cdd9c"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1b26e1dff225c31897696cab7d4f0a315d4c0d9e8666dbffdb28216f3b17fdc"}, + {file = "pydantic_core-2.27.1-cp311-none-win32.whl", hash = "sha256:2cdf7d86886bc6982354862204ae3b2f7f96f21a3eb0ba5ca0ac42c7b38598b9"}, + {file = "pydantic_core-2.27.1-cp311-none-win_amd64.whl", hash = "sha256:3af385b0cee8df3746c3f406f38bcbfdc9041b5c2d5ce3e5fc6637256e60bbc5"}, + {file = "pydantic_core-2.27.1-cp311-none-win_arm64.whl", hash = "sha256:81f2ec23ddc1b476ff96563f2e8d723830b06dceae348ce02914a37cb4e74b89"}, + {file = "pydantic_core-2.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9cbd94fc661d2bab2bc702cddd2d3370bbdcc4cd0f8f57488a81bcce90c7a54f"}, + {file = "pydantic_core-2.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f8c4718cd44ec1580e180cb739713ecda2bdee1341084c1467802a417fe0f02"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15aae984e46de8d376df515f00450d1522077254ef6b7ce189b38ecee7c9677c"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ba5e3963344ff25fc8c40da90f44b0afca8cfd89d12964feb79ac1411a260ac"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:992cea5f4f3b29d6b4f7f1726ed8ee46c8331c6b4eed6db5b40134c6fe1768bb"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0325336f348dbee6550d129b1627cb8f5351a9dc91aad141ffb96d4937bd9529"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7597c07fbd11515f654d6ece3d0e4e5093edc30a436c63142d9a4b8e22f19c35"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3bbd5d8cc692616d5ef6fbbbd50dbec142c7e6ad9beb66b78a96e9c16729b089"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:dc61505e73298a84a2f317255fcc72b710b72980f3a1f670447a21efc88f8381"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e1f735dc43da318cad19b4173dd1ffce1d84aafd6c9b782b3abc04a0d5a6f5bb"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4e5658dbffe8843a0f12366a4c2d1c316dbe09bb4dfbdc9d2d9cd6031de8aae"}, + {file = "pydantic_core-2.27.1-cp312-none-win32.whl", hash = "sha256:672ebbe820bb37988c4d136eca2652ee114992d5d41c7e4858cdd90ea94ffe5c"}, + {file = "pydantic_core-2.27.1-cp312-none-win_amd64.whl", hash = "sha256:66ff044fd0bb1768688aecbe28b6190f6e799349221fb0de0e6f4048eca14c16"}, + {file = "pydantic_core-2.27.1-cp312-none-win_arm64.whl", hash = "sha256:9a3b0793b1bbfd4146304e23d90045f2a9b5fd5823aa682665fbdaf2a6c28f3e"}, + {file = "pydantic_core-2.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f216dbce0e60e4d03e0c4353c7023b202d95cbaeff12e5fd2e82ea0a66905073"}, + {file = "pydantic_core-2.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2e02889071850bbfd36b56fd6bc98945e23670773bc7a76657e90e6b6603c08"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b0e23f119b2b456d07ca91b307ae167cc3f6c846a7b169fca5326e32fdc6cf"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:764be71193f87d460a03f1f7385a82e226639732214b402f9aa61f0d025f0737"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c00666a3bd2f84920a4e94434f5974d7bbc57e461318d6bb34ce9cdbbc1f6b2"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ccaa88b24eebc0f849ce0a4d09e8a408ec5a94afff395eb69baf868f5183107"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65af9088ac534313e1963443d0ec360bb2b9cba6c2909478d22c2e363d98a51"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206b5cf6f0c513baffaeae7bd817717140770c74528f3e4c3e1cec7871ddd61a"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:062f60e512fc7fff8b8a9d680ff0ddaaef0193dba9fa83e679c0c5f5fbd018bc"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:a0697803ed7d4af5e4c1adf1670af078f8fcab7a86350e969f454daf598c4960"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:58ca98a950171f3151c603aeea9303ef6c235f692fe555e883591103da709b23"}, + {file = "pydantic_core-2.27.1-cp313-none-win32.whl", hash = "sha256:8065914ff79f7eab1599bd80406681f0ad08f8e47c880f17b416c9f8f7a26d05"}, + {file = "pydantic_core-2.27.1-cp313-none-win_amd64.whl", hash = "sha256:ba630d5e3db74c79300d9a5bdaaf6200172b107f263c98a0539eeecb857b2337"}, + {file = "pydantic_core-2.27.1-cp313-none-win_arm64.whl", hash = "sha256:45cf8588c066860b623cd11c4ba687f8d7175d5f7ef65f7129df8a394c502de5"}, + {file = "pydantic_core-2.27.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5897bec80a09b4084aee23f9b73a9477a46c3304ad1d2d07acca19723fb1de62"}, + {file = "pydantic_core-2.27.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0165ab2914379bd56908c02294ed8405c252250668ebcb438a55494c69f44ab"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b9af86e1d8e4cfc82c2022bfaa6f459381a50b94a29e95dcdda8442d6d83864"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f6c8a66741c5f5447e047ab0ba7a1c61d1e95580d64bce852e3df1f895c4067"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a42d6a8156ff78981f8aa56eb6394114e0dedb217cf8b729f438f643608cbcd"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64c65f40b4cd8b0e049a8edde07e38b476da7e3aaebe63287c899d2cff253fa5"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdcf339322a3fae5cbd504edcefddd5a50d9ee00d968696846f089b4432cf78"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf99c8404f008750c846cb4ac4667b798a9f7de673ff719d705d9b2d6de49c5f"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f1edcea27918d748c7e5e4d917297b2a0ab80cad10f86631e488b7cddf76a36"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:159cac0a3d096f79ab6a44d77a961917219707e2a130739c64d4dd46281f5c2a"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:029d9757eb621cc6e1848fa0b0310310de7301057f623985698ed7ebb014391b"}, + {file = "pydantic_core-2.27.1-cp38-none-win32.whl", hash = "sha256:a28af0695a45f7060e6f9b7092558a928a28553366519f64083c63a44f70e618"}, + {file = "pydantic_core-2.27.1-cp38-none-win_amd64.whl", hash = "sha256:2d4567c850905d5eaaed2f7a404e61012a51caf288292e016360aa2b96ff38d4"}, + {file = "pydantic_core-2.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e9386266798d64eeb19dd3677051f5705bf873e98e15897ddb7d76f477131967"}, + {file = "pydantic_core-2.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4228b5b646caa73f119b1ae756216b59cc6e2267201c27d3912b592c5e323b60"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3dfe500de26c52abe0477dde16192ac39c98f05bf2d80e76102d394bd13854"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aee66be87825cdf72ac64cb03ad4c15ffef4143dbf5c113f64a5ff4f81477bf9"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b748c44bb9f53031c8cbc99a8a061bc181c1000c60a30f55393b6e9c45cc5bd"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ca038c7f6a0afd0b2448941b6ef9d5e1949e999f9e5517692eb6da58e9d44be"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0bd57539da59a3e4671b90a502da9a28c72322a4f17866ba3ac63a82c4498e"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac6c2c45c847bbf8f91930d88716a0fb924b51e0c6dad329b793d670ec5db792"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b94d4ba43739bbe8b0ce4262bcc3b7b9f31459ad120fb595627eaeb7f9b9ca01"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:00e6424f4b26fe82d44577b4c842d7df97c20be6439e8e685d0d715feceb9fb9"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:38de0a70160dd97540335b7ad3a74571b24f1dc3ed33f815f0880682e6880131"}, + {file = "pydantic_core-2.27.1-cp39-none-win32.whl", hash = "sha256:7ccebf51efc61634f6c2344da73e366c75e735960b5654b63d7e6f69a5885fa3"}, + {file = "pydantic_core-2.27.1-cp39-none-win_amd64.whl", hash = "sha256:a57847b090d7892f123726202b7daa20df6694cbd583b67a592e856bff603d6c"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5fde892e6c697ce3e30c61b239330fc5d569a71fefd4eb6512fc6caec9dd9e2f"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:816f5aa087094099fff7edabb5e01cc370eb21aa1a1d44fe2d2aefdfb5599b31"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10c309e18e443ddb108f0ef64e8729363adbfd92d6d57beec680f6261556f3"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98476c98b02c8e9b2eec76ac4156fd006628b1b2d0ef27e548ffa978393fd154"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3027001c28434e7ca5a6e1e527487051136aa81803ac812be51802150d880dd"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7699b1df36a48169cdebda7ab5a2bac265204003f153b4bd17276153d997670a"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1c39b07d90be6b48968ddc8c19e7585052088fd7ec8d568bb31ff64c70ae3c97"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:46ccfe3032b3915586e469d4972973f893c0a2bb65669194a5bdea9bacc088c2"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840"}, + {file = "pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pydantic-loggings" +version = "1.6.1" +description = "Configure 🎁 Your 🤗 Python 🐍 Logging 📝" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pydantic-loggings-1.6.1.tar.gz", hash = "sha256:2b0b6632a92d3a7a3ed6f362300e0a0c33a6cee76d7b394d3a8686d37b799995"}, + {file = "pydantic_loggings-1.6.1-py3-none-any.whl", hash = "sha256:712f874121893412339adbb4fa7f1fd9b15c400189158d9a432bc500a3eaa41c"}, +] + +[package.dependencies] +pydantic = ">=2.0" +pydantic-settings = ">=2.0" + +[package.extras] +rich = ["rich (>=13.4.2)"] + +[[package]] +name = "pydantic-settings" +version = "2.6.1" +description = "Settings management using Pydantic" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_settings-2.6.1-py3-none-any.whl", hash = "sha256:7fb0637c786a558d3103436278a7c4f1cfd29ba8973238a50c5bb9a55387da87"}, + {file = "pydantic_settings-2.6.1.tar.gz", hash = "sha256:e0f92546d8a9923cb8941689abf85d6601a8c19a23e97a34b2964a2e3f813ca0"}, +] + +[package.dependencies] +pydantic = ">=2.7.0" +python-dotenv = ">=0.21.0" + +[package.extras] +azure-key-vault = ["azure-identity (>=1.16.0)", "azure-keyvault-secrets (>=4.8.0)"] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + +[[package]] +name = "pyjwt" +version = "2.10.0" +description = "JSON Web Token implementation in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "PyJWT-2.10.0-py3-none-any.whl", hash = "sha256:543b77207db656de204372350926bed5a86201c4cbff159f623f79c7bb487a15"}, + {file = "pyjwt-2.10.0.tar.gz", hash = "sha256:7628a7eb7938959ac1b26e819a1df0fd3259505627b575e4bad6d08f76db695c"}, +] + +[package.dependencies] +cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"crypto\""} + +[package.extras] +crypto = ["cryptography (>=3.4.0)"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] +tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] + +[[package]] +name = "pyroscope-io" +version = "0.8.7" +description = "Pyroscope Python integration" +optional = false +python-versions = "*" +files = [ + {file = "pyroscope_io-0.8.7-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:a6535c8b07e6f1ad0fc2337a30ae263749b4e9a889266d9329615dfb400ee372"}, + {file = "pyroscope_io-0.8.7-py2.py3-none-macosx_11_0_x86_64.whl", hash = "sha256:7b6ad0fc538fbdf5bb8849ee70bd731631a5fea7df40ab4ba860e2c369bf1720"}, + {file = "pyroscope_io-0.8.7-py2.py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8eac84e2e34f84a9ad4c369c573b1c463ccb77eacd4b1907ea695d100fe76bc5"}, + {file = "pyroscope_io-0.8.7-py2.py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33897f08168d808848ff821af5e919b7af5503083ad26c293c9577ad79c373c8"}, +] + +[package.dependencies] +cffi = ">=1.6.0" + +[[package]] +name = "pyroscope-otel" +version = "0.3.0" +description = "A library providing profiling functionalities related to OpenTelemetry" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyroscope_otel-0.3.0-py3-none-any.whl", hash = "sha256:5c7cd61f9a22cfd890c00c6d1e625b72005aa9d7e0adc2097ea3f8efd9533f57"}, + {file = "pyroscope_otel-0.3.0.tar.gz", hash = "sha256:3d4d8c27d7ad979a45fdb5a243ae66969c43481d5ccb23655e2c64a73acf8a7f"}, +] + +[package.dependencies] +opentelemetry-api = ">=1.27.0,<2.0.0" +opentelemetry-sdk = ">=1.27.0,<2.0.0" +pyroscope-io = "0.8.7" + +[[package]] +name = "pytest" +version = "8.3.3" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.5,<2" + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.23.8" +description = "Pytest support for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest_asyncio-0.23.8-py3-none-any.whl", hash = "sha256:50265d892689a5faefb84df80819d1ecef566eb3549cf915dfb33569359d1ce2"}, + {file = "pytest_asyncio-0.23.8.tar.gz", hash = "sha256:759b10b33a6dc61cce40a8bd5205e302978bbbcc00e279a8b61d9a6a3c82e4d3"}, +] + +[package.dependencies] +pytest = ">=7.0.0,<9" + +[package.extras] +docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1.0)"] +testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] + +[[package]] +name = "pytest-bdd" +version = "7.3.0" +description = "BDD for pytest" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest_bdd-7.3.0-py3-none-any.whl", hash = "sha256:168ede4a118e348feb70182590ee4a2f856e68dafe54a75a4e9203da37d4ade6"}, + {file = "pytest_bdd-7.3.0.tar.gz", hash = "sha256:9dfeb1d8565d9548907f36a5a9e2c8e1e0cbac3b2724e17331b87386a19fbc16"}, +] + +[package.dependencies] +Mako = "*" +packaging = "*" +parse = "*" +parse-type = "*" +pytest = ">=6.2.0" +typing-extensions = "*" + +[[package]] +name = "pytest-cov" +version = "5.0.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, +] + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] + +[[package]] +name = "pytest-mock" +version = "3.14.0" +description = "Thin-wrapper around the mock package for easier use with pytest" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, + {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, +] + +[package.dependencies] +pytest = ">=6.2.5" + +[package.extras] +dev = ["pre-commit", "pytest-asyncio", "tox"] + +[[package]] +name = "python-dotenv" +version = "1.0.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "ruff" +version = "0.3.7" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.3.7-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0e8377cccb2f07abd25e84fc5b2cbe48eeb0fea9f1719cad7caedb061d70e5ce"}, + {file = "ruff-0.3.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:15a4d1cc1e64e556fa0d67bfd388fed416b7f3b26d5d1c3e7d192c897e39ba4b"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d28bdf3d7dc71dd46929fafeec98ba89b7c3550c3f0978e36389b5631b793663"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:379b67d4f49774ba679593b232dcd90d9e10f04d96e3c8ce4a28037ae473f7bb"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c060aea8ad5ef21cdfbbe05475ab5104ce7827b639a78dd55383a6e9895b7c51"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ebf8f615dde968272d70502c083ebf963b6781aacd3079081e03b32adfe4d58a"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d48098bd8f5c38897b03604f5428901b65e3c97d40b3952e38637b5404b739a2"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da8a4fda219bf9024692b1bc68c9cff4b80507879ada8769dc7e985755d662ea"}, + {file = "ruff-0.3.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c44e0149f1d8b48c4d5c33d88c677a4aa22fd09b1683d6a7ff55b816b5d074f"}, + {file = "ruff-0.3.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3050ec0af72b709a62ecc2aca941b9cd479a7bf2b36cc4562f0033d688e44fa1"}, + {file = "ruff-0.3.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a29cc38e4c1ab00da18a3f6777f8b50099d73326981bb7d182e54a9a21bb4ff7"}, + {file = "ruff-0.3.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5b15cc59c19edca917f51b1956637db47e200b0fc5e6e1878233d3a938384b0b"}, + {file = "ruff-0.3.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e491045781b1e38b72c91247cf4634f040f8d0cb3e6d3d64d38dcf43616650b4"}, + {file = "ruff-0.3.7-py3-none-win32.whl", hash = "sha256:bc931de87593d64fad3a22e201e55ad76271f1d5bfc44e1a1887edd0903c7d9f"}, + {file = "ruff-0.3.7-py3-none-win_amd64.whl", hash = "sha256:5ef0e501e1e39f35e03c2acb1d1238c595b8bb36cf7a170e7c1df1b73da00e74"}, + {file = "ruff-0.3.7-py3-none-win_arm64.whl", hash = "sha256:789e144f6dc7019d1f92a812891c645274ed08af6037d11fc65fcbc183b7d59f"}, + {file = "ruff-0.3.7.tar.gz", hash = "sha256:d5c1aebee5162c2226784800ae031f660c350e7a3402c4d1f8ea4e97e232e3ba"}, +] + +[[package]] +name = "semver" +version = "3.0.2" +description = "Python helper for Semantic Versioning (https://semver.org)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "semver-3.0.2-py3-none-any.whl", hash = "sha256:b1ea4686fe70b981f85359eda33199d60c53964284e0cfb4977d243e37cf4bf4"}, + {file = "semver-3.0.2.tar.gz", hash = "sha256:6253adb39c70f6e51afed2fa7152bcd414c411286088fb4b9effb133885ab4cc"}, +] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "starlette" +version = "0.41.3" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.8" +files = [ + {file = "starlette-0.41.3-py3-none-any.whl", hash = "sha256:44cedb2b7c77a9de33a8b74b2b90e9f50d11fcf25d8270ea525ad71a25374ff7"}, + {file = "starlette-0.41.3.tar.gz", hash = "sha256:0e4ab3d16522a255be6b28260b938eae2482f98ce5cc934cb08dce8dc3ba5835"}, +] + +[package.dependencies] +anyio = ">=3.4.0,<5" + +[package.extras] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "uvicorn" +version = "0.29.0" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.8" +files = [ + {file = "uvicorn-0.29.0-py3-none-any.whl", hash = "sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de"}, + {file = "uvicorn-0.29.0.tar.gz", hash = "sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} +h11 = ">=0.8" +httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} +python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} + +[package.extras] +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] + +[[package]] +name = "uvloop" +version = "0.21.0" +description = "Fast implementation of asyncio event loop on top of libuv" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"}, + {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"}, + {file = "uvloop-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f38b2e090258d051d68a5b14d1da7203a3c3677321cf32a95a6f4db4dd8b6f26"}, + {file = "uvloop-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c43e0f13022b998eb9b973b5e97200c8b90823454d4bc06ab33829e09fb9bb"}, + {file = "uvloop-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:10d66943def5fcb6e7b37310eb6b5639fd2ccbc38df1177262b0640c3ca68c1f"}, + {file = "uvloop-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:67dd654b8ca23aed0a8e99010b4c34aca62f4b7fce88f39d452ed7622c94845c"}, + {file = "uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8"}, + {file = "uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0"}, + {file = "uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e"}, + {file = "uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb"}, + {file = "uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6"}, + {file = "uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d"}, + {file = "uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c"}, + {file = "uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2"}, + {file = "uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d"}, + {file = "uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc"}, + {file = "uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb"}, + {file = "uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f"}, + {file = "uvloop-0.21.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bfd55dfcc2a512316e65f16e503e9e450cab148ef11df4e4e679b5e8253a5281"}, + {file = "uvloop-0.21.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:787ae31ad8a2856fc4e7c095341cccc7209bd657d0e71ad0dc2ea83c4a6fa8af"}, + {file = "uvloop-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ee4d4ef48036ff6e5cfffb09dd192c7a5027153948d85b8da7ff705065bacc6"}, + {file = "uvloop-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3df876acd7ec037a3d005b3ab85a7e4110422e4d9c1571d4fc89b0fc41b6816"}, + {file = "uvloop-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd53ecc9a0f3d87ab847503c2e1552b690362e005ab54e8a48ba97da3924c0dc"}, + {file = "uvloop-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a5c39f217ab3c663dc699c04cbd50c13813e31d917642d459fdcec07555cc553"}, + {file = "uvloop-0.21.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:17df489689befc72c39a08359efac29bbee8eee5209650d4b9f34df73d22e414"}, + {file = "uvloop-0.21.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc09f0ff191e61c2d592a752423c767b4ebb2986daa9ed62908e2b1b9a9ae206"}, + {file = "uvloop-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0ce1b49560b1d2d8a2977e3ba4afb2414fb46b86a1b64056bc4ab929efdafbe"}, + {file = "uvloop-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e678ad6fe52af2c58d2ae3c73dc85524ba8abe637f134bf3564ed07f555c5e79"}, + {file = "uvloop-0.21.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:460def4412e473896ef179a1671b40c039c7012184b627898eea5072ef6f017a"}, + {file = "uvloop-0.21.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:10da8046cc4a8f12c91a1c39d1dd1585c41162a15caaef165c2174db9ef18bdc"}, + {file = "uvloop-0.21.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c097078b8031190c934ed0ebfee8cc5f9ba9642e6eb88322b9958b649750f72b"}, + {file = "uvloop-0.21.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46923b0b5ee7fc0020bef24afe7836cb068f5050ca04caf6b487c513dc1a20b2"}, + {file = "uvloop-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53e420a3afe22cdcf2a0f4846e377d16e718bc70103d7088a4f7623567ba5fb0"}, + {file = "uvloop-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88cb67cdbc0e483da00af0b2c3cdad4b7c61ceb1ee0f33fe00e09c81e3a6cb75"}, + {file = "uvloop-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:221f4f2a1f46032b403bf3be628011caf75428ee3cc204a22addf96f586b19fd"}, + {file = "uvloop-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2d1f581393673ce119355d56da84fe1dd9d2bb8b3d13ce792524e1607139feff"}, + {file = "uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3"}, +] + +[package.extras] +dev = ["Cython (>=3.0,<4.0)", "setuptools (>=60)"] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +test = ["aiohttp (>=3.10.5)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] + +[[package]] +name = "watchfiles" +version = "1.0.0" +description = "Simple, modern and high performance file watching and code reload in python." +optional = false +python-versions = ">=3.9" +files = [ + {file = "watchfiles-1.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1d19df28f99d6a81730658fbeb3ade8565ff687f95acb59665f11502b441be5f"}, + {file = "watchfiles-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:28babb38cf2da8e170b706c4b84aa7e4528a6fa4f3ee55d7a0866456a1662041"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12ab123135b2f42517f04e720526d41448667ae8249e651385afb5cda31fedc0"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:13a4f9ee0cd25682679eea5c14fc629e2eaa79aab74d963bc4e21f43b8ea1877"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e1d9284cc84de7855fcf83472e51d32daf6f6cecd094160192628bc3fee1b78"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ee5edc939f53466b329bbf2e58333a5461e6c7b50c980fa6117439e2c18b42d"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dccfc70480087567720e4e36ec381bba1ed68d7e5f368fe40c93b3b1eba0105"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c83a6d33a9eda0af6a7470240d1af487807adc269704fe76a4972dd982d16236"}, + {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:905f69aad276639eff3893759a07d44ea99560e67a1cf46ff389cd62f88872a2"}, + {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09551237645d6bff3972592f2aa5424df9290e7a2e15d63c5f47c48cde585935"}, + {file = "watchfiles-1.0.0-cp310-none-win32.whl", hash = "sha256:d2b39aa8edd9e5f56f99a2a2740a251dc58515398e9ed5a4b3e5ff2827060755"}, + {file = "watchfiles-1.0.0-cp310-none-win_amd64.whl", hash = "sha256:2de52b499e1ab037f1a87cb8ebcb04a819bf087b1015a4cf6dcf8af3c2a2613e"}, + {file = "watchfiles-1.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:fbd0ab7a9943bbddb87cbc2bf2f09317e74c77dc55b1f5657f81d04666c25269"}, + {file = "watchfiles-1.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:774ef36b16b7198669ce655d4f75b4c3d370e7f1cbdfb997fb10ee98717e2058"}, + {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b4fb98100267e6a5ebaff6aaa5d20aea20240584647470be39fe4823012ac96"}, + {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0fc3bf0effa2d8075b70badfdd7fb839d7aa9cea650d17886982840d71fdeabf"}, + {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:648e2b6db53eca6ef31245805cd528a16f56fa4cc15aeec97795eaf713c11435"}, + {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa13d604fcb9417ae5f2e3de676e66aa97427d888e83662ad205bed35a313176"}, + {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:936f362e7ff28311b16f0b97ec51e8f2cc451763a3264640c6ed40fb252d1ee4"}, + {file = "watchfiles-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245fab124b9faf58430da547512d91734858df13f2ddd48ecfa5e493455ffccb"}, + {file = "watchfiles-1.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4ff9c7e84e8b644a8f985c42bcc81457240316f900fc72769aaedec9d088055a"}, + {file = "watchfiles-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9c9a8d8fd97defe935ef8dd53d562e68942ad65067cd1c54d6ed8a088b1d931d"}, + {file = "watchfiles-1.0.0-cp311-none-win32.whl", hash = "sha256:a0abf173975eb9dd17bb14c191ee79999e650997cc644562f91df06060610e62"}, + {file = "watchfiles-1.0.0-cp311-none-win_amd64.whl", hash = "sha256:2a825ba4b32c214e3855b536eb1a1f7b006511d8e64b8215aac06eb680642d84"}, + {file = "watchfiles-1.0.0-cp311-none-win_arm64.whl", hash = "sha256:a5a7a06cfc65e34fd0a765a7623c5ba14707a0870703888e51d3d67107589817"}, + {file = "watchfiles-1.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:28fb64b5843d94e2c2483f7b024a1280662a44409bedee8f2f51439767e2d107"}, + {file = "watchfiles-1.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e3750434c83b61abb3163b49c64b04180b85b4dabb29a294513faec57f2ffdb7"}, + {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bedf84835069f51c7b026b3ca04e2e747ea8ed0a77c72006172c72d28c9f69fc"}, + {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:90004553be36427c3d06ec75b804233f8f816374165d5225b93abd94ba6e7234"}, + {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b46e15c34d4e401e976d6949ad3a74d244600d5c4b88c827a3fdf18691a46359"}, + {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:487d15927f1b0bd24e7df921913399bb1ab94424c386bea8b267754d698f8f0e"}, + {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ff236d7a3f4b0a42f699a22fc374ba526bc55048a70cbb299661158e1bb5e1f"}, + {file = "watchfiles-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c01446626574561756067f00b37e6b09c8622b0fc1e9fdbc7cbcea328d4e514"}, + {file = "watchfiles-1.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b551c465a59596f3d08170bd7e1c532c7260dd90ed8135778038e13c5d48aa81"}, + {file = "watchfiles-1.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e1ed613ee107269f66c2df631ec0fc8efddacface85314d392a4131abe299f00"}, + {file = "watchfiles-1.0.0-cp312-none-win32.whl", hash = "sha256:5f75cd42e7e2254117cf37ff0e68c5b3f36c14543756b2da621408349bd9ca7c"}, + {file = "watchfiles-1.0.0-cp312-none-win_amd64.whl", hash = "sha256:cf517701a4a872417f4e02a136e929537743461f9ec6cdb8184d9a04f4843545"}, + {file = "watchfiles-1.0.0-cp312-none-win_arm64.whl", hash = "sha256:8a2127cd68950787ee36753e6d401c8ea368f73beaeb8e54df5516a06d1ecd82"}, + {file = "watchfiles-1.0.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:95de85c254f7fe8cbdf104731f7f87f7f73ae229493bebca3722583160e6b152"}, + {file = "watchfiles-1.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:533a7cbfe700e09780bb31c06189e39c65f06c7f447326fee707fd02f9a6e945"}, + {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2218e78e2c6c07b1634a550095ac2a429026b2d5cbcd49a594f893f2bb8c936"}, + {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9122b8fdadc5b341315d255ab51d04893f417df4e6c1743b0aac8bf34e96e025"}, + {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9272fdbc0e9870dac3b505bce1466d386b4d8d6d2bacf405e603108d50446940"}, + {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a3b33c3aefe9067ebd87846806cd5fc0b017ab70d628aaff077ab9abf4d06b3"}, + {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc338ce9f8846543d428260fa0f9a716626963148edc937d71055d01d81e1525"}, + {file = "watchfiles-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ac778a460ea22d63c7e6fb0bc0f5b16780ff0b128f7f06e57aaec63bd339285"}, + {file = "watchfiles-1.0.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:53ae447f06f8f29f5ab40140f19abdab822387a7c426a369eb42184b021e97eb"}, + {file = "watchfiles-1.0.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1f73c2147a453315d672c1ad907abe6d40324e34a185b51e15624bc793f93cc6"}, + {file = "watchfiles-1.0.0-cp313-none-win32.whl", hash = "sha256:eba98901a2eab909dbd79681190b9049acc650f6111fde1845484a4450761e98"}, + {file = "watchfiles-1.0.0-cp313-none-win_amd64.whl", hash = "sha256:d562a6114ddafb09c33246c6ace7effa71ca4b6a2324a47f4b09b6445ea78941"}, + {file = "watchfiles-1.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3d94fd83ed54266d789f287472269c0def9120a2022674990bd24ad989ebd7a0"}, + {file = "watchfiles-1.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48051d1c504448b2fcda71c5e6e3610ae45de6a0b8f5a43b961f250be4bdf5a8"}, + {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29cf884ad4285d23453c702ed03d689f9c0e865e3c85d20846d800d4787de00f"}, + {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d3572d4c34c4e9c33d25b3da47d9570d5122f8433b9ac6519dca49c2740d23cd"}, + {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c2696611182c85eb0e755b62b456f48debff484b7306b56f05478b843ca8ece"}, + {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:550109001920a993a4383b57229c717fa73627d2a4e8fcb7ed33c7f1cddb0c85"}, + {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b555a93c15bd2c71081922be746291d776d47521a00703163e5fbe6d2a402399"}, + {file = "watchfiles-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:947ccba18a38b85c366dafeac8df2f6176342d5992ca240a9d62588b214d731f"}, + {file = "watchfiles-1.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ffd98a299b0a74d1b704ef0ed959efb753e656a4e0425c14e46ae4c3cbdd2919"}, + {file = "watchfiles-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f8c4f3a1210ed099a99e6a710df4ff2f8069411059ffe30fa5f9467ebed1256b"}, + {file = "watchfiles-1.0.0-cp39-none-win32.whl", hash = "sha256:1e176b6b4119b3f369b2b4e003d53a226295ee862c0962e3afd5a1c15680b4e3"}, + {file = "watchfiles-1.0.0-cp39-none-win_amd64.whl", hash = "sha256:2d9c0518fabf4a3f373b0a94bb9e4ea7a1df18dec45e26a4d182aa8918dee855"}, + {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f159ac795785cde4899e0afa539f4c723fb5dd336ce5605bc909d34edd00b79b"}, + {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c3d258d78341d5d54c0c804a5b7faa66cd30ba50b2756a7161db07ce15363b8d"}, + {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bbd0311588c2de7f9ea5cf3922ccacfd0ec0c1922870a2be503cc7df1ca8be7"}, + {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a13ac46b545a7d0d50f7641eefe47d1597e7d1783a5d89e09d080e6dff44b0"}, + {file = "watchfiles-1.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2bca898c1dc073912d3db7fa6926cc08be9575add9e84872de2c99c688bac4e"}, + {file = "watchfiles-1.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:06d828fe2adc4ac8a64b875ca908b892a3603d596d43e18f7948f3fef5fc671c"}, + {file = "watchfiles-1.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:074c7618cd6c807dc4eaa0982b4a9d3f8051cd0b72793511848fd64630174b17"}, + {file = "watchfiles-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95dc785bc284552d044e561b8f4fe26d01ab5ca40d35852a6572d542adfeb4bc"}, + {file = "watchfiles-1.0.0.tar.gz", hash = "sha256:37566c844c9ce3b5deb964fe1a23378e575e74b114618d211fbda8f59d7b5dab"}, +] + +[package.dependencies] +anyio = ">=3.0.0" + +[[package]] +name = "websockets" +version = "14.1" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "websockets-14.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a0adf84bc2e7c86e8a202537b4fd50e6f7f0e4a6b6bf64d7ccb96c4cd3330b29"}, + {file = "websockets-14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90b5d9dfbb6d07a84ed3e696012610b6da074d97453bd01e0e30744b472c8179"}, + {file = "websockets-14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2177ee3901075167f01c5e335a6685e71b162a54a89a56001f1c3e9e3d2ad250"}, + {file = "websockets-14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f14a96a0034a27f9d47fd9788913924c89612225878f8078bb9d55f859272b0"}, + {file = "websockets-14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f874ba705deea77bcf64a9da42c1f5fc2466d8f14daf410bc7d4ceae0a9fcb0"}, + {file = "websockets-14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9607b9a442392e690a57909c362811184ea429585a71061cd5d3c2b98065c199"}, + {file = "websockets-14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bea45f19b7ca000380fbd4e02552be86343080120d074b87f25593ce1700ad58"}, + {file = "websockets-14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:219c8187b3ceeadbf2afcf0f25a4918d02da7b944d703b97d12fb01510869078"}, + {file = "websockets-14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad2ab2547761d79926effe63de21479dfaf29834c50f98c4bf5b5480b5838434"}, + {file = "websockets-14.1-cp310-cp310-win32.whl", hash = "sha256:1288369a6a84e81b90da5dbed48610cd7e5d60af62df9851ed1d1d23a9069f10"}, + {file = "websockets-14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0744623852f1497d825a49a99bfbec9bea4f3f946df6eb9d8a2f0c37a2fec2e"}, + {file = "websockets-14.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:449d77d636f8d9c17952628cc7e3b8faf6e92a17ec581ec0c0256300717e1512"}, + {file = "websockets-14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a35f704be14768cea9790d921c2c1cc4fc52700410b1c10948511039be824aac"}, + {file = "websockets-14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b1f3628a0510bd58968c0f60447e7a692933589b791a6b572fcef374053ca280"}, + {file = "websockets-14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c3deac3748ec73ef24fc7be0b68220d14d47d6647d2f85b2771cb35ea847aa1"}, + {file = "websockets-14.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7048eb4415d46368ef29d32133134c513f507fff7d953c18c91104738a68c3b3"}, + {file = "websockets-14.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cf0ad281c979306a6a34242b371e90e891bce504509fb6bb5246bbbf31e7b6"}, + {file = "websockets-14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cc1fc87428c1d18b643479caa7b15db7d544652e5bf610513d4a3478dbe823d0"}, + {file = "websockets-14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f95ba34d71e2fa0c5d225bde3b3bdb152e957150100e75c86bc7f3964c450d89"}, + {file = "websockets-14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9481a6de29105d73cf4515f2bef8eb71e17ac184c19d0b9918a3701c6c9c4f23"}, + {file = "websockets-14.1-cp311-cp311-win32.whl", hash = "sha256:368a05465f49c5949e27afd6fbe0a77ce53082185bbb2ac096a3a8afaf4de52e"}, + {file = "websockets-14.1-cp311-cp311-win_amd64.whl", hash = "sha256:6d24fc337fc055c9e83414c94e1ee0dee902a486d19d2a7f0929e49d7d604b09"}, + {file = "websockets-14.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed907449fe5e021933e46a3e65d651f641975a768d0649fee59f10c2985529ed"}, + {file = "websockets-14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:87e31011b5c14a33b29f17eb48932e63e1dcd3fa31d72209848652310d3d1f0d"}, + {file = "websockets-14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bc6ccf7d54c02ae47a48ddf9414c54d48af9c01076a2e1023e3b486b6e72c707"}, + {file = "websockets-14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9777564c0a72a1d457f0848977a1cbe15cfa75fa2f67ce267441e465717dcf1a"}, + {file = "websockets-14.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a655bde548ca98f55b43711b0ceefd2a88a71af6350b0c168aa77562104f3f45"}, + {file = "websockets-14.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3dfff83ca578cada2d19e665e9c8368e1598d4e787422a460ec70e531dbdd58"}, + {file = "websockets-14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6a6c9bcf7cdc0fd41cc7b7944447982e8acfd9f0d560ea6d6845428ed0562058"}, + {file = "websockets-14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4b6caec8576e760f2c7dd878ba817653144d5f369200b6ddf9771d64385b84d4"}, + {file = "websockets-14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb6d38971c800ff02e4a6afd791bbe3b923a9a57ca9aeab7314c21c84bf9ff05"}, + {file = "websockets-14.1-cp312-cp312-win32.whl", hash = "sha256:1d045cbe1358d76b24d5e20e7b1878efe578d9897a25c24e6006eef788c0fdf0"}, + {file = "websockets-14.1-cp312-cp312-win_amd64.whl", hash = "sha256:90f4c7a069c733d95c308380aae314f2cb45bd8a904fb03eb36d1a4983a4993f"}, + {file = "websockets-14.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3630b670d5057cd9e08b9c4dab6493670e8e762a24c2c94ef312783870736ab9"}, + {file = "websockets-14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36ebd71db3b89e1f7b1a5deaa341a654852c3518ea7a8ddfdf69cc66acc2db1b"}, + {file = "websockets-14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5b918d288958dc3fa1c5a0b9aa3256cb2b2b84c54407f4813c45d52267600cd3"}, + {file = "websockets-14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00fe5da3f037041da1ee0cf8e308374e236883f9842c7c465aa65098b1c9af59"}, + {file = "websockets-14.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8149a0f5a72ca36720981418eeffeb5c2729ea55fa179091c81a0910a114a5d2"}, + {file = "websockets-14.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77569d19a13015e840b81550922056acabc25e3f52782625bc6843cfa034e1da"}, + {file = "websockets-14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cf5201a04550136ef870aa60ad3d29d2a59e452a7f96b94193bee6d73b8ad9a9"}, + {file = "websockets-14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:88cf9163ef674b5be5736a584c999e98daf3aabac6e536e43286eb74c126b9c7"}, + {file = "websockets-14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:836bef7ae338a072e9d1863502026f01b14027250a4545672673057997d5c05a"}, + {file = "websockets-14.1-cp313-cp313-win32.whl", hash = "sha256:0d4290d559d68288da9f444089fd82490c8d2744309113fc26e2da6e48b65da6"}, + {file = "websockets-14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8621a07991add373c3c5c2cf89e1d277e49dc82ed72c75e3afc74bd0acc446f0"}, + {file = "websockets-14.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:01bb2d4f0a6d04538d3c5dfd27c0643269656c28045a53439cbf1c004f90897a"}, + {file = "websockets-14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:414ffe86f4d6f434a8c3b7913655a1a5383b617f9bf38720e7c0799fac3ab1c6"}, + {file = "websockets-14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8fda642151d5affdee8a430bd85496f2e2517be3a2b9d2484d633d5712b15c56"}, + {file = "websockets-14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd7c11968bc3860d5c78577f0dbc535257ccec41750675d58d8dc66aa47fe52c"}, + {file = "websockets-14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a032855dc7db987dff813583d04f4950d14326665d7e714d584560b140ae6b8b"}, + {file = "websockets-14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7e7ea2f782408c32d86b87a0d2c1fd8871b0399dd762364c731d86c86069a78"}, + {file = "websockets-14.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:39450e6215f7d9f6f7bc2a6da21d79374729f5d052333da4d5825af8a97e6735"}, + {file = "websockets-14.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ceada5be22fa5a5a4cdeec74e761c2ee7db287208f54c718f2df4b7e200b8d4a"}, + {file = "websockets-14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3fc753451d471cff90b8f467a1fc0ae64031cf2d81b7b34e1811b7e2691bc4bc"}, + {file = "websockets-14.1-cp39-cp39-win32.whl", hash = "sha256:14839f54786987ccd9d03ed7f334baec0f02272e7ec4f6e9d427ff584aeea8b4"}, + {file = "websockets-14.1-cp39-cp39-win_amd64.whl", hash = "sha256:d9fd19ecc3a4d5ae82ddbfb30962cf6d874ff943e56e0c81f5169be2fda62979"}, + {file = "websockets-14.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e5dc25a9dbd1a7f61eca4b7cb04e74ae4b963d658f9e4f9aad9cd00b688692c8"}, + {file = "websockets-14.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:04a97aca96ca2acedf0d1f332c861c5a4486fdcba7bcef35873820f940c4231e"}, + {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df174ece723b228d3e8734a6f2a6febbd413ddec39b3dc592f5a4aa0aff28098"}, + {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:034feb9f4286476f273b9a245fb15f02c34d9586a5bc936aff108c3ba1b21beb"}, + {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c308dabd2b380807ab64b62985eaccf923a78ebc572bd485375b9ca2b7dc7"}, + {file = "websockets-14.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5a42d3ecbb2db5080fc578314439b1d79eef71d323dc661aa616fb492436af5d"}, + {file = "websockets-14.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ddaa4a390af911da6f680be8be4ff5aaf31c4c834c1a9147bc21cbcbca2d4370"}, + {file = "websockets-14.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a4c805c6034206143fbabd2d259ec5e757f8b29d0a2f0bf3d2fe5d1f60147a4a"}, + {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:205f672a6c2c671a86d33f6d47c9b35781a998728d2c7c2a3e1cf3333fcb62b7"}, + {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef440054124728cc49b01c33469de06755e5a7a4e83ef61934ad95fc327fbb0"}, + {file = "websockets-14.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7591d6f440af7f73c4bd9404f3772bfee064e639d2b6cc8c94076e71b2471c1"}, + {file = "websockets-14.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:25225cc79cfebc95ba1d24cd3ab86aaa35bcd315d12fa4358939bd55e9bd74a5"}, + {file = "websockets-14.1-py3-none-any.whl", hash = "sha256:4d4fc827a20abe6d544a119896f6b78ee13fe81cbfef416f3f2ddf09a03f0e2e"}, + {file = "websockets-14.1.tar.gz", hash = "sha256:398b10c77d471c0aab20a845e7a60076b6390bfdaac7a6d2edb0d2c59d75e8d8"}, +] + +[[package]] +name = "wrapt" +version = "1.17.0" +description = "Module for decorators, wrappers and monkey patching." +optional = false +python-versions = ">=3.8" +files = [ + {file = "wrapt-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a0c23b8319848426f305f9cb0c98a6e32ee68a36264f45948ccf8e7d2b941f8"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1ca5f060e205f72bec57faae5bd817a1560fcfc4af03f414b08fa29106b7e2d"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e185ec6060e301a7e5f8461c86fb3640a7beb1a0f0208ffde7a65ec4074931df"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb90765dd91aed05b53cd7a87bd7f5c188fcd95960914bae0d32c5e7f899719d"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:879591c2b5ab0a7184258274c42a126b74a2c3d5a329df16d69f9cee07bba6ea"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fce6fee67c318fdfb7f285c29a82d84782ae2579c0e1b385b7f36c6e8074fffb"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0698d3a86f68abc894d537887b9bbf84d29bcfbc759e23f4644be27acf6da301"}, + {file = "wrapt-1.17.0-cp310-cp310-win32.whl", hash = "sha256:69d093792dc34a9c4c8a70e4973a3361c7a7578e9cd86961b2bbf38ca71e4e22"}, + {file = "wrapt-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f28b29dc158ca5d6ac396c8e0a2ef45c4e97bb7e65522bfc04c989e6fe814575"}, + {file = "wrapt-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74bf625b1b4caaa7bad51d9003f8b07a468a704e0644a700e936c357c17dd45a"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f2a28eb35cf99d5f5bd12f5dd44a0f41d206db226535b37b0c60e9da162c3ed"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81b1289e99cf4bad07c23393ab447e5e96db0ab50974a280f7954b071d41b489"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2939cd4a2a52ca32bc0b359015718472d7f6de870760342e7ba295be9ebaf9"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a9653131bda68a1f029c52157fd81e11f07d485df55410401f745007bd6d339"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4e4b4385363de9052dac1a67bfb535c376f3d19c238b5f36bddc95efae15e12d"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bdf62d25234290db1837875d4dceb2151e4ea7f9fff2ed41c0fde23ed542eb5b"}, + {file = "wrapt-1.17.0-cp311-cp311-win32.whl", hash = "sha256:5d8fd17635b262448ab8f99230fe4dac991af1dabdbb92f7a70a6afac8a7e346"}, + {file = "wrapt-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:92a3d214d5e53cb1db8b015f30d544bc9d3f7179a05feb8f16df713cecc2620a"}, + {file = "wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4"}, + {file = "wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635"}, + {file = "wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7"}, + {file = "wrapt-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:714c12485aa52efbc0fc0ade1e9ab3a70343db82627f90f2ecbc898fdf0bb181"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da427d311782324a376cacb47c1a4adc43f99fd9d996ffc1b3e8529c4074d393"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba1739fb38441a27a676f4de4123d3e858e494fac05868b7a281c0a383c098f4"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e711fc1acc7468463bc084d1b68561e40d1eaa135d8c509a65dd534403d83d7b"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:140ea00c87fafc42739bd74a94a5a9003f8e72c27c47cd4f61d8e05e6dec8721"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73a96fd11d2b2e77d623a7f26e004cc31f131a365add1ce1ce9a19e55a1eef90"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0b48554952f0f387984da81ccfa73b62e52817a4386d070c75e4db7d43a28c4a"}, + {file = "wrapt-1.17.0-cp313-cp313-win32.whl", hash = "sha256:498fec8da10e3e62edd1e7368f4b24aa362ac0ad931e678332d1b209aec93045"}, + {file = "wrapt-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd136bb85f4568fffca995bd3c8d52080b1e5b225dbf1c2b17b66b4c5fa02838"}, + {file = "wrapt-1.17.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:17fcf043d0b4724858f25b8826c36e08f9fb2e475410bece0ec44a22d533da9b"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4a557d97f12813dc5e18dad9fa765ae44ddd56a672bb5de4825527c847d6379"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0229b247b0fc7dee0d36176cbb79dbaf2a9eb7ecc50ec3121f40ef443155fb1d"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8425cfce27b8b20c9b89d77fb50e368d8306a90bf2b6eef2cdf5cd5083adf83f"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c900108df470060174108012de06d45f514aa4ec21a191e7ab42988ff42a86c"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4e547b447073fc0dbfcbff15154c1be8823d10dab4ad401bdb1575e3fdedff1b"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:914f66f3b6fc7b915d46c1cc424bc2441841083de01b90f9e81109c9759e43ab"}, + {file = "wrapt-1.17.0-cp313-cp313t-win32.whl", hash = "sha256:a4192b45dff127c7d69b3bdfb4d3e47b64179a0b9900b6351859f3001397dabf"}, + {file = "wrapt-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:4f643df3d4419ea3f856c5c3f40fec1d65ea2e89ec812c83f7767c8730f9827a"}, + {file = "wrapt-1.17.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69c40d4655e078ede067a7095544bcec5a963566e17503e75a3a3e0fe2803b13"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f495b6754358979379f84534f8dd7a43ff8cff2558dcdea4a148a6e713a758f"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baa7ef4e0886a6f482e00d1d5bcd37c201b383f1d314643dfb0367169f94f04c"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fc931382e56627ec4acb01e09ce66e5c03c384ca52606111cee50d931a342d"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8f8909cdb9f1b237786c09a810e24ee5e15ef17019f7cecb207ce205b9b5fcce"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ad47b095f0bdc5585bced35bd088cbfe4177236c7df9984b3cc46b391cc60627"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:948a9bd0fb2c5120457b07e59c8d7210cbc8703243225dbd78f4dfc13c8d2d1f"}, + {file = "wrapt-1.17.0-cp38-cp38-win32.whl", hash = "sha256:5ae271862b2142f4bc687bdbfcc942e2473a89999a54231aa1c2c676e28f29ea"}, + {file = "wrapt-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:f335579a1b485c834849e9075191c9898e0731af45705c2ebf70e0cd5d58beed"}, + {file = "wrapt-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d751300b94e35b6016d4b1e7d0e7bbc3b5e1751e2405ef908316c2a9024008a1"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7264cbb4a18dc4acfd73b63e4bcfec9c9802614572025bdd44d0721983fc1d9c"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33539c6f5b96cf0b1105a0ff4cf5db9332e773bb521cc804a90e58dc49b10578"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c30970bdee1cad6a8da2044febd824ef6dc4cc0b19e39af3085c763fdec7de33"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bc7f729a72b16ee21795a943f85c6244971724819819a41ddbaeb691b2dd85ad"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6ff02a91c4fc9b6a94e1c9c20f62ea06a7e375f42fe57587f004d1078ac86ca9"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dfb7cff84e72e7bf975b06b4989477873dcf160b2fd89959c629535df53d4e0"}, + {file = "wrapt-1.17.0-cp39-cp39-win32.whl", hash = "sha256:2399408ac33ffd5b200480ee858baa58d77dd30e0dd0cab6a8a9547135f30a88"}, + {file = "wrapt-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:4f763a29ee6a20c529496a20a7bcb16a73de27f5da6a843249c7047daf135977"}, + {file = "wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371"}, + {file = "wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801"}, +] + +[[package]] +name = "zipp" +version = "3.21.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +files = [ + {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, + {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.11" +content-hash = "437d276ec64416d54c493180b58f7f871955636c5bf370fd06cce8b71f0ad67f" diff --git a/poetry.toml b/poetry.toml new file mode 100644 index 0000000..ab1033b --- /dev/null +++ b/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +in-project = true diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..21bb563 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,57 @@ +[tool.poetry] +name = "esg-fastapi" +version = "0.1.0" +description = "" +authors = ["Nathan Collier ", "Zach Price "] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.11" +fastapi = "^0.115.5" +globus-sdk = "^3.39.0" +uvicorn = {version = "^0.29.0", extras = ["standard"]} +prometheus-fastapi-instrumentator = "^7.0.0" +gunicorn = "^21.2.0" +opentelemetry-distro = "^0.49b2" +opentelemetry-instrumentation-fastapi = "^0.49b2" +opentelemetry-instrumentation-logging = "^0.49b2" +opentelemetry-exporter-otlp-proto-grpc = "^1.24.0" +opentelemetry-instrumentation-requests = "^0.49b2" +pydantic-loggings = "^1.6.1" +pyroscope-io = "^0.8.7" +pydantic = "^2.10.1" +semver = "^3.0.2" +pyroscope-otel = "^0.3.0" + + +[tool.poetry.group.dev.dependencies] +pytest-bdd = "^7.1.2" +httpx = "^0.27.0" +pytest-mock = "^3.14.0" +pytest-cov = "^5.0.0" +ruff = "^0.3.5" +datamodel-code-generator = "^0.25.5" +pytest-asyncio = "^0.23.6" + +[tool.ruff] +line-length = 120 + +[tool.ruff.lint] +select = ["E4", "E7", "E9", "F", "D", "UP", "ANN", "ASYNC", "S", "B", "T20", "PT", "SIM", "TCH", "PTH", "TD", "PL"] +ignore = ["ANN102"] # ignore deprecated hints for cls arg in @classmethods + +[tool.ruff.lint.pydocstyle] +convention = "google" + +[tool.ruff.lint.per-file-ignores] +# Ignore `S101` (Use of `assert` detected) in tests. +"tests/*" = ["S101"] +"test_*.py" = ["S101"] + +[tool.pytest.ini_options] +bdd_features_base_dir = "features/" +addopts = "--cov --cov-report term-missing:skip-covered --no-cov-on-fail --cov-fail-under=98" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 07776ad..0000000 --- a/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -fastapi[all] -globus-sdk \ No newline at end of file diff --git a/scripts/find_missing_solr_fields.py b/scripts/find_missing_solr_fields.py new file mode 100644 index 0000000..557ead5 --- /dev/null +++ b/scripts/find_missing_solr_fields.py @@ -0,0 +1,190 @@ +import json +import re +from datetime import datetime +from keyword import iskeyword +from types import EllipsisType +from typing import Annotated + +import pydantic +import requests +from datamodel_code_generator import DataModelType, PythonVersion +from datamodel_code_generator.model import get_data_model_types +from datamodel_code_generator.parser.jsonschema import JsonSchemaParser +from fastapi import Query +from fastapi.params import Param +from pydantic_core import PydanticUndefined, PydanticUndefinedType + +from esg_fastapi.api.versions.v1.models import ESGSearchQuery, MultiValued + +RETRIEVE_EXAMPLES = 3 + +# TODO: can we get this from ESGSearch instead of Solr directly? +SOLR_API_URL = "http://localhost:8983/solr/files/admin/luke" +MappableTypes = type | Annotated +TYPE_MAPPING: dict[str, MappableTypes] = { + "string": str, + "date": datetime, + "long": int, + "text_general": str, + "float": float, + # probably need a converter for this. ref: https://github.com/ESGF/esgf-docker/blob/master/images/solr/core-template/conf/schema.xml#L584-L585 + # maybe convert to geojson using this? https://solr.apache.org/guide/6_6/transforming-result-documents.html#TransformingResultDocuments-_geo_-Geospatialformatter + # what does elastic support? geojson is a good bet + "location_rpt": str, + "boolean": bool, + "int": int, + "text_general_rev": str, +} + + +def lookup_default(field: dict) -> bool | None | EllipsisType | PydanticUndefinedType: + """Convert the `default` field to a `type` and value appropriate for the field.""" + match field.get("default"): + case "true" | "false" as value: + return bool(value) + case "NOW": + # timestamp defaults to "NOW," makes sense when ingesting, but querying should be optional (None) + return None + case None: + return PydanticUndefined + case value: + return value + + +def lookup_type(field: dict) -> MappableTypes: + """Look up the type mapping for the given field's type string. + + Args: + field (dict): A dictionary containing the schema and type of the field. + + Returns: + MappableTypes: The mapped type for the field's type string. + + Raises: + ValueError: If the type string cannot be mapped to a type. + + Notes: + - If the field's schema string contains "M", it returns a MultiValued version of the mapped type. + - Otherwise, it returns the type directly. + """ + schema = field["schema"] + match TYPE_MAPPING.get(field["type"]): + case None: + raise ValueError(f"Could not map `type` string {field['type']} to type") + case value if "M" in schema: + return MultiValued[value] + case value: + return value + + +def validate_name(name: str) -> tuple[str, int]: + """Validates a field name and returns a validated name and a flag indicating if the name was modified. + + Args: + name (str): The original field name. + + Returns: + tuple[str, int]: A tuple containing the validated field name and a flag indicating if the name was modified. + + The validated field name is either the original name with leading underscores, or a modified name with a suffix added if it is a reserved keyword or starts with an underscore. + + The flag indicates if the name was modified. If the name was not modified, the flag is 0. If the name was modified, the flag is 1. + + Examples: + >>> validate_name("_id") + ('id_', 1) + >>> validate_name("author") + ('author', 0) + """ + if iskeyword(name) or name.startswith("_"): + return (f"{name.lstrip('_')}_", 1) + else: + return re.subn(r"\W|^(?=\d)", "_", name) + + +def generate_field_defintions(key: str, value: dict) -> dict[str, tuple[type, Param]]: + """Generates field definitions for a given key and its corresponding value. + + Args: + key (str): The name of the field to generate definitions for. + value (dict): A dictionary containing the type and FieldInfo object of the field. + + Returns: + dict[str, tuple[type, Param]]: A dictionary containing the validated field name and a tuple containing the mapped type for the field's type string and a Query parameter. + + The validated field name is either the original name with leading underscores, or a modified name with a suffix added if it is a reserved keyword or starts with an underscore. + + The tuple contains the mapped type for the field's type string and a Query parameter. The Query parameter has a default value, an optional alias, and a list of examples. + + Notes: + - If the field's schema string contains "M", it returns a MultiValued version of the mapped type. + - Otherwise, it returns the type directly. + + Examples: + >>> generate_field_definitions("_id", {"type": "string", "schema": "SOLR_TYPE_STRING"}) + {'id_': (, Query(default=None, alias='id_', examples=[u'1234567890']))} + """ + lookup = requests.get(SOLR_API_URL, params={"wt": "json", "numTerms": RETRIEVE_EXAMPLES, "fl": key}).json() + details = lookup["fields"][key] + name, aliased = validate_name(key) + return { + name: ( + lookup_type(value), + Query( + default=lookup_default(value), + alias=name if aliased else None, + # `xlink` doesn't return topTerms. why? + examples=details.get("topTerms", [])[::2], + ), + ) + } + + +# NOTE: Using `fl:*` makes the query take a while, but seems like its necessary in order to get top terms back +# Not including `fl:*` still returns all fields (and quickly) but not top terms, which we want to use for examples. +# otherwise we could get everything in one request instead of looking up each field individually in the loop. +# TODO: If `dynamicBase` is *NOT* set, the field was defined in the schema.xml file and is thus a core field and +# Should(tm) exist in all records. We should use this to split the models into a core ESGF model and child models +# for the various projects with their own additional fields. +field_lookup = requests.get(SOLR_API_URL, params={"wt": "json", "show": "all"}).json() + +known_fields = ESGSearchQuery.model_fields.keys() +discovered_fields = field_lookup["fields"] + +# For some reason, "Science Driver" is returned in the field list, but returns an empty +# `fields` dict when looked up with `fl=Science Driver` or `fl=Science+Driver` +del discovered_fields["Science Driver"] + +missing_fields = {key: discovered_fields[key] for key in (discovered_fields.keys() - known_fields)} + +# TODO: Set a private property on ESGSearchQuery model to indicate the last modified date of the index. Skip this lookup +# if the index hasn't changed since the last time this was run. +if missing_fields: + NewESGSearchQuery = pydantic.create_model( + __model_name="ESGSearchQuery", + __base__=ESGSearchQuery, + # Type checking doesn't recognize the **dict syntax as valid for the field defs, so ignore it on this line only + # since the generation function is fully typed anyway. + **{name: field for k, v in missing_fields.items() for name, field in generate_field_defintions(k, v).items()}, # type: ignore + ) + + # ref: https://koxudaxi.github.io/datamodel-code-generator/using_as_module/#__codelineno-3-1 + data_model_types = get_data_model_types( + DataModelType.PydanticV2BaseModel, target_python_version=PythonVersion.PY_312 + ) + ESGSearchQuery.model_json_schema() + + # TODO: + # - This inherits from `ESGSearchQuery` but doesn't preserve the existing definition. + # - Custom types and aliases aren't kept, but converted to standard types. + # - Attribute level docstrings aren't kept. + parser = JsonSchemaParser( + json.dumps(NewESGSearchQuery.model_json_schema()), + data_model_type=data_model_types.data_model, + data_model_root_type=data_model_types.root_model, + data_model_field_type=data_model_types.field_model, + data_type_manager_type=data_model_types.data_type_manager, + dump_resolve_reference_action=data_model_types.dump_resolve_reference_action, + ) + + print(parser.parse()) diff --git a/test_api.py b/test_api.py deleted file mode 100644 index e8b57e8..0000000 --- a/test_api.py +++ /dev/null @@ -1,74 +0,0 @@ -import pytest -import requests - -SOLR_BASE = "http://esgf-node.ornl.gov/esg-search/search" -LOCAL_BASE = "http://127.0.0.1:8000" - - -def esg_search(base_url, **search): - """Return an esg-search response as a dictionary.""" - if "format" not in search: - search["format"] = "application/solr+json" - response = requests.get(base_url, params=search) - response.raise_for_status() - return response.json() - - -def compare_facets(r1, r2): - """Same facets and counts?""" - - def _parse_facets(response): - """Extract facets and counts into a easier structure to compare.""" - facets = response["facet_counts"]["facet_fields"] - out = {} - for key, value in facets.items(): - out[key] = {label: count for label, count in zip(value[::2], value[1::2])} - return out - - f1 = _parse_facets(r1) - f2 = _parse_facets(r2) - assert not f1.keys() ^ f2.keys() - for f in f1.keys() & f2.keys(): - assert not f1[f].keys() ^ f2[f].keys() - for key, value in f1[f].items(): - assert value == f2[f][key] - - -def compare_basic(r1, r2): - """Basic info?""" - # general structure checks - assert not r1.keys() ^ r2.keys() - assert r1["response"]["numFound"] == r2["response"]["numFound"] - - -@pytest.mark.parametrize( - "query", - [ - { - "facets": "project", - "limit": 0, - }, - { - "project": "CMIP3", - "time_frequency": "mon", - "facets": "experiment,realm", - "type": "File", - "latest": True, - }, - { - "project": "CMIP6", - "time_frequency": "day", - "facets": "experiment,model", - "replica": False, - }, - { - "query": "temperature", - "facets": "variable_id", - }, - ], -) -def test_queries(query): - r1 = esg_search(SOLR_BASE, **query) - r2 = esg_search(LOCAL_BASE, **query) - compare_basic(r1, r2) - compare_facets(r1, r2) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..c41c41c --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ +"""Pytest based test suite for ESG FastAPI.""" diff --git a/tests/fixtures/1_file_metagrid_response.json b/tests/fixtures/1_file_metagrid_response.json new file mode 100644 index 0000000..df3792a --- /dev/null +++ b/tests/fixtures/1_file_metagrid_response.json @@ -0,0 +1,338 @@ +{ + "request": "dataset_id=CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429%7Ccrd-esgf-drc.ec.gc.ca&format=application%2Fsolr%2Bjson&type=File&offset=0&limit=1", + "globus_query": { + "q": "", + "advanced": true, + "limit": 1, + "offset": 0, + "filters": [ + { + "type": "match_any", + "field_name": "dataset_id", + "values": [ + "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca" + ] + }, + { + "type": "match_any", + "field_name": "type", + "values": [ + "File" + ] + } + ], + "facets": null + }, + "globus_response": { + "gmeta": [ + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc", + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "replica": false, + "data_specs_version": [ + "01.00.31" + ], + "variable_units": [ + "W" + ], + "project": [ + "CMIP6" + ], + "pid": [ + "hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3" + ], + "table_id": [ + "Omon" + ], + "type": "File", + "frequency": [ + "mon" + ], + "institution_id": [ + "CCCma" + ], + "variable_id": [ + "hfbasin" + ], + "activity_id": [ + "CMIP" + ], + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc|crd-esgf-drc.ec.gc.ca", + "_timestamp": "2020-03-10T02:04:16.726Z", + "data_node": "crd-esgf-drc.ec.gc.ca", + "variable_long_name": [ + "Northward Ocean Heat Transport" + ], + "dataset_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "source_type": [ + "AOGCM" + ], + "cf_standard_name": [ + "northward_ocean_heat_transport" + ], + "version": "1", + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc", + "size": 4686043, + "grid_label": [ + "gn" + ], + "nominal_resolution": [ + "100 km" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json" + ], + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "index_node": "esgf-node.llnl.gov", + "title": "hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc", + "retracted": false, + "checksum_type": [ + "SHA256" + ], + "variant_label": [ + "r1i1p2f1" + ], + "checksum": [ + "2b65e4746dfa5c2f5133c960539cea4461fa4077ee644dc4526e7744fff57ef2" + ], + "tracking_id": [ + "hdl:21.14100/73285a1d-5a8b-40ed-8344-ca8218adcbe8" + ], + "latest": true, + "timestamp": "2020-01-17T03:45:00Z", + "member_id": [ + "r1i1p2f1" + ], + "sub_experiment_id": [ + "none" + ], + "mip_era": [ + "CMIP6" + ], + "product": [ + "model-output" + ], + "model_cohort": [ + "Registered" + ], + "experiment_id": [ + "1pctCO2" + ], + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/fileServer/esgA_dataroot/AR6/CMIP6/CMIP/CCCma/CanESM5-CanOE/1pctCO2/r1i1p2f1/Omon/hfbasin/gn/v20190429/hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc|application/netcdf|HTTPServer", + "gsiftp://crd-esgf-drc.ec.gc.ca:2811//esgA_dataroot/AR6/CMIP6/CMIP/CCCma/CanESM5-CanOE/1pctCO2/r1i1p2f1/Omon/hfbasin/gn/v20190429/hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc|application/gridftp|GridFTP", + "http://crd-esgf-drc.ec.gc.ca/thredds/dodsC/esgA_dataroot/AR6/CMIP6/CMIP/CCCma/CanESM5-CanOE/1pctCO2/r1i1p2f1/Omon/hfbasin/gn/v20190429/hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc.html|application/opendap-html|OPENDAP" + ], + "activity_drs": [ + "CMIP" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "_version_": 1660740810022322200, + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "variable": [ + "hfbasin" + ], + "realm": [ + "ocean" + ], + "source_id": [ + "CanESM5-CanOE" + ] + }, + "entry_id": "file", + "matched_principal_sets": [] + } + ] + } + ], + "facet_results": null, + "offset": 0, + "count": 1, + "total": 1, + "has_next_page": false + }, + "esg_search_response": { + "responseHeader": { + "status": 0, + "QTime": 4, + "params": { + "df": "text", + "q.alt": "*:*", + "indent": "true", + "echoParams": "all", + "fl": "*,score", + "start": "0", + "fq": [ + "type:File", + "dataset_id:\"CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca\"" + ], + "rows": "1", + "q": "*:*", + "shards": "esgf-data-node-solr-query:8983/solr/files", + "tie": "0.01", + "facet.limit": "-1", + "qf": "text", + "facet.method": "enum", + "facet.mincount": "1", + "facet": "true", + "wt": "json", + "facet.sort": "lex" + } + }, + "response": { + "numFound": 1, + "start": 0, + "maxScore": 1, + "docs": [ + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc|crd-esgf-drc.ec.gc.ca", + "version": "1", + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "northward_ocean_heat_transport" + ], + "checksum": [ + "2b65e4746dfa5c2f5133c960539cea4461fa4077ee644dc4526e7744fff57ef2" + ], + "checksum_type": [ + "SHA256" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "pid": [ + "hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 4686043, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "timestamp": "2020-01-17T03:45:00Z", + "title": "hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc", + "tracking_id": [ + "hdl:21.14100/73285a1d-5a8b-40ed-8344-ca8218adcbe8" + ], + "type": "File", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/fileServer/esgA_dataroot/AR6/CMIP6/CMIP/CCCma/CanESM5-CanOE/1pctCO2/r1i1p2f1/Omon/hfbasin/gn/v20190429/hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc|application/netcdf|HTTPServer", + "gsiftp://crd-esgf-drc.ec.gc.ca:2811//esgA_dataroot/AR6/CMIP6/CMIP/CCCma/CanESM5-CanOE/1pctCO2/r1i1p2f1/Omon/hfbasin/gn/v20190429/hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc|application/gridftp|GridFTP", + "http://crd-esgf-drc.ec.gc.ca/thredds/dodsC/esgA_dataroot/AR6/CMIP6/CMIP/CCCma/CanESM5-CanOE/1pctCO2/r1i1p2f1/Omon/hfbasin/gn/v20190429/hfbasin_Omon_CanESM5-CanOE_1pctCO2_r1i1p2f1_gn_185001-200012.nc.html|application/opendap-html|OPENDAP" + ], + "variable": [ + "hfbasin" + ], + "variable_id": [ + "hfbasin" + ], + "variable_long_name": [ + "Northward Ocean Heat Transport" + ], + "variable_units": [ + "W" + ], + "variant_label": [ + "r1i1p2f1" + ], + "_version_": 1660740810022322200, + "retracted": false, + "_timestamp": "2020-03-10T02:04:16.726Z", + "score": 0.75 + } + ] + }, + "facet_counts": { + "facet_queries": {}, + "facet_fields": {}, + "facet_ranges": {}, + "facet_intervals": {}, + "facet_heatmaps": {} + } + } +} \ No newline at end of file diff --git a/tests/fixtures/1_record_dataset_response.json b/tests/fixtures/1_record_dataset_response.json new file mode 100644 index 0000000..e745ef1 --- /dev/null +++ b/tests/fixtures/1_record_dataset_response.json @@ -0,0 +1,11043 @@ +{ + "request": "project=CMIP6&query=%2A&format=application%2Fsolr%2Bjson&type=Dataset&offset=0&limit=1&facets=activity_id%2C%20data_node%2C%20source_id%2C%20institution_id%2C%20source_type%2C%20experiment_id%2C%20sub_experiment_id%2C%20nominal_resolution%2C%20variant_label%2C%20grid_label%2C%20table_id%2C%20frequency%2C%20realm%2C%20variable_id%2C%20cf_standard_name", + "globus_query": { + "q": "*", + "advanced": true, + "limit": 1, + "offset": 0, + "filters": [ + { + "type": "match_any", + "field_name": "project", + "values": [ + "CMIP6" + ] + }, + { + "type": "match_any", + "field_name": "type", + "values": [ + "Dataset" + ] + } + ], + "facets": [ + { + "name": "activity_id", + "type": "terms", + "field_name": "activity_id" + }, + { + "name": "data_node", + "type": "terms", + "field_name": "data_node" + }, + { + "name": "source_id", + "type": "terms", + "field_name": "source_id" + }, + { + "name": "institution_id", + "type": "terms", + "field_name": "institution_id" + }, + { + "name": "source_type", + "type": "terms", + "field_name": "source_type" + }, + { + "name": "experiment_id", + "type": "terms", + "field_name": "experiment_id" + }, + { + "name": "sub_experiment_id", + "type": "terms", + "field_name": "sub_experiment_id" + }, + { + "name": "nominal_resolution", + "type": "terms", + "field_name": "nominal_resolution" + }, + { + "name": "variant_label", + "type": "terms", + "field_name": "variant_label" + }, + { + "name": "grid_label", + "type": "terms", + "field_name": "grid_label" + }, + { + "name": "table_id", + "type": "terms", + "field_name": "table_id" + }, + { + "name": "frequency", + "type": "terms", + "field_name": "frequency" + }, + { + "name": "realm", + "type": "terms", + "field_name": "realm" + }, + { + "name": "variable_id", + "type": "terms", + "field_name": "variable_id" + }, + { + "name": "cf_standard_name", + "type": "terms", + "field_name": "cf_standard_name" + } + ] + }, + "globus_response": { + "gmeta": [ + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "northward_ocean_heat_transport" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "geo_units": [ + "degrees_north" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "north_degrees": 89.50723, + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 4686043, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "south_degrees": -78.29248, + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/las|LAS" + ], + "variable": [ + "hfbasin" + ], + "variable_id": [ + "hfbasin" + ], + "variable_long_name": [ + "Northward Ocean Heat Transport" + ], + "variable_units": [ + "W" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3|PID|pid" + ], + "_version_": 1660740810020225000, + "retracted": false, + "_timestamp": "2020-03-10T02:04:16.724Z", + "score": 1 + }, + "entry_id": "dataset", + "matched_principal_sets": [] + } + ] + } + ], + "facet_results": [ + { + "name": "sub_experiment_id", + "value": null, + "buckets": [ + { + "value": "none", + "count": 6201394 + }, + { + "value": "s2014", + "count": 65501 + }, + { + "value": "s1981", + "count": 60502 + }, + { + "value": "s1990", + "count": 60479 + }, + { + "value": "s1962", + "count": 59615 + }, + { + "value": "s1993", + "count": 49561 + }, + { + "value": "s1994", + "count": 49549 + }, + { + "value": "s1995", + "count": 43800 + }, + { + "value": "s2002", + "count": 43598 + }, + { + "value": "s2004", + "count": 38893 + } + ] + }, + { + "name": "data_node", + "value": null, + "buckets": [ + { + "value": "esgf-node.ornl.gov", + "count": 5963081 + }, + { + "value": "crd-esgf-drc.ec.gc.ca", + "count": 874438 + }, + { + "value": "esgf-data.ucar.edu", + "count": 750457 + }, + { + "value": "esgf-data2.diasjp.net", + "count": 539299 + }, + { + "value": "esgf-data02.diasjp.net", + "count": 376808 + }, + { + "value": "esgf-data03.diasjp.net", + "count": 147797 + }, + { + "value": "dpesgf03.nccs.nasa.gov", + "count": 145103 + }, + { + "value": "esg.lasg.ac.cn", + "count": 114935 + }, + { + "value": "esgf-data04.diasjp.net", + "count": 63289 + }, + { + "value": "cmip.bcc.cma.cn", + "count": 52209 + } + ] + }, + { + "name": "experiment_id", + "value": null, + "buckets": [ + { + "value": "dcppA-hindcast", + "count": 2739506 + }, + { + "value": "historical", + "count": 422708 + }, + { + "value": "pdSST-futArcSIC", + "count": 379797 + }, + { + "value": "pdSST-pdSIC", + "count": 367440 + }, + { + "value": "ssp245", + "count": 261745 + }, + { + "value": "pdSST-piArcSIC", + "count": 246256 + }, + { + "value": "piSST-pdSIC", + "count": 202040 + }, + { + "value": "ssp585", + "count": 198144 + }, + { + "value": "ssp370", + "count": 194201 + }, + { + "value": "futSST-pdSIC", + "count": 192678 + } + ] + }, + { + "name": "source_type", + "value": null, + "buckets": [ + { + "value": "AOGCM", + "count": 6720630 + }, + { + "value": "AER", + "count": 2903539 + }, + { + "value": "BGC", + "count": 2661135 + }, + { + "value": "AGCM", + "count": 2284316 + }, + { + "value": "CHEM", + "count": 767139 + }, + { + "value": "OGCM", + "count": 23958 + }, + { + "value": "LAND", + "count": 18020 + }, + { + "value": "ISM", + "count": 12465 + }, + { + "value": "RAD", + "count": 5352 + }, + { + "value": "AERM", + "count": 541 + } + ] + }, + { + "name": "cf_standard_name", + "value": null, + "buckets": [ + { + "value": "air_temperature", + "count": 450098 + }, + { + "value": "area_fraction", + "count": 278264 + }, + { + "value": "eastward_wind", + "count": 220552 + }, + { + "value": "northward_wind", + "count": 195670 + }, + { + "value": "specific_humidity", + "count": 183389 + }, + { + "value": "geopotential_height", + "count": 149840 + }, + { + "value": "relative_humidity", + "count": 145801 + }, + { + "value": "wind_speed", + "count": 134575 + }, + { + "value": "precipitation_flux", + "count": 119194 + }, + { + "value": "surface_downwelling_shortwave_flux_in_air", + "count": 105577 + } + ] + }, + { + "name": "table_id", + "value": null, + "buckets": [ + { + "value": "Amon", + "count": 2319917 + }, + { + "value": "Omon", + "count": 1538856 + }, + { + "value": "day", + "count": 864304 + }, + { + "value": "Emon", + "count": 825752 + }, + { + "value": "Lmon", + "count": 805572 + }, + { + "value": "SImon", + "count": 591756 + }, + { + "value": "AERmon", + "count": 424595 + }, + { + "value": "Eday", + "count": 209982 + }, + { + "value": "Oyr", + "count": 190125 + }, + { + "value": "LImon", + "count": 165142 + } + ] + }, + { + "name": "frequency", + "value": null, + "buckets": [ + { + "value": "mon", + "count": 6993380 + }, + { + "value": "day", + "count": 1432455 + }, + { + "value": "fx", + "count": 265394 + }, + { + "value": "yr", + "count": 204424 + }, + { + "value": "6hr", + "count": 32872 + }, + { + "value": "3hr", + "count": 27362 + }, + { + "value": "6hrPt", + "count": 22308 + }, + { + "value": "3hrPt", + "count": 19260 + }, + { + "value": "monPt", + "count": 17299 + }, + { + "value": "monC", + "count": 8731 + } + ] + }, + { + "name": "institution_id", + "value": null, + "buckets": [ + { + "value": "CCCma", + "count": 1680115 + }, + { + "value": "NCAR", + "count": 1438852 + }, + { + "value": "IPSL", + "count": 1253497 + }, + { + "value": "MIROC", + "count": 1080885 + }, + { + "value": "NCC", + "count": 625777 + }, + { + "value": "MRI", + "count": 476841 + }, + { + "value": "MOHC", + "count": 394108 + }, + { + "value": "CNRM-CERFACS", + "count": 331545 + }, + { + "value": "NASA-GISS", + "count": 301114 + }, + { + "value": "EC-Earth-Consortium", + "count": 274659 + } + ] + }, + { + "name": "variant_label", + "value": null, + "buckets": [ + { + "value": "r1i1p1f1", + "count": 785515 + }, + { + "value": "r2i1p1f1", + "count": 338452 + }, + { + "value": "r3i1p1f1", + "count": 337241 + }, + { + "value": "r4i1p1f1", + "count": 266168 + }, + { + "value": "r5i1p1f1", + "count": 253905 + }, + { + "value": "r6i1p1f1", + "count": 208449 + }, + { + "value": "r7i1p1f1", + "count": 199007 + }, + { + "value": "r8i1p1f1", + "count": 198535 + }, + { + "value": "r10i1p1f1", + "count": 191966 + }, + { + "value": "r9i1p1f1", + "count": 190197 + } + ] + }, + { + "name": "variable_id", + "value": null, + "buckets": [ + { + "value": "ua", + "count": 133180 + }, + { + "value": "ta", + "count": 132682 + }, + { + "value": "psl", + "count": 118815 + }, + { + "value": "tas", + "count": 116763 + }, + { + "value": "va", + "count": 113666 + }, + { + "value": "pr", + "count": 112164 + }, + { + "value": "zg", + "count": 104113 + }, + { + "value": "rsds", + "count": 100275 + }, + { + "value": "hus", + "count": 98074 + }, + { + "value": "sfcWind", + "count": 92555 + } + ] + }, + { + "name": "grid_label", + "value": null, + "buckets": [ + { + "value": "gn", + "count": 6968543 + }, + { + "value": "gr", + "count": 1842247 + }, + { + "value": "gr1", + "count": 95701 + }, + { + "value": "gnz", + "count": 78496 + }, + { + "value": "gm", + "count": 28534 + }, + { + "value": "grz", + "count": 14193 + }, + { + "value": "gr2z", + "count": 7610 + }, + { + "value": "gr2", + "count": 1248 + }, + { + "value": "gr3", + "count": 423 + }, + { + "value": "gr1z", + "count": 247 + } + ] + }, + { + "name": "activity_id", + "value": null, + "buckets": [ + { + "value": "DCPP", + "count": 3070110 + }, + { + "value": "PAMIP", + "count": 2713909 + }, + { + "value": "ScenarioMIP", + "count": 1018912 + }, + { + "value": "CMIP", + "count": 737124 + }, + { + "value": "DAMIP", + "count": 684411 + }, + { + "value": "AerChemMIP", + "count": 361885 + }, + { + "value": "VolMIP", + "count": 172184 + }, + { + "value": "C4MIP", + "count": 77015 + }, + { + "value": "LUMIP", + "count": 71716 + }, + { + "value": "RFMIP", + "count": 71194 + } + ] + }, + { + "name": "realm", + "value": null, + "buckets": [ + { + "value": "atmos", + "count": 4165646 + }, + { + "value": "land", + "count": 1614486 + }, + { + "value": "ocean", + "count": 1042032 + }, + { + "value": "ocnBgchem", + "count": 873340 + }, + { + "value": "seaIce", + "count": 660954 + }, + { + "value": "aerosol", + "count": 534184 + }, + { + "value": "landIce", + "count": 230101 + }, + { + "value": "atmosChem", + "count": 12956 + }, + { + "value": "ocnBgChem", + "count": 8909 + }, + { + "value": "seaice", + "count": 16 + } + ] + }, + { + "name": "nominal_resolution", + "value": null, + "buckets": [ + { + "value": "100 km", + "count": 3913451 + }, + { + "value": "250 km", + "count": 3218190 + }, + { + "value": "500 km", + "count": 1543029 + }, + { + "value": "1x1 degree", + "count": 266425 + }, + { + "value": "50 km", + "count": 74355 + }, + { + "value": "25 km", + "count": 13550 + }, + { + "value": "200 km", + "count": 5494 + }, + { + "value": "10000 km", + "count": 990 + }, + { + "value": "10 km", + "count": 766 + }, + { + "value": "2x2 degree", + "count": 639 + } + ] + }, + { + "name": "source_id", + "value": null, + "buckets": [ + { + "value": "CanESM5", + "count": 1597459 + }, + { + "value": "IPSL-CM6A-LR", + "count": 1241928 + }, + { + "value": "CESM1-1-CAM5-CMIP5", + "count": 708810 + }, + { + "value": "MIROC6", + "count": 652660 + }, + { + "value": "MRI-ESM2-0", + "count": 474331 + }, + { + "value": "CESM2", + "count": 418116 + }, + { + "value": "MIROC-ES2L", + "count": 409789 + }, + { + "value": "NorESM2-LM", + "count": 388969 + }, + { + "value": "HadGEM3-GC31-MM", + "count": 289237 + }, + { + "value": "CNRM-CM6-1", + "count": 270729 + } + ] + } + ], + "offset": 0, + "count": 1, + "total": 9037273, + "has_next_page": true + }, + "esg_search_response": { + "responseHeader": { + "status": 0, + "QTime": 2410, + "params": { + "df": "text", + "q.alt": "*:*", + "indent": "true", + "echoParams": "all", + "fl": "*,score", + "start": "0", + "fq": [ + "type:Dataset", + "project:\"CMIP6\"" + ], + "rows": "1", + "q": "*", + "shards": "esgf-data-node-solr-query:8983/solr/datasets", + "tie": "0.01", + "facet.limit": "-1", + "qf": "text", + "facet.method": "enum", + "facet.mincount": "1", + "facet": "true", + "wt": "json", + "facet.sort": "lex" + } + }, + "response": { + "numFound": 9037273, + "start": 0, + "maxScore": 1, + "docs": [ + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "northward_ocean_heat_transport" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "geo_units": [ + "degrees_north" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "north_degrees": 89.50723, + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 4686043, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "south_degrees": -78.29248, + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/las|LAS" + ], + "variable": [ + "hfbasin" + ], + "variable_id": [ + "hfbasin" + ], + "variable_long_name": [ + "Northward Ocean Heat Transport" + ], + "variable_units": [ + "W" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3|PID|pid" + ], + "_version_": 1660740810020225000, + "retracted": false, + "_timestamp": "2020-03-10T02:04:16.724Z", + "score": 1 + } + ] + }, + "facet_counts": { + "facet_queries": {}, + "facet_fields": { + "activity_id": [ + "AerChemMIP", + 361885, + "C4MIP", + 77015, + "CDRMIP", + 31226, + "CFMIP", + 60339, + "CMIP", + 737124, + "DAMIP", + 684411, + "DCPP", + 3070110, + "FAFMIP", + 31501, + "GMMIP", + 20671, + "GeoMIP", + 24468, + "HighResMIP", + 39860, + "ISMIP6", + 2719, + "LS3MIP", + 16361, + "LUMIP", + 71716, + "OMIP", + 21867, + "PAMIP", + 2713909, + "PMIP", + 21320, + "RFMIP", + 71194, + "ScenarioMIP", + 1018912, + "VolMIP", + 172184 + ], + "data_node": [ + "cmip.bcc.cma.cn", + 52209, + "cmip.dess.tsinghua.edu.cn", + 1394, + "crd-esgf-drc.ec.gc.ca", + 874438, + "dist.nmlab.snu.ac.kr", + 840, + "dpesgf03.nccs.nasa.gov", + 145103, + "esg.lasg.ac.cn", + 114935, + "esgdata.gfdl.noaa.gov", + 2310, + "esgf-data.ucar.edu", + 750457, + "esgf-data02.diasjp.net", + 376808, + "esgf-data03.diasjp.net", + 147797, + "esgf-data04.diasjp.net", + 63289, + "esgf-data2.diasjp.net", + 539299, + "esgf-nimscmip6.apcc21.org", + 3298, + "esgf-node.ornl.gov", + 5963081, + "lapdat02-p.gfdl.noaa.gov", + 1, + "polaris.pknu.ac.kr", + 2014 + ], + "source_id": [ + "4AOP-v1-5", + 6, + "ACCESS-CM2", + 16841, + "ACCESS-ESM1-5", + 124861, + "ACCESS-OM2", + 280, + "ACCESS-OM2-025", + 95, + "ARTS-2-3", + 8, + "AWI-CM-1-1-HR", + 174, + "AWI-CM-1-1-LR", + 174, + "AWI-CM-1-1-MR", + 69018, + "AWI-ESM-1-1-LR", + 2578, + "BCC-CSM2-HR", + 1291, + "BCC-CSM2-MR", + 89229, + "BCC-ESM1", + 13864, + "CAMS-CSM1-0", + 2236, + "CAS-ESM2-0", + 8646, + "CESM1-1-CAM5-CMIP5", + 708810, + "CESM1-CAM5-SE-HR", + 690, + "CESM1-CAM5-SE-LR", + 754, + "CESM1-WACCM-SC", + 206490, + "CESM2", + 418116, + "CESM2-FV2", + 18820, + "CESM2-WACCM", + 69173, + "CESM2-WACCM-FV2", + 15999, + "CIESM", + 3356, + "CMCC-CM2-HR4", + 1329, + "CMCC-CM2-SR5", + 200596, + "CMCC-CM2-VHR4", + 465, + "CMCC-ESM2", + 8661, + "CMCC-ESM2-SR5", + 400, + "CNRM-CM6-1", + 270729, + "CNRM-CM6-1-HR", + 7353, + "CNRM-ESM2-1", + 53463, + "CanESM5", + 1597459, + "CanESM5-1", + 65572, + "CanESM5-CanOE", + 17084, + "E3SM-1-0", + 45143, + "E3SM-1-1", + 2005, + "E3SM-1-1-ECA", + 1117, + "E3SM-2-0", + 4552, + "EC-Earth3", + 200052, + "EC-Earth3-AerChem", + 9770, + "EC-Earth3-CC", + 24033, + "EC-Earth3-HR", + 9077, + "EC-Earth3-LR", + 981, + "EC-Earth3-Veg", + 19541, + "EC-Earth3-Veg-LR", + 6968, + "EC-Earth3P", + 2145, + "EC-Earth3P-HR", + 2091, + "EC-Earth3P-VHR", + 1, + "ECMWF-IFS-HR", + 699, + "ECMWF-IFS-LR", + 731, + "ECMWF-IFS-MR", + 384, + "FGOALS-f3-H", + 986, + "FGOALS-f3-L", + 160033, + "FGOALS-g3", + 23087, + "FIO-ESM-2-0", + 3263, + "GFDL-AM4", + 182, + "GFDL-CM4", + 8678, + "GFDL-CM4C192", + 452, + "GFDL-ESM2M", + 446, + "GFDL-ESM4", + 16509, + "GFDL-GRTCODE", + 12, + "GFDL-OM4p5B", + 36, + "GFDL-RFM-DISORT", + 4, + "GISS-E2-1-G", + 229629, + "GISS-E2-1-G-CC", + 5425, + "GISS-E2-1-H", + 32546, + "GISS-E2-2-G", + 29742, + "GISS-E2-2-H", + 2831, + "GISS-E3-G", + 941, + "HadGEM3-GC31-HH", + 592, + "HadGEM3-GC31-HM", + 1904, + "HadGEM3-GC31-LL", + 27856, + "HadGEM3-GC31-LM", + 834, + "HadGEM3-GC31-MH", + 113, + "HadGEM3-GC31-MM", + 289237, + "HiRAM-SIT-HR", + 357, + "HiRAM-SIT-LR", + 413, + "ICON-ESM-LR", + 2114, + "IITM-ESM", + 1299, + "INM-CM4-8", + 3275, + "INM-CM5-0", + 6147, + "INM-CM5-H", + 594, + "IPSL-CM5A2-INCA", + 4502, + "IPSL-CM6A-ATM-HR", + 320, + "IPSL-CM6A-ATM-ICO-HR", + 684, + "IPSL-CM6A-ATM-ICO-LR", + 704, + "IPSL-CM6A-ATM-ICO-MR", + 684, + "IPSL-CM6A-ATM-ICO-VHR", + 674, + "IPSL-CM6A-LR", + 1241928, + "IPSL-CM6A-LR-INCA", + 3995, + "KACE-1-0-G", + 6475, + "KIOST-ESM", + 5994, + "LBLRTM-12-8", + 8, + "MCM-UA-1-0", + 750, + "MIROC-ES2H", + 13815, + "MIROC-ES2H-NB", + 3278, + "MIROC-ES2L", + 409789, + "MIROC6", + 652660, + "MPI-ESM-1-2-HAM", + 19866, + "MPI-ESM1-2-HR", + 70919, + "MPI-ESM1-2-LR", + 179640, + "MPI-ESM1-2-XR", + 731, + "MRI-AGCM3-2-H", + 1259, + "MRI-AGCM3-2-S", + 1251, + "MRI-ESM2-0", + 474331, + "NESM3", + 5407, + "NICAM16-7S", + 458, + "NICAM16-8S", + 442, + "NICAM16-9S", + 443, + "NorCPM1", + 228744, + "NorESM1-F", + 534, + "NorESM2-LM", + 388969, + "NorESM2-MM", + 7530, + "RRTMG-LW-4-91", + 2, + "RRTMG-SW-4-02", + 2, + "RTE-RRTMGP-181204", + 4, + "SAM0-UNICON", + 2023, + "TaiESM1", + 50507, + "TaiESM1-TIMCOM", + 86, + "TaiESM1-TIMCOM2", + 66, + "UKESM1-0-LL", + 82876, + "UKESM1-1-LL", + 1124, + "UKESM1-ice-LL", + 352 + ], + "institution_id": [ + "AER", + 12, + "AS-RCEC", + 51277, + "AWI", + 71944, + "BCC", + 104384, + "CAMS", + 2236, + "CAS", + 192752, + "CCCR-IITM", + 1299, + "CCCma", + 1680115, + "CMCC", + 211451, + "CNRM-CERFACS", + 331545, + "CSIRO", + 124861, + "CSIRO-ARCCSS", + 16841, + "CSIRO-COSIMA", + 375, + "DKRZ", + 26953, + "DWD", + 6004, + "E3SM-Project", + 10819, + "EC-Earth-Consortium", + 274659, + "ECMWF", + 1814, + "FIO-QLNM", + 3263, + "HAMMOZ-Consortium", + 19866, + "INM", + 10016, + "IPSL", + 1253497, + "KIOST", + 5994, + "LLNL", + 162, + "MIROC", + 1080885, + "MOHC", + 394108, + "MPI-M", + 220447, + "MRI", + 476841, + "NASA-GISS", + 301114, + "NCAR", + 1438852, + "NCC", + 625777, + "NERC", + 4344, + "NIMS-KMA", + 11640, + "NIWA", + 1271, + "NOAA-GFDL", + 26319, + "NTU", + 152, + "NUIST", + 5407, + "RTE-RRTMGP-Consortium", + 4, + "RUBISCO", + 242, + "SNU", + 2023, + "THU", + 3356, + "UA", + 750, + "UCI", + 39600, + "UCSB", + 1994, + "UHH", + 8 + ], + "source_type": [ + "AER", + 2903539, + "AERM", + 541, + "AGCM", + 2284316, + "AOGCM", + 6720630, + "AOGCM,AER", + 194, + "BGC", + 2661135, + "CHEM", + 767139, + "ISM", + 12465, + "LAND", + 18020, + "OGCM", + 23958, + "RAD", + 5352 + ], + "experiment_id": [ + "1pctCO2", + 51143, + "1pctCO2-4xext", + 554, + "1pctCO2-bgc", + 11763, + "1pctCO2-cdr", + 4186, + "1pctCO2-rad", + 10331, + "1pctCO2Ndep", + 1929, + "1pctCO2Ndep-bgc", + 1928, + "1pctCO2to4x-withism", + 450, + "G1", + 9198, + "G6solar", + 6757, + "G6sulfur", + 7470, + "G7cirrus", + 1043, + "a4SST", + 641, + "a4SSTice", + 641, + "a4SSTice-4xCO2", + 639, + "abrupt-0p5xCO2", + 3514, + "abrupt-2xCO2", + 7571, + "abrupt-4xCO2", + 80257, + "abrupt-solm4p", + 2386, + "abrupt-solp4p", + 2925, + "amip", + 75578, + "amip-4xCO2", + 5365, + "amip-TIP", + 280, + "amip-TIP-nosh", + 272, + "amip-a4SST-4xCO2", + 761, + "amip-future4K", + 4193, + "amip-hist", + 14041, + "amip-hld", + 597, + "amip-lfmip-pObs", + 484, + "amip-lfmip-pdLC", + 3284, + "amip-lfmip-rmLC", + 3405, + "amip-lwoff", + 2212, + "amip-m4K", + 3484, + "amip-p4K", + 6102, + "amip-p4K-lwoff", + 2246, + "amip-piForcing", + 4203, + "aqua-4xCO2", + 2296, + "aqua-control", + 2278, + "aqua-control-lwoff", + 1512, + "aqua-p4K", + 2452, + "aqua-p4K-lwoff", + 1421, + "control-1950", + 4245, + "dcppA-assim", + 20057, + "dcppA-hindcast", + 2739506, + "dcppB-forecast", + 24345, + "dcppC-amv-ExTrop-neg", + 20648, + "dcppC-amv-ExTrop-pos", + 20221, + "dcppC-amv-Trop-neg", + 18135, + "dcppC-amv-Trop-pos", + 20647, + "dcppC-amv-neg", + 30933, + "dcppC-amv-pos", + 33038, + "dcppC-atl-control", + 20659, + "dcppC-atl-pacemaker", + 3820, + "dcppC-atl-spg", + 4874, + "dcppC-forecast-addAgung", + 7460, + "dcppC-forecast-addElChichon", + 7458, + "dcppC-forecast-addPinatubo", + 7460, + "dcppC-hindcast-noAgung", + 12376, + "dcppC-hindcast-noElChichon", + 12380, + "dcppC-hindcast-noPinatubo", + 12380, + "dcppC-ipv-NexTrop-neg", + 11327, + "dcppC-ipv-NexTrop-pos", + 11327, + "dcppC-ipv-neg", + 7663, + "dcppC-ipv-pos", + 8276, + "dcppC-pac-control", + 11300, + "dcppC-pac-pacemaker", + 3820, + "deforest-globe", + 11455, + "esm-1pct-brch-1000PgC", + 7983, + "esm-1pct-brch-2000PgC", + 2563, + "esm-1pct-brch-750PgC", + 1872, + "esm-1pctCO2", + 2236, + "esm-hist", + 34350, + "esm-pi-CO2pulse", + 5055, + "esm-pi-cdr-pulse", + 5049, + "esm-piControl", + 11355, + "esm-piControl-spinup", + 279, + "esm-sp585", + 265, + "esm-sp585-bgc", + 265, + "esm-ssp534-over", + 2758, + "esm-ssp585", + 18887, + "esm-ssp585-ocn-alk", + 356, + "esm-ssp585-ocn-alk-stop", + 356, + "esm-ssp585-ssp126Lu", + 6999, + "esm-ssp585ext", + 351, + "faf-all", + 5019, + "faf-antwater-stress", + 720, + "faf-heat", + 4697, + "faf-heat-NA0pct", + 2615, + "faf-heat-NA50pct", + 3757, + "faf-passiveheat", + 4447, + "faf-stress", + 5135, + "faf-water", + 5111, + "futSST-pdSIC", + 192678, + "highres-future", + 5195, + "highresSST-future", + 8302, + "highresSST-present", + 13071, + "hist-1950", + 8139, + "hist-1950HC", + 11492, + "hist-CO2", + 10428, + "hist-GHG", + 62389, + "hist-GHG-cmip5", + 1500, + "hist-aer", + 51336, + "hist-aer-cmip5", + 1420, + "hist-bgc", + 7517, + "hist-nat", + 73393, + "hist-nat-cmip5", + 1500, + "hist-noLu", + 16261, + "hist-piAer", + 12860, + "hist-piNTCF", + 13199, + "hist-resAMO", + 2296, + "hist-resIPO", + 3185, + "hist-sol", + 44804, + "hist-spAer-all", + 1581, + "hist-stratO3", + 21640, + "hist-totalO3", + 6505, + "hist-volc", + 37299, + "histSST", + 5054, + "histSST-1950HC", + 2778, + "histSST-noLu", + 1212, + "histSST-piAer", + 3476, + "histSST-piCH4", + 2727, + "histSST-piN2O", + 1993, + "histSST-piNTCF", + 4486, + "histSST-piO3", + 2182, + "historical", + 422708, + "historical-cmip5", + 1920, + "historical-ext", + 5130, + "historical-withism", + 470, + "land-cCO2", + 870, + "land-cClim", + 941, + "land-crop-grass", + 312, + "land-crop-noFert", + 696, + "land-crop-noIrrig", + 348, + "land-crop-noIrrigFert", + 348, + "land-hist", + 5151, + "land-hist-altLu1", + 122, + "land-hist-altLu2", + 122, + "land-hist-altStartYear", + 974, + "land-hist-cruNcep", + 1560, + "land-hist-princeton", + 1538, + "land-hist-wfdei", + 674, + "land-noFire", + 468, + "land-noLu", + 1228, + "land-noShiftCultivate", + 230, + "land-noWoodHarv", + 440, + "lfmip-pdLC", + 583, + "lfmip-rmLC", + 584, + "lgm", + 2338, + "lig127k", + 5412, + "midHolocene", + 8773, + "midPliocene-eoi400", + 1606, + "modelSST-futArcSIC", + 43095, + "modelSST-pdSIC", + 43100, + "omip1", + 9873, + "omip1-spunup", + 3390, + "omip2", + 8468, + "omip2-spunup", + 136, + "pa-futAntSIC", + 15600, + "pa-futArcSIC", + 143290, + "pa-futArcSIC-ext", + 1725, + "pa-pdSIC", + 143159, + "pa-pdSIC-ext", + 1726, + "pa-piAntSIC", + 15600, + "pa-piArcSIC", + 92502, + "past1000", + 2574, + "past2k", + 617, + "pdSST-futAntSIC", + 174507, + "pdSST-futArcSIC", + 379797, + "pdSST-futArcSICSIT", + 21740, + "pdSST-futBKSeasSIC", + 135424, + "pdSST-futOkhotskSIC", + 144275, + "pdSST-pdSIC", + 367440, + "pdSST-pdSICSIT", + 21738, + "pdSST-piAntSIC", + 174697, + "pdSST-piArcSIC", + 246256, + "piClim-2xDMS", + 2304, + "piClim-2xNOx", + 1799, + "piClim-2xVOC", + 2527, + "piClim-2xdust", + 3312, + "piClim-2xfire", + 2199, + "piClim-2xss", + 3037, + "piClim-4xCO2", + 5296, + "piClim-BC", + 4584, + "piClim-CH4", + 4311, + "piClim-HC", + 3448, + "piClim-N2O", + 3369, + "piClim-NH3", + 820, + "piClim-NOx", + 2637, + "piClim-NTCF", + 5029, + "piClim-O3", + 2693, + "piClim-OC", + 4386, + "piClim-SO2", + 4597, + "piClim-VOC", + 2641, + "piClim-aer", + 7767, + "piClim-anthro", + 5942, + "piClim-control", + 10118, + "piClim-ghg", + 4855, + "piClim-histaer", + 7280, + "piClim-histall", + 7568, + "piClim-histghg", + 6036, + "piClim-histnat", + 6617, + "piClim-lu", + 4598, + "piClim-spAer-aer", + 1837, + "piClim-spAer-anthro", + 2560, + "piClim-spAer-histaer", + 287, + "piClim-spAer-histall", + 159, + "piControl", + 53951, + "piControl-cmip5", + 292, + "piControl-spinup", + 671, + "piControl-withism", + 452, + "piSST", + 649, + "piSST-4xCO2", + 639, + "piSST-4xCO2-rad", + 676, + "piSST-pdSIC", + 202040, + "piSST-piSIC", + 153520, + "piSST-pxK", + 1024, + "rad-irf", + 122, + "rcp26-cmip5", + 2430, + "rcp45-cmip5", + 2430, + "rcp85-cmip5", + 2430, + "spinup-1950", + 908, + "ssp119", + 101881, + "ssp126", + 179238, + "ssp126-ssp370Lu", + 11622, + "ssp245", + 261745, + "ssp245-GHG", + 30973, + "ssp245-aer", + 21347, + "ssp245-cov-GHG", + 3800, + "ssp245-cov-aer", + 3800, + "ssp245-cov-fossil", + 62570, + "ssp245-cov-modgreen", + 59062, + "ssp245-cov-strgreen", + 63300, + "ssp245-covid", + 84067, + "ssp245-nat", + 31192, + "ssp245-stratO3", + 12086, + "ssp370", + 194201, + "ssp370-lowNTCF", + 26464, + "ssp370-lowNTCFCH4", + 6661, + "ssp370-ssp126Lu", + 13600, + "ssp370SST", + 4915, + "ssp370SST-lowAer", + 2858, + "ssp370SST-lowBC", + 2841, + "ssp370SST-lowCH4", + 1744, + "ssp370SST-lowNTCF", + 3388, + "ssp370SST-lowNTCFCH4", + 1958, + "ssp370SST-lowO3", + 1438, + "ssp370SST-ssp126Lu", + 1856, + "ssp370pdSST", + 2634, + "ssp434", + 19582, + "ssp460", + 21990, + "ssp534-over", + 36222, + "ssp534-over-bgc", + 3424, + "ssp585", + 198144, + "ssp585-bgc", + 6052, + "ssp585-withism", + 792, + "volc-long-eq", + 24029, + "volc-pinatubo-full", + 82745, + "volc-pinatubo-strat", + 28975, + "volc-pinatubo-surf", + 28975 + ], + "sub_experiment_id": [ + "none", + 6201394, + "s1920", + 7640, + "s1960", + 45398, + "s19601101", + 77, + "s1961", + 46607, + "s1962", + 59615, + "s1963", + 47264, + "s1964", + 46859, + "s19641101", + 125, + "s1965", + 47160, + "s1966", + 47098, + "s1967", + 46804, + "s1968", + 46642, + "s19681101", + 47, + "s1969", + 46800, + "s1970", + 46904, + "s1971", + 47751, + "s1972", + 47606, + "s19721101", + 83, + "s1973", + 47794, + "s1974", + 47744, + "s1975", + 47852, + "s1976", + 47572, + "s19761101", + 73, + "s1977", + 47578, + "s1978", + 47583, + "s1979", + 47548, + "s1980", + 47877, + "s1981", + 60502, + "s1982", + 48159, + "s1983", + 48077, + "s1984", + 47840, + "s1985", + 47999, + "s1986", + 48077, + "s1987", + 48129, + "s1988", + 47842, + "s1989", + 47978, + "s1990", + 60479, + "s1991", + 48298, + "s1992", + 48446, + "s1993", + 49561, + "s1994", + 49549, + "s1995", + 48500, + "s1996", + 46134, + "s1997", + 45111, + "s1998", + 45128, + "s1999", + 45124, + "s2000", + 45822, + "s2001", + 48227, + "s2002", + 48302, + "s2003", + 48314, + "s2004", + 48251, + "s2005", + 47359, + "s2006", + 45372, + "s2007", + 44192, + "s2008", + 44212, + "s20081101", + 1, + "s2009", + 44206, + "s2010", + 44192, + "s2011", + 44209, + "s2012", + 44207, + "s2013", + 44063, + "s2014", + 65501, + "s2015", + 41770, + "s2016", + 41776, + "s2017", + 34264, + "s2018", + 24541, + "s2019", + 19257, + "s2020", + 12811, + "s2021", + 11996 + ], + "nominal_resolution": [ + "10 km", + 766, + "100 km", + 3913451, + "10000 km", + 990, + "100km", + 384, + "1x1 degree", + 266425, + "200 km", + 5494, + "25 km", + 13550, + "250 km", + 3218190, + "2x2 degree", + 639, + "50 km", + 74355, + "500 km", + 1543029 + ], + "variant_label": [ + "r100i1p1f1", + 13602, + "r100i1p1f2", + 1747, + "r100i1p2f1", + 2890, + "r100i2p1f2", + 86, + "r101i1p1f1", + 13853, + "r101i1p1f2", + 1173, + "r101i1p2f1", + 432, + "r101i2p1f2", + 86, + "r102i1p1f1", + 11224, + "r102i1p1f2", + 1170, + "r102i1p2f1", + 432, + "r102i2p1f2", + 86, + "r103i1p1f1", + 8114, + "r103i1p1f2", + 1173, + "r103i1p2f1", + 432, + "r103i2p1f2", + 86, + "r104i1p1f1", + 7425, + "r104i1p1f2", + 1173, + "r104i1p2f1", + 432, + "r104i2p1f2", + 86, + "r105i1p1f1", + 7425, + "r105i1p1f2", + 1173, + "r105i1p2f1", + 432, + "r105i2p1f2", + 86, + "r106i1p1f1", + 6334, + "r106i1p1f2", + 1173, + "r106i1p2f1", + 432, + "r106i2p1f2", + 86, + "r107i1p1f1", + 6400, + "r107i1p1f2", + 1173, + "r107i1p2f1", + 432, + "r107i2p1f2", + 86, + "r108i1p1f1", + 6401, + "r108i1p1f2", + 1173, + "r108i1p2f1", + 432, + "r108i2p1f2", + 86, + "r109i1p1f1", + 6400, + "r109i1p1f2", + 1173, + "r109i1p2f1", + 432, + "r109i2p1f2", + 86, + "r10i1p1f1", + 191966, + "r10i1p1f2", + 27839, + "r10i1p1f242", + 4344, + "r10i1p1f3", + 595, + "r10i1p1f99", + 2340, + "r10i1p2f1", + 56793, + "r10i1p3f1", + 539, + "r10i1p5f1", + 1551, + "r10i1p5f2", + 1162, + "r10i2p1f1", + 16505, + "r10i2p1f2", + 86, + "r10i2p2f1", + 100, + "r10i3p2f1", + 488, + "r10i4p1f1", + 2, + "r110i1p1f1", + 6400, + "r110i1p1f2", + 1173, + "r110i1p2f1", + 432, + "r110i2p1f2", + 86, + "r111i1p1f1", + 6331, + "r111i1p1f2", + 1173, + "r111i1p2f1", + 432, + "r111i2p1f2", + 86, + "r112i1p1f1", + 6398, + "r112i1p1f2", + 1172, + "r112i1p2f1", + 432, + "r112i2p1f2", + 86, + "r113i1p1f1", + 6401, + "r113i1p1f2", + 1173, + "r113i1p2f1", + 432, + "r113i2p1f2", + 86, + "r114i1p1f1", + 6401, + "r114i1p1f2", + 1173, + "r114i1p2f1", + 432, + "r114i2p1f2", + 86, + "r115i1p1f1", + 6401, + "r115i1p1f2", + 1172, + "r115i1p2f1", + 432, + "r115i2p1f2", + 86, + "r116i1p1f1", + 6335, + "r116i1p1f2", + 1173, + "r116i1p2f1", + 432, + "r116i2p1f2", + 86, + "r117i1p1f1", + 6400, + "r117i1p1f2", + 1173, + "r117i1p2f1", + 432, + "r117i2p1f2", + 86, + "r118i1p1f1", + 6391, + "r118i1p1f2", + 1174, + "r118i1p2f1", + 431, + "r118i2p1f2", + 86, + "r119i1p1f1", + 6365, + "r119i1p1f2", + 1173, + "r119i1p2f1", + 432, + "r119i2p1f2", + 86, + "r11i1p1f1", + 74163, + "r11i1p1f2", + 13434, + "r11i1p1f242", + 4344, + "r11i1p1f3", + 84, + "r11i1p2f1", + 32153, + "r11i2p1f1", + 169, + "r11i2p1f2", + 86, + "r11i2p2f1", + 100, + "r120i1p1f1", + 6398, + "r120i1p1f2", + 1173, + "r120i1p2f1", + 432, + "r120i2p1f2", + 86, + "r121i1p1f1", + 6330, + "r121i1p1f2", + 1173, + "r121i1p2f1", + 432, + "r121i2p1f2", + 86, + "r122i1p1f1", + 6400, + "r122i1p1f2", + 1173, + "r122i1p2f1", + 432, + "r122i2p1f2", + 86, + "r123i1p1f1", + 6391, + "r123i1p1f2", + 1173, + "r123i1p2f1", + 432, + "r123i2p1f2", + 86, + "r124i1p1f1", + 6400, + "r124i1p1f2", + 1173, + "r124i1p2f1", + 432, + "r124i2p1f2", + 86, + "r125i1p1f1", + 6401, + "r125i1p1f2", + 1173, + "r125i1p2f1", + 432, + "r125i2p1f2", + 86, + "r126i1p1f1", + 6306, + "r126i1p1f2", + 1173, + "r126i1p2f1", + 432, + "r126i2p1f2", + 86, + "r127i1p1f1", + 6401, + "r127i1p1f2", + 1170, + "r127i1p2f1", + 432, + "r127i2p1f2", + 86, + "r128i1p1f1", + 6401, + "r128i1p1f2", + 1173, + "r128i1p2f1", + 432, + "r128i2p1f2", + 86, + "r129i1p1f1", + 6403, + "r129i1p1f2", + 1170, + "r129i1p2f1", + 432, + "r129i2p1f2", + 86, + "r12i1p1f1", + 64738, + "r12i1p1f2", + 13534, + "r12i1p1f242", + 4344, + "r12i1p1f3", + 84, + "r12i1p2f1", + 31792, + "r12i2p1f1", + 169, + "r12i2p1f2", + 86, + "r12i2p2f1", + 100, + "r130i1p1f1", + 6405, + "r130i1p1f2", + 1173, + "r130i1p2f1", + 432, + "r130i2p1f2", + 86, + "r131i1p1f1", + 6187, + "r131i1p1f2", + 1170, + "r131i1p2f1", + 432, + "r131i2p1f2", + 86, + "r132i1p1f1", + 6390, + "r132i1p1f2", + 1173, + "r132i1p2f1", + 432, + "r132i2p1f2", + 86, + "r133i1p1f1", + 6389, + "r133i1p1f2", + 1169, + "r133i1p2f1", + 432, + "r133i2p1f2", + 86, + "r134i1p1f1", + 6390, + "r134i1p1f2", + 1173, + "r134i1p2f1", + 432, + "r134i2p1f2", + 86, + "r135i1p1f1", + 6389, + "r135i1p1f2", + 1170, + "r135i1p2f1", + 432, + "r135i2p1f2", + 86, + "r136i1p1f1", + 6321, + "r136i1p1f2", + 1173, + "r136i1p2f1", + 432, + "r136i2p1f2", + 86, + "r137i1p1f1", + 6390, + "r137i1p1f2", + 1138, + "r137i1p2f1", + 432, + "r137i2p1f2", + 86, + "r138i1p1f1", + 6390, + "r138i1p1f2", + 1173, + "r138i1p2f1", + 432, + "r138i2p1f2", + 86, + "r139i1p1f1", + 6397, + "r139i1p1f2", + 1169, + "r139i1p2f1", + 432, + "r139i2p1f2", + 86, + "r13i1p1f1", + 63818, + "r13i1p1f2", + 13297, + "r13i1p1f242", + 4344, + "r13i1p1f3", + 84, + "r13i1p2f1", + 31810, + "r13i2p1f1", + 169, + "r13i2p1f2", + 86, + "r13i2p2f1", + 100, + "r140i1p1f1", + 6400, + "r140i1p1f2", + 1174, + "r140i1p2f1", + 432, + "r140i2p1f2", + 86, + "r141i1p1f1", + 6334, + "r141i1p1f2", + 1171, + "r141i1p2f1", + 432, + "r141i2p1f2", + 86, + "r142i1p1f1", + 6400, + "r142i1p1f2", + 1173, + "r142i1p2f1", + 432, + "r142i2p1f2", + 86, + "r143i1p1f1", + 6398, + "r143i1p1f2", + 1170, + "r143i1p2f1", + 432, + "r143i2p1f2", + 86, + "r144i1p1f1", + 6398, + "r144i1p1f2", + 1173, + "r144i1p2f1", + 432, + "r144i2p1f2", + 86, + "r145i1p1f1", + 6374, + "r145i1p1f2", + 1170, + "r145i1p2f1", + 432, + "r145i2p1f2", + 86, + "r146i1p1f1", + 6300, + "r146i1p1f2", + 1173, + "r146i1p2f1", + 432, + "r146i2p1f2", + 86, + "r147i1p1f1", + 6366, + "r147i1p1f2", + 1170, + "r147i1p2f1", + 432, + "r147i2p1f2", + 43, + "r148i1p1f1", + 6246, + "r148i1p1f2", + 1157, + "r148i1p2f1", + 430, + "r148i2p1f2", + 86, + "r149i1p1f1", + 6300, + "r149i1p1f2", + 1166, + "r149i1p2f1", + 432, + "r149i2p1f2", + 86, + "r14i1p1f1", + 65425, + "r14i1p1f2", + 12395, + "r14i1p1f242", + 4344, + "r14i1p1f3", + 84, + "r14i1p2f1", + 31802, + "r14i2p1f1", + 169, + "r14i2p1f2", + 86, + "r14i2p2f1", + 100, + "r150i1p1f1", + 6298, + "r150i1p1f2", + 1173, + "r150i1p2f1", + 432, + "r150i2p1f2", + 86, + "r151i1p1f1", + 5660, + "r151i1p1f2", + 255, + "r151i1p2f1", + 432, + "r151i2p1f2", + 661, + "r152i1p1f1", + 5737, + "r152i1p1f2", + 258, + "r152i1p2f1", + 432, + "r152i2p1f2", + 664, + "r153i1p1f1", + 5767, + "r153i1p1f2", + 255, + "r153i1p2f1", + 432, + "r153i2p1f2", + 660, + "r154i1p1f1", + 5767, + "r154i1p1f2", + 258, + "r154i1p2f1", + 432, + "r154i2p1f2", + 662, + "r155i1p1f1", + 5767, + "r155i1p1f2", + 255, + "r155i1p2f1", + 432, + "r155i2p1f2", + 661, + "r156i1p1f1", + 5621, + "r156i1p1f2", + 258, + "r156i1p2f1", + 432, + "r156i2p1f2", + 660, + "r157i1p1f1", + 5594, + "r157i1p1f2", + 255, + "r157i1p2f1", + 432, + "r157i2p1f2", + 661, + "r158i1p1f1", + 5687, + "r158i1p1f2", + 258, + "r158i1p2f1", + 432, + "r158i2p1f2", + 660, + "r159i1p1f1", + 5633, + "r159i1p1f2", + 255, + "r159i1p2f1", + 432, + "r159i2p1f2", + 660, + "r15i1p1f1", + 60986, + "r15i1p1f2", + 13212, + "r15i1p1f242", + 4344, + "r15i1p1f3", + 84, + "r15i1p2f1", + 31775, + "r15i2p1f1", + 169, + "r15i2p1f2", + 86, + "r15i2p2f1", + 100, + "r160i1p1f1", + 5687, + "r160i1p1f2", + 258, + "r160i1p2f1", + 432, + "r160i2p1f2", + 660, + "r161i1p1f1", + 5621, + "r161i1p1f2", + 255, + "r161i1p2f1", + 432, + "r161i2p1f2", + 660, + "r162i1p1f1", + 5687, + "r162i1p1f2", + 258, + "r162i1p2f1", + 432, + "r162i2p1f2", + 660, + "r163i1p1f1", + 5686, + "r163i1p1f2", + 255, + "r163i1p2f1", + 432, + "r163i2p1f2", + 660, + "r164i1p1f1", + 5683, + "r164i1p1f2", + 258, + "r164i1p2f1", + 432, + "r164i2p1f2", + 660, + "r165i1p1f1", + 5687, + "r165i1p1f2", + 255, + "r165i1p2f1", + 432, + "r165i2p1f2", + 660, + "r166i1p1f1", + 5621, + "r166i1p1f2", + 258, + "r166i1p2f1", + 432, + "r166i2p1f2", + 660, + "r167i1p1f1", + 5687, + "r167i1p1f2", + 255, + "r167i1p2f1", + 432, + "r167i2p1f2", + 661, + "r168i1p1f1", + 5687, + "r168i1p1f2", + 258, + "r168i1p2f1", + 432, + "r168i2p1f2", + 660, + "r169i1p1f1", + 5687, + "r169i1p1f2", + 255, + "r169i1p2f1", + 432, + "r169i2p1f2", + 660, + "r16i1p1f1", + 60640, + "r16i1p1f2", + 14102, + "r16i1p1f242", + 4344, + "r16i1p1f3", + 84, + "r16i1p2f1", + 31449, + "r16i2p1f1", + 169, + "r16i2p1f2", + 86, + "r16i2p2f1", + 100, + "r170i1p1f1", + 5686, + "r170i1p1f2", + 258, + "r170i1p2f1", + 432, + "r170i2p1f2", + 661, + "r171i1p1f1", + 5621, + "r171i1p1f2", + 255, + "r171i1p2f1", + 432, + "r171i2p1f2", + 660, + "r172i1p1f1", + 5687, + "r172i1p1f2", + 258, + "r172i1p2f1", + 432, + "r172i2p1f2", + 661, + "r173i1p1f1", + 5641, + "r173i1p1f2", + 255, + "r173i1p2f1", + 432, + "r173i2p1f2", + 660, + "r174i1p1f1", + 5649, + "r174i1p1f2", + 258, + "r174i1p2f1", + 432, + "r174i2p1f2", + 660, + "r175i1p1f1", + 5626, + "r175i1p1f2", + 255, + "r175i1p2f1", + 432, + "r175i2p1f2", + 660, + "r176i1p1f1", + 5501, + "r176i1p1f2", + 258, + "r176i1p2f1", + 432, + "r176i2p1f2", + 660, + "r177i1p1f1", + 5567, + "r177i1p1f2", + 255, + "r177i1p2f1", + 432, + "r177i2p1f2", + 661, + "r178i1p1f1", + 5567, + "r178i1p1f2", + 258, + "r178i1p2f1", + 432, + "r178i2p1f2", + 660, + "r179i1p1f1", + 5567, + "r179i1p1f2", + 255, + "r179i1p2f1", + 432, + "r179i2p1f2", + 660, + "r17i1p1f1", + 62974, + "r17i1p1f2", + 13418, + "r17i1p1f242", + 4344, + "r17i1p1f3", + 84, + "r17i1p2f1", + 31466, + "r17i2p1f1", + 169, + "r17i2p1f2", + 86, + "r17i2p2f1", + 100, + "r180i1p1f1", + 5567, + "r180i1p1f2", + 258, + "r180i1p2f1", + 432, + "r180i2p1f2", + 660, + "r181i1p1f1", + 5501, + "r181i1p1f2", + 255, + "r181i1p2f1", + 432, + "r181i2p1f2", + 661, + "r182i1p1f1", + 5567, + "r182i1p1f2", + 258, + "r182i1p2f1", + 432, + "r182i2p1f2", + 660, + "r183i1p1f1", + 5567, + "r183i1p1f2", + 255, + "r183i1p2f1", + 431, + "r183i2p1f2", + 660, + "r184i1p1f1", + 5567, + "r184i1p1f2", + 258, + "r184i1p2f1", + 432, + "r184i2p1f2", + 660, + "r185i1p1f1", + 5502, + "r185i1p1f2", + 255, + "r185i1p2f1", + 432, + "r185i2p1f2", + 660, + "r186i1p1f1", + 5311, + "r186i1p1f2", + 258, + "r186i1p2f1", + 432, + "r186i2p1f2", + 660, + "r187i1p1f1", + 5377, + "r187i1p1f2", + 255, + "r187i1p2f1", + 432, + "r187i2p1f2", + 660, + "r188i1p1f1", + 5377, + "r188i1p1f2", + 258, + "r188i1p2f1", + 432, + "r188i2p1f2", + 660, + "r189i1p1f1", + 5377, + "r189i1p1f2", + 255, + "r189i1p2f1", + 432, + "r189i2p1f2", + 660, + "r18i1p1f1", + 62761, + "r18i1p1f2", + 13553, + "r18i1p1f242", + 4344, + "r18i1p1f3", + 84, + "r18i1p2f1", + 31466, + "r18i2p1f1", + 169, + "r18i2p1f2", + 86, + "r18i2p2f1", + 100, + "r190i1p1f1", + 5377, + "r190i1p1f2", + 258, + "r190i1p2f1", + 432, + "r190i2p1f2", + 660, + "r191i1p1f1", + 5235, + "r191i1p1f2", + 255, + "r191i1p2f1", + 432, + "r191i2p1f2", + 660, + "r192i1p1f1", + 5377, + "r192i1p1f2", + 258, + "r192i1p2f1", + 432, + "r192i2p1f2", + 660, + "r193i1p1f1", + 5377, + "r193i1p1f2", + 254, + "r193i1p2f1", + 432, + "r193i2p1f2", + 660, + "r194i1p1f1", + 5377, + "r194i1p1f2", + 258, + "r194i1p2f1", + 432, + "r194i2p1f2", + 660, + "r195i1p1f1", + 5377, + "r195i1p1f2", + 255, + "r195i1p2f1", + 432, + "r195i2p1f2", + 660, + "r196i1p1f1", + 5310, + "r196i1p1f2", + 258, + "r196i1p2f1", + 432, + "r196i2p1f2", + 662, + "r197i1p1f1", + 5377, + "r197i1p1f2", + 255, + "r197i1p2f1", + 432, + "r197i2p1f2", + 660, + "r198i1p1f1", + 5377, + "r198i1p1f2", + 258, + "r198i1p2f1", + 432, + "r198i2p1f2", + 660, + "r199i1p1f1", + 5377, + "r199i1p1f2", + 255, + "r199i1p2f1", + 432, + "r199i2p1f2", + 649, + "r19i1p1f1", + 62778, + "r19i1p1f2", + 14010, + "r19i1p1f242", + 4344, + "r19i1p1f3", + 84, + "r19i1p2f1", + 31417, + "r19i2p1f1", + 169, + "r19i2p1f2", + 86, + "r19i2p2f1", + 97, + "r1i1000p1f1", + 1173, + "r1i1000p1f2", + 1304, + "r1i10p1f1", + 332, + "r1i14p1f1", + 113, + "r1i15p1f1", + 113, + "r1i1p11f1", + 242, + "r1i1p1f1", + 785515, + "r1i1p1f11", + 597, + "r1i1p1f2", + 164574, + "r1i1p1f242", + 4344, + "r1i1p1f3", + 14587, + "r1i1p1f4", + 5973, + "r1i1p1f99", + 2340, + "r1i1p2f1", + 108565, + "r1i1p2f2", + 612, + "r1i1p2f3", + 4, + "r1i1p3f1", + 43353, + "r1i1p3f2", + 2641, + "r1i1p3f3", + 4, + "r1i1p4f1", + 894, + "r1i1p4f2", + 5241, + "r1i1p5f1", + 9086, + "r1i1p5f2", + 1162, + "r1i2000p1f1", + 620, + "r1i2p1f1", + 43687, + "r1i2p1f2", + 86, + "r1i2p2f1", + 5659, + "r1i3p1f1", + 6827, + "r1i3p2f1", + 488, + "r1i4p1f1", + 4955, + "r1i5p1f1", + 500, + "r1i6p1f1", + 499, + "r1i7p1f1", + 497, + "r1i8p1f1", + 497, + "r1i9p1f1", + 332, + "r200i1p1f1", + 5393, + "r200i1p1f2", + 258, + "r200i1p2f1", + 432, + "r200i2p1f2", + 639, + "r201i1p1f1", + 396, + "r201i1p1f2", + 255, + "r201i1p2f1", + 432, + "r201i2p1f2", + 555, + "r202i1p1f1", + 396, + "r202i1p1f2", + 258, + "r202i1p2f1", + 432, + "r202i2p1f2", + 553, + "r203i1p1f1", + 396, + "r203i1p1f2", + 255, + "r203i1p2f1", + 432, + "r203i2p1f2", + 553, + "r204i1p1f1", + 396, + "r204i1p1f2", + 258, + "r204i1p2f1", + 432, + "r204i2p1f2", + 553, + "r205i1p1f1", + 396, + "r205i1p1f2", + 255, + "r205i1p2f1", + 432, + "r205i2p1f2", + 553, + "r206i1p1f1", + 396, + "r206i1p1f2", + 258, + "r206i1p2f1", + 432, + "r206i2p1f2", + 553, + "r207i1p1f1", + 396, + "r207i1p1f2", + 255, + "r207i1p2f1", + 432, + "r207i2p1f2", + 553, + "r208i1p1f1", + 396, + "r208i1p1f2", + 258, + "r208i1p2f1", + 432, + "r208i2p1f2", + 554, + "r209i1p1f1", + 396, + "r209i1p1f2", + 255, + "r209i1p2f1", + 432, + "r209i2p1f2", + 553, + "r20i1p1f1", + 62865, + "r20i1p1f2", + 12038, + "r20i1p1f242", + 4344, + "r20i1p1f3", + 84, + "r20i1p2f1", + 31351, + "r20i2p1f1", + 169, + "r20i2p1f2", + 86, + "r20i2p2f1", + 100, + "r210i1p1f1", + 396, + "r210i1p1f2", + 258, + "r210i1p2f1", + 432, + "r210i2p1f2", + 552, + "r211i1p1f1", + 396, + "r211i1p1f2", + 255, + "r211i1p2f1", + 432, + "r211i2p1f2", + 554, + "r212i1p1f1", + 396, + "r212i1p1f2", + 258, + "r212i1p2f1", + 432, + "r212i2p1f2", + 553, + "r213i1p1f1", + 396, + "r213i1p1f2", + 255, + "r213i1p2f1", + 432, + "r213i2p1f2", + 553, + "r214i1p1f1", + 396, + "r214i1p1f2", + 258, + "r214i1p2f1", + 432, + "r214i2p1f2", + 553, + "r215i1p1f1", + 396, + "r215i1p1f2", + 255, + "r215i1p2f1", + 432, + "r215i2p1f2", + 554, + "r216i1p1f1", + 396, + "r216i1p1f2", + 258, + "r216i1p2f1", + 432, + "r216i2p1f2", + 555, + "r217i1p1f1", + 396, + "r217i1p1f2", + 255, + "r217i1p2f1", + 432, + "r217i2p1f2", + 555, + "r218i1p1f1", + 396, + "r218i1p1f2", + 258, + "r218i1p2f1", + 432, + "r218i2p1f2", + 557, + "r219i1p1f1", + 396, + "r219i1p1f2", + 255, + "r219i1p2f1", + 432, + "r219i2p1f2", + 555, + "r21i1p1f1", + 50699, + "r21i1p1f2", + 11576, + "r21i1p1f242", + 4344, + "r21i1p1f3", + 84, + "r21i1p2f1", + 11273, + "r21i2p1f1", + 169, + "r21i2p1f2", + 86, + "r220i1p1f1", + 396, + "r220i1p1f2", + 258, + "r220i1p2f1", + 432, + "r220i2p1f2", + 555, + "r221i1p1f1", + 396, + "r221i1p1f2", + 255, + "r221i1p2f1", + 432, + "r221i2p1f2", + 560, + "r222i1p1f1", + 396, + "r222i1p1f2", + 258, + "r222i1p2f1", + 432, + "r222i2p1f2", + 576, + "r223i1p1f1", + 396, + "r223i1p1f2", + 255, + "r223i1p2f1", + 432, + "r223i2p1f2", + 576, + "r224i1p1f1", + 396, + "r224i1p1f2", + 258, + "r224i1p2f1", + 432, + "r224i2p1f2", + 576, + "r225i1p1f1", + 396, + "r225i1p1f2", + 255, + "r225i1p2f1", + 432, + "r225i2p1f2", + 576, + "r226i1p1f1", + 396, + "r226i1p1f2", + 258, + "r226i1p2f1", + 432, + "r226i2p1f2", + 576, + "r227i1p1f1", + 396, + "r227i1p1f2", + 255, + "r227i1p2f1", + 432, + "r227i2p1f2", + 576, + "r228i1p1f1", + 396, + "r228i1p1f2", + 258, + "r228i1p2f1", + 432, + "r228i2p1f2", + 576, + "r229i1p1f1", + 396, + "r229i1p1f2", + 255, + "r229i1p2f1", + 432, + "r229i2p1f2", + 576, + "r22i1p1f1", + 52314, + "r22i1p1f2", + 12181, + "r22i1p1f242", + 4344, + "r22i1p1f3", + 84, + "r22i1p2f1", + 11269, + "r22i2p1f1", + 169, + "r22i2p1f2", + 86, + "r230i1p1f1", + 396, + "r230i1p1f2", + 258, + "r230i1p2f1", + 432, + "r230i2p1f2", + 577, + "r231i1p1f1", + 396, + "r231i1p1f2", + 255, + "r231i1p2f1", + 432, + "r231i2p1f2", + 578, + "r232i1p1f1", + 396, + "r232i1p1f2", + 258, + "r232i1p2f1", + 432, + "r232i2p1f2", + 578, + "r233i1p1f1", + 396, + "r233i1p1f2", + 255, + "r233i1p2f1", + 432, + "r233i2p1f2", + 578, + "r234i1p1f1", + 396, + "r234i1p1f2", + 258, + "r234i1p2f1", + 432, + "r234i2p1f2", + 578, + "r235i1p1f1", + 396, + "r235i1p1f2", + 255, + "r235i1p2f1", + 432, + "r235i2p1f2", + 579, + "r236i1p1f1", + 396, + "r236i1p1f2", + 258, + "r236i1p2f1", + 432, + "r236i2p1f2", + 579, + "r237i1p1f1", + 396, + "r237i1p1f2", + 255, + "r237i1p2f1", + 432, + "r237i2p1f2", + 579, + "r238i1p1f1", + 396, + "r238i1p1f2", + 258, + "r238i1p2f1", + 432, + "r238i2p1f2", + 580, + "r239i1p1f1", + 396, + "r239i1p1f2", + 255, + "r239i1p2f1", + 432, + "r239i2p1f2", + 580, + "r23i1p1f1", + 50445, + "r23i1p1f2", + 11372, + "r23i1p1f242", + 4344, + "r23i1p1f3", + 84, + "r23i1p2f1", + 11254, + "r23i2p1f1", + 169, + "r23i2p1f2", + 86, + "r240i1p1f1", + 396, + "r240i1p1f2", + 258, + "r240i1p2f1", + 432, + "r240i2p1f2", + 580, + "r241i1p1f1", + 396, + "r241i1p1f2", + 255, + "r241i1p2f1", + 432, + "r241i2p1f2", + 581, + "r242i1p1f1", + 396, + "r242i1p1f2", + 258, + "r242i1p2f1", + 432, + "r242i2p1f2", + 580, + "r243i1p1f1", + 396, + "r243i1p1f2", + 255, + "r243i1p2f1", + 432, + "r243i2p1f2", + 580, + "r244i1p1f1", + 396, + "r244i1p1f2", + 258, + "r244i1p2f1", + 432, + "r244i2p1f2", + 580, + "r245i1p1f1", + 396, + "r245i1p1f2", + 255, + "r245i1p2f1", + 432, + "r245i2p1f2", + 579, + "r246i1p1f1", + 396, + "r246i1p1f2", + 258, + "r246i1p2f1", + 432, + "r246i2p1f2", + 580, + "r247i1p1f1", + 396, + "r247i1p1f2", + 255, + "r247i1p2f1", + 432, + "r247i2p1f2", + 580, + "r248i1p1f1", + 396, + "r248i1p1f2", + 258, + "r248i1p2f1", + 432, + "r248i2p1f2", + 580, + "r249i1p1f1", + 396, + "r249i1p1f2", + 255, + "r249i1p2f1", + 432, + "r249i2p1f2", + 580, + "r24i1p1f1", + 51056, + "r24i1p1f2", + 12175, + "r24i1p1f242", + 4344, + "r24i1p1f3", + 84, + "r24i1p2f1", + 11225, + "r24i2p1f1", + 169, + "r24i2p1f2", + 86, + "r250i1p1f1", + 396, + "r250i1p1f2", + 258, + "r250i1p2f1", + 432, + "r250i2p1f2", + 581, + "r251i1p1f1", + 396, + "r251i1p1f2", + 255, + "r251i1p2f1", + 432, + "r251i2p1f2", + 580, + "r252i1p1f1", + 396, + "r252i1p1f2", + 258, + "r252i1p2f1", + 432, + "r252i2p1f2", + 580, + "r253i1p1f1", + 396, + "r253i1p1f2", + 255, + "r253i1p2f1", + 432, + "r253i2p1f2", + 582, + "r254i1p1f1", + 396, + "r254i1p1f2", + 258, + "r254i1p2f1", + 432, + "r254i2p1f2", + 582, + "r255i1p1f1", + 396, + "r255i1p1f2", + 258, + "r255i1p2f1", + 432, + "r255i2p1f2", + 582, + "r256i1p1f1", + 396, + "r256i1p1f2", + 258, + "r256i1p2f1", + 432, + "r256i2p1f2", + 583, + "r257i1p1f1", + 396, + "r257i1p1f2", + 258, + "r257i1p2f1", + 432, + "r257i2p1f2", + 582, + "r258i1p1f1", + 396, + "r258i1p1f2", + 258, + "r258i1p2f1", + 432, + "r258i2p1f2", + 582, + "r259i1p1f1", + 396, + "r259i1p1f2", + 258, + "r259i1p2f1", + 432, + "r259i2p1f2", + 582, + "r25i1p1f1", + 51375, + "r25i1p1f2", + 11527, + "r25i1p1f242", + 4344, + "r25i1p1f3", + 84, + "r25i1p2f1", + 11267, + "r25i2p1f1", + 169, + "r25i2p1f2", + 86, + "r260i1p1f1", + 396, + "r260i1p1f2", + 258, + "r260i1p2f1", + 432, + "r260i2p1f2", + 583, + "r261i1p1f1", + 396, + "r261i1p1f2", + 258, + "r261i1p2f1", + 432, + "r261i2p1f2", + 583, + "r262i1p1f1", + 396, + "r262i1p1f2", + 258, + "r262i1p2f1", + 432, + "r262i2p1f2", + 582, + "r263i1p1f1", + 396, + "r263i1p1f2", + 258, + "r263i1p2f1", + 432, + "r263i2p1f2", + 583, + "r264i1p1f1", + 396, + "r264i1p1f2", + 258, + "r264i1p2f1", + 432, + "r264i2p1f2", + 582, + "r265i1p1f1", + 396, + "r265i1p1f2", + 258, + "r265i1p2f1", + 432, + "r265i2p1f2", + 583, + "r266i1p1f1", + 396, + "r266i1p1f2", + 258, + "r266i1p2f1", + 432, + "r266i2p1f2", + 583, + "r267i1p1f1", + 396, + "r267i1p1f2", + 258, + "r267i1p2f1", + 432, + "r267i2p1f2", + 583, + "r268i1p1f1", + 396, + "r268i1p1f2", + 258, + "r268i1p2f1", + 432, + "r268i2p1f2", + 584, + "r269i1p1f1", + 396, + "r269i1p1f2", + 258, + "r269i1p2f1", + 432, + "r269i2p1f2", + 585, + "r26i1p1f1", + 43167, + "r26i1p1f2", + 6983, + "r26i1p1f242", + 4344, + "r26i1p1f3", + 84, + "r26i1p2f1", + 6000, + "r26i2p1f1", + 169, + "r26i2p1f2", + 86, + "r270i1p1f1", + 396, + "r270i1p1f2", + 258, + "r270i1p2f1", + 432, + "r270i2p1f2", + 584, + "r271i1p1f1", + 396, + "r271i1p1f2", + 258, + "r271i1p2f1", + 432, + "r271i2p1f2", + 584, + "r272i1p1f1", + 396, + "r272i1p1f2", + 258, + "r272i1p2f1", + 432, + "r272i2p1f2", + 584, + "r273i1p1f1", + 396, + "r273i1p1f2", + 258, + "r273i1p2f1", + 432, + "r273i2p1f2", + 584, + "r274i1p1f1", + 396, + "r274i1p1f2", + 258, + "r274i1p2f1", + 432, + "r274i2p1f2", + 583, + "r275i1p1f1", + 396, + "r275i1p1f2", + 258, + "r275i1p2f1", + 432, + "r275i2p1f2", + 584, + "r276i1p1f1", + 396, + "r276i1p1f2", + 258, + "r276i1p2f1", + 432, + "r276i2p1f2", + 584, + "r277i1p1f1", + 396, + "r277i1p1f2", + 258, + "r277i1p2f1", + 432, + "r277i2p1f2", + 584, + "r278i1p1f1", + 396, + "r278i1p1f2", + 258, + "r278i1p2f1", + 432, + "r278i2p1f2", + 584, + "r279i1p1f1", + 396, + "r279i1p1f2", + 258, + "r279i1p2f1", + 432, + "r279i2p1f2", + 584, + "r27i1p1f1", + 43195, + "r27i1p1f2", + 6364, + "r27i1p1f242", + 4344, + "r27i1p1f3", + 84, + "r27i1p2f1", + 6002, + "r27i2p1f1", + 169, + "r27i2p1f2", + 86, + "r280i1p1f1", + 378, + "r280i1p1f2", + 258, + "r280i1p2f1", + 432, + "r280i2p1f2", + 584, + "r281i1p1f1", + 396, + "r281i1p1f2", + 255, + "r281i1p2f1", + 430, + "r281i2p1f2", + 569, + "r282i1p1f1", + 396, + "r282i1p1f2", + 258, + "r282i1p2f1", + 432, + "r282i2p1f2", + 584, + "r283i1p1f1", + 396, + "r283i1p1f2", + 258, + "r283i1p2f1", + 432, + "r283i2p1f2", + 568, + "r284i1p1f1", + 396, + "r284i1p1f2", + 258, + "r284i1p2f1", + 432, + "r284i2p1f2", + 584, + "r285i1p1f1", + 396, + "r285i1p1f2", + 258, + "r285i1p2f1", + 432, + "r285i2p1f2", + 584, + "r286i1p1f1", + 396, + "r286i1p1f2", + 258, + "r286i1p2f1", + 432, + "r286i2p1f2", + 584, + "r287i1p1f1", + 396, + "r287i1p1f2", + 258, + "r287i1p2f1", + 432, + "r287i2p1f2", + 584, + "r288i1p1f1", + 396, + "r288i1p1f2", + 258, + "r288i1p2f1", + 432, + "r288i2p1f2", + 585, + "r289i1p1f1", + 396, + "r289i1p1f2", + 258, + "r289i1p2f1", + 432, + "r289i2p1f2", + 584, + "r28i1p1f1", + 43200, + "r28i1p1f2", + 6983, + "r28i1p1f242", + 4344, + "r28i1p1f3", + 84, + "r28i1p2f1", + 6002, + "r28i2p1f1", + 169, + "r28i2p1f2", + 86, + "r290i1p1f1", + 396, + "r290i1p1f2", + 258, + "r290i1p2f1", + 432, + "r290i2p1f2", + 585, + "r291i1p1f1", + 396, + "r291i1p1f2", + 258, + "r291i1p2f1", + 432, + "r291i2p1f2", + 584, + "r292i1p1f1", + 396, + "r292i1p1f2", + 258, + "r292i1p2f1", + 432, + "r292i2p1f2", + 584, + "r293i1p1f1", + 396, + "r293i1p1f2", + 258, + "r293i1p2f1", + 432, + "r293i2p1f2", + 585, + "r294i1p1f1", + 396, + "r294i1p1f2", + 258, + "r294i1p2f1", + 432, + "r294i2p1f2", + 584, + "r295i1p1f1", + 396, + "r295i1p1f2", + 258, + "r295i1p2f1", + 432, + "r295i2p1f2", + 584, + "r296i1p1f1", + 396, + "r296i1p1f2", + 258, + "r296i1p2f1", + 432, + "r296i2p1f2", + 585, + "r297i1p1f1", + 396, + "r297i1p1f2", + 258, + "r297i1p2f1", + 432, + "r297i2p1f2", + 584, + "r298i1p1f1", + 396, + "r298i1p1f2", + 258, + "r298i1p2f1", + 432, + "r298i2p1f2", + 585, + "r299i1p1f1", + 396, + "r299i1p1f2", + 258, + "r299i1p2f1", + 432, + "r299i2p1f2", + 585, + "r29i1p1f1", + 43152, + "r29i1p1f2", + 6709, + "r29i1p1f242", + 4344, + "r29i1p1f3", + 84, + "r29i1p2f1", + 6004, + "r29i2p1f1", + 169, + "r29i2p1f2", + 86, + "r2i10p1f1", + 332, + "r2i1p1f1", + 338452, + "r2i1p1f2", + 58540, + "r2i1p1f242", + 4344, + "r2i1p1f3", + 4807, + "r2i1p1f4", + 991, + "r2i1p1f99", + 2340, + "r2i1p2f1", + 72869, + "r2i1p3f1", + 14225, + "r2i1p3f2", + 522, + "r2i1p4f2", + 3386, + "r2i1p5f1", + 3482, + "r2i1p5f2", + 1162, + "r2i2p1f1", + 14252, + "r2i2p1f2", + 420, + "r2i2p2f1", + 100, + "r2i3p1f1", + 5417, + "r2i3p2f1", + 488, + "r2i4p1f1", + 394, + "r2i5p1f1", + 332, + "r2i6p1f1", + 332, + "r2i7p1f1", + 332, + "r2i8p1f1", + 332, + "r2i9p1f1", + 332, + "r300i1p1f1", + 396, + "r300i1p1f2", + 258, + "r300i1p2f1", + 432, + "r300i2p1f2", + 584, + "r30i1p1f1", + 43156, + "r30i1p1f2", + 6471, + "r30i1p1f242", + 4344, + "r30i1p1f3", + 84, + "r30i1p2f1", + 6001, + "r30i2p1f1", + 169, + "r30i2p1f2", + 86, + "r31i1p1f1", + 38188, + "r31i1p1f2", + 3086, + "r31i1p1f3", + 84, + "r31i1p2f1", + 6002, + "r31i2p1f2", + 86, + "r32i1p1f1", + 38122, + "r32i1p1f2", + 3162, + "r32i1p1f3", + 84, + "r32i1p2f1", + 6002, + "r32i2p1f2", + 86, + "r33i1p1f1", + 38738, + "r33i1p1f2", + 3090, + "r33i1p1f3", + 84, + "r33i1p2f1", + 6004, + "r33i2p1f2", + 86, + "r34i1p1f1", + 37306, + "r34i1p1f2", + 3180, + "r34i1p1f3", + 84, + "r34i1p2f1", + 6002, + "r34i2p1f2", + 86, + "r35i1p1f1", + 37238, + "r35i1p1f2", + 3092, + "r35i1p1f3", + 84, + "r35i1p2f1", + 6002, + "r35i2p1f2", + 86, + "r36i1p1f1", + 37210, + "r36i1p1f2", + 3192, + "r36i1p1f3", + 84, + "r36i1p2f1", + 6001, + "r36i2p1f2", + 86, + "r37i1p1f1", + 37298, + "r37i1p1f2", + 3135, + "r37i1p1f3", + 84, + "r37i1p2f1", + 6003, + "r37i2p1f2", + 86, + "r38i1p1f1", + 37275, + "r38i1p1f2", + 3199, + "r38i1p1f3", + 84, + "r38i1p2f1", + 6003, + "r38i2p1f2", + 86, + "r39i1p1f1", + 37293, + "r39i1p1f2", + 3129, + "r39i1p1f3", + 84, + "r39i1p2f1", + 6003, + "r39i2p1f2", + 86, + "r3i10p1f1", + 332, + "r3i1p1f1", + 337241, + "r3i1p1f2", + 55779, + "r3i1p1f242", + 4344, + "r3i1p1f3", + 4691, + "r3i1p1f4", + 331, + "r3i1p1f99", + 2340, + "r3i1p2f1", + 72694, + "r3i1p3f1", + 14469, + "r3i1p3f2", + 522, + "r3i1p4f2", + 3388, + "r3i1p5f1", + 3483, + "r3i1p5f2", + 1162, + "r3i2p1f1", + 14204, + "r3i2p1f2", + 419, + "r3i2p2f1", + 100, + "r3i3p1f1", + 5417, + "r3i3p2f1", + 482, + "r3i4p1f1", + 394, + "r3i5p1f1", + 332, + "r3i6p1f1", + 332, + "r3i7p1f1", + 332, + "r3i8p1f1", + 332, + "r3i9p1f1", + 332, + "r40i1p1f1", + 36769, + "r40i1p1f2", + 3193, + "r40i1p1f3", + 84, + "r40i1p2f1", + 6001, + "r40i2p1f2", + 86, + "r41i1p1f1", + 17937, + "r41i1p1f2", + 1707, + "r41i1p1f3", + 84, + "r41i1p2f1", + 2886, + "r41i2p1f2", + 86, + "r42i1p1f1", + 17960, + "r42i1p1f2", + 1749, + "r42i1p1f3", + 84, + "r42i1p2f1", + 2888, + "r42i2p1f2", + 86, + "r43i1p1f1", + 17982, + "r43i1p1f2", + 1707, + "r43i1p1f3", + 84, + "r43i1p2f1", + 2889, + "r43i2p1f2", + 86, + "r44i1p1f1", + 17993, + "r44i1p1f2", + 1750, + "r44i1p1f3", + 84, + "r44i1p2f1", + 2890, + "r44i2p1f2", + 86, + "r45i1p1f1", + 18006, + "r45i1p1f2", + 1706, + "r45i1p1f3", + 84, + "r45i1p2f1", + 2889, + "r45i2p1f2", + 86, + "r46i1p1f1", + 18002, + "r46i1p1f2", + 1746, + "r46i1p1f3", + 83, + "r46i1p2f1", + 2890, + "r46i2p1f2", + 86, + "r47i1p1f1", + 17972, + "r47i1p1f2", + 1706, + "r47i1p1f3", + 84, + "r47i1p2f1", + 2890, + "r47i2p1f2", + 86, + "r48i1p1f1", + 17948, + "r48i1p1f2", + 1750, + "r48i1p1f3", + 83, + "r48i1p2f1", + 2889, + "r48i2p1f2", + 86, + "r49i1p1f1", + 17996, + "r49i1p1f2", + 1706, + "r49i1p1f3", + 84, + "r49i1p2f1", + 2890, + "r49i2p1f2", + 86, + "r4i10p1f1", + 332, + "r4i1p1f1", + 266168, + "r4i1p1f2", + 50167, + "r4i1p1f242", + 4344, + "r4i1p1f3", + 4263, + "r4i1p1f4", + 331, + "r4i1p1f99", + 2340, + "r4i1p2f1", + 58906, + "r4i1p3f1", + 13415, + "r4i1p5f1", + 3487, + "r4i1p5f2", + 1162, + "r4i2p1f1", + 11553, + "r4i2p1f2", + 86, + "r4i2p2f1", + 97, + "r4i3p1f1", + 5417, + "r4i3p2f1", + 488, + "r4i4p1f1", + 334, + "r4i5p1f1", + 332, + "r4i6p1f1", + 332, + "r4i7p1f1", + 332, + "r4i8p1f1", + 332, + "r4i9p1f1", + 332, + "r50i1p1f1", + 18005, + "r50i1p1f2", + 1750, + "r50i1p1f3", + 71, + "r50i1p2f1", + 2889, + "r50i2p1f2", + 86, + "r51i1p1f1", + 13490, + "r51i1p1f2", + 1707, + "r51i1p1f3", + 38, + "r51i1p2f1", + 2889, + "r51i2p1f2", + 86, + "r52i1p1f1", + 13518, + "r52i1p1f2", + 1750, + "r52i1p1f3", + 38, + "r52i1p2f1", + 2890, + "r52i2p1f2", + 86, + "r53i1p1f1", + 13516, + "r53i1p1f2", + 1707, + "r53i1p2f1", + 2889, + "r53i2p1f2", + 86, + "r54i1p1f1", + 13484, + "r54i1p1f2", + 1750, + "r54i1p1f3", + 38, + "r54i1p2f1", + 2890, + "r54i2p1f2", + 86, + "r55i1p1f1", + 13517, + "r55i1p1f2", + 1707, + "r55i1p1f3", + 38, + "r55i1p2f1", + 2888, + "r55i2p1f2", + 86, + "r56i1p1f1", + 13513, + "r56i1p1f2", + 1750, + "r56i1p1f3", + 38, + "r56i1p2f1", + 2890, + "r56i2p1f2", + 86, + "r57i1p1f1", + 13503, + "r57i1p1f2", + 1707, + "r57i1p1f3", + 38, + "r57i1p2f1", + 2889, + "r57i2p1f2", + 86, + "r58i1p1f1", + 13505, + "r58i1p1f2", + 1749, + "r58i1p1f3", + 38, + "r58i1p2f1", + 2890, + "r58i2p1f2", + 86, + "r59i1p1f1", + 13505, + "r59i1p1f2", + 1706, + "r59i1p1f3", + 38, + "r59i1p2f1", + 2889, + "r59i2p1f2", + 86, + "r5i10p1f1", + 332, + "r5i1p1f1", + 253905, + "r5i1p1f2", + 40658, + "r5i1p1f242", + 4344, + "r5i1p1f3", + 4316, + "r5i1p1f4", + 331, + "r5i1p1f99", + 2340, + "r5i1p2f1", + 58888, + "r5i1p3f1", + 12896, + "r5i1p5f1", + 2974, + "r5i1p5f2", + 1162, + "r5i2p1f1", + 11556, + "r5i2p1f2", + 86, + "r5i2p2f1", + 100, + "r5i3p1f1", + 5417, + "r5i3p2f1", + 488, + "r5i4p1f1", + 394, + "r5i5p1f1", + 332, + "r5i6p1f1", + 332, + "r5i7p1f1", + 332, + "r5i8p1f1", + 332, + "r5i9p1f1", + 332, + "r60i1p1f1", + 13503, + "r60i1p1f2", + 1749, + "r60i1p1f3", + 38, + "r60i1p2f1", + 2889, + "r60i2p1f2", + 86, + "r61i1p1f1", + 13497, + "r61i1p1f2", + 1706, + "r61i1p2f1", + 2890, + "r61i2p1f2", + 86, + "r62i1p1f1", + 13503, + "r62i1p1f2", + 1748, + "r62i1p2f1", + 2890, + "r62i2p1f2", + 86, + "r63i1p1f1", + 13496, + "r63i1p1f2", + 1705, + "r63i1p2f1", + 2890, + "r63i2p1f2", + 86, + "r64i1p1f1", + 13505, + "r64i1p1f2", + 1748, + "r64i1p2f1", + 2890, + "r64i2p1f2", + 86, + "r65i1p1f1", + 13505, + "r65i1p1f2", + 1700, + "r65i1p2f1", + 2890, + "r65i2p1f2", + 86, + "r66i1p1f1", + 13476, + "r66i1p1f2", + 1747, + "r66i1p2f1", + 2889, + "r66i2p1f2", + 86, + "r67i1p1f1", + 13472, + "r67i1p1f2", + 1677, + "r67i1p2f1", + 2890, + "r67i2p1f2", + 86, + "r68i1p1f1", + 13498, + "r68i1p1f2", + 1748, + "r68i1p2f1", + 2890, + "r68i2p1f2", + 86, + "r69i1p1f1", + 13505, + "r69i1p1f2", + 1662, + "r69i1p2f1", + 2890, + "r69i2p1f2", + 86, + "r6i10p1f1", + 332, + "r6i1p1f1", + 208449, + "r6i1p1f2", + 29898, + "r6i1p1f242", + 4344, + "r6i1p1f3", + 1268, + "r6i1p1f99", + 2340, + "r6i1p2f1", + 56802, + "r6i1p3f1", + 539, + "r6i1p5f1", + 1549, + "r6i1p5f2", + 1162, + "r6i2p1f1", + 16836, + "r6i2p1f2", + 86, + "r6i2p2f1", + 100, + "r6i3p1f1", + 332, + "r6i3p2f1", + 488, + "r6i4p1f1", + 394, + "r6i5p1f1", + 332, + "r6i6p1f1", + 332, + "r6i7p1f1", + 332, + "r6i8p1f1", + 332, + "r6i9p1f1", + 332, + "r70i1p1f1", + 13501, + "r70i1p1f2", + 1734, + "r70i1p2f1", + 2890, + "r70i2p1f2", + 86, + "r71i1p1f1", + 13498, + "r71i1p1f2", + 1661, + "r71i1p2f1", + 2890, + "r71i2p1f2", + 86, + "r72i1p1f1", + 13482, + "r72i1p1f2", + 1744, + "r72i1p2f1", + 2890, + "r72i2p1f2", + 86, + "r73i1p1f1", + 13441, + "r73i1p1f2", + 1661, + "r73i1p2f1", + 2890, + "r73i2p1f2", + 86, + "r74i1p1f1", + 13469, + "r74i1p1f2", + 1746, + "r74i1p2f1", + 2890, + "r74i2p1f2", + 86, + "r75i1p1f1", + 13497, + "r75i1p1f2", + 1661, + "r75i1p2f1", + 2890, + "r75i2p1f2", + 86, + "r76i1p1f1", + 13490, + "r76i1p1f2", + 1746, + "r76i1p2f1", + 2889, + "r76i2p1f2", + 86, + "r77i1p1f1", + 13486, + "r77i1p1f2", + 1661, + "r77i1p2f1", + 2890, + "r77i2p1f2", + 86, + "r78i1p1f1", + 13492, + "r78i1p1f2", + 1746, + "r78i1p2f1", + 2890, + "r78i2p1f2", + 86, + "r79i1p1f1", + 13499, + "r79i1p1f2", + 1660, + "r79i1p2f1", + 2889, + "r79i2p1f2", + 86, + "r7i10p1f1", + 332, + "r7i1p1f1", + 199007, + "r7i1p1f2", + 28081, + "r7i1p1f242", + 4344, + "r7i1p1f3", + 1275, + "r7i1p1f99", + 2340, + "r7i1p2f1", + 56795, + "r7i1p3f1", + 539, + "r7i1p5f1", + 1549, + "r7i1p5f2", + 1162, + "r7i2p1f1", + 16839, + "r7i2p1f2", + 86, + "r7i2p2f1", + 100, + "r7i3p1f1", + 332, + "r7i3p2f1", + 488, + "r7i4p1f1", + 394, + "r7i5p1f1", + 332, + "r7i6p1f1", + 332, + "r7i7p1f1", + 332, + "r7i8p1f1", + 332, + "r7i9p1f1", + 332, + "r80i1p1f1", + 13494, + "r80i1p1f2", + 1747, + "r80i1p2f1", + 2890, + "r80i2p1f2", + 86, + "r81i1p1f1", + 13484, + "r81i1p1f2", + 1661, + "r81i1p2f1", + 2889, + "r81i2p1f2", + 86, + "r82i1p1f1", + 13354, + "r82i1p1f2", + 1747, + "r82i1p2f1", + 2890, + "r82i2p1f2", + 86, + "r83i1p1f1", + 13494, + "r83i1p1f2", + 1661, + "r83i1p2f1", + 2890, + "r83i2p1f2", + 86, + "r84i1p1f1", + 13495, + "r84i1p1f2", + 1747, + "r84i1p2f1", + 2890, + "r84i2p1f2", + 86, + "r85i1p1f1", + 13499, + "r85i1p1f2", + 1661, + "r85i1p2f1", + 2889, + "r85i2p1f2", + 86, + "r86i1p1f1", + 13451, + "r86i1p1f2", + 1747, + "r86i1p2f1", + 2890, + "r86i2p1f2", + 86, + "r87i1p1f1", + 13487, + "r87i1p1f2", + 1661, + "r87i1p2f1", + 2890, + "r87i2p1f2", + 86, + "r88i1p1f1", + 13483, + "r88i1p1f2", + 1747, + "r88i1p2f1", + 2890, + "r88i2p1f2", + 86, + "r89i1p1f1", + 13389, + "r89i1p1f2", + 1661, + "r89i1p2f1", + 2889, + "r89i2p1f2", + 86, + "r8i10p1f1", + 332, + "r8i1p1f1", + 198535, + "r8i1p1f2", + 32831, + "r8i1p1f242", + 4344, + "r8i1p1f3", + 597, + "r8i1p1f99", + 2340, + "r8i1p2f1", + 56805, + "r8i1p3f1", + 539, + "r8i1p5f1", + 1551, + "r8i1p5f2", + 1162, + "r8i2p1f1", + 16837, + "r8i2p1f2", + 86, + "r8i2p2f1", + 100, + "r8i3p1f1", + 332, + "r8i3p2f1", + 488, + "r8i4p1f1", + 334, + "r8i5p1f1", + 332, + "r8i6p1f1", + 332, + "r8i7p1f1", + 332, + "r8i8p1f1", + 332, + "r8i9p1f1", + 332, + "r90i1p1f1", + 13443, + "r90i1p1f2", + 1747, + "r90i1p2f1", + 2890, + "r90i2p1f2", + 86, + "r91i1p1f1", + 13443, + "r91i1p1f2", + 1661, + "r91i1p2f1", + 2889, + "r91i2p1f2", + 86, + "r92i1p1f1", + 13440, + "r92i1p1f2", + 1747, + "r92i1p2f1", + 2890, + "r92i2p1f2", + 86, + "r93i1p1f1", + 13389, + "r93i1p1f2", + 1661, + "r93i1p2f1", + 2889, + "r93i2p1f2", + 86, + "r94i1p1f1", + 13432, + "r94i1p1f2", + 1747, + "r94i1p2f1", + 2890, + "r94i2p1f2", + 86, + "r95i1p1f1", + 13451, + "r95i1p1f2", + 1661, + "r95i1p2f1", + 2890, + "r95i2p1f2", + 86, + "r96i1p1f1", + 13438, + "r96i1p1f2", + 1746, + "r96i1p2f1", + 2890, + "r96i2p1f2", + 86, + "r97i1p1f1", + 13433, + "r97i1p1f2", + 1661, + "r97i1p2f1", + 2890, + "r97i2p1f2", + 86, + "r98i1p1f1", + 13428, + "r98i1p1f2", + 1747, + "r98i1p2f1", + 2890, + "r98i2p1f2", + 86, + "r99i1p1f1", + 13342, + "r99i1p1f2", + 1660, + "r99i1p2f1", + 2890, + "r99i2p1f2", + 86, + "r9i10p1f1", + 332, + "r9i1p1f1", + 190197, + "r9i1p1f2", + 28206, + "r9i1p1f242", + 4344, + "r9i1p1f3", + 597, + "r9i1p1f99", + 2340, + "r9i1p2f1", + 56791, + "r9i1p3f1", + 539, + "r9i1p5f1", + 1551, + "r9i1p5f2", + 1162, + "r9i2p1f1", + 16835, + "r9i2p1f2", + 86, + "r9i2p2f1", + 100, + "r9i3p1f1", + 332, + "r9i3p2f1", + 488, + "r9i4p1f1", + 394, + "r9i5p1f1", + 332, + "r9i6p1f1", + 332, + "r9i7p1f1", + 332, + "r9i8p1f1", + 332, + "r9i9p1f1", + 332 + ], + "grid_label": [ + "gm", + 28534, + "gn", + 6968543, + "gnz", + 78496, + "gr", + 1842247, + "gr1", + 95701, + "gr1z", + 247, + "gr2", + 1248, + "gr2z", + 7610, + "gr3", + 423, + "gra", + 15, + "grg", + 16, + "grz", + 14193 + ], + "table_id": [ + "3hr", + 43271, + "6hrLev", + 3690, + "6hrPlev", + 32082, + "6hrPlevPt", + 19408, + "AERday", + 50506, + "AERhr", + 982, + "AERmon", + 424595, + "AERmonZ", + 73349, + "Amon", + 2319917, + "CF3hr", + 739, + "CFday", + 128840, + "CFmon", + 162151, + "CFsubhr", + 3075, + "E1hr", + 152, + "E1hrClimMon", + 15, + "E3hr", + 2282, + "E3hrPt", + 328, + "Eday", + 209982, + "EdayZ", + 91806, + "Efx", + 6942, + "Emon", + 825752, + "EmonZ", + 100930, + "Esubhr", + 63, + "Eyr", + 21018, + "IfxGre", + 431, + "ImonAnt", + 2418, + "ImonGre", + 2432, + "IyrAnt", + 6, + "IyrGre", + 62, + "LImon", + 165142, + "Lmon", + 805572, + "Oclim", + 4572, + "Oday", + 21018, + "Odec", + 2694, + "Ofx", + 120466, + "Omon", + 1538856, + "Oyr", + 190125, + "SIday", + 67881, + "SImon", + 591756, + "day", + 864304, + "fx", + 137663 + ], + "frequency": [ + "1hr", + 1134, + "1hrCM", + 15, + "3hr", + 27362, + "3hrPt", + 19260, + "6hr", + 32872, + "6hrPt", + 22308, + "day", + 1432455, + "dec", + 2694, + "fx", + 265394, + "mon", + 6993380, + "monC", + 8731, + "monPt", + 17299, + "month", + 20, + "subhrPt", + 3138, + "yr", + 204424, + "yrPt", + 6787 + ], + "realm": [ + "aerosol", + 534184, + "atmos", + 4165646, + "atmosChem", + 12956, + "land", + 1614486, + "landIce", + 230101, + "ocean", + 1042032, + "ocnBgChem", + 8909, + "ocnBgchem", + 873340, + "sea", + 3, + "seaIce", + 660954, + "seaice", + 16 + ], + "variable_id": [ + "Multiple", + 2, + "abs550aer", + 12677, + "acabf", + 281, + "acabfIs", + 1600, + "agesno", + 3368, + "agessc", + 8202, + "airmass", + 1910, + "albc", + 14, + "albisccp", + 8517, + "albsn", + 40, + "amocrapid", + 3, + "aoanh", + 46, + "aod550volso4", + 2686, + "arag", + 775, + "aragos", + 29, + "areacella", + 32374, + "areacelli", + 3, + "areacello", + 30538, + "areacellr", + 2846, + "ares", + 152, + "bacc", + 91, + "baccos", + 64, + "baresoilFrac", + 18303, + "basin", + 12919, + "bddtalk", + 600, + "bddtdic", + 614, + "bddtdife", + 596, + "bddtdin", + 596, + "bddtdip", + 597, + "bddtdisi", + 592, + "bfe", + 3490, + "bfeos", + 2274, + "bigthetao", + 4216, + "bigthetaoga", + 2557, + "bldep", + 9396, + "bry", + 963, + "bsi", + 3673, + "bsios", + 2562, + "burntFractionAll", + 3907, + "c13Land", + 158, + "c13Litter", + 157, + "c13Soil", + 159, + "c13Veg", + 172, + "c14Land", + 157, + "c14Litter", + 161, + "c14Soil", + 158, + "c14Veg", + 168, + "c2h2", + 75, + "c2h6", + 993, + "c3PftFrac", + 13929, + "c3h6", + 880, + "c3h8", + 996, + "c4PftFrac", + 13928, + "cCwd", + 3866, + "cLand", + 22690, + "cLeaf", + 12988, + "cLitter", + 27144, + "cLitterAbove", + 4571, + "cLitterBelow", + 4940, + "cLitterCwd", + 336, + "cLitterGrass", + 3841, + "cLitterLut", + 696, + "cLitterShrub", + 346, + "cLitterSubSurf", + 3594, + "cLitterSurf", + 3594, + "cLitterTree", + 3841, + "cMisc", + 4583, + "cOther", + 3461, + "cProduct", + 9952, + "cProductLut", + 138, + "cRoot", + 13159, + "cSoil", + 26170, + "cSoilAbove1m", + 1976, + "cSoilFast", + 8762, + "cSoilGrass", + 3843, + "cSoilLevels", + 145, + "cSoilLut", + 705, + "cSoilMedium", + 8695, + "cSoilPools", + 1181, + "cSoilShrub", + 348, + "cSoilSlow", + 8759, + "cSoilTree", + 3913, + "cStem", + 10800, + "cTotFireLut", + 398, + "cVeg", + 27676, + "cVegGrass", + 4271, + "cVegLut", + 704, + "cVegShrub", + 778, + "cVegTree", + 4272, + "cWood", + 11228, + "calc", + 4078, + "calcos", + 448, + "ccb", + 13752, + "ccldncl", + 51, + "ccn", + 1434, + "cct", + 15216, + "cdnc", + 6961, + "cfadDbze94", + 47, + "cfadLidarsr532", + 51, + "cfc11", + 1208, + "cfc113global", + 60, + "cfc11global", + 2584, + "cfc12", + 1199, + "cfc12global", + 2582, + "ch3coch3", + 989, + "ch4", + 5962, + "ch4global", + 4389, + "cheaqpso4", + 1908, + "chegpso4", + 1910, + "chepasoa", + 57, + "chepsoa", + 981, + "chl", + 22317, + "chlcalc", + 47, + "chlcalcos", + 47, + "chldiat", + 3106, + "chldiatos", + 10428, + "chldiaz", + 1578, + "chldiazos", + 8791, + "chlmisc", + 2200, + "chlmiscos", + 2050, + "chlos", + 19144, + "chlpico", + 877, + "chlpicoos", + 8413, + "ci", + 12404, + "cl", + 15917, + "clayfrac", + 73, + "clc", + 844, + "clcalipso", + 3820, + "clcalipso2", + 9, + "clcalipsoice", + 80, + "clcalipsoliq", + 80, + "cldicemxrat", + 70, + "cldnci", + 1682, + "cldncl", + 1787, + "cldnvi", + 1873, + "cldwatmxrat", + 70, + "clhcalipso", + 8081, + "cli", + 14647, + "clic", + 366, + "climodis", + 1166, + "clis", + 332, + "clisccp", + 4331, + "clivi", + 41762, + "clivic", + 113, + "cllcalipso", + 8083, + "clmcalipso", + 8079, + "clmisr", + 95, + "cls", + 821, + "clt", + 89611, + "cltc", + 1954, + "cltcalipso", + 5680, + "cltisccp", + 7633, + "cltmodis", + 1166, + "clw", + 14660, + "clwc", + 371, + "clwmodis", + 1194, + "clws", + 340, + "clwvi", + 41861, + "clwvic", + 131, + "cly", + 963, + "cnc", + 326, + "co", + 1613, + "co2", + 11800, + "co23D", + 245, + "co2mass", + 5343, + "co2s", + 56, + "co3", + 4526, + "co3abio", + 151, + "co3abioos", + 62, + "co3nat", + 777, + "co3natos", + 366, + "co3os", + 1210, + "co3satarag", + 1720, + "co3sataragos", + 746, + "co3satcalc", + 3917, + "co3satcalcos", + 786, + "cod", + 3660, + "conccmcn", + 386, + "conccn", + 1175, + "concdust", + 926, + "concnmcn", + 93, + "cropFrac", + 20824, + "cropFracC3", + 13081, + "cropFracC4", + 12551, + "cw", + 57, + "darag", + 1, + "dcalc", + 978, + "dcw", + 23, + "dems", + 4, + "depdust", + 1345, + "deptho", + 27114, + "detoc", + 11021, + "detocos", + 3468, + "dfe", + 16708, + "dfeos", + 12577, + "dfr", + 15, + "dgw", + 23, + "difmxybo", + 28, + "difmxylo", + 358, + "diftrblo", + 2917, + "diftrelo", + 790, + "diftrxylo", + 123, + "difvho", + 4058, + "difvmo", + 971, + "difvmto", + 122, + "difvso", + 3403, + "difvtrto", + 682, + "dispkevfo", + 112, + "dispkexyfo", + 471, + "dissi14cabio", + 625, + "dissi14cabioos", + 338, + "dissic", + 24437, + "dissicabio", + 5229, + "dissicabioos", + 3147, + "dissicnat", + 6757, + "dissicnatos", + 3679, + "dissicos", + 6441, + "dissoc", + 5218, + "dissocos", + 1110, + "dmc", + 458, + "dmlt", + 67, + "dms", + 4418, + "dmso", + 102, + "dmsos", + 652, + "dpco2", + 3663, + "dpco2abio", + 174, + "dpco2nat", + 572, + "dpo2", + 2228, + "drivw", + 23, + "drybc", + 7312, + "drydust", + 7327, + "drynh3", + 789, + "drynh4", + 788, + "drynoy", + 1349, + "dryo3", + 1484, + "dryoa", + 3343, + "dryso2", + 8700, + "dryso4", + 7466, + "dryss", + 3571, + "dslw", + 23, + "dsn", + 23, + "dsw", + 23, + "dtaus", + 4, + "dtes", + 23, + "dtesn", + 23, + "ec", + 81, + "ec550aer", + 1710, + "edt", + 1788, + "emiaco", + 556, + "emianox", + 556, + "emiaoa", + 1251, + "emibc", + 7487, + "emibvoc", + 2226, + "emico", + 1446, + "emidms", + 8374, + "emidust", + 8848, + "emiisop", + 2816, + "emilnox", + 1406, + "eminh3", + 721, + "eminox", + 1486, + "emioa", + 3149, + "emiso2", + 8724, + "emiso4", + 3887, + "emiss", + 4803, + "emivoc", + 2650, + "eow", + 23, + "eparag100", + 438, + "epc100", + 12531, + "epcalc100", + 12142, + "epfe100", + 2611, + "epfy", + 24053, + "epfz", + 24070, + "epn100", + 5930, + "epp100", + 799, + "epsi100", + 4631, + "es", + 536, + "esn", + 46, + "et", + 20, + "evs", + 10780, + "evspsbl", + 59418, + "evspsblpot", + 5247, + "evspsblsoi", + 23849, + "evspsblveg", + 23213, + "evu", + 1787, + "exparag", + 14, + "expc", + 12137, + "expcalc", + 1512, + "expfe", + 2562, + "expn", + 560, + "expp", + 568, + "expsi", + 1851, + "fAnthDisturb", + 3683, + "fBNF", + 2807, + "fCLandToOcean", + 407, + "fDeforestToAtmos", + 7765, + "fDeforestToProduct", + 10205, + "fFire", + 4165, + "fFireAll", + 382, + "fFireNat", + 2022, + "fGrazing", + 514, + "fHarvest", + 7511, + "fHarvestToAtmos", + 3207, + "fHarvestToProduct", + 5447, + "fLitterFire", + 185, + "fLitterSoil", + 10728, + "fLuc", + 7555, + "fLulccAtmLut", + 484, + "fLulccProductLut", + 287, + "fLulccResidueLut", + 489, + "fN2O", + 2879, + "fNAnthDisturb", + 535, + "fNLandToOcean", + 160, + "fNLitterSoil", + 1520, + "fNOx", + 1411, + "fNProduct", + 2287, + "fNVegLitter", + 1208, + "fNVegSoil", + 119, + "fNdep", + 3702, + "fNfert", + 1771, + "fNgas", + 3732, + "fNgasFire", + 2297, + "fNgasNonFire", + 2104, + "fNleach", + 3795, + "fNloss", + 3744, + "fNnetmin", + 4132, + "fNup", + 3305, + "fProductDecomp", + 5875, + "fProductDecompLut", + 295, + "fVegFire", + 375, + "fVegLitter", + 12477, + "fVegLitterMortality", + 421, + "fVegLitterSenescence", + 5976, + "fVegSoil", + 181, + "fahLut", + 44, + "fbddtalk", + 2188, + "fbddtdic", + 2206, + "fbddtdife", + 2217, + "fbddtdin", + 2218, + "fbddtdip", + 2161, + "fbddtdisi", + 2189, + "fco2antt", + 303, + "fco2fos", + 93, + "fco2nat", + 735, + "fddtalk", + 736, + "fddtdic", + 738, + "fddtdife", + 722, + "fddtdin", + 725, + "fddtdip", + 721, + "fddtdisi", + 717, + "fediss", + 370, + "fescav", + 963, + "fg14co2abio", + 619, + "fgcfc11", + 809, + "fgcfc12", + 1536, + "fgco2", + 28887, + "fgco2abio", + 6090, + "fgco2nat", + 7511, + "fgdms", + 530, + "fgo2", + 10386, + "fgsf6", + 1372, + "ficeberg", + 5160, + "ficeberg2d", + 2, + "flandice", + 1319, + "flashrate", + 671, + "fldcapacity", + 45, + "fracInLut", + 520, + "fracLut", + 10394, + "fracOutLut", + 521, + "frfe", + 2944, + "fric", + 2813, + "friver", + 15571, + "frn", + 2951, + "froc", + 3255, + "fsfe", + 4546, + "fsitherm", + 5018, + "fsn", + 4477, + "gpp", + 32448, + "gppGrass", + 4165, + "gppLut", + 2049, + "gppShrub", + 663, + "gppTree", + 4164, + "gppc13", + 168, + "gppc14", + 168, + "grassFrac", + 16710, + "grassFracC3", + 13449, + "grassFracC4", + 13448, + "graz", + 4130, + "gwt", + 99, + "h2o", + 1953, + "hcfc22global", + 60, + "hcho", + 1610, + "hcl", + 2467, + "hcont300", + 579, + "hfbasin", + 14356, + "hfbasinpadv", + 1901, + "hfbasinpmadv", + 2907, + "hfbasinpmdiff", + 2252, + "hfbasinpsmadv", + 9, + "hfcorr", + 2057, + "hfds", + 32385, + "hfdsl", + 45, + "hfdsn", + 6570, + "hfdsnb", + 15, + "hfevapds", + 3128, + "hfgeou", + 4055, + "hfgeoubed", + 146, + "hfibthermds", + 1366, + "hfls", + 92000, + "hflsIs", + 1624, + "hflsLut", + 418, + "hflso", + 2624, + "hfmlt", + 49, + "hfrainds", + 1740, + "hfrunoffds", + 1009, + "hfsbl", + 47, + "hfsifrazil", + 4986, + "hfsnthermds", + 446, + "hfss", + 92405, + "hfssIs", + 1623, + "hfssLut", + 418, + "hfsso", + 2623, + "hfx", + 5289, + "hfy", + 5171, + "hno3", + 2651, + "ho2", + 1089, + "htovgyre", + 3105, + "htovovrt", + 3097, + "hur", + 64145, + "hurs", + 50869, + "hursmax", + 12901, + "hursmin", + 17886, + "hus", + 98074, + "hus7h", + 5, + "hus850", + 4541, + "huss", + 80353, + "hussLut", + 417, + "iareafl", + 2, + "iareagr", + 2, + "icem", + 274, + "icemIs", + 141, + "icfriver", + 715, + "intdic", + 12501, + "intdoc", + 1236, + "intparag", + 15, + "intpbfe", + 2763, + "intpbn", + 793, + "intpbp", + 395, + "intpbsi", + 2337, + "intpcalcite", + 931, + "intpn2", + 8010, + "intpoc", + 1616, + "intpp", + 13098, + "intppcalc", + 47, + "intppdiat", + 2523, + "intppdiaz", + 820, + "intppmisc", + 2090, + "intppnitrate", + 2343, + "intpppico", + 439, + "intuadse", + 5063, + "intuaw", + 6622, + "intvadse", + 5064, + "intvaw", + 6608, + "irrLut", + 291, + "isop", + 3682, + "jno2", + 1521, + "jo2", + 89, + "jo3", + 89, + "jpdftaureicemodis", + 95, + "jpdftaureliqmodis", + 96, + "ksat", + 149, + "lai", + 33493, + "laiLut", + 2017, + "landCoverFrac", + 4272, + "libmassbffl", + 2, + "libmassbfgr", + 2, + "licalvf", + 2, + "lim", + 2, + "limfecalc", + 47, + "limfediat", + 2443, + "limfediaz", + 764, + "limfemisc", + 4820, + "limfepico", + 379, + "limirrcalc", + 47, + "limirrdiat", + 2387, + "limirrdiaz", + 430, + "limirrmisc", + 4723, + "limirrpico", + 385, + "limncalc", + 47, + "limndiat", + 2446, + "limndiaz", + 47, + "limnmisc", + 4774, + "limnpico", + 377, + "limnsw", + 2, + "litempbotfl", + 2, + "litempbotgr", + 2, + "litemptop", + 278, + "litemptopIs", + 143, + "lithk", + 145, + "loadbc", + 3082, + "loaddust", + 7166, + "loadno3", + 2558, + "loadoa", + 2924, + "loadpoa", + 2689, + "loadso4", + 9310, + "loadsoa", + 131, + "loadss", + 10753, + "lossch4", + 1577, + "lossco", + 1531, + "lossn2o", + 813, + "lwp", + 10154, + "lwsffluxaero", + 57, + "lwsnl", + 11416, + "lwsrfasdust", + 50, + "lwsrfcsdust", + 50, + "lwtoaasdust", + 50, + "lwtoacsaer", + 1708, + "lwtoacsdust", + 50, + "lwtoafluxaerocs", + 253, + "masscello", + 8730, + "masso", + 5203, + "maxpblz", + 908, + "mc", + 8124, + "mcd", + 546, + "mcu", + 806, + "meanage", + 776, + "mfo", + 5065, + "mfodrake", + 3, + "mfoindo", + 3, + "minpblz", + 912, + "mlotst", + 26390, + "mlotstmax", + 5848, + "mlotstmin", + 5099, + "mlotstsq", + 7038, + "mmraerh2o", + 1684, + "mmraerso4", + 558, + "mmrbc", + 5195, + "mmrdust", + 4772, + "mmrnh4", + 775, + "mmrno3", + 1268, + "mmroa", + 4332, + "mmrpm1", + 1308, + "mmrpm10", + 1392, + "mmrpm2p5", + 2385, + "mmrso4", + 4712, + "mmrsoa", + 2021, + "mmrss", + 5274, + "modelCellAreai", + 2, + "mrfso", + 32121, + "mrfsofr", + 54, + "mrlqso", + 54, + "mrlsl", + 116, + "mrlso", + 10676, + "mrro", + 48448, + "mrroIs", + 1604, + "mrroLi", + 278, + "mrroLut", + 516, + "mrrob", + 198, + "mrros", + 29008, + "mrsfl", + 14741, + "mrsll", + 14653, + "mrso", + 44512, + "mrsoLut", + 515, + "mrsofc", + 5960, + "mrsol", + 31527, + "mrsos", + 48990, + "mrsosLut", + 422, + "mrsow", + 823, + "mrtws", + 6849, + "msftbarot", + 12208, + "msftmrho", + 2750, + "msftmrhompa", + 836, + "msftmyz", + 47, + "msftmz", + 16846, + "msftmzmpa", + 6837, + "msftmzsmpa", + 252, + "msftyrho", + 760, + "msftyrhompa", + 541, + "msftyz", + 6286, + "msftyzmpa", + 1775, + "msftyzsmpa", + 1, + "n2o", + 5805, + "n2oglobal", + 4479, + "nLand", + 4160, + "nLeaf", + 1876, + "nLitter", + 4035, + "nLitterCwd", + 334, + "nLitterSubSurf", + 89, + "nLitterSurf", + 89, + "nMineral", + 3817, + "nMineralNH4", + 1657, + "nMineralNO3", + 1653, + "nOther", + 89, + "nProduct", + 2276, + "nRoot", + 2165, + "nSoil", + 4154, + "nStem", + 2164, + "nVeg", + 3842, + "nbp", + 28919, + "necbLut", + 1397, + "nep", + 12516, + "netAtmosLandC13Flux", + 107, + "netAtmosLandC14Flux", + 109, + "netAtmosLandCO2Flux", + 17073, + "nh4", + 11687, + "nh4os", + 535, + "nh50", + 118, + "no", + 1622, + "no2", + 1658, + "no3", + 25391, + "no3os", + 17458, + "noy", + 1094, + "npp", + 32007, + "nppGrass", + 4193, + "nppLeaf", + 11800, + "nppLut", + 2056, + "nppOther", + 3300, + "nppRoot", + 11805, + "nppShrub", + 697, + "nppStem", + 7318, + "nppTree", + 4192, + "nppWood", + 11589, + "nudgincsm", + 26, + "nwdFracLut", + 5646, + "o2", + 24951, + "o2min", + 10748, + "o2os", + 17227, + "o2sat", + 2092, + "o2satos", + 1148, + "o3", + 16000, + "o3loss", + 1586, + "o3prod", + 1590, + "o3ste", + 212, + "obvfsq", + 4929, + "ocfriver", + 689, + "ocontempdiff", + 165, + "ocontempmint", + 13, + "ocontemppadvect", + 165, + "ocontemppmdiff", + 164, + "ocontemppsmadvect", + 23, + "ocontemprmadvect", + 194, + "ocontemptend", + 165, + "od440aer", + 4446, + "od443dust", + 94, + "od550aer", + 15354, + "od550aerh2o", + 2794, + "od550aerso", + 203, + "od550bb", + 429, + "od550bc", + 5629, + "od550csaer", + 4721, + "od550dust", + 11280, + "od550lt1aer", + 3625, + "od550no3", + 3104, + "od550oa", + 6683, + "od550so4", + 6785, + "od550soa", + 715, + "od550ss", + 9367, + "od865dust", + 492, + "od870aer", + 2108, + "oh", + 4242, + "omldamax", + 1295, + "opottempdiff", + 3513, + "opottempmint", + 4150, + "opottemppadvect", + 3477, + "opottemppmdiff", + 3510, + "opottemppsmadvect", + 342, + "opottemprmadvect", + 3342, + "opottemptend", + 3702, + "orog", + 40044, + "orogIs", + 166, + "osaltdiff", + 3668, + "osaltpadvect", + 3641, + "osaltpmdiff", + 3664, + "osaltpsmadvect", + 363, + "osaltrmadvect", + 3695, + "osalttend", + 3817, + "oxloss", + 123, + "oxprod", + 123, + "pabigthetao", + 7, + "pan", + 1545, + "parag", + 14, + "parasolRefl", + 879, + "pastureFrac", + 1824, + "pastureFracC3", + 714, + "pastureFracC4", + 715, + "pathetao", + 61, + "pbfe", + 998, + "pbo", + 9454, + "pbsi", + 1428, + "pcalc", + 991, + "pctisccp", + 9939, + "pflw", + 24, + "pfull", + 6566, + "ph", + 8263, + "phabio", + 190, + "phabioos", + 259, + "phalf", + 6528, + "phnat", + 844, + "phnatos", + 746, + "phos", + 3438, + "photo1d", + 1533, + "phyc", + 23747, + "phycalc", + 47, + "phycalcos", + 47, + "phycos", + 18529, + "phydiat", + 3685, + "phydiatos", + 589, + "phydiaz", + 1301, + "phydiazos", + 403, + "phyfe", + 4167, + "phyfeos", + 10565, + "phymisc", + 3146, + "phymiscos", + 200, + "phyn", + 6696, + "phynos", + 10038, + "phyp", + 1622, + "phypico", + 8913, + "phypicoos", + 408, + "phypos", + 521, + "physi", + 3044, + "physios", + 10200, + "pnitrate", + 1855, + "po4", + 19061, + "po4os", + 3187, + "pon", + 3584, + "ponos", + 3672, + "pop", + 1114, + "popos", + 722, + "pp", + 8012, + "ppdiat", + 2689, + "ppdiaz", + 693, + "ppmisc", + 3372, + "ppos", + 1812, + "pppico", + 14, + "pr", + 112164, + "prbigthetao", + 7, + "prc", + 45785, + "prcprof", + 8, + "prhmax", + 7030, + "prlsns", + 8, + "prlsprof", + 8, + "prra", + 9539, + "prraIs", + 1609, + "prrc", + 126, + "prrsn", + 15, + "prsn", + 71185, + "prsnIs", + 164, + "prsnc", + 106, + "prsnsn", + 15, + "prthetao", + 53, + "prveg", + 20598, + "prw", + 50998, + "ps", + 78119, + "psitem", + 6050, + "psl", + 118815, + "pso", + 2588, + "ptp", + 7773, + "qgwr", + 68, + "rGrowth", + 11618, + "rMaint", + 11617, + "ra", + 27837, + "raGrass", + 4187, + "raLeaf", + 270, + "raLut", + 1960, + "raRoot", + 274, + "raShrub", + 692, + "raTree", + 4191, + "rac13", + 158, + "rac14", + 159, + "rainmxrat", + 52, + "reffcclwtop", + 54, + "reffclic", + 565, + "reffclis", + 719, + "reffclwc", + 565, + "reffclws", + 936, + "reffclwtop", + 3897, + "reffsclwtop", + 203, + "remoc", + 988, + "residualFrac", + 9266, + "rh", + 27105, + "rhGrass", + 3836, + "rhLitter", + 3743, + "rhLut", + 864, + "rhShrub", + 342, + "rhSoil", + 4089, + "rhTree", + 3835, + "rhc13", + 157, + "rhc14", + 157, + "rivi", + 15, + "rivo", + 1659, + "rld", + 3288, + "rld4co2", + 2709, + "rldcs", + 3263, + "rldcs4co2", + 2710, + "rlds", + 85567, + "rldsIs", + 164, + "rldscs", + 46903, + "rlntds", + 2624, + "rls", + 39416, + "rlsaf", + 4, + "rlscsaf", + 4, + "rlu", + 3309, + "rlu4co2", + 2710, + "rlucs", + 3227, + "rlucs4co2", + 2710, + "rlus", + 65212, + "rlusIs", + 164, + "rlusLut", + 413, + "rlut", + 86488, + "rlut4co2", + 2725, + "rlutaf", + 2235, + "rlutcs", + 61192, + "rlutcs4co2", + 2723, + "rlutcsaf", + 2241, + "rootd", + 5760, + "rsd", + 3372, + "rsd4co2", + 2710, + "rsdcs", + 3006, + "rsdcs4co2", + 2710, + "rsdo", + 5035, + "rsdoabsorb", + 3639, + "rsds", + 100275, + "rsdsIs", + 175, + "rsdscs", + 55335, + "rsdscsdiff", + 3947, + "rsdsdiff", + 8988, + "rsdt", + 59960, + "rsntds", + 16418, + "rss", + 39399, + "rssaf", + 4, + "rsscsaf", + 4, + "rsu", + 3369, + "rsu4co2", + 2710, + "rsucs", + 3348, + "rsucs4co2", + 2710, + "rsus", + 65623, + "rsusIs", + 164, + "rsusLut", + 431, + "rsuscs", + 36208, + "rsut", + 63258, + "rsut4co2", + 2725, + "rsutaf", + 2292, + "rsutcs", + 52737, + "rsutcs4co2", + 2724, + "rsutcsaf", + 2258, + "rtmt", + 41176, + "rv850", + 2067, + "rzwc", + 362, + "sandfrac", + 69, + "sbl", + 20369, + "sblIs", + 1602, + "sblnosn", + 39, + "sci", + 7367, + "scldncl", + 203, + "sconcdust", + 5538, + "sconcso4", + 5527, + "sconcss", + 5543, + "sedustCI", + 15, + "sf6", + 1639, + "sfcWind", + 92555, + "sfcWindmax", + 42022, + "sfdsi", + 12847, + "sfno2", + 34, + "sfo3", + 43, + "sfo3max", + 308, + "sfpm25", + 283, + "sfriver", + 446, + "sftflf", + 2, + "sftgif", + 20995, + "sftgrf", + 10499, + "sftlf", + 31255, + "sftof", + 22007, + "shrubFrac", + 3173, + "si", + 15783, + "siage", + 5124, + "siareaacrossline", + 2327, + "siarean", + 8278, + "siareas", + 8315, + "sicompstren", + 4698, + "siconc", + 43452, + "siconca", + 25109, + "sidconcdyn", + 3208, + "sidconcth", + 4477, + "sidivvel", + 7603, + "sidmassdyn", + 5148, + "sidmassevapsubl", + 6222, + "sidmassgrowthbot", + 7077, + "sidmassgrowthwat", + 7180, + "sidmasslat", + 4647, + "sidmassmeltbot", + 7283, + "sidmassmelttop", + 7265, + "sidmasssi", + 7181, + "sidmassth", + 5174, + "sidmasstranx", + 6030, + "sidmasstrany", + 6035, + "sidragbot", + 558, + "sidragtop", + 1617, + "siextentn", + 8382, + "siextents", + 8389, + "sifb", + 4183, + "siflcondbot", + 4217, + "siflcondtop", + 5890, + "siflfwbot", + 4482, + "siflfwdrain", + 3401, + "sifllatstop", + 5158, + "sifllwdtop", + 4748, + "sifllwutop", + 4964, + "siflsenstop", + 5827, + "siflsensupbot", + 4431, + "siflswdbot", + 1629, + "siflswdtop", + 5127, + "siflswutop", + 4894, + "siforcecoriolx", + 3633, + "siforcecorioly", + 3641, + "siforceintstrx", + 3600, + "siforceintstry", + 3609, + "siforcetiltx", + 3325, + "siforcetilty", + 3329, + "sihc", + 6647, + "siitdconc", + 2979, + "siitdsnconc", + 892, + "siitdsnthick", + 1964, + "siitdthick", + 1996, + "siltfrac", + 30, + "simass", + 22373, + "simassacrossline", + 2675, + "simpconc", + 2172, + "simpmass", + 1530, + "simprefrozen", + 74, + "sios", + 9738, + "sipr", + 5659, + "sirdgconc", + 966, + "sirdgthick", + 1787, + "sisali", + 1176, + "sisaltmass", + 7797, + "sishevel", + 6505, + "sisnconc", + 9878, + "sisnhc", + 4711, + "sisnmass", + 10708, + "sisnthick", + 28425, + "sispeed", + 18095, + "sistremax", + 1630, + "sistresave", + 1628, + "sistrxdtop", + 7216, + "sistrxubot", + 6021, + "sistrydtop", + 7209, + "sistryubot", + 6025, + "sitempbot", + 3982, + "sitempsnic", + 5755, + "sitemptop", + 20935, + "sithick", + 33031, + "sitimefrac", + 23304, + "siu", + 29348, + "siv", + 29316, + "sivol", + 15066, + "sivoln", + 8685, + "sivols", + 8412, + "sltbasin", + 1624, + "slthick", + 190, + "sltnortha", + 78, + "sltovgyre", + 2680, + "sltovovrt", + 2650, + "smc", + 455, + "smoc", + 3, + "snc", + 48111, + "sncIs", + 135, + "snd", + 43559, + "sndmassdyn", + 2349, + "sndmassmelt", + 6054, + "sndmasssi", + 2494, + "sndmasssnf", + 8037, + "sndmasssubl", + 3016, + "sndmasswindrif", + 295, + "snicefreez", + 276, + "snicefreezIs", + 143, + "snicem", + 276, + "snicemIs", + 141, + "snm", + 16294, + "snmIs", + 141, + "snmassacrossline", + 2343, + "snowmxrat", + 73, + "snrefr", + 39, + "snw", + 35548, + "snwc", + 303, + "so", + 38561, + "so2", + 4306, + "sob", + 7630, + "soga", + 12647, + "solbnd", + 31, + "somint", + 4463, + "sootsn", + 2089, + "sos", + 42557, + "sosga", + 4419, + "sossq", + 6190, + "spco2", + 21582, + "spco2abio", + 3157, + "spco2nat", + 3374, + "strbasemag", + 2, + "sw", + 28, + "sweLut", + 407, + "swsffluxaero", + 1, + "swsrfasdust", + 50, + "swsrfcsdust", + 50, + "swtoaasdust", + 50, + "swtoacsdust", + 50, + "swtoafluxaerocs", + 253, + "sza", + 31, + "t2", + 31, + "t20d", + 9828, + "tSoilPools", + 558, + "ta", + 132682, + "ta500", + 4860, + "ta700", + 4337, + "ta850", + 22585, + "talk", + 26640, + "talknat", + 1565, + "talknatos", + 574, + "talkos", + 6116, + "tas", + 116763, + "tasIs", + 1595, + "tasLut", + 421, + "tasmax", + 83025, + "tasmaxCrop", + 224, + "tasmin", + 83377, + "tasminCrop", + 232, + "tatp", + 2653, + "tau", + 25, + "tauu", + 55277, + "tauucorr", + 14, + "tauuo", + 16047, + "tauupbl", + 409, + "tauv", + 55321, + "tauvcorr", + 14, + "tauvo", + 15941, + "tauvpbl", + 410, + "tcs", + 59, + "tdps", + 11012, + "tg", + 4, + "tgs", + 69, + "thetao", + 41847, + "thetaoga", + 11436, + "thetaot", + 5784, + "thetaot2000", + 5590, + "thetaot300", + 5583, + "thetaot700", + 5582, + "thkcello", + 10229, + "tnhus", + 1741, + "tnhusa", + 2628, + "tnhusc", + 3145, + "tnhusd", + 564, + "tnhusmp", + 2221, + "tnhuspbl", + 1046, + "tnhusscp", + 1040, + "tnhusscpbl", + 2047, + "tnkebto", + 491, + "tnpeo", + 1235, + "tnt", + 4242, + "tnta", + 5089, + "tntc", + 7434, + "tntd", + 50, + "tntmp", + 7438, + "tntnogw", + 304, + "tntogw", + 555, + "tntpbl", + 1046, + "tntr", + 4540, + "tntrl", + 3818, + "tntrlcs", + 2270, + "tntrs", + 3413, + "tntrscs", + 2265, + "tntscp", + 3078, + "tntscpbl", + 4508, + "tob", + 7553, + "tomint", + 38, + "topg", + 145, + "tos", + 53266, + "tosga", + 6015, + "tossq", + 8566, + "toz", + 3825, + "tpf", + 116, + "tr", + 327, + "tran", + 22549, + "treeFrac", + 16575, + "treeFracBdlDcd", + 11575, + "treeFracBdlEvg", + 11513, + "treeFracNdlDcd", + 11510, + "treeFracNdlEvg", + 11566, + "treeFracPrimDec", + 3231, + "treeFracPrimEver", + 3232, + "tropoz", + 1430, + "ts", + 66776, + "tsIs", + 164, + "tsl", + 34575, + "tsland", + 59, + "tslsi", + 4918, + "tslsiLut", + 388, + "tsn", + 6019, + "tsnIs", + 132, + "tsnl", + 16, + "tsns", + 50, + "ttop", + 2228, + "twap", + 79, + "tws", + 5, + "u2", + 88, + "ua", + 133180, + "ua10", + 5877, + "ua100m", + 7, + "ua27", + 2, + "uas", + 81487, + "umo", + 12787, + "uo", + 31181, + "uqint", + 179, + "ut", + 32, + "utendepfd", + 23750, + "utendnogw", + 4727, + "utendogw", + 12802, + "utendvtem", + 6051, + "utendwtem", + 6048, + "uv", + 30, + "uwap", + 22, + "v2", + 87, + "va", + 113666, + "va100m", + 7, + "va27", + 2, + "vas", + 81996, + "vegFrac", + 16388, + "vegHeight", + 2853, + "vegHeightCrop", + 391, + "vegHeightGrass", + 391, + "vegHeightPasture", + 119, + "vegHeightShrub", + 387, + "vegHeightTree", + 386, + "vmo", + 12699, + "vmrox", + 138, + "vo", + 31111, + "volcello", + 15449, + "volo", + 8435, + "vqint", + 179, + "vsf", + 2775, + "vsfcorr", + 21, + "vsfevap", + 384, + "vsfpr", + 392, + "vsfriver", + 388, + "vsfsit", + 919, + "vt", + 31, + "vt100", + 3791, + "vtem", + 23851, + "vtendnogw", + 443, + "vtendogw", + 3695, + "vwap", + 22, + "wa", + 1339, + "wap", + 87622, + "wap2", + 22, + "wap500", + 5686, + "wbptemp", + 22, + "wbptemp7h", + 6, + "wetbc", + 7266, + "wetdust", + 7316, + "wetlandCH4", + 1831, + "wetlandCH4cons", + 251, + "wetlandCH4prod", + 4267, + "wetlandFrac", + 12396, + "wetnh3", + 777, + "wetnh4", + 810, + "wetnoy", + 1375, + "wetoa", + 3292, + "wetso2", + 8567, + "wetso4", + 7534, + "wetss", + 3420, + "wfcorr", + 616, + "wfo", + 16465, + "wfonocorr", + 2227, + "wilt", + 45, + "wmo", + 11638, + "wo", + 18586, + "wsgmax10m", + 7, + "wtd", + 3304, + "wtem", + 22576, + "xgwdparam", + 7, + "xvelbase", + 2, + "xvelmean", + 2, + "xvelsurf", + 2, + "ygwdparam", + 7, + "yvelbase", + 2, + "yvelmean", + 2, + "yvelsurf", + 2, + "zfull", + 5276, + "zfullo", + 516, + "zg", + 104113, + "zg10", + 5901, + "zg100", + 4627, + "zg1000", + 9756, + "zg500", + 25440, + "zg7h", + 4, + "zhalf", + 39, + "zhalfo", + 708, + "zmeso", + 2741, + "zmesoos", + 198, + "zmicro", + 2768, + "zmicroos", + 198, + "zmla", + 1086, + "zmtnt", + 260, + "zo2min", + 11826, + "zooc", + 23343, + "zoocos", + 5794, + "zos", + 37480, + "zossq", + 18219, + "zostoga", + 14900, + "zsatarag", + 1030, + "zsatcalc", + 1474, + "ztp", + 7557, + "zvelbase", + 2, + "zvelsurf", + 2 + ], + "cf_standard_name": [ + "3d-field_of_transported_co2", + 23, + "3d_field_of_transported_co2", + 92, + "Atlantic Meridional Overturning Circulation at 26.5N", + 1, + "CO2_3D_tracer", + 34, + "Carbon_flux_out_of_storage_product_pools_into_atmos", + 19, + "Meridional Overturning Circulation at 34S", + 1, + "abiotic_carbonate_ion_concentration", + 134, + "abiotic_delta_pco_partial_pressure", + 157, + "abiotic_dissolved_inorganic_carbon-14_concentration", + 548, + "abiotic_dissolved_inorganic_carbon_concentration", + 5034, + "abiotic_ph", + 164, + "abiotic_surface_aqueous_partial_pressure_of_co2", + 3006, + "aerodynamic_resistance", + 152, + "aerosol_extinction_coefficient", + 1259, + "aerosol_number_concentration", + 840, + "aerosol_optical_depth_at_550_nm_due_to_stratospheric_volcanic_aerosols", + 169, + "aerosol_sulfate_mass_mixing_ratio", + 2274, + "aerosol_water_aod@550nm", + 756, + "aerosol_water_mass_mixing_ratio", + 952, + "age_of_sea_ice", + 5124, + "age_of_stratospheric_air", + 776, + "age_of_surface_snow", + 3368, + "air_pressure", + 13094, + "air_pressure_at_cloud_top", + 9939, + "air_pressure_at_convective_cloud_base", + 13752, + "air_pressure_at_convective_cloud_top", + 15216, + "air_pressure_at_mean_sea_level", + 58297, + "air_pressure_at_sea_level", + 4307, + "air_temperature", + 450098, + "air_temperature_at_cloud_top", + 2228, + "all-sky_surface_longwave_radiative_flux_due_to_dust", + 40, + "all-sky_surface_shortwave_radiative_flux_due_to_dust", + 38, + "ambient_aerosol_absorption_optical_thickness_at_550_nm", + 1803, + "ambient_aerosol_absorption_optical_thickness_at_550nm", + 5430, + "ambient_aerosol_optical_depth_at_870nm", + 764, + "ambient_aerosol_optical_thickness_at_440_nm", + 953, + "ambient_aerosol_optical_thickness_at_440nm", + 601, + "ambient_aerosol_optical_thickness_at_550_nm", + 3585, + "ambient_aerosol_optical_thickness_at_550nm", + 9599, + "ambient_aerosol_optical_thickness_at_870_nm", + 542, + "ambient_fine_aerosol_optical_depth_at_550nm", + 919, + "ambient_fine_mode_aerosol_optical_thickness_at_550_nm", + 953, + "anthropogenic_heat_flux_generated_from_non-renewable_human_primary_energy_consumption", + 14, + "aqueous-phase_production_rate_of_so4", + 1224, + "area_covered_by_floating_ice_shelves", + 2, + "area_covered_by_grounded_ice_sheet", + 2, + "area_fraction", + 278264, + "artificial_tracer_with_50_day_lifetime", + 112, + "atlantic_meridional_overturning_circulation", + 2, + "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol", + 1017, + "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol_particles", + 4427, + "atmosphere_boundary_layer_thickness", + 12302, + "atmosphere_cloud_condensed_water_content", + 2137, + "atmosphere_cloud_ice_content", + 2130, + "atmosphere_convective_cloud_condensed_water_content", + 19, + "atmosphere_downdraft_convective_mass_flux", + 546, + "atmosphere_eastward_stress_due_to_gravity_wave_drag", + 7, + "atmosphere_heat_diffusivity", + 1788, + "atmosphere_mass_content_of_black_carbon_dry_aerosol", + 40, + "atmosphere_mass_content_of_cloud_condensed_water", + 39724, + "atmosphere_mass_content_of_cloud_ice", + 39632, + "atmosphere_mass_content_of_cloud_liquid_water", + 10154, + "atmosphere_mass_content_of_convective_cloud_condensed_water", + 112, + "atmosphere_mass_content_of_convective_cloud_ice", + 30, + "atmosphere_mass_content_of_dust_dry_aerosol", + 636, + "atmosphere_mass_content_of_dust_dry_aerosol_particles", + 4548, + "atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles", + 2549, + "atmosphere_mass_content_of_nitrate_dry_aerosol", + 36, + "atmosphere_mass_content_of_nitrate_dry_aerosol_particles", + 2444, + "atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol", + 39, + "atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles", + 2501, + "atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol", + 38, + "atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_particles", + 2446, + "atmosphere_mass_content_of_sea_salt_dry_aerosol_particles", + 4659, + "atmosphere_mass_content_of_seasalt_dry_aerosol", + 624, + "atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol", + 1, + "atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_particles", + 3, + "atmosphere_mass_content_of_sulfate_dry_aerosol", + 623, + "atmosphere_mass_content_of_sulfate_dry_aerosol_particles", + 3238, + "atmosphere_mass_content_of_water_vapor", + 48639, + "atmosphere_mass_of_air_per_unit_area", + 1910, + "atmosphere_mass_of_carbon_dioxide", + 5343, + "atmosphere_momentum_diffusivity", + 1787, + "atmosphere_net_upward_convective_mass_flux", + 8124, + "atmosphere_net_upward_deep_convective_mass_flux", + 458, + "atmosphere_net_upward_shallow_convective_mass_flux", + 455, + "atmosphere_northward_stress_due_to_gravity_wave_drag", + 7, + "atmosphere_number_content_of_cloud_droplets", + 1873, + "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", + 10585, + "atmosphere_optical_thickness_due_to_black_carbon_ambient_aerosol", + 5629, + "atmosphere_optical_thickness_due_to_cloud", + 3660, + "atmosphere_optical_thickness_due_to_dust_ambient_aerosol", + 839, + "atmosphere_optical_thickness_due_to_dust_ambient_aerosol_particles", + 4092, + "atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol", + 1, + "atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol_particles", + 1923, + "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol", + 1627, + "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol_particles", + 3305, + "atmosphere_optical_thickness_due_to_pm1_ambient_aerosol", + 526, + "atmosphere_optical_thickness_due_to_pm1_ambient_aerosol_particles", + 1227, + "atmosphere_optical_thickness_due_to_sea_salt_ambient_aerosol_particles", + 3072, + "atmosphere_optical_thickness_due_to_seasalt_ambient_aerosol", + 835, + "atmosphere_optical_thickness_due_to_stratiform_cloud", + 4, + "atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", + 1, + "atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol_particles", + 3345, + "atmosphere_optical_thickness_due_to_water_in_ambient_aerosol", + 97, + "atmosphere_optical_thickness_due_to_water_in_ambient_aerosol_particles", + 1941, + "atmosphere_relative_vorticity", + 2067, + "atmosphere_transformed_eulerian_mean_meridional_overturning_mass_streamfunction", + 1775, + "atmosphere_updraft_convective_mass_flux", + 806, + "atmosphere_water_vapor_content", + 2359, + "autotrophic_respiration_on_grass_tiles", + 1056, + "autotrophic_respiration_on_grass_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 84, + "autotrophic_respiration_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 73, + "autotrophic_respiration_on_shrub_tiles", + 262, + "autotrophic_respiration_on_shrub_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 84, + "autotrophic_respiration_on_tree_tiles", + 1061, + "autotrophic_respiration_on_tree_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 84, + "average_normal_stress_in_sea_ice", + 1428, + "basal_downward_heat_flux_in_sea_ice", + 2293, + "basal_specific_mass_balance_flux_of_floating_ice_shelf", + 2, + "basal_specific_mass_balance_flux_of_grounded_ice_sheet", + 2, + "basal_temperature_of_floating_ice_shelf", + 2, + "basal_temperature_of_grounded_ice_sheet", + 2, + "bedrock_altitude", + 145, + "biological_nitrogen_fixation", + 1126, + "calipso_ice_cloud_fraction", + 13, + "calipso_ice_cloud_percentage", + 49, + "calipso_liquid_cloud_fraction", + 13, + "calipso_liquid_cloud_percentage", + 49, + "canopy_albedo", + 14, + "canopy_height", + 4527, + "canopy_snow_amount", + 287, + "canopy_temperature", + 59, + "canopy_water_amount", + 57, + "carbon-13_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land_[kgc_m-2_s-1]", + 59, + "carbon-13_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_on_land_[kgc_m-2_s-1]", + 59, + "carbon-13_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land_[kgc_m-2_s-1]", + 59, + "carbon-14_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land_[kgc_m-2_s-1]", + 59, + "carbon-14_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_on_land_[kgc_m-2_s-1]", + 59, + "carbon-14_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land_[kgc_m-2_s-1]", + 59, + "carbon_content_of_products_of_anthropogenic_land_use_change", + 501, + "carbon_harvested_due_to_land-use_or_land-cover_change_process_that_enters_anthropogenic_product_pools_on_tile", + 168, + "carbon_in_above_and_below-ground_litter_pools_on_land-use_tiles", + 284, + "carbon_in_above_and_belowground_litter_pools_on_land_use_tiles", + 64, + "carbon_in_soil_pool_on_land-use_tiles", + 283, + "carbon_in_soil_pool_on_land_use_tiles", + 71, + "carbon_mass_content_of_forestry_and_agricultural_products", + 4664, + "carbon_mass_flux_due_to_npp_allocation_to_leaf", + 5248, + "carbon_mass_flux_due_to_npp_allocation_to_roots", + 5251, + "carbon_mass_flux_due_to_npp_allocation_to_wood", + 5234, + "carbon_mass_flux_from_vegetation_into_atmosphere_due_to_co2_emission_from_all_fire", + 218, + "carbon_mass_flux_from_vegetation_into_atmosphere_due_to_co2_emission_from_all_fire_[kgc_m-2_s-1]", + 103, + "carbon_mass_flux_into_atmosphere_due_to_any_human_activity", + 57, + "carbon_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land", + 10196, + "carbon_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land_[kgc_m-2_s-1]", + 6256, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_fire_including_all_sources", + 109, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_fire_including_all_sources_[kgc_m-2_s-1]", + 102, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_natural_fire", + 152, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_natural_fire_[kgc_m-2_s-1]", + 2, + "carbon_mass_flux_into_atmosphere_due_to_co2_emissions_from_fire_resulting_from_all_sources_including_natural,_anthropogenic_and_land_use_change.", + 118, + "carbon_mass_flux_into_atmosphere_due_to_growth_autotrophic_respiration_on_land", + 4989, + "carbon_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_from_litter_on_land", + 1371, + "carbon_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_from_soil_on_land", + 1458, + "carbon_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_on_land", + 10248, + "carbon_mass_flux_into_atmosphere_due_to_maintenance_autotrophic_respiration_on_land", + 4993, + "carbon_mass_flux_into_atmosphere_due_to_maintenance_autotrophic_respiration_on_land_[kgc_m-2_s-1]", + 471, + "carbon_mass_flux_into_forestry_and_agricultural_products_due_to_anthropogenic_land_use_or_land_cover_change", + 4832, + "carbon_mass_flux_into_litter_and_soil_due_to_anthropogenic_land_use_or_land_cover_change", + 9, + "carbon_mass_flux_into_soil_and_litter_due_to_anthropogenic_land_use_or_land_cover_change", + 146, + "carbon_mass_flux_into_soil_from_litter", + 10728, + "carbon_mass_flux_into_soil_from_vegetation_excluding_litter", + 181, + "carbon_mass_flux_into_wood_and_agricultural_product_pools_due_to_anthropogenic_land_use_or_land_cover_change", + 11, + "carbon_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land", + 12925, + "carbon_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land_[kgc_m-2_s-1]", + 7444, + "carbon_mass_flux_out_of_atmosphere_due_to_net_primary_production_on_land", + 12855, + "carbon_mass_in_above-ground_litter", + 2469, + "carbon_mass_in_below-ground_litter", + 2536, + "carbon_mass_in_coarse_woody_debris", + 588, + "carbon_mass_in_each_model_soil_level_(summed_over_all_soil_carbon_pools_in_that_level)", + 138, + "carbon_mass_in_each_model_soil_pool_(summed_over_vertical_levels)", + 840, + "carbon_mass_in_fast_soil_pool", + 2063, + "carbon_mass_in_leaves", + 6121, + "carbon_mass_in_litter_on_grass_tiles", + 876, + "carbon_mass_in_litter_on_shrub_tiles", + 83, + "carbon_mass_in_litter_on_tree_tiles", + 876, + "carbon_mass_in_litter_pool", + 17375, + "carbon_mass_in_medium_soil_pool", + 2157, + "carbon_mass_in_model_soil_pool", + 14752, + "carbon_mass_in_other_living_compartments_on_land", + 690, + "carbon_mass_in_products_of_land-use_change", + 3203, + "carbon_mass_in_products_of_land_use_change", + 1613, + "carbon_mass_in_roots", + 6112, + "carbon_mass_in_slow_soil_pool", + 2092, + "carbon_mass_in_soil_on_grass_tiles", + 877, + "carbon_mass_in_soil_on_shrub_tiles", + 83, + "carbon_mass_in_soil_on_tree_tiles", + 876, + "carbon_mass_in_soil_pool", + 1800, + "carbon_mass_in_soil_pool_above_1m_depth", + 322, + "carbon_mass_in_stem", + 6166, + "carbon_mass_in_vegetation_components_other_than_leaves,_stems_and_roots", + 983, + "carbon_mass_in_wood", + 5089, + "carbon_transferred_directly_to_atmosphere_due_to_any_land-use_or_land-cover_change_activities", + 106, + "carbon_transferred_directly_to_atmosphere_due_to_any_land-use_or_land-cover_change_activities_[kgc_m-2_s-1]", + 65, + "carbon_transferred_directly_to_atmosphere_due_to_any_land-use_or_land-cover_change_activities_including_deforestation_or_agricultural_fire", + 154, + "carbon_transferred_to_soil_or_litter_pools_due_to_land-use_or_land-cover_change_processes_on_tile", + 334, + "carbonate_ion_concentration_for_sea_water_in_equilibrium_with_pure_calcite", + 467, + "cell_area", + 65763, + "cell_thickness", + 10398, + "ch3coch3_volume_mixing_ratio", + 656, + "change_in_groundwater", + 8, + "change_in_interception_storage", + 8, + "change_in_river_storage", + 8, + "change_in_snow/ice_cold_content", + 8, + "change_in_snow_water_equivalent", + 8, + "change_in_soil_moisture", + 8, + "change_in_surface_heat_storage", + 8, + "change_in_surface_water_storage", + 8, + "change_over_time_in_amount_of_ice_and_snow_on_land", + 15, + "change_over_time_in_canopy_water_amount", + 15, + "change_over_time_in_groundwater_amount", + 15, + "change_over_time_in_land_water_amount", + 15, + "change_over_time_in_mass_content_of_water_in_soil", + 15, + "change_over_time_in_river_water_amount", + 15, + "change_over_time_in_thermal_energy_content_of_ice_and_snow_on_land", + 15, + "change_over_time_in_thermal_energy_content_of_vegetation_and_litter_and_soil", + 15, + "chemical_production_of_dry_aerosol_secondary_organic_matter", + 562, + "clear-sky_surface_longwave_radiative_flux_due_to_dust", + 42, + "clear-sky_surface_shortwave_radiative_flux_due_to_dust", + 37, + "cloud-top_effective_droplet_radius", + 2, + "cloud-top_effective_droplet_radius_in_convective_cloud", + 5, + "cloud-top_effective_droplet_radius_in_stratiform_cloud", + 140, + "cloud_albedo", + 8517, + "cloud_area_fraction", + 104090, + "cloud_area_fraction_in_atmosphere_layer", + 48606, + "cloud_droplet_number_concentration_of_convective_cloud_tops", + 5, + "cloud_droplet_number_concentration_of_stratiform_cloud_tops", + 140, + "cloud_ice_mixing_ratio", + 70, + "cloud_liquid_water_mixing_ratio", + 70, + "compressive_strength_of_sea_ice", + 4698, + "concentration_of_dust", + 636, + "conductive_heat_flux_at_sea_ice_surface", + 543, + "convection_time_fraction", + 12404, + "convective_cloud_area_fraction", + 1954, + "convective_cloud_area_fraction_in_atmosphere_layer", + 844, + "convective_ice_water_path", + 83, + "convective_precipitation_flux", + 45785, + "convective_rainfall_flux", + 134, + "convective_snowfall_flux", + 106, + "coriolis_force_term_in_force_balance_(x-component)", + 1638, + "coriolis_force_term_in_force_balance_(y-component)", + 1638, + "covariance_over_longitude_of_northward_wind_and_air_temperature", + 308, + "decomposition_out_of_product_pools_to_co2_in_atmos", + 1923, + "decomposition_out_of_product_pools_to_co2_in_atmosphere", + 311, + "decomposition_out_of_product_pools_to_co2_in_atmosphere_as_carbon_mass_flux_[kgc_m-2_s-1]", + 143, + "deforested_biomass_into_product_pool_due_to_anthorpogenic_land_use_change", + 2, + "deforested_biomass_that_goes_into_product_pool_as_a_result_of_anthropogenic_land-use_change", + 4318, + "deforested_biomass_that_goes_into_product_pool_as_a_result_of_anthropogenic_land_use_change", + 1161, + "deforested_or_harvested_biomass_as_a_result_of_anthropogenic_land-use_or_change", + 425, + "depth_at_shallowest_isotherm_defined_by_soil_temperature", + 44, + "depth_at_shallowest_local_minimum_in_vertical_profile_of_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", + 11826, + "depth_below_geoid", + 1224, + "depth_integral_of_product_of_sea_water_density_and_conservative_temperature", + 8, + "depth_integral_of_product_of_sea_water_density_and_prognostic_salinity", + 3272, + "depth_of_frozen_soil", + 8, + "depth_of_isosurface_of_sea_water_potential_temperature", + 9828, + "depth_to_soil_thaw", + 23, + "dew_point_temperature", + 11012, + "dissolved_organic_carbon_content", + 581, + "dissolved_oxygen_concentration_at_saturation", + 783, + "divergence_of_sea_ice_velocity", + 7603, + "downward_heat_flux_at_ground_level_in_snow", + 15, + "downward_inorganic_carbon_flux_at_ocean_bottom", + 1500, + "downward_liquid_water_mass_flux_into_groundwater", + 52, + "downward_organic_carbon_flux_at_ocean_bottom", + 1890, + "downward_sea_ice_basal_salt_flux", + 12847, + "downward_x_stress_at_sea_water_surface", + 2689, + "downward_x_stress_correction_at_sea_water_surface", + 2, + "downward_y_stress_at_sea_water_surface", + 2688, + "downward_y_stress_correction_at_sea_water_surface", + 2, + "downwelling_longwave_flux_in_air", + 5997, + "downwelling_longwave_flux_in_air_assuming_clear_sky", + 5973, + "downwelling_shortwave_flux_in_air", + 6082, + "downwelling_shortwave_flux_in_air_assuming_clear_sky", + 5716, + "downwelling_shortwave_flux_in_sea_water", + 5035, + "downwelling_shortwave_flux_in_sea_water_at_sea_ice_base", + 702, + "downwelling_shortwave_flux_under_sea_ice", + 927, + "dry_and_wet_deposition_of_reactive_nitrogen_onto_land", + 1134, + "dry_deposition_rate_of_black_carbon_aerosol_mass", + 5883, + "dry_deposition_rate_of_dry_aerosol_total_organic_matter", + 2087, + "dry_deposition_rate_of_dust", + 5980, + "dry_deposition_rate_of_nh3", + 158, + "dry_deposition_rate_of_nh4", + 502, + "dry_deposition_rate_of_noy", + 905, + "dry_deposition_rate_of_o3", + 636, + "dry_deposition_rate_of_sea-salt_aerosol", + 1035, + "dry_deposition_rate_of_seasalt", + 1271, + "dry_deposition_rate_of_so2", + 5678, + "dry_deposition_rate_of_so4", + 6037, + "dust_aerosol_mass_mixing_ratio", + 2338, + "dust_aod@550nm", + 1774, + "dust_optical_depth_at_865nm", + 58, + "dust_optical_thickness_at_550nm", + 4768, + "eastward_atmosphere_dry_static_energy_transport_across_unit_distance", + 4673, + "eastward_atmosphere_water_transport_across_unit_distance", + 6232, + "eastward_humidity_transport", + 38, + "eastward_surface_stress_from_planetary_boundary_layer_scheme", + 242, + "eastward_wind", + 220552, + "effective_radius_of_cloud_liquid_water_particle_at_liquid_water_cloud_top", + 3646, + "effective_radius_of_cloud_liquid_water_particles_at_liquid_water_cloud_top", + 249, + "effective_radius_of_convective_cloud_ice_particle", + 565, + "effective_radius_of_convective_cloud_liquid_water_particle", + 565, + "effective_radius_of_convective_cloud_liquid_water_particle_at_convective_liquid_water_cloud_top", + 49, + "effective_radius_of_stratiform_cloud_ice_particle", + 711, + "effective_radius_of_stratiform_cloud_ice_particles", + 4, + "effective_radius_of_stratiform_cloud_liquid_water_particle", + 920, + "effective_radius_of_stratiform_cloud_liquid_water_particle_at_stratiform_liquid_water_cloud_top", + 62, + "effective_radius_of_stratiform_cloud_liquid_water_particles", + 9, + "effective_radius_of_stratiform_cloud_liquid_water_particles_at_stratiform_liquid_water_cloud_top", + 1, + "elemental_carbon_mass_mixing_ratio", + 2554, + "emission_rate_of_black_carbon_aerosol_mass", + 520, + "energy_of_sublimation", + 23, + "epfy", + 201, + "epfz", + 202, + "equivalent_thickness_at_stp_of_atmosphere_ozone_content", + 5255, + "evaporation", + 323, + "evaporation_including_sublimation_and_transpiration", + 28543, + "evaporation_including_sublimation_and_transpiration_", + 18, + "evs", + 16, + "fast_soil_pool_carbon_content", + 442, + "fast_soil_pool_mass_content_of_carbon", + 6257, + "field_capacity", + 2, + "fire_CO2_emissions_from_all_sources", + 1, + "fire_CO2_emissions_from_vegetation_carbon", + 1, + "fire_CO2_emissions_from_wildfire", + 1, + "floating_ice_shelf_area_percentage", + 2, + "flux_from_wood_and_agricultural_product_pools_on_land_use_tile_into_atmosphere", + 169, + "flux_of_inorganic_carbon_into_ocean_surface_by_runoff", + 424, + "flux_of_organic_carbon_into_ocean_surface_by_runoff", + 410, + "fraction_of_land_use_tile_tile_that_is_non-woody_vegetation_(_e.g._herbaceous_crops)", + 35, + "fraction_of_rainfall_on_snow.", + 7, + "fraction_of_snowfall_on_snow.", + 7, + "fraction_of_time_steps_with_sea_ice", + 15866, + "fraction_of_time_with_sea_ice_area_fraction_above_threshold", + 6887, + "frequency_of_lightning_flashes_per_unit_area", + 23, + "freshwater_flux_from_ice_surface", + 29, + "freshwater_flux_from_sea-ice_surface", + 1608, + "freshwater_flux_from_sea_ice", + 315, + "frozen_moisture_content_of_soil_layer", + 4, + "frozen_soil_depth", + 7, + "frozen_water_content_of_soil_layer", + 14737, + "frozen_water_in_soil", + 7, + "gas-phase_production_rate_of_so4", + 1228, + "geopotential_height", + 149840, + "geothermal_heat_flux_beneath_land_ice", + 137, + "global_average_sea_water_conservative_temperature", + 1550, + "global_average_thermosteric_sea_level_change", + 14900, + "grid_averaged_methane_consumption_(methanotrophy)_from_wetlands", + 215, + "grid_averaged_methane_emissions_from_wetlands", + 339, + "grid_averaged_methane_production_(methanogenesis)_from_wetlands", + 4094, + "gross_primary_production_on_grass_tiles", + 1392, + "gross_primary_production_on_grass_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 80, + "gross_primary_production_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 72, + "gross_primary_production_on_shrub_tiles", + 233, + "gross_primary_production_on_shrub_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 80, + "gross_primary_production_on_tree_tiles", + 1393, + "gross_primary_production_on_tree_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 80, + "gross_primary_productivity_of_biomass_expressed_as_13C", + 12, + "gross_primary_productivity_of_biomass_expressed_as_14C", + 11, + "gross_primary_productivity_of_biomass_expressed_as_carbon", + 18639, + "gross_primary_productivity_on_land-use_tile", + 227, + "gross_primary_productivity_on_land_use_tile", + 924, + "ground_surface_temperature", + 4, + "grounded_ice_sheet_area_fraction", + 10446, + "grounded_ice_sheet_area_percentage", + 53, + "groundwater intake", + 46, + "groundwater_intake", + 53, + "groundwater_recharge_from_soil_layer", + 16, + "growth_limitation_of_calcareous_phytoplankton_due_to_solar_irradiance", + 7, + "growth_limitation_of_diatoms_due_to_solar_irradiance", + 784, + "growth_limitation_of_diazotrophs_due_to_solar_irradiance", + 29, + "growth_limitation_of_miscellaneous_phytoplankton_due_to_solar_irradiance", + 945, + "growth_limitation_of_picophytoplankton_due_to_solar_irradiance", + 22, + "harvested_biomass_into_product_pool", + 1, + "harvested_biomass_that_goes_into_product_pool", + 1090, + "heat_content_of_ocean_layer", + 25, + "heat_content_of_upper_300_meters", + 554, + "heat_flux_correction", + 2057, + "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", + 4986, + "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", + 1366, + "heat_flux_into_sea_water_due_to_snow_thermodynamics", + 446, + "height_above_reference_ellipsoid", + 5315, + "heterotrophic_respiration_carbon_flux", + 1459, + "heterotrophic_respiration_carbon_flux_from_litter", + 1, + "heterotrophic_respiration_carbon_flux_from_soil", + 1, + "heterotrophic_respiration_on_grass_tiles", + 876, + "heterotrophic_respiration_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 77, + "heterotrophic_respiration_on_shrub_tiles", + 83, + "heterotrophic_respiration_on_tree_tiles", + 876, + "histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid", + 51, + "histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid", + 47, + "hydrometeor_effective_radius_of_stratiform_cloud_ice", + 4, + "ice_cloud_area_fraction", + 1133, + "ice_cloud_area_fraction_in_atmosphere_layer", + 18, + "ice_sheet_mass", + 2, + "ice_sheet_mass_that_does_not_displace_sea_water", + 2, + "ice_sheet_surface_ice_melt_flux", + 131, + "ice_sheet_surface_mass_balance_flux", + 1070, + "ice_sheet_surface_snow_and_ice_sublimation_flux", + 133, + "ice_sheet_temperature_at_top_of_ice_sheet_model", + 133, + "incoming_water_volume_transport_along_river_channel", + 8, + "integral_of_product_of_eastward_wind_and_specific_humidity_wrt_height", + 2, + "integral_of_product_of_northward_wind_and_specific_humidity_wrt_height", + 2, + "integral_of_sea_ice_temperature_wrt_depth_expressed_as_heat_content", + 1836, + "integral_with_respect_to_depth_of_product_of_sea_water_density_and_potential_temperature", + 3168, + "integral_wrt_depth_of_product_of_potential_temperature_and_sea_water_density", + 102, + "integral_wrt_depth_of_product_of_salinity_and_sea_water_density", + 102, + "integral_wrt_depth_of_product_of_sea_water_density_and_conservative_temperature", + 5, + "integral_wrt_depth_of_product_of_sea_water_density_and_potential_temperature", + 879, + "integral_wrt_depth_of_product_of_sea_water_density_and_prognostic_temperature", + 38, + "integral_wrt_depth_of_product_of_sea_water_density_and_salinity", + 1088, + "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent", + 736, + "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", + 2188, + "integral_wrt_height_of_product_of_eastward_wind_and_specific_humidity", + 27, + "integral_wrt_height_of_product_of_northward_wind_and_specific_humidity", + 27, + "integrated_eastward_wind_times_humidity", + 112, + "integrated_northward_wind_times_humidity", + 112, + "internal_ice_heat_content", + 9, + "internal_stress_term_in_force_balance_(x-component)", + 1602, + "internal_stress_term_in_force_balance_(y-component)", + 1608, + "iron_growth_limitation_of_calcareous_phytoplankton", + 7, + "iron_growth_limitation_of_diatoms", + 794, + "iron_growth_limitation_of_diazotrophs", + 264, + "iron_growth_limitation_of_miscellaneous_phytoplankton", + 865, + "iron_growth_limitation_of_picophytoplankton", + 22, + "iron_limitation_of_calcareous_phytoplankton", + 40, + "iron_limitation_of_diatoms", + 1649, + "iron_limitation_of_diazotrophs", + 500, + "iron_limitation_of_other_phytoplankton", + 3955, + "iron_limitation_of_picophytoplankton", + 357, + "iron_loss_to_sediments", + 1702, + "irradiance_limitation_of_calcareous_phytoplankton", + 40, + "irradiance_limitation_of_diatoms", + 1603, + "irradiance_limitation_of_diazotrophs", + 401, + "irradiance_limitation_of_other_phytoplankton", + 3778, + "irradiance_limitation_of_picophytoplankton", + 363, + "irrigation_flux_including_any_irrigation_for_crops,_trees,_pasture,_or_urban_lawns", + 172, + "lagrangian_tendency_of_air_pressure", + 93307, + "land_area_fraction", + 31255, + "land_ice_area_fraction", + 20995, + "land_ice_basal_drag", + 2, + "land_ice_basal_x_velocity", + 2, + "land_ice_basal_y_velocity", + 2, + "land_ice_calving_flux", + 2, + "land_ice_runoff_flux", + 278, + "land_ice_surface_melt_flux", + 30, + "land_ice_surface_specific_mass_balance_flux", + 550, + "land_ice_thickness", + 145, + "land_ice_vertical_mean_x_velocity", + 2, + "land_ice_vertical_mean_y_velocity", + 2, + "land_surface_liquid_water_amount", + 16, + "land_water_amount", + 4930, + "large_scale_rainfall_flux", + 2, + "large_scale_snowfall_flux", + 2, + "lateral_sea_ice_melt_rate", + 1988, + "lateral_transfer_of_carbon_out_of_grid_cell_that_eventually_goes_into_ocean", + 261, + "lateral_transfer_of_nitrogen_out_of_grid_cell_that_eventually_goes_into_ocean", + 14, + "latitude", + 1, + "leaf_area_index", + 35476, + "leaf_area_index_on_land_use_tile", + 34, + "leaf_carbon_content", + 513, + "leaf_mass_content_of_carbon", + 6354, + "leaf_mass_content_of_nitrogen", + 1616, + "lightning_flash_rate", + 648, + "liquid_cloud_area_fraction_in_atmosphere_layer", + 2, + "liquid_moisture_content_of_soil_layer", + 4, + "liquid_water_cloud_area_fraction", + 1133, + "liquid_water_cloud_area_fraction_in_atmosphere_layer", + 16, + "liquid_water_content_of_permafrost_layer", + 24, + "liquid_water_content_of_snow_layer", + 461, + "liquid_water_content_of_soil_layer", + 25259, + "liquid_water_content_of_surface_snow", + 21663, + "litter_carbon_content", + 1242, + "litter_carbon_flux", + 441, + "litter_mass_content_of_13C", + 9, + "litter_mass_content_of_14C", + 9, + "litter_mass_content_of_carbon", + 15068, + "litter_mass_content_of_nitrogen", + 2882, + "load_of_black_carbon_aerosol", + 493, + "load_of_dry_aerosol_organic_matter", + 384, + "load_of_dry_aerosol_primary_organic_matter", + 205, + "load_of_dry_aerosol_secondary_organic_matter", + 127, + "load_of_dust", + 1982, + "load_of_no3", + 78, + "load_of_sea-salt_aerosol", + 4512, + "load_of_seasalt", + 958, + "load_of_so4", + 5449, + "longitude", + 1, + "longwave_flux_due_to_volcanic_aerosols_at_the_surface", + 57, + "longwave_flux_due_to_volcanic_aerosols_at_toa_under_clear_sky", + 169, + "lwe_thickness_of_surface_snow_amount", + 406, + "magnitude_of_surface_downward_stress", + 25, + "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", + 94, + "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", + 13534, + "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", + 10369, + "mass_concentration_of_dust_dry_aerosol_in_air", + 925, + "mass_concentration_of_dust_dry_aerosol_particles_in_air", + 3043, + "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", + 4250, + "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", + 41461, + "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", + 9290, + "mass_concentration_of_sea_salt_dry_aerosol_particles_in_air", + 2771, + "mass_concentration_of_seasalt_dry_aerosol_in_air", + 922, + "mass_concentration_of_sulfate_dry_aerosol_in_air", + 921, + "mass_concentration_of_sulfate_dry_aerosol_particles_in_air", + 2754, + "mass_content_of_13C_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 9, + "mass_content_of_14C_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 9, + "mass_content_of_carbon_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 6778, + "mass_content_of_nitrogen_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 2933, + "mass_content_of_water_in_soil", + 18890, + "mass_content_of_water_in_soil_layer", + 30537, + "mass_content_of_water_in_soil_layer_defined_by_root_depth", + 314, + "mass_flux_of_13c_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land", + 90, + "mass_flux_of_13c_into_atmosphere_due_to_heterotrophic_respiration_on_land", + 89, + "mass_flux_of_13c_out_of_atmosphere_due_to_gross_primary_production_on_land", + 97, + "mass_flux_of_14c_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land", + 91, + "mass_flux_of_14c_into_atmosphere_due_to_heterotrophic_respiration_on_land", + 89, + "mass_flux_of_14c_out_of_atmosphere_due_to_gross_primary_production_on_land", + 98, + "mass_flux_of_carbon_into_forestry_and_agricultural_products_due_to_crop_harvesting", + 4356, + "mass_flux_of_carbon_into_litter_from_vegetation", + 5979, + "mass_flux_of_carbon_into_litter_from_vegetation_due_to_mortality", + 216, + "mass_flux_of_carbon_into_litter_from_vegetation_due_to_senescence", + 1884, + "mass_flux_of_carbon_into_sea_water_from_rivers", + 146, + "mass_flux_of_carbon_out_of_soil_due_to_leaching_and_runoff", + 2593, + "mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_into_sea_from_rivers", + 146, + "mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_out_of_litter_and_soil_due_to_immobilisation_and_remineralization", + 2921, + "mass_fraction_of_ammonium_dry_aerosol_particles_in_air", + 285, + "mass_fraction_of_carbon_dioxide_tracer_in_air", + 96, + "mass_fraction_of_cloud_ice_in_air", + 14647, + "mass_fraction_of_cloud_liquid_water_in_air", + 14660, + "mass_fraction_of_convective_cloud_ice_in_air", + 366, + "mass_fraction_of_convective_cloud_liquid_water_in_air", + 371, + "mass_fraction_of_dust_dry_aerosol_particles_in_air", + 2434, + "mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air", + 2641, + "mass_fraction_of_frozen_water_in_soil_moisture", + 54, + "mass_fraction_of_liquid_precipitation_in_air", + 2, + "mass_fraction_of_nitrate_dry_aerosol_particles_in_air", + 509, + "mass_fraction_of_particulate_organic_matter_dry_aerosol_particles_in_air", + 2387, + "mass_fraction_of_pm10_ambient_aerosol_particles_in_air", + 443, + "mass_fraction_of_pm1_dry_aerosol_particles_in_air", + 528, + "mass_fraction_of_pm2p5_dry_aerosol_particles_in_air", + 860, + "mass_fraction_of_rain_in_air", + 50, + "mass_fraction_of_rainfall_falling_onto_surface_snow", + 8, + "mass_fraction_of_sea_salt_dry_aerosol_particles_in_air", + 2222, + "mass_fraction_of_seasalt_dry_aerosol_particles_in_air", + 427, + "mass_fraction_of_secondary_particulate_organic_matter_dry_aerosol_particles_in_air", + 1617, + "mass_fraction_of_snow_in_air", + 73, + "mass_fraction_of_solid_precipitation_falling_onto_surface_snow", + 8, + "mass_fraction_of_stratiform_cloud_ice_in_air", + 332, + "mass_fraction_of_stratiform_cloud_liquid_water_in_air", + 340, + "mass_fraction_of_sulfate_dry_aerosol_in_air", + 558, + "mass_fraction_of_sulfate_dry_aerosol_particles_in_air", + 2438, + "mass_fraction_of_unfrozen_water_in_soil_moisture", + 54, + "mass_fraction_of_water_in_air", + 1953, + "mass_fraction_of_water_in_ambient_aerosol_particles_in_air", + 732, + "mass_of_13c_in_all_terrestrial_carbon_pools", + 149, + "mass_of_13c_in_litter_pool", + 148, + "mass_of_13c_in_soil_pool", + 150, + "mass_of_13c_in_vegetation", + 160, + "mass_of_14c_in_all_terrestrial_carbon_pools", + 148, + "mass_of_14c_in_litter_pool", + 152, + "mass_of_14c_in_soil_pool", + 149, + "mass_of_14c_in_vegetation", + 156, + "mass_of_salt_in_sea_ice_per_area", + 6564, + "maximum_over_coordinate_rotation_of_sea_ice_horizontal_shear_strain_rate", + 349, + "maximum_over_coordinate_rotation_of_sea_ice_horizontal_shear_stress", + 197, + "maximum_shear_of_sea-ice_velocity_field", + 6147, + "maximum_shear_stress_in_sea_ice", + 1433, + "medium_soil_pool_carbon_content", + 441, + "medium_soil_pool_mass_content_of_carbon", + 6097, + "meltpond_mass_per_unit_area", + 940, + "meridional_overturning_circulation_at_34s", + 2, + "meridional_streamfunction_transformed_eulerian_mean", + 23, + "mineral_ammonium_in_the_soil", + 210, + "mineral_nitrate_in_the_soil", + 207, + "mineral_nitrogen_in_the_soil", + 1219, + "minimum_depth_of_aragonite_undersaturation_in_sea_water", + 1030, + "minimum_depth_of_calcite_undersaturation_in_sea_water", + 1474, + "minus_tendency_of_atmosphere_mass_content_of_ammonia_due_to_dry_deposition", + 75, + "minus_tendency_of_atmosphere_mass_content_of_ammonia_due_to_wet_deposition", + 72, + "minus_tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_dry_deposition", + 75, + "minus_tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_wet_deposition", + 77, + "minus_tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_deposition", + 392, + "minus_tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_dry_deposition", + 1136, + "minus_tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_wet_deposition", + 1123, + "minus_tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_dry_deposition", + 1218, + "minus_tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_wet_deposition", + 1198, + "minus_tendency_of_atmosphere_mass_content_of_insoluble_dust_dry_aerosol_particles_due_to_deposition", + 2, + "minus_tendency_of_atmosphere_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_deposition", + 2568, + "minus_tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_dry_deposition", + 233, + "minus_tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_wet_deposition", + 231, + "minus_tendency_of_atmosphere_mass_content_of_ozone_due_to_dry_deposition", + 292, + "minus_tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_dry_deposition", + 1045, + "minus_tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_wet_deposition", + 984, + "minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_dry_deposition", + 1054, + "minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_wet_deposition", + 960, + "minus_tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_dry_deposition", + 1218, + "minus_tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_wet_deposition", + 1287, + "minus_tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_dry_deposition", + 2455, + "minus_tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_wet_deposition", + 2428, + "minus_tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_denitrification_and_sedimentation", + 1244, + "minus_tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", + 1297, + "minus_tendency_of_ocean_mole_content_of_iron_due_to_sedimentation", + 1242, + "minus_tendency_of_ocean_mole_content_of_organic_carbon_due_to_sedimentation", + 1365, + "miscellaneous_living_matter_carbon_content", + 122, + "miscellaneous_living_matter_mass_content_of_carbon", + 6214, + "miscellaneous_living_matter_mass_content_of_nitrogen", + 89, + "modis_ice_cloud_area_percentage", + 33, + "modis_liquid_cloud_fraction", + 12, + "modis_liquid_cloud_percentage", + 49, + "moisture_content_of_soil_layer", + 4071, + "moisture_in_upper_portion_of_soil_column", + 28675, + "moisture_in_upper_portion_of_soil_column_of_land-use_tile", + 185, + "moisture_in_upper_portion_of_soil_column_of_land_use_tile", + 81, + "mole_concentration_of_ammonium_in_sea_water", + 12222, + "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", + 804, + "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", + 155, + "mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", + 94, + "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", + 4526, + "mole_concentration_of_carbonate_abiotic_analogue_expressed_as_carbon_in_sea_water", + 20, + "mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_aragonite_in_sea_water", + 1091, + "mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_calcite_in_sea_water", + 1988, + "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water", + 5736, + "mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_aragonite_in_sea_water", + 981, + "mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_calcite_in_sea_water", + 1808, + "mole_concentration_of_carbonate_natural_analogue_expressed_as_carbon_in_sea_water", + 749, + "mole_concentration_of_cfc-11_in_sea_water", + 8, + "mole_concentration_of_cfc-12_in_sea_water", + 8, + "mole_concentration_of_cfc11_in_sea_water", + 1186, + "mole_concentration_of_cfc12_in_sea_water", + 1178, + "mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", + 4274, + "mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", + 1704, + "mole_concentration_of_dimethyl_sulfide_in_sea_water", + 754, + "mole_concentration_of_dissolved_inorganic_14C_in_sea_water", + 111, + "mole_concentration_of_dissolved_inorganic_carbon_abiotic_analogue_in_sea_water", + 449, + "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", + 30878, + "mole_concentration_of_dissolved_inorganic_carbon_natural_analogue_in_sea_water", + 1880, + "mole_concentration_of_dissolved_inorganic_phosphorous_in_sea_water", + 1467, + "mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water", + 7393, + "mole_concentration_of_dissolved_inorganic_silicon_in_sea_water", + 5437, + "mole_concentration_of_dissolved_iron_in_sea_water", + 29285, + "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", + 42178, + "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", + 1972, + "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_shallowest_local_minimum_in_vertical_profile", + 10748, + "mole_concentration_of_dissolved_organic_carbon_in_sea_water", + 6328, + "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", + 2939, + "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", + 2966, + "mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", + 3346, + "mole_concentration_of_nitrate_in_sea_water", + 42849, + "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", + 14489, + "mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", + 3673, + "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", + 5764, + "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", + 7256, + "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", + 1836, + "mole_concentration_of_particulate_organic_matter_expressed_as_silicon_in_sea_water", + 1229, + "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", + 42276, + "mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", + 14732, + "mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", + 16734, + "mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", + 2143, + "mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", + 13244, + "mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", + 9321, + "mole_concentration_of_sf6_in_sea_water", + 1000, + "mole_concentration_of_sulfur_hexafluoride_in_sea_water", + 626, + "mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", + 29137, + "mole_fraction_of_acetone_in_air", + 333, + "mole_fraction_of_artificial_tracer_with_fixed_lifetime_in_air", + 6, + "mole_fraction_of_carbon_dioxide_in_air", + 11856, + "mole_fraction_of_carbon_monoxide_in_air", + 1613, + "mole_fraction_of_cfc113_in_air", + 60, + "mole_fraction_of_cfc11_in_air", + 2584, + "mole_fraction_of_cfc12_in_air", + 2582, + "mole_fraction_of_dimethyl_sulfide_in_air", + 4418, + "mole_fraction_of_ethane_in_air", + 993, + "mole_fraction_of_ethyne_in_air", + 75, + "mole_fraction_of_formaldehyde_in_air", + 1610, + "mole_fraction_of_hcfc22_in_air", + 60, + "mole_fraction_of_hydrogen_chloride_in_air", + 2467, + "mole_fraction_of_hydroperoxyl_radical_in_air", + 1089, + "mole_fraction_of_hydroxyl_radical_in_air", + 4242, + "mole_fraction_of_inorganic_bromine_in_air", + 963, + "mole_fraction_of_inorganic_chlorine_in_air", + 963, + "mole_fraction_of_isoprene_in_air", + 3682, + "mole_fraction_of_methane_in_air", + 10351, + "mole_fraction_of_nitric_acid_in_air", + 2651, + "mole_fraction_of_nitrogen_dioxide_in_air", + 1692, + "mole_fraction_of_nitrogen_monoxide_in_air", + 1622, + "mole_fraction_of_nitrous_oxide_in_air", + 10284, + "mole_fraction_of_noy_expressed_as_nitrogen_in_air", + 1094, + "mole_fraction_of_o_and_o3_and_o1d", + 46, + "mole_fraction_of_odd_oxygen_(o,_o3_and_o1d)", + 63, + "mole_fraction_of_ox_in_air", + 29, + "mole_fraction_of_ozone_in_air", + 16564, + "mole_fraction_of_peroxyacetyl_nitrate_in_air", + 1545, + "mole_fraction_of_propane_in_air", + 996, + "mole_fraction_of_propene_in_air", + 880, + "mole_fraction_of_sulfur_dioxide_in_air", + 4306, + "moles_per_unit_mass_of_cfc-11_in_sea_water", + 14, + "moles_per_unit_mass_of_cfc-12_in_sea_water", + 13, + "moles_per_unit_mass_of_sf6_in_sea_water", + 13, + "monthly_loss_of_atmospheric_carbon_monoxide", + 992, + "monthly_loss_of_atmospheric_methane", + 1038, + "monthly_loss_of_atmospheric_nitrous_oxide", + 605, + "natural_carbonate_ion_concentration", + 269, + "natural_delta_co2_partial_pressure_", + 323, + "natural_dissolved_inorganic_carbon_concentration", + 5461, + "natural_ph", + 313, + "natural_surface_aqueous_partial_pressure_of_co2", + 2906, + "natural_total_alkalinity", + 830, + "net_conductive_heat_flux_in_ice_at_the_surface", + 1253, + "net_conductive_heat_fluxes_in_ice_at_the_bottom", + 1893, + "net_downward_radiative_flux_at_top_of_atmosphere_model", + 41176, + "net_downward_shortwave_flux_at_sea_water_surface", + 16418, + "net_mass_flux_of_13c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes", + 45, + "net_mass_flux_of_13c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes_[kgc_m-2_s-1]", + 53, + "net_mass_flux_of_14c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes", + 47, + "net_mass_flux_of_14c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes_[kgc_m-2_s-1]", + 53, + "net_nitrogen_release_from_soil_and_litter_as_the_outcome_of_nitrogen_immobilisation_and_gross_mineralisation", + 1211, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_calcareous_phytoplankton", + 7, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diatoms", + 826, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diazotrophs", + 273, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_miscellaneous_phytoplankton", + 836, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_phytoplankton", + 4745, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_picophytoplankton", + 30, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_due_to_nitrate_utilization", + 752, + "net_primary_mole_productivity_of_carbon_by_calcareous_phytoplankton", + 40, + "net_primary_mole_productivity_of_carbon_by_diazotrophs", + 547, + "net_primary_mole_productivity_of_carbon_by_picophytoplankton", + 409, + "net_primary_organic_carbon_production_by_diatoms", + 1697, + "net_primary_organic_carbon_production_by_other_phytoplankton", + 1254, + "net_primary_production_allcoated_to_other_pools_(not_leaves_stem_or_roots)", + 734, + "net_primary_production_allcoated_to_stem", + 734, + "net_primary_production_allocated_to_leaves_as_carbon_mass_flux_[kgc_m-2_s-1]", + 489, + "net_primary_production_allocated_to_other_pools_(not_leaves_stem_or_roots)", + 108, + "net_primary_production_allocated_to_other_pools_(not_leaves_stem_or_roots)_as_carbon_mass_flux_[kgc_m-2_s-1]", + 103, + "net_primary_production_allocated_to_roots_as_carbon_mass_flux_[kgc_m-2_s-1]", + 495, + "net_primary_production_allocated_to_stem", + 3786, + "net_primary_production_allocated_to_stem_as_carbon_mass_flux_[kgc_m-2_s-1]", + 308, + "net_primary_production_allocated_to_wood_as_carbon_mass_flux_[kgc_m-2_s-1]", + 480, + "net_primary_production_on_grass_tiles", + 1422, + "net_primary_production_on_grass_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 89, + "net_primary_production_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 78, + "net_primary_production_on_land_as_carbon_mass_flux_[kgc_m-2_s-1]", + 7284, + "net_primary_production_on_shrub_tiles", + 263, + "net_primary_production_on_shrub_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 89, + "net_primary_production_on_tree_tiles", + 1420, + "net_primary_production_on_tree_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 89, + "net_primary_productivity_of_biomass_expressed_as_carbon", + 18402, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_leaves", + 5937, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_miscellaneous_living_matter", + 2355, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_roots", + 5933, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_stems", + 2490, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_wood", + 5751, + "net_primary_productivity_of_carbon_accumulated_in_leaves", + 126, + "net_primary_productivity_of_carbon_accumulated_in_roots", + 126, + "net_primary_productivity_of_carbon_accumulated_in_wood", + 124, + "net_primary_productivity_on_land-use_tile", + 225, + "net_primary_productivity_on_land_use_tile", + 929, + "net_rate_of_absorption_of_shortwave_energy_in_ocean_layer", + 3639, + "nh4_mass_mixing_ratio", + 490, + "nitrate_aod@550nm", + 1180, + "nitrogen_growth_limitation_of_calcareous_phytoplankton", + 7, + "nitrogen_growth_limitation_of_diatoms", + 792, + "nitrogen_growth_limitation_of_diazotrophs", + 8, + "nitrogen_growth_limitation_of_miscellaneous_phytoplankton", + 959, + "nitrogen_growth_limitation_of_picophytoplankton", + 22, + "nitrogen_limitation_of_calcareous_phytoplankton", + 40, + "nitrogen_limitation_of_diatoms", + 1654, + "nitrogen_limitation_of_diazotrophs", + 39, + "nitrogen_limitation_of_other_phytoplankton", + 3815, + "nitrogen_limitation_of_picophytoplankton", + 355, + "nitrogen_loss_to_sediments_and_through_denitrification", + 1707, + "nitrogen_mass_content_of_forestry_and_agricultural_products", + 1142, + "nitrogen_mass_flux_into_forestry_and_agricultural_products_due_to_anthropogenic_land_use_or_land_cover_change", + 1862, + "nitrogen_mass_flux_into_litter_from_vegetation", + 454, + "nitrogen_mass_flux_into_soil_from_litter", + 516, + "nitrogen_mass_flux_into_soil_from_vegetation_excluding_litter", + 48, + "nitrogen_mass_flux_out_of_land_due_to_any_human_activity", + 153, + "nitrogen_mass_in_coarse_woody_debris", + 210, + "nitrogen_mass_in_leaves", + 260, + "nitrogen_mass_in_litter_pool", + 1153, + "nitrogen_mass_in_products_of_land-use_change", + 393, + "nitrogen_mass_in_products_of_land_use_change", + 741, + "nitrogen_mass_in_roots", + 259, + "nitrogen_mass_in_soil_pool", + 1227, + "nitrogen_mass_in_stem", + 257, + "nitrogen_mass_in_vegetation", + 1213, + "nitrogen_production", + 492, + "no3_aerosol_mass_mixing_ratio", + 759, + "northward_acceleration_due_to_orographic_gravity_wave_drag", + 3141, + "northward_atmosphere_dry_static_energy_transport_across_unit_distance", + 4674, + "northward_atmosphere_water_transport_across_unit_distance", + 6218, + "northward_eddy_temperature_flux", + 586, + "northward_eliassen_palm_flux_in_air", + 23852, + "northward_heat_flux_in_air_due_to_eddy_advection", + 2897, + "northward_humidity_transport", + 38, + "northward_ocean_heat_transport", + 14356, + "northward_ocean_heat_transport_due_to_gyre", + 3105, + "northward_ocean_heat_transport_due_to_overturning", + 3097, + "northward_ocean_heat_transport_due_to_parameterized_eddy_advection", + 1901, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_advection", + 1037, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_diffusion", + 689, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_advection", + 1870, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_diffusion", + 1563, + "northward_ocean_heat_transport_due_to_parameterized_submesoscale_advection", + 9, + "northward_ocean_salt_transport", + 1702, + "northward_ocean_salt_transport_due_to_gyre", + 2680, + "northward_ocean_salt_transport_due_to_overturning", + 2650, + "northward_surface_stress_from_planetary_boundary_layer_scheme", + 244, + "northward_transformed_eulerian_mean_air_velocity", + 23851, + "northward_wind", + 195670, + "nudging_increment_in_mass_content_of_water_in_soil", + 17, + "nudging_increment_of_water_in_soil_moisture", + 8, + "nudging_increment_of_water_in_soil_mositure", + 1, + "number_concentration_coarse_mode_aerosol", + 286, + "number_concentration_of_ambient_aerosol_particles_in_air", + 335, + "number_concentration_of_cloud_condensation_nuclei_at_stp_in_air", + 1434, + "number_concentration_of_cloud_liquid_water_particles_in_air", + 6961, + "number_concentration_of_cloud_liquid_water_particles_in_air_at_liquid_water_cloud_top", + 1787, + "number_concentration_of_coarse_mode_ambient_aerosol_particles_in_air", + 100, + "number_concentration_of_convective_cloud_liquid_water_particle_at_convective_liquid_water_cloud_top", + 46, + "number_concentration_of_ice_crystals_in_air_at_ice_cloud_top", + 1682, + "number_concentration_of_nucleation_mode_aerosol", + 49, + "number_concentration_of_nucleation_mode_ambient_aerosol_particles_in_air", + 44, + "number_concentration_of_stratiform_cloud_liquid_water_particle_at_stratiform_liquid_water_cloud_top", + 62, + "number_concentration_of_stratiform_cloud_liquid_water_particles_at_stratiform_liquid_water_cloud_top", + 1, + "o3_destruction_rate", + 1030, + "o3_production_rate", + 1037, + "obvfsq", + 1, + "ocean_barotropic_mass_streamfunction", + 12208, + "ocean_drag_coefficient", + 397, + "ocean_heat_x_transport", + 5289, + "ocean_heat_y_transport", + 5171, + "ocean_kinetic_energy_dissipation_per_unit_area_due_to_vertical_friction", + 112, + "ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction", + 471, + "ocean_mass_content_of_dissolved_inorganic_carbon", + 12501, + "ocean_mass_content_of_dissolved_organic_carbon", + 655, + "ocean_mass_content_of_particulate_organic_matter_expressed_as_carbon", + 937, + "ocean_mass_x_transport", + 12787, + "ocean_mass_y_transport", + 12699, + "ocean_meridional_overturning_mass_streamfunction", + 19643, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", + 5681, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", + 1992, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", + 223, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_eddy_advection", + 29, + "ocean_mixed_layer_thickness_defined_by_mixing_scheme", + 1295, + "ocean_mixed_layer_thickness_defined_by_sigma_t", + 37337, + "ocean_momentum_xy_biharmonic_diffusivity", + 28, + "ocean_momentum_xy_laplacian_diffusivity", + 358, + "ocean_tracer_bolus_laplacian_diffusivity", + 107, + "ocean_tracer_diffusivity_due_to_parameterized_mesoscale_advection", + 2620, + "ocean_tracer_epineutral_laplacian_diffusivity", + 790, + "ocean_tracer_laplacian_diffusivity_due_to_parameterized_mesoscale_eddy_advection", + 190, + "ocean_tracer_xy_laplacian_diffusivity", + 123, + "ocean_vertical_heat_diffusivity", + 4058, + "ocean_vertical_momentum_diffusivity", + 971, + "ocean_vertical_momentum_diffusivity_due_to_tides", + 122, + "ocean_vertical_salt_diffusivity", + 3403, + "ocean_vertical_tracer_diffusivity_due_to_tides", + 682, + "ocean_volume", + 15449, + "ocean_y_overturning_mass_streamfunction", + 7046, + "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", + 1566, + "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", + 750, + "ocean_y_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", + 1, + "open_water_evaporation", + 8, + "opottempmint", + 1, + "opottemptend", + 32, + "optical_thickness_at_443_nm_dust", + 12, + "optical_thickness_at_443nm_dust", + 58, + "optical_thickness_at_865_nm_dust", + 265, + "other_vegegtation_components_carbon_content", + 35, + "outgoing_water_volume_transport_along_river_channel", + 1035, + "particulate_organic_aerosol_optical_depth_at_550nm", + 204, + "particulate_organic_carbon_content", + 679, + "permafrost_layer_thickness", + 116, + "phosphorus_production", + 124, + "photolysis_rate_of_diatomic_molecular_oxygen", + 77, + "photolysis_rate_of_molecular_oxygen", + 12, + "photolysis_rate_of_nitrogen_dioxide", + 547, + "photolysis_rate_of_no2", + 974, + "photolysis_rate_of_o3_to_o1d", + 483, + "photolysis_rate_of_ozone", + 12, + "photolysis_rate_of_ozone_(o3)", + 77, + "photolysis_rate_of_ozone_(o3)_to_excited_atomic_oxygen_(the_singlet_d_state,_o1d)", + 540, + "photolysis_rate_of_ozone_to_1D_oxygen_atom", + 510, + "plant_respiration_carbon_flux", + 2705, + "plant_respiration_on_land-use_tile", + 189, + "plant_respiration_on_land_use_tile", + 892, + "pm1.0_mass_mixing_ratio", + 780, + "pm10_mass_mixing_ratio", + 949, + "pm2.5_mass_mixing_ratio", + 1525, + "pm2.5_mass_mixing_ratio_in_lowest_model_layer", + 283, + "precipitation_flux", + 119194, + "precipitation_flux_onto_canopy", + 20598, + "primary_emission_and_chemical_production_of_dry_aerosol_organic_matter", + 1170, + "primary_organic_carbon_production_by_all_types_of_phytoplankton", + 8353, + "primary_organic_carbon_production_by_phytoplankton_based_on_nitrate_uptake_alone", + 1591, + "product_of_air_temperature_and_omega", + 3, + "product_of_eastward_wind_and_air_temperature", + 32, + "product_of_eastward_wind_and_northward_wind", + 30, + "product_of_eastward_wind_and_omega", + 22, + "product_of_lagrangian_tendency_of_air_pressure_and_air_temperature", + 3, + "product_of_northward_wind_and_air_temperature", + 31, + "product_of_northward_wind_and_omega", + 22, + "product_of_omega_and_air_temperature", + 73, + "rainfall_flux", + 16807, + "region", + 12919, + "relative_humidity", + 145801, + "remineralization_of_organic_carbon", + 639, + "rendency_of_eastward_wind_due_to_tem_northward_advection_and_coriolis_term", + 11, + "rendency_of_eastward_wind_due_to_tem_upward_advection", + 10, + "river_discharge", + 623, + "river_inflow", + 7, + "root_carbon_content", + 513, + "root_depth", + 5760, + "root_mass_content_of_carbon", + 6534, + "root_mass_content_of_nitrogen", + 1906, + "root_zone_soil_moisture", + 48, + "runoff_flux", + 50568, + "salt_flux_into_sea_water_from_rivers", + 446, + "sand_fraction", + 21, + "saturated_hydraulic_conductivity", + 21, + "sea-ice_area_flux_through_straits", + 414, + "sea-ice_area_fractions_in_thickness_categories", + 297, + "sea-ice_heat_content_per_unit_area", + 1658, + "sea-ice_mass_change_from_dynamics", + 2109, + "sea-ice_mass_change_from_thermodynamics", + 2117, + "sea-ice_mass_change_through_evaporation_and_sublimation", + 1641, + "sea-ice_mass_change_through_growth_in_supercooled_open_water_(aka_frazil)", + 1248, + "sea-ice_mass_change_through_lateral_melting", + 9, + "sea-ice_mass_change_through_snow-to-ice_conversion", + 1760, + "sea-ice_thickness_in_thickness_categories", + 297, + "sea-salt_aerosol_mass_mixing_ratio", + 1142, + "sea-salt_aerosol_optical_depth_at_550nm", + 4439, + "sea-surface_tilt_term_in_force_balance_(x-component)", + 1487, + "sea-surface_tilt_term_in_force_balance_(y-component)", + 1496, + "sea_area_fraction", + 22007, + "sea_floor_depth_below_geoid", + 27114, + "sea_ice_amount", + 22373, + "sea_ice_area", + 16593, + "sea_ice_area_flux_through_straits", + 1072, + "sea_ice_area_fraction", + 71243, + "sea_ice_area_transport_across_line", + 841, + "sea_ice_average_normal_horizontal_stress", + 200, + "sea_ice_basal_drag_coefficient_for_momentum_in_sea_water", + 161, + "sea_ice_basal_net_downward_sensible_heat_flux", + 31, + "sea_ice_basal_temperature", + 2093, + "sea_ice_extent", + 16771, + "sea_ice_freeboard", + 4183, + "sea_ice_mass_content_of_salt", + 1225, + "sea_ice_melt_pond_thickness", + 590, + "sea_ice_salinity", + 1176, + "sea_ice_salt_content", + 2, + "sea_ice_salt_mass", + 6, + "sea_ice_speed", + 18095, + "sea_ice_surface_temperature", + 26690, + "sea_ice_temperature_expressed_as_heat_content", + 3144, + "sea_ice_thickness", + 51583, + "sea_ice_time_fraction", + 526, + "sea_ice_transport_across_line", + 2675, + "sea_ice_volume", + 17097, + "sea_ice_x_force_per_unit_area_due_to_coriolis_effect", + 1995, + "sea_ice_x_force_per_unit_area_due_to_sea_surface_tilt", + 1838, + "sea_ice_x_internal_stress", + 1998, + "sea_ice_x_transport", + 6030, + "sea_ice_x_velocity", + 29350, + "sea_ice_y_force_per_unit_area_due_to_coriolis_effect", + 2003, + "sea_ice_y_force_per_unit_area_due_to_sea_surface_tilt", + 1833, + "sea_ice_y_internal_stress", + 2001, + "sea_ice_y_transport", + 6035, + "sea_ice_y_velocity", + 29315, + "sea_level_pressure", + 56192, + "sea_level_pressure_", + 18, + "sea_salt_aod@550nm", + 1021, + "sea_salt_mass_mixing_ratio", + 1483, + "sea_surface_height_above_geoid", + 37480, + "sea_surface_salinity", + 46976, + "sea_surface_temperature", + 59281, + "sea_water_added_conservative_temperature", + 7, + "sea_water_added_potential_temperature", + 19, + "sea_water_additional_potential_temperature", + 42, + "sea_water_age_since_surface_contact", + 8202, + "sea_water_alkalinity_expressed_as_mole_equivalent", + 32756, + "sea_water_alkalinity_natural_analogue_expressed_as_mole_equivalent", + 986, + "sea_water_conservative_temperature", + 3635, + "sea_water_convervative_temperature", + 1588, + "sea_water_mass", + 5203, + "sea_water_mass_per_unit_area", + 8730, + "sea_water_ph_abiotic_analogue_reported_on_total_scale", + 58, + "sea_water_ph_natural_analogue_reported_on_total_scale", + 813, + "sea_water_ph_reported_on_total_scale", + 11701, + "sea_water_potential_temperature", + 75822, + "sea_water_potential_temperature_at_sea_floor", + 7552, + "sea_water_pressure_at_sea_floor", + 9454, + "sea_water_pressure_at_sea_water_surface", + 2588, + "sea_water_redistributed_conservative_temperature", + 7, + "sea_water_redistributed_potential_temperature", + 49, + "sea_water_resdistributed_potential_temperature", + 4, + "sea_water_salinity", + 51208, + "sea_water_salinity_at_sea_floor", + 7629, + "sea_water_surface_downward_x_stress", + 3494, + "sea_water_surface_downward_y_stress", + 3495, + "sea_water_transport_across_line", + 5071, + "sea_water_volume", + 8435, + "sea_water_x_velocity", + 31181, + "sea_water_y_velocity", + 31111, + "secondary_organic_aerosol_mass_mixing_ratio", + 404, + "sedimentation_flux_of_dust_mode_coarse_insoluble", + 13, + "shallow_convection_time_fraction", + 7367, + "shortwave_flux_due_to_volcanic_aerosols_at_toa_under_clear_sky", + 169, + "shortwave_heating_rate_due_to_volcanic_aerosols", + 1, + "sidmassevapsubl", + 16, + "sidmasssi", + 16, + "sidmassth", + 16, + "silt_fraction", + 2, + "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", + 452, + "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", + 13654, + "sinking_mole_flux_of_particulate_iron_in_sea_water", + 5173, + "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", + 24668, + "sinking_mole_flux_of_particulate_organic_nitrogen_in_sea_water", + 6490, + "sinking_mole_flux_of_particulate_organic_phosphorus_in_sea_water", + 1367, + "sinking_mole_flux_of_particulate_silicon_in_sea_water", + 6482, + "sitimefrac", + 25, + "slow_soil_pool_carbon_content", + 441, + "slow_soil_pool_mass_content_of_carbon", + 6226, + "snow_evaporation", + 3, + "snow_mass_flux_through_straits", + 1501, + "snow_mass_rate_of_change_through_advection_by_sea-ice_dynamics", + 571, + "snow_mass_rate_of_change_through_avection_by_sea-ice_dynamics", + 1087, + "snow_mass_rate_of_change_through_evaporation_or_sublimation", + 1509, + "snow_mass_rate_of_change_through_snow-to-ice_conversion", + 1670, + "snow_thickness_in_thickness_categories", + 297, + "snow_thickness_over_categories", + 1, + "snow_transport_across_line_due_to_sea_ice_dynamics", + 842, + "snow_water_equivalent_intercepted_by_the_vegetation", + 16, + "snow_water_equivalent_on_land_use_tile", + 1, + "snowfall_flux", + 79386, + "soa_aod@550nm", + 41, + "sob", + 1, + "soil_carbon_content", + 1632, + "soil_carbon_content_by_pool", + 1, + "soil_carbon_turnover_rate_by_pool", + 1, + "soil_frozen_water_content", + 32103, + "soil_heterotrophic_respiration_on_land-use_tile", + 187, + "soil_heterotrophic_respiration_on_land_use_tile", + 145, + "soil_hydraulic_conductivity_at_saturation", + 128, + "soil_liquid_water_content", + 66, + "soil_mass_content_of_13C", + 9, + "soil_mass_content_of_14C", + 9, + "soil_mass_content_of_carbon", + 16605, + "soil_mass_content_of_inorganic_ammonium_expressed_as_nitrogen", + 1447, + "soil_mass_content_of_inorganic_nitrate_expressed_as_nitrogen", + 1446, + "soil_mass_content_of_inorganic_nitrogen_expressed_as_nitrogen", + 2598, + "soil_mass_content_of_nitrogen", + 2927, + "soil_moisture_content", + 2510, + "soil_moisture_content_at_field_capacity", + 5960, + "soil_pool_carbon_decay_rate", + 24, + "soil_temperature", + 34575, + "solar_zenith_angle", + 31, + "somint", + 1, + "soot_content_of_surface_snow", + 2089, + "sossq", + 1, + "specific_humidity", + 183389, + "square_of_air_temperature", + 31, + "square_of_brunt_vaisala_frequency_in_sea_water", + 4928, + "square_of_eastward_wind", + 88, + "square_of_lagrangian_tendency_of_air_pressure", + 22, + "square_of_northward_wind", + 87, + "square_of_ocean_mixed_layer_thickness_defined_by_sigma_t", + 7038, + "square_of_sea_surface_height_above_geoid", + 18219, + "square_of_sea_surface_salinity", + 6189, + "square_of_sea_surface_temperature", + 8566, + "stem_carbon_content", + 36, + "stem_mass_content_of_carbon", + 10296, + "stem_mass_content_of_nitrogen", + 1907, + "strain_rate_(shear)", + 9, + "strat_aerosol_optical_depth", + 1, + "stratiform_cloud_area_fraction_in_atmosphere_layer", + 821, + "stratiform_cloud_liquid_droplet_effective_radius", + 7, + "stratiform_cloud_longwave_emissivity", + 4, + "stratiform_rainfall_flux", + 6, + "stratiform_snowfall_flux", + 6, + "stratosphere_optical_thickness_due_to_ambient_aerosol_particles", + 42, + "stratosphere_optical_thickness_due_to_volcanic_ambient_aerosol_particles", + 2517, + "stratospheric_optical_depth_at_550_nm_(all_aerosols)_2d-field_(here_we_limit_the_computation_of_od_to_the_stratosphere_only)", + 81, + "stratospheric_optical_depth_at_550nm_(all_aerosols)_2d-field_(stratosphere_only)", + 79, + "sublimation_of_the_snow_free_area", + 23, + "subsurface_litter_carbon_content", + 807, + "subsurface_litter_mass_content_of_carbon", + 5191, + "subsurface_litter_mass_content_of_nitrogen", + 89, + "subsurface_runoff_flux", + 198, + "sulfate_aerosol_optical_depth_at_550nm", + 970, + "sulfate_aod@550nm", + 2469, + "surface_abiotic_carbonate_ion_concentration", + 59, + "surface_abiotic_dissolved_inorganic_carbon-14_concentration", + 304, + "surface_abiotic_dissolved_inorganic_carbon_concentration", + 2893, + "surface_abiotic_ph", + 227, + "surface_air_pressure", + 78119, + "surface_albedo", + 40, + "surface_altitude", + 40209, + "surface_carbon_dioxide_abiotic_analogue_partial_pressure_difference_between_sea_water_and_air", + 168, + "surface_carbon_dioxide_natural_analogue_partial_pressure_difference_between_sea_water_and_air", + 717, + "surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air", + 3663, + "surface_concentration_of_dust", + 1860, + "surface_concentration_of_sea-salt_aerosol", + 522, + "surface_concentration_of_seasalt", + 1328, + "surface_concentration_of_so4", + 1852, + "surface_diffuse_downwelling_shortwave_flux_in_air", + 8988, + "surface_diffuse_downwelling_shortwave_flux_in_air_assuming_clear_sky", + 3947, + "surface_dissolved_oxygen_concentration_at_saturation", + 485, + "surface_downward_cfc11_flux", + 319, + "surface_downward_cfc12_flux", + 965, + "surface_downward_eastward_stress", + 55277, + "surface_downward_eastward_stress_due_to_boundary_layer_mixing", + 167, + "surface_downward_flux_of_abiotic_14co2", + 257, + "surface_downward_flux_of_abiotic_co2", + 5046, + "surface_downward_flux_of_natural_co2", + 5245, + "surface_downward_heat_flux_in_air", + 45, + "surface_downward_heat_flux_in_sea_water", + 32385, + "surface_downward_heat_flux_in_snow", + 6570, + "surface_downward_latent_heat_flux", + 2623, + "surface_downward_mass_flux_of_14C_dioxide_abiotic_analogue_expressed_as_carbon", + 70, + "surface_downward_mass_flux_of_carbon-14_as_abiotic_14co2_[kgc_m-2_s-1]", + 292, + "surface_downward_mass_flux_of_carbon_as_abiotic_co2_[kgc_m-2_s-1]", + 701, + "surface_downward_mass_flux_of_carbon_as_natural_co2_[kgc_m-2_s-1]", + 998, + "surface_downward_mass_flux_of_carbon_dioxide_abiotic_analogue_expressed_as_carbon", + 343, + "surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon", + 28887, + "surface_downward_mass_flux_of_carbon_dioxide_natural_analogue_expressed_as_carbon", + 1268, + "surface_downward_mass_flux_of_methane_due_to_wetland_biological_consumption", + 36, + "surface_downward_mass_flux_of_water_due_to_irrigation", + 119, + "surface_downward_mole_flux_of_cfc11", + 490, + "surface_downward_mole_flux_of_cfc12", + 571, + "surface_downward_mole_flux_of_molecular_oxygen", + 10386, + "surface_downward_mole_flux_of_sulfur_hexafluoride", + 498, + "surface_downward_northward_stress", + 55321, + "surface_downward_northward_stress_due_to_boundary_layer_mixing", + 166, + "surface_downward_sensible_heat_flux", + 6716, + "surface_downward_sf6_flux", + 874, + "surface_downward_x_stress", + 17080, + "surface_downward_x_stress_correction", + 12, + "surface_downward_y_stress", + 16967, + "surface_downward_y_stress_correction", + 12, + "surface_downwelling_longwave_flux_in_air", + 90479, + "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", + 46903, + "surface_downwelling_shortwave_flux_in_air", + 105577, + "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", + 55335, + "surface_drag_coefficient_for_momentum_in_air", + 1617, + "surface_evapotranspiration", + 8, + "surface_ice_melt_flux", + 254, + "surface_litter_carbon_content", + 490, + "surface_litter_mass_content_of_carbon", + 5206, + "surface_litter_mass_content_of_nitrogen", + 89, + "surface_mass_balance_flux", + 260, + "surface_mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_aragonite_in_sea_water", + 394, + "surface_mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_calcite_in_sea_water", + 440, + "surface_mole_concentration_of_particulate_organic_matter_expressed_as_silicon_in_sea_water", + 1333, + "surface_molecular_oxygen_partial_pressure_difference_between_sea_water_and_air", + 2228, + "surface_natural_carbonate_ion_concentration", + 125, + "surface_natural_dissolved_inorganic_carbon_concentration", + 3095, + "surface_natural_ph", + 464, + "surface_natural_total_alkalinity", + 323, + "surface_net_downward_longwave_dust_ambient_aerosol_particles_direct_radiative_effect", + 10, + "surface_net_downward_longwave_dust_ambient_aerosol_particles_direct_radiative_effect_assuming_clear_sky", + 8, + "surface_net_downward_longwave_flux", + 42040, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_13C_due_to_all_land_processes", + 9, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_14C_due_to_all_land_processes", + 9, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes", + 47389, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change", + 12516, + "surface_net_downward_shortwave_dust_ambient_aerosol_particles_direct_radiative_effect", + 12, + "surface_net_downward_shortwave_dust_ambient_aerosol_particles_direct_radiative_effect_assuming_clear_sky", + 13, + "surface_net_downward_shortwave_flux", + 39398, + "surface_net_longwave_flux_aerosol_free", + 4, + "surface_net_longwave_flux_aerosol_free_clear_sky", + 4, + "surface_net_shortwave_flux_aerosol_free", + 4, + "surface_net_shortwave_flux_aerosol_free_clear_sky", + 4, + "surface_net_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_anthropogenic_land_use_change", + 15320, + "surface_net_upward_mass_flux_of_methane_due_to_emission_from_wetland_biological_processes", + 1492, + "surface_partial_pressure_of_carbon_dioxide_in_sea_water", + 21582, + "surface_runoff_flux", + 29008, + "surface_snow_amount", + 35548, + "surface_snow_and_ice_melt_flux", + 417, + "surface_snow_and_ice_melt_heat_flux", + 49, + "surface_snow_and_ice_refreezing_flux", + 458, + "surface_snow_and_ice_sublimation_flux", + 16007, + "surface_snow_and_ice_sublimation_flux_", + 9, + "surface_snow_area_fraction", + 59016, + "surface_snow_melt_flux", + 22489, + "surface_snow_sublimation_flux", + 2, + "surface_snow_thickness", + 73650, + "surface_temperature", + 72751, + "surface_total_dissolved_inorganic_phosphorus_concentration", + 501, + "surface_total_dissolved_inorganic_silicon_concentration", + 9223, + "surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_growth", + 197, + "surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_maintenance", + 196, + "surface_upward_heat_flux_due_to_anthropogenic_energy_consumption", + 30, + "surface_upward_latent_heat_flux", + 99200, + "surface_upward_latent_heat_flux_due_to_sublimation", + 24, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_13C_due_to_heterotrophic_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_13C_due_to_plant_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_14C_due_to_heterotrophic_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_14C_due_to_plant_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_direct_to_atmosphere_due_to_anthropogenic_land_use_land_cover_change", + 11, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_anthrogpogenic_emission", + 2, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_land_use_or_land_cover_change_excluding_forestry_and_agricultural_products", + 148, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_crop_harvesting", + 10718, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fires", + 207, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fires_excluding_anthropogenic_land_use_change", + 4165, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_grazing", + 514, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_litter_in_fires", + 185, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_fires", + 1867, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", + 735, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_vegetation_in_fires", + 53, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_heterotrophic_respiration", + 15547, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration", + 15925, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_for_biomass_growth", + 5967, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_for_biomass_maintenance", + 5957, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_in_leaves", + 50, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_in_roots", + 52, + "surface_upward_mass_flux_of_carbon_due_to_heterotrophic_respiration_in_litter", + 2371, + "surface_upward_mass_flux_of_carbon_due_to_heterotrophic_respiration_in_soil", + 2630, + "surface_upward_mass_flux_of_methane_due_to_emission_from_wetland_biological_production", + 173, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen", + 2551, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_due_to_all_land_processes_excluding_fires", + 1735, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_due_to_emission_from_fires", + 2001, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_out_of_vegetation_and_litter_and_soil", + 2550, + "surface_upward_mass_flux_of_nitrous_oxide_expressed_as_nitrogen_out_of_vegetation_and_litter_and_soil", + 2034, + "surface_upward_mass_flux_of_nox_expressed_as_nitrogen_out_of_vegetation_and_litter_and_soil", + 1411, + "surface_upward_mole_flux_of_dimethyl_sulfide", + 530, + "surface_upward_sensible_heat_flux", + 100273, + "surface_upwelling_longwave_flux_in_air", + 70753, + "surface_upwelling_shortwave_flux_in_air", + 71111, + "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", + 36208, + "surface_water_evaporation_flux", + 15, + "surface_water_storage", + 12, + "temperature_at_ice-ocean_interface", + 1889, + "temperature_at_top_of_ice_sheet_model", + 288, + "temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water", + 3128, + "temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water", + 1740, + "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", + 1009, + "temperature_in_surface_snow", + 6167, + "temperature_tendency_due_to_dissipation_orographic_gravity_wave_drag", + 1, + "temperature_tendency_due_to_non-orographic_gravity_wave_dissipation", + 132, + "temperature_tendency_due_to_orographic_gravity_wave_dissipation", + 237, + "temperature_tendency_nonorographic_gravity_wave_dissipation", + 14, + "temperature_tendency_orographic_gravity_wave_dissipation", + 134, + "tendency_of_air_temperature", + 4242, + "tendency_of_air_temperature_due_to_advection", + 5089, + "tendency_of_air_temperature_due_to_boundary_layer_mixing", + 1046, + "tendency_of_air_temperature_due_to_convection", + 7434, + "tendency_of_air_temperature_due_to_diabatic_processes", + 260, + "tendency_of_air_temperature_due_to_diffusion", + 16, + "tendency_of_air_temperature_due_to_dissipation_of_nonorographic_gravity_waves", + 158, + "tendency_of_air_temperature_due_to_dissipation_of_orographic_gravity_waves", + 183, + "tendency_of_air_temperature_due_to_longwave_heating", + 3818, + "tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky", + 2270, + "tendency_of_air_temperature_due_to_model_physics", + 7438, + "tendency_of_air_temperature_due_to_numerical_diffusion", + 34, + "tendency_of_air_temperature_due_to_radiative_heating", + 4540, + "tendency_of_air_temperature_due_to_shortwave_heating", + 3413, + "tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky", + 2265, + "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation", + 815, + "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", + 4508, + "tendency_of_air_temperature_due_to_stratiform_clouds_and_precipitation", + 2263, + "tendency_of_atmosphere_mass_content_of_ammonia_due_to_dry_deposition", + 556, + "tendency_of_atmosphere_mass_content_of_ammonia_due_to_emission", + 721, + "tendency_of_atmosphere_mass_content_of_ammonia_due_to_wet_deposition", + 555, + "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_biogenic_nmvoc_expressed_as_carbon_due_to_emission", + 1732, + "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", + 3927, + "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_forestry_and_agricultural_products", + 3594, + "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", + 93, + "tendency_of_atmosphere_mass_content_of_carbon_monoxide_due_to_emission", + 2002, + "tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_emission", + 8374, + "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_emission", + 2714, + "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_emission", + 2297, + "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_isoprene_due_to_emission", + 2816, + "tendency_of_atmosphere_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_anthropogenic_emission", + 382, + "tendency_of_atmosphere_mass_content_of_nmvoc_due_to_emission", + 1881, + "tendency_of_atmosphere_mass_content_of_nox_expressed_as_nitrogen_due_to_emission", + 2042, + "tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_ozone_due_to_dry_deposition", + 556, + "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_net_chemical_production_and_emission", + 2396, + "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_emission", + 2235, + "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_emission", + 211, + "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_particles_due_to_net_chemical_production", + 428, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_aqueous_phase_net_chemical_production", + 684, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_emission", + 2255, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_gaseous_phase_net_chemical_production", + 682, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_dry_deposition", + 567, + "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_emission", + 8724, + "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_wet_deposition", + 557, + "tendency_of_atmosphere_mass_content_of_water_vapor_due_to_sublimation_of_surface_ice", + 16, + "tendency_of_atmosphere_mass_content_of_water_vapor_due_to_sublimation_of_surface_snow_and_ice", + 7286, + "tendency_of_atmosphere_mole_concentration_of_carbon_monoxide_due_to_chemical_destruction", + 329, + "tendency_of_atmosphere_mole_concentration_of_methane_due_to_chemical_destruction", + 539, + "tendency_of_atmosphere_mole_concentration_of_nitrous_oxide_due_to_chemical_destruction", + 208, + "tendency_of_atmosphere_mole_concentration_of_ozone_due_to_chemical_destruction", + 556, + "tendency_of_atmosphere_mole_concentration_of_ozone_due_to_chemical_production", + 553, + "tendency_of_atmosphere_moles_of_nox_expressed_as_nitrogen", + 1406, + "tendency_of_atmosphere_of_mole_concentration_of_carbon_monoxide_due_to_chemical_destruction", + 210, + "tendency_of_atmospheric_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_wood_and_agricultural_product_pool", + 11, + "tendency_of_eastward_wind_due_to_advection_by_northward_transformed_eulerian_mean_air_velocity", + 1787, + "tendency_of_eastward_wind_due_to_advection_by_the_northward_transformed_eulerian_mean_air_velocity", + 5, + "tendency_of_eastward_wind_due_to_advection_by_the_upward_transformed_eulerian_mean_air_velocity", + 6, + "tendency_of_eastward_wind_due_to_advection_by_upward_transformed_eulerian_mean_air_velocity", + 1769, + "tendency_of_eastward_wind_due_to_eliassen_palm_flux_divergence", + 23552, + "tendency_of_eastward_wind_due_to_nonorographic_gravity_wave_drag", + 4727, + "tendency_of_eastward_wind_due_to_orographic_gravity_wave_drag", + 12802, + "tendency_of_eastward_wind_due_to_tem_northward_advection_and_coriolis_term", + 4231, + "tendency_of_eastward_wind_due_to_tem_upward_advection", + 4246, + "tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_biological_production", + 14, + "tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_dissolution", + 1, + "tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_biological_production", + 991, + "tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_dissolution", + 978, + "tendency_of_mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_due_to_biological_processes", + 614, + "tendency_of_mole_concentration_of_dissolved_inorganic_iron_in_sea_water_due_to_biological_processes", + 596, + "tendency_of_mole_concentration_of_dissolved_inorganic_nitrogen_in_sea_water_due_to_biological_processes", + 596, + "tendency_of_mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water_due_to_biological_processes", + 597, + "tendency_of_mole_concentration_of_dissolved_inorganic_silicon_in_sea_water_due_to_biological_processes", + 592, + "tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_dissolution_from_inorganic_particles", + 370, + "tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_scavenging_by_inorganic_particles", + 963, + "tendency_of_mole_concentration_of_iron_in_sea_water_due_to_biological_production", + 998, + "tendency_of_mole_concentration_of_ox_in_air_due_to_chemical_and_photolytic_production", + 21, + "tendency_of_mole_concentration_of_ox_in_air_due_to_chemical_destruction", + 21, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", + 1358, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", + 9824, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diatoms", + 2689, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diazotrophs", + 693, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_miscellaneous_phytoplankton", + 3372, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_picophytoplankton", + 14, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_nitrate_utilization", + 1855, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_remineralization", + 349, + "tendency_of_mole_concentration_of_silicon_in_sea_water_due_to_biological_production", + 1428, + "tendency_of_northward_wind_due_to_nonorographic_gravity_wave_drag", + 287, + "tendency_of_northward_wind_due_to_orographic_gravity_wave_drag", + 402, + "tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport", + 106, + "tendency_of_ocean_eddy_kinetic_energy_content_due_to_parameterized_eddy_advection", + 385, + "tendency_of_ocean_mole_content_of_aragonite_expressed_as_carbon_due_to_biological_production", + 15, + "tendency_of_ocean_mole_content_of_calcite_expressed_as_carbon_due_to_biological_production", + 931, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon", + 738, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon_due_to_biological_processes", + 2206, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron", + 722, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron_due_to_biological_processes", + 2217, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen", + 725, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen_due_to_biological_processes", + 2218, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus", + 721, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus_due_to_biological_processes", + 2161, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon", + 717, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon_due_to_biological_processes", + 2189, + "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_deposition_and_fixation_and_runoff", + 4477, + "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_fixation", + 8010, + "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_runoff_and_sediment_dissolution", + 291, + "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", + 16, + "tendency_of_ocean_mole_content_of_iron_due_to_biological_production", + 2763, + "tendency_of_ocean_mole_content_of_iron_due_to_deposition_and_runoff_and_sediment_dissolution", + 4546, + "tendency_of_ocean_mole_content_of_nitrogen_due_to_biological_production", + 301, + "tendency_of_ocean_mole_content_of_organic_carbon_due_to_runoff_and_sediment_dissolution", + 279, + "tendency_of_ocean_mole_content_of_phosphorus_due_to_biological_production", + 271, + "tendency_of_ocean_mole_content_of_silicon_due_to_biological_production", + 2337, + "tendency_of_ocean_potential_energy_content", + 1235, + "tendency_of_sea_ice_amount_due_to_basal_melting", + 7283, + "tendency_of_sea_ice_amount_due_to_congelation_ice_accumulation", + 7077, + "tendency_of_sea_ice_amount_due_to_conversion_of_snow_to_sea_ice", + 3665, + "tendency_of_sea_ice_amount_due_to_dynamics", + 8, + "tendency_of_sea_ice_amount_due_to_frazil_ice_accumulation_in_leads", + 5418, + "tendency_of_sea_ice_amount_due_to_freezing_in_open_water", + 514, + "tendency_of_sea_ice_amount_due_to_lateral_melting", + 2650, + "tendency_of_sea_ice_amount_due_to_sea_ice_dynamics", + 3031, + "tendency_of_sea_ice_amount_due_to_sea_ice_thermodynamics", + 3033, + "tendency_of_sea_ice_amount_due_to_snow_conversion", + 1740, + "tendency_of_sea_ice_amount_due_to_surface_melting", + 7265, + "tendency_of_sea_ice_amount_due_to_thermodynamics", + 8, + "tendency_of_sea_ice_area_fraction_due_to_dynamics", + 3208, + "tendency_of_sea_ice_area_fraction_due_to_thermodynamics", + 4477, + "tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", + 600, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content", + 165, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", + 148, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", + 165, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_dianeutral_mixing", + 17, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", + 147, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion", + 17, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", + 16, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection", + 7, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_(sum_of_eulerian_+_parameterized)_advection", + 131, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection", + 63, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content", + 3670, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", + 3028, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", + 3477, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_dianeutral_mixing", + 485, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", + 2967, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion", + 543, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", + 298, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection", + 44, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_residual_mean_advection", + 3342, + "tendency_of_sea_water_salinity_expressed_as_salt_content", + 3817, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing", + 3177, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection", + 3641, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_dianeutral_mixing", + 491, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_diffusion", + 3120, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion", + 544, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_advection", + 312, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection", + 51, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection", + 3695, + "tendency_of_snow_mass_due_to_sea_ice_dynamics", + 4, + "tendency_of_soil_and_vegetation_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_fixation", + 1681, + "tendency_of_soil_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_fertilization", + 717, + "tendency_of_specific_humidity", + 1741, + "tendency_of_specific_humidity_due_to_advection", + 2628, + "tendency_of_specific_humidity_due_to_boundary_layer_mixing", + 1046, + "tendency_of_specific_humidity_due_to_convection", + 3144, + "tendency_of_specific_humidity_due_to_diffusion", + 564, + "tendency_of_specific_humidity_due_to_model_physics", + 2221, + "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation", + 443, + "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", + 2047, + "tendency_of_specific_humidity_due_to_stratiform_clouds_and_precipitation", + 597, + "tendency_of_surface_snow_amount_due_to_conversion_of_snow_to_sea_ice", + 824, + "tendency_of_surface_snow_amount_due_to_drifting_into_sea", + 295, + "tendency_of_surface_snow_amount_due_to_sea_ice_dynamics", + 687, + "tendency_of_surface_snow_and_ice_amount_due_to_sublimation", + 41, + "tendency_of_vegetation_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_fixation", + 2094, + "terrestrial_water_storage", + 294, + "thermal_energy_content_of_surface_snow", + 4711, + "thickness_of_ice_on_sea_ice_melt_pond", + 74, + "thickness_of_soil_layers", + 21, + "toa_bidirectional_reflectance", + 879, + "toa_clear-sky_longwave_radiative_forcing_due_to_dust", + 40, + "toa_incoming_shortwave_flux", + 59960, + "toa_instantaneous_longwave_forcing", + 1758, + "toa_instantaneous_shortwave_forcing", + 100, + "toa_longwave_dust_ambient_aerosol_particles_direct_radiative_effect_assuming_clear_sky", + 10, + "toa_outgoing_clear-sky,_aerosol-free_shortwave_radiation", + 476, + "toa_outgoing_clear-sky_shortwave_radiation", + 186, + "toa_outgoing_longwave_flux", + 91448, + "toa_outgoing_longwave_flux_assuming_clear_sky", + 66156, + "toa_outgoing_longwave_flux_due_to_volcanic_ambient_aerosol_particles_assuming_clear_sky", + 84, + "toa_outgoing_shortwave_flux", + 68275, + "toa_outgoing_shortwave_flux_assuming_clear_sky", + 55492, + "toa_outgoing_shortwave_flux_assuming_clear_sky_and_no_aerosol", + 1565, + "toa_outgoing_shortwave_flux_due_to_volcanic_ambient_aerosol_particles_assuming_clear_sky", + 84, + "tob", + 1, + "top-of-atmosphere_solar_insolation_for_each_band", + 31, + "total_autotrophic_respiration_on_land_as_carbon_mass_flux_[kgc_m-2_s-1]", + 465, + "total_carbon_in_all_terrestrial_carbon_pools", + 15910, + "total_carbon_loss_from_natural_and_managed_fire_on_land-use_tile,_including_deforestation_fires", + 106, + "total_carbon_loss_from_natural_and_managed_fire_on_land-use_tile,_including_deforestation_fires_[kgc_m-2_s-1]", + 77, + "total_carbon_loss_from_natural_and_managed_fire_on_land_use_tile,_including_deforestation_fires", + 60, + "total_carbon_mass_flux_from_vegetation_to_litter", + 6057, + "total_carbon_mass_flux_from_vegetation_to_litter_as_a_result_of_leaf,_branch,_and_root_senescence", + 4092, + "total_carbon_mass_flux_from_vegetation_to_litter_as_a_result_of_mortality", + 205, + "total_deposition_rate_of_dust", + 953, + "total_direct_emission_rate_of_so4", + 1632, + "total_dissolved_inorganic_phosphorus_concentration", + 12887, + "total_dissolved_inorganic_silicon_concentration", + 10861, + "total_emission_of_anthropogenic_organic_aerosol", + 364, + "total_emission_rate_of_anthropogenic_organic_aerosol", + 470, + "total_emission_rate_of_biogenic_nmvoc", + 494, + "total_emission_rate_of_black_carbon_aerosol_mass", + 4670, + "total_emission_rate_of_dust", + 6134, + "total_emission_rate_of_nmvoc", + 769, + "total_emission_rate_of_sea-salt_aerosol", + 1080, + "total_emission_rate_of_seasalt", + 1277, + "total_evapotranspiration", + 12, + "total_grazing_of_phytoplankton_by_zooplankton", + 2772, + "total_heterotrophic_respiration_on_land_as_carbon_mass_flux_[kgc_m-2_s-1]", + 6484, + "total_land_carbon", + 2, + "total_land_n2o_flux", + 845, + "total_n_added_for_cropland_fertilisation_(artificial_and_manure)", + 741, + "total_n_loss_to_leaching_or_runoff_(sum_of_ammonium,_nitrite_and_nitrate)", + 749, + "total_n_lost_(including_nhx,_nox,_n2o,_n2_and_leaching)", + 742, + "total_net_production_of_anthropogenic_secondary_organic_aerosol", + 48, + "total_nitrogen_added_for_cropland_fertilisation_(artificial_and_manure)", + 313, + "total_nitrogen_in_all_terrestrial_nitrogen_pools", + 1227, + "total_nitrogen_loss_to_leaching_or_runoff_(sum_of_ammonium,_nitrite_and_nitrate)", + 453, + "total_nitrogen_lost_(including_nhx,_nox,_n2o,_n2_and_leaching)", + 452, + "total_nitrogen_lost_to_the_atmosphere_(including_nhx,_nox,_n2o,_n2)_from_all_processes_except_fire", + 369, + "total_nitrogen_lost_to_the_atmosphere_(including_nhx,_nox,_n2o,_n2)_from_fire", + 296, + "total_nitrogen_lost_to_the_atmosphere_(sum_of_nhx,_nox,_n2o,_n2)", + 1181, + "total_nitrogen_mass_flux_from_litter_to_soil", + 1004, + "total_nitrogen_mass_flux_from_vegetation_directly_to_soil", + 71, + "total_nitrogen_mass_flux_from_vegetation_to_litter", + 754, + "total_odd_oxygen_(ox)_loss_rate", + 56, + "total_odd_oxygen_(ox)_production_rate", + 56, + "total_organic_aerosol_aod@550nm", + 1722, + "total_organic_aerosol_mass_mixing_ratio", + 1945, + "total_organic_aerosol_optical_depth_at_550nm", + 928, + "total_ox_loss_rate", + 46, + "total_ox_production_rate", + 46, + "total_plant_nitrogen_uptake_(sum_of_ammonium_and_nitrate),_irrespective_of_the_source_of_nitrogen", + 741, + "total_plant_nitrogen_uptake_(sum_of_ammonium_and_nitrate)_irrespective_of_the_source_of_nitrogen", + 470, + "total_respiration_from_leaves", + 117, + "total_respiration_from_leaves_as_carbon_mass_flux_[kgc_m-2_s-1]", + 103, + "total_respiration_from_roots", + 119, + "total_respiration_from_roots_as_carbon_mass_flux_[kgc_m-2_s-1]", + 103, + "total_soil_moisture", + 320, + "total_soil_moisture_content", + 23300, + "total_soil_moisture_content_", + 16, + "total_water_content_of_soil_layer", + 17506, + "total_water_storage", + 2, + "total_water_storage_in_a_grid_cell", + 1628, + "tracer_age_of_air_northern_hemisphere", + 40, + "tracer_lifetime", + 6, + "transformed_eulerian_mean_mass_stramfunction", + 19, + "transformed_eulerian_mean_mass_streamfunction", + 4233, + "transformed_eulerian_mean_upward_wind", + 14470, + "transpiration", + 5, + "transpiration_flux", + 22544, + "tropopause_air_pressure", + 7773, + "tropopause_air_temperature", + 2653, + "tropopause_altitude", + 7557, + "turnover_rate_of_each_model_soil_carbon_pool", + 533, + "u-tendency_by_vstar_advection", + 17, + "u-tendency_by_wstar_advection", + 17, + "upward_air_velocity", + 1339, + "upward_component_of_land-ice_basal_velocity", + 2, + "upward_component_of_land-ice_surface_velocity", + 2, + "upward_eliassen_palm_flux_in_air", + 23868, + "upward_geothermal_heat_flux_at_ground_level_in_land_ice", + 9, + "upward_geothermal_heat_flux_at_sea_floor", + 4055, + "upward_ocean_mass_transport", + 11638, + "upward_sea_ice_basal_heat_flux", + 4431, + "upward_sea_water_velocity", + 18585, + "upward_transformed_eulerian_mean_air_velocity", + 8106, + "upward_x_stress_at_sea_ice_base", + 6021, + "upward_y_stress_at_sea_ice_base", + 6025, + "upwelling_longwave_flux_in_air", + 6019, + "upwelling_longwave_flux_in_air_assuming_clear_sky", + 5937, + "upwelling_shortwave_flux_in_air", + 6079, + "upwelling_shortwave_flux_in_air_assuming_clear_sky", + 6058, + "utendepfd", + 198, + "v-tendency_nonorographic_gravity_wave_drag", + 156, + "v-tendency_orographic_gravity_wave_drag", + 152, + "vegetation_area_fraction", + 326, + "vegetation_carbon_content", + 37701, + "vegetation_mass_content_of_13C", + 12, + "vegetation_mass_content_of_14C", + 12, + "vegetation_mass_content_of_nitrogen", + 2629, + "vertical_integral_eastward_wind_by_dry_static_energy", + 2, + "vertical_integral_eastward_wind_by_total_water", + 2, + "vertical_integral_northward_wind_by_dry_static_energy", + 2, + "vertical_integral_northward_wind_by_total_water", + 2, + "vertically_integrated_eastward_dry_transport_(cp.t_+zg).u_(mass_weighted_vertical_integral_of_the_product_of_northward_wind_by_dry_static_energy_per_mass_unit)", + 388, + "vertically_integrated_eastward_moisture_transport_(mass_weighted_vertical_integral_of_the_product_of_eastward_wind_by_total_water_mass_per_unit_mass)", + 388, + "vertically_integrated_northward_dry_transport_(cp.t_+zg).v_(mass_weighted_vertical_integral_of_the_product_of_northward_wind_by_dry_static_energy_per_mass_unit)", + 388, + "vertically_integrated_northward_moisture_transport_(mass_weighted_vertical_integral_of_the_product_of_northward_wind_by_total_water_mass_per_unit_mass)", + 388, + "virtual_salt_flux_correction", + 21, + "virtual_salt_flux_into_sea_water", + 2775, + "virtual_salt_flux_into_sea_water_due_to_evaporation", + 384, + "virtual_salt_flux_into_sea_water_due_to_rainfall", + 392, + "virtual_salt_flux_into_sea_water_due_to_sea_ice_thermodynamics", + 919, + "virtual_salt_flux_into_sea_water_from_rivers", + 388, + "volume_extinction_coefficient_in_air_due_to_ambient_aerosol_particles", + 451, + "volume_fraction_of_clay_in_soil", + 73, + "volume_fraction_of_condensed_water_in_soil_at_field_capacity", + 866, + "volume_fraction_of_condensed_water_in_soil_at_wilting_point", + 43, + "volume_fraction_of_sand_in_soil", + 48, + "volume_fraction_of_silt_in_soil", + 28, + "water_evaporation_flux", + 5569, + "water_evaporation_flux_from_canopy", + 23294, + "water_evaporation_flux_from_soil", + 24385, + "water_evaporation_flux_where_ice_free_ocean_over_sea", + 5006, + "water_evapotranspiration_flux", + 35331, + "water_flux_correction", + 616, + "water_flux_into_sea_water", + 16465, + "water_flux_into_sea_water_due_to_sea_ice_thermodynamics", + 9154, + "water_flux_into_sea_water_due_to_surface_drainage", + 1764, + "water_flux_into_sea_water_from_icebergs", + 5162, + "water_flux_into_sea_water_from_land_ice", + 1319, + "water_flux_into_sea_water_from_rivers", + 15571, + "water_flux_into_sea_water_from_sea_ice", + 31, + "water_flux_into_sea_water_without_flux_correction", + 2227, + "water_flux_to_downstream", + 1, + "water_potential_evaporation_flux", + 5247, + "water_table_depth", + 1780, + "water_table_depth_from_surface.", + 1524, + "wet_bulb_potential_temperature", + 28, + "wet_deposition_of_noy_incl_aerosol_nitrate", + 344, + "wet_deposition_rate_of_black_carbon_aerosol_mass", + 5857, + "wet_deposition_rate_of_dry_aerosol_total_organic_matter", + 2097, + "wet_deposition_rate_of_dust", + 5982, + "wet_deposition_rate_of_nh3", + 150, + "wet_deposition_rate_of_nh4", + 522, + "wet_deposition_rate_of_noy_including_aerosol_nitrate", + 589, + "wet_deposition_rate_of_sea-salt_aerosol", + 978, + "wet_deposition_rate_of_seasalt", + 1271, + "wet_deposition_rate_of_so2", + 5582, + "wet_deposition_rate_of_so4", + 6036, + "wilting_point", + 2, + "wind_speed", + 134575, + "wind_speed_of_gust", + 7, + "wood_and_agricultural_product_pool_carbon_associated_with_land-use_tiles", + 13, + "wood_and_agricultural_product_pool_carbon_associated_with_land_use_tiles;_examples_of_products_include_paper,_cardboard,_timber_for_construction,_and_crop_harvest_for_food_or_fuel.", + 96, + "wood_carbon_content", + 441, + "wood_debris_mass_content_of_carbon", + 3614, + "wood_debris_mass_content_of_nitrogen", + 124, + "x-component_of_land_ice_surface_velocity", + 2, + "y-component_of_land_ice_surface_velocity", + 2 + ] + }, + "facet_ranges": {}, + "facet_intervals": {}, + "facet_heatmaps": {} + } + } +} \ No newline at end of file diff --git a/tests/fixtures/2_record_dataset_response.json b/tests/fixtures/2_record_dataset_response.json new file mode 100644 index 0000000..7ffad22 --- /dev/null +++ b/tests/fixtures/2_record_dataset_response.json @@ -0,0 +1,11308 @@ +{ + "request": "project=CMIP6&query=%2A&format=application%2Fsolr%2Bjson&type=Dataset&offset=0&limit=2&facets=activity_id%2C%20data_node%2C%20source_id%2C%20institution_id%2C%20source_type%2C%20experiment_id%2C%20sub_experiment_id%2C%20nominal_resolution%2C%20variant_label%2C%20grid_label%2C%20table_id%2C%20frequency%2C%20realm%2C%20variable_id%2C%20cf_standard_name", + "globus_query": { + "q": "", + "advanced": true, + "limit": 2, + "offset": 0, + "filters": [ + { + "type": "match_any", + "field_name": "project", + "values": [ + "CMIP6" + ] + }, + { + "type": "match_any", + "field_name": "type", + "values": [ + "Dataset" + ] + } + ], + "facets": [ + { + "name": "activity_id", + "type": "terms", + "field_name": "activity_id" + }, + { + "name": "data_node", + "type": "terms", + "field_name": "data_node" + }, + { + "name": "source_id", + "type": "terms", + "field_name": "source_id" + }, + { + "name": "institution_id", + "type": "terms", + "field_name": "institution_id" + }, + { + "name": "source_type", + "type": "terms", + "field_name": "source_type" + }, + { + "name": "experiment_id", + "type": "terms", + "field_name": "experiment_id" + }, + { + "name": "sub_experiment_id", + "type": "terms", + "field_name": "sub_experiment_id" + }, + { + "name": "nominal_resolution", + "type": "terms", + "field_name": "nominal_resolution" + }, + { + "name": "variant_label", + "type": "terms", + "field_name": "variant_label" + }, + { + "name": "grid_label", + "type": "terms", + "field_name": "grid_label" + }, + { + "name": "table_id", + "type": "terms", + "field_name": "table_id" + }, + { + "name": "frequency", + "type": "terms", + "field_name": "frequency" + }, + { + "name": "realm", + "type": "terms", + "field_name": "realm" + }, + { + "name": "variable_id", + "type": "terms", + "field_name": "variable_id" + }, + { + "name": "cf_standard_name", + "type": "terms", + "field_name": "cf_standard_name" + } + ] + }, + "globus_response": { + "gmeta": [ + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "northward_ocean_heat_transport" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "geo_units": [ + "degrees_north" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "north_degrees": 89.50723, + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 4686043, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "south_degrees": -78.29248, + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/las|LAS" + ], + "variable": [ + "hfbasin" + ], + "variable_id": [ + "hfbasin" + ], + "variable_long_name": [ + "Northward Ocean Heat Transport" + ], + "variable_units": [ + "W" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3|PID|pid" + ], + "_version_": 1660740810020225000, + "retracted": false, + "_timestamp": "2020-03-10T02:04:16.724Z", + "score": 1 + }, + "entry_id": "dataset", + "matched_principal_sets": [] + } + ] + }, + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_surface_downward_x_stress" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/ad0a0055-ba72-3a18-882e-fdace6ffa5a0" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 436004228, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tauuo" + ], + "variable_id": [ + "tauuo" + ], + "variable_long_name": [ + "Sea Water Surface Downward X Stress" + ], + "variable_units": [ + "N m-2" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/ad0a0055-ba72-3a18-882e-fdace6ffa5a0|PID|pid" + ], + "_version_": 1660741635081764900, + "retracted": false, + "_timestamp": "2020-03-10T02:17:23.564Z", + "score": 1 + }, + "entry_id": "dataset", + "matched_principal_sets": [] + } + ] + } + ], + "facet_results": [ + { + "name": "sub_experiment_id", + "value": null, + "buckets": [ + { + "value": "none", + "count": 6201394 + }, + { + "value": "s2014", + "count": 65501 + }, + { + "value": "s1981", + "count": 60502 + }, + { + "value": "s1990", + "count": 60479 + }, + { + "value": "s1962", + "count": 59615 + }, + { + "value": "s1993", + "count": 49561 + }, + { + "value": "s1994", + "count": 49549 + }, + { + "value": "s1995", + "count": 43800 + }, + { + "value": "s2002", + "count": 43598 + }, + { + "value": "s2004", + "count": 38893 + } + ] + }, + { + "name": "data_node", + "value": null, + "buckets": [ + { + "value": "esgf-node.ornl.gov", + "count": 5963081 + }, + { + "value": "crd-esgf-drc.ec.gc.ca", + "count": 874438 + }, + { + "value": "esgf-data.ucar.edu", + "count": 750457 + }, + { + "value": "esgf-data2.diasjp.net", + "count": 539299 + }, + { + "value": "esgf-data02.diasjp.net", + "count": 376808 + }, + { + "value": "esgf-data03.diasjp.net", + "count": 147797 + }, + { + "value": "dpesgf03.nccs.nasa.gov", + "count": 145103 + }, + { + "value": "esg.lasg.ac.cn", + "count": 114935 + }, + { + "value": "esgf-data04.diasjp.net", + "count": 63289 + }, + { + "value": "cmip.bcc.cma.cn", + "count": 52209 + } + ] + }, + { + "name": "experiment_id", + "value": null, + "buckets": [ + { + "value": "dcppA-hindcast", + "count": 2739506 + }, + { + "value": "historical", + "count": 422708 + }, + { + "value": "pdSST-futArcSIC", + "count": 379797 + }, + { + "value": "pdSST-pdSIC", + "count": 367440 + }, + { + "value": "ssp245", + "count": 261745 + }, + { + "value": "pdSST-piArcSIC", + "count": 246256 + }, + { + "value": "piSST-pdSIC", + "count": 202040 + }, + { + "value": "ssp585", + "count": 198144 + }, + { + "value": "ssp370", + "count": 194201 + }, + { + "value": "futSST-pdSIC", + "count": 192678 + } + ] + }, + { + "name": "source_type", + "value": null, + "buckets": [ + { + "value": "AOGCM", + "count": 6720630 + }, + { + "value": "AER", + "count": 2903539 + }, + { + "value": "BGC", + "count": 2661135 + }, + { + "value": "AGCM", + "count": 2284316 + }, + { + "value": "CHEM", + "count": 767139 + }, + { + "value": "OGCM", + "count": 23958 + }, + { + "value": "LAND", + "count": 18020 + }, + { + "value": "ISM", + "count": 12465 + }, + { + "value": "RAD", + "count": 5352 + }, + { + "value": "AERM", + "count": 541 + } + ] + }, + { + "name": "cf_standard_name", + "value": null, + "buckets": [ + { + "value": "air_temperature", + "count": 450098 + }, + { + "value": "area_fraction", + "count": 278264 + }, + { + "value": "eastward_wind", + "count": 220552 + }, + { + "value": "northward_wind", + "count": 195670 + }, + { + "value": "specific_humidity", + "count": 183389 + }, + { + "value": "geopotential_height", + "count": 149840 + }, + { + "value": "relative_humidity", + "count": 145801 + }, + { + "value": "wind_speed", + "count": 134575 + }, + { + "value": "precipitation_flux", + "count": 119194 + }, + { + "value": "surface_downwelling_shortwave_flux_in_air", + "count": 105577 + } + ] + }, + { + "name": "table_id", + "value": null, + "buckets": [ + { + "value": "Amon", + "count": 2319917 + }, + { + "value": "Omon", + "count": 1538856 + }, + { + "value": "day", + "count": 864304 + }, + { + "value": "Emon", + "count": 825752 + }, + { + "value": "Lmon", + "count": 805572 + }, + { + "value": "SImon", + "count": 591756 + }, + { + "value": "AERmon", + "count": 424595 + }, + { + "value": "Eday", + "count": 209982 + }, + { + "value": "Oyr", + "count": 190125 + }, + { + "value": "LImon", + "count": 165142 + } + ] + }, + { + "name": "frequency", + "value": null, + "buckets": [ + { + "value": "mon", + "count": 6993380 + }, + { + "value": "day", + "count": 1432455 + }, + { + "value": "fx", + "count": 265394 + }, + { + "value": "yr", + "count": 204424 + }, + { + "value": "6hr", + "count": 32872 + }, + { + "value": "3hr", + "count": 27362 + }, + { + "value": "6hrPt", + "count": 22308 + }, + { + "value": "3hrPt", + "count": 19260 + }, + { + "value": "monPt", + "count": 17299 + }, + { + "value": "monC", + "count": 8731 + } + ] + }, + { + "name": "institution_id", + "value": null, + "buckets": [ + { + "value": "CCCma", + "count": 1680115 + }, + { + "value": "NCAR", + "count": 1438852 + }, + { + "value": "IPSL", + "count": 1253497 + }, + { + "value": "MIROC", + "count": 1080885 + }, + { + "value": "NCC", + "count": 625777 + }, + { + "value": "MRI", + "count": 476841 + }, + { + "value": "MOHC", + "count": 394108 + }, + { + "value": "CNRM-CERFACS", + "count": 331545 + }, + { + "value": "NASA-GISS", + "count": 301114 + }, + { + "value": "EC-Earth-Consortium", + "count": 274659 + } + ] + }, + { + "name": "variant_label", + "value": null, + "buckets": [ + { + "value": "r1i1p1f1", + "count": 785515 + }, + { + "value": "r2i1p1f1", + "count": 338452 + }, + { + "value": "r3i1p1f1", + "count": 337241 + }, + { + "value": "r4i1p1f1", + "count": 266168 + }, + { + "value": "r5i1p1f1", + "count": 253905 + }, + { + "value": "r6i1p1f1", + "count": 208449 + }, + { + "value": "r7i1p1f1", + "count": 199007 + }, + { + "value": "r8i1p1f1", + "count": 198535 + }, + { + "value": "r10i1p1f1", + "count": 191966 + }, + { + "value": "r9i1p1f1", + "count": 190197 + } + ] + }, + { + "name": "variable_id", + "value": null, + "buckets": [ + { + "value": "ua", + "count": 133180 + }, + { + "value": "ta", + "count": 132682 + }, + { + "value": "psl", + "count": 118815 + }, + { + "value": "tas", + "count": 116763 + }, + { + "value": "va", + "count": 113666 + }, + { + "value": "pr", + "count": 112164 + }, + { + "value": "zg", + "count": 104113 + }, + { + "value": "rsds", + "count": 100275 + }, + { + "value": "hus", + "count": 98074 + }, + { + "value": "sfcWind", + "count": 92555 + } + ] + }, + { + "name": "grid_label", + "value": null, + "buckets": [ + { + "value": "gn", + "count": 6968543 + }, + { + "value": "gr", + "count": 1842247 + }, + { + "value": "gr1", + "count": 95701 + }, + { + "value": "gnz", + "count": 78496 + }, + { + "value": "gm", + "count": 28534 + }, + { + "value": "grz", + "count": 14193 + }, + { + "value": "gr2z", + "count": 7610 + }, + { + "value": "gr2", + "count": 1248 + }, + { + "value": "gr3", + "count": 423 + }, + { + "value": "gr1z", + "count": 247 + } + ] + }, + { + "name": "activity_id", + "value": null, + "buckets": [ + { + "value": "DCPP", + "count": 3070110 + }, + { + "value": "PAMIP", + "count": 2713909 + }, + { + "value": "ScenarioMIP", + "count": 1018912 + }, + { + "value": "CMIP", + "count": 737124 + }, + { + "value": "DAMIP", + "count": 684411 + }, + { + "value": "AerChemMIP", + "count": 361885 + }, + { + "value": "VolMIP", + "count": 172184 + }, + { + "value": "C4MIP", + "count": 77015 + }, + { + "value": "LUMIP", + "count": 71716 + }, + { + "value": "RFMIP", + "count": 71194 + } + ] + }, + { + "name": "realm", + "value": null, + "buckets": [ + { + "value": "atmos", + "count": 4165646 + }, + { + "value": "land", + "count": 1614486 + }, + { + "value": "ocean", + "count": 1042032 + }, + { + "value": "ocnBgchem", + "count": 873340 + }, + { + "value": "seaIce", + "count": 660954 + }, + { + "value": "aerosol", + "count": 534184 + }, + { + "value": "landIce", + "count": 230101 + }, + { + "value": "atmosChem", + "count": 12956 + }, + { + "value": "ocnBgChem", + "count": 8909 + }, + { + "value": "seaice", + "count": 16 + } + ] + }, + { + "name": "nominal_resolution", + "value": null, + "buckets": [ + { + "value": "100 km", + "count": 3913451 + }, + { + "value": "250 km", + "count": 3218190 + }, + { + "value": "500 km", + "count": 1543029 + }, + { + "value": "1x1 degree", + "count": 266425 + }, + { + "value": "50 km", + "count": 74355 + }, + { + "value": "25 km", + "count": 13550 + }, + { + "value": "200 km", + "count": 5494 + }, + { + "value": "10000 km", + "count": 990 + }, + { + "value": "10 km", + "count": 766 + }, + { + "value": "2x2 degree", + "count": 639 + } + ] + }, + { + "name": "source_id", + "value": null, + "buckets": [ + { + "value": "CanESM5", + "count": 1597459 + }, + { + "value": "IPSL-CM6A-LR", + "count": 1241928 + }, + { + "value": "CESM1-1-CAM5-CMIP5", + "count": 708810 + }, + { + "value": "MIROC6", + "count": 652660 + }, + { + "value": "MRI-ESM2-0", + "count": 474331 + }, + { + "value": "CESM2", + "count": 418116 + }, + { + "value": "MIROC-ES2L", + "count": 409789 + }, + { + "value": "NorESM2-LM", + "count": 388969 + }, + { + "value": "HadGEM3-GC31-MM", + "count": 289237 + }, + { + "value": "CNRM-CM6-1", + "count": 270729 + } + ] + } + ], + "offset": 0, + "count": 2, + "total": 9037273, + "has_next_page": true + }, + "esg_search_response": { + "responseHeader": { + "status": 0, + "QTime": 2411, + "params": { + "df": "text", + "q.alt": "*:*", + "indent": "true", + "echoParams": "all", + "fl": "*,score", + "start": "0", + "fq": [ + "type:Dataset", + "project:\"CMIP6\"" + ], + "rows": "2", + "q": "*", + "shards": "esgf-data-node-solr-query:8983/solr/datasets", + "tie": "0.01", + "facet.limit": "-1", + "qf": "text", + "facet.method": "enum", + "facet.mincount": "1", + "facet": "true", + "wt": "json", + "facet.sort": "lex" + } + }, + "response": { + "numFound": 9037273, + "start": 0, + "maxScore": 1, + "docs": [ + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "northward_ocean_heat_transport" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "geo_units": [ + "degrees_north" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "north_degrees": 89.50723, + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 4686043, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "south_degrees": -78.29248, + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/las|LAS" + ], + "variable": [ + "hfbasin" + ], + "variable_id": [ + "hfbasin" + ], + "variable_long_name": [ + "Northward Ocean Heat Transport" + ], + "variable_units": [ + "W" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3|PID|pid" + ], + "_version_": 1660740810020225000, + "retracted": false, + "_timestamp": "2020-03-10T02:04:16.724Z", + "score": 1 + }, + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_surface_downward_x_stress" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/ad0a0055-ba72-3a18-882e-fdace6ffa5a0" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 436004228, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tauuo" + ], + "variable_id": [ + "tauuo" + ], + "variable_long_name": [ + "Sea Water Surface Downward X Stress" + ], + "variable_units": [ + "N m-2" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/ad0a0055-ba72-3a18-882e-fdace6ffa5a0|PID|pid" + ], + "_version_": 1660741635081764900, + "retracted": false, + "_timestamp": "2020-03-10T02:17:23.564Z", + "score": 1 + } + ] + }, + "facet_counts": { + "facet_queries": {}, + "facet_fields": { + "activity_id": [ + "AerChemMIP", + 361885, + "C4MIP", + 77015, + "CDRMIP", + 31226, + "CFMIP", + 60339, + "CMIP", + 737124, + "DAMIP", + 684411, + "DCPP", + 3070110, + "FAFMIP", + 31501, + "GMMIP", + 20671, + "GeoMIP", + 24468, + "HighResMIP", + 39860, + "ISMIP6", + 2719, + "LS3MIP", + 16361, + "LUMIP", + 71716, + "OMIP", + 21867, + "PAMIP", + 2713909, + "PMIP", + 21320, + "RFMIP", + 71194, + "ScenarioMIP", + 1018912, + "VolMIP", + 172184 + ], + "data_node": [ + "cmip.bcc.cma.cn", + 52209, + "cmip.dess.tsinghua.edu.cn", + 1394, + "crd-esgf-drc.ec.gc.ca", + 874438, + "dist.nmlab.snu.ac.kr", + 840, + "dpesgf03.nccs.nasa.gov", + 145103, + "esg.lasg.ac.cn", + 114935, + "esgdata.gfdl.noaa.gov", + 2310, + "esgf-data.ucar.edu", + 750457, + "esgf-data02.diasjp.net", + 376808, + "esgf-data03.diasjp.net", + 147797, + "esgf-data04.diasjp.net", + 63289, + "esgf-data2.diasjp.net", + 539299, + "esgf-nimscmip6.apcc21.org", + 3298, + "esgf-node.ornl.gov", + 5963081, + "lapdat02-p.gfdl.noaa.gov", + 1, + "polaris.pknu.ac.kr", + 2014 + ], + "source_id": [ + "4AOP-v1-5", + 6, + "ACCESS-CM2", + 16841, + "ACCESS-ESM1-5", + 124861, + "ACCESS-OM2", + 280, + "ACCESS-OM2-025", + 95, + "ARTS-2-3", + 8, + "AWI-CM-1-1-HR", + 174, + "AWI-CM-1-1-LR", + 174, + "AWI-CM-1-1-MR", + 69018, + "AWI-ESM-1-1-LR", + 2578, + "BCC-CSM2-HR", + 1291, + "BCC-CSM2-MR", + 89229, + "BCC-ESM1", + 13864, + "CAMS-CSM1-0", + 2236, + "CAS-ESM2-0", + 8646, + "CESM1-1-CAM5-CMIP5", + 708810, + "CESM1-CAM5-SE-HR", + 690, + "CESM1-CAM5-SE-LR", + 754, + "CESM1-WACCM-SC", + 206490, + "CESM2", + 418116, + "CESM2-FV2", + 18820, + "CESM2-WACCM", + 69173, + "CESM2-WACCM-FV2", + 15999, + "CIESM", + 3356, + "CMCC-CM2-HR4", + 1329, + "CMCC-CM2-SR5", + 200596, + "CMCC-CM2-VHR4", + 465, + "CMCC-ESM2", + 8661, + "CMCC-ESM2-SR5", + 400, + "CNRM-CM6-1", + 270729, + "CNRM-CM6-1-HR", + 7353, + "CNRM-ESM2-1", + 53463, + "CanESM5", + 1597459, + "CanESM5-1", + 65572, + "CanESM5-CanOE", + 17084, + "E3SM-1-0", + 45143, + "E3SM-1-1", + 2005, + "E3SM-1-1-ECA", + 1117, + "E3SM-2-0", + 4552, + "EC-Earth3", + 200052, + "EC-Earth3-AerChem", + 9770, + "EC-Earth3-CC", + 24033, + "EC-Earth3-HR", + 9077, + "EC-Earth3-LR", + 981, + "EC-Earth3-Veg", + 19541, + "EC-Earth3-Veg-LR", + 6968, + "EC-Earth3P", + 2145, + "EC-Earth3P-HR", + 2091, + "EC-Earth3P-VHR", + 1, + "ECMWF-IFS-HR", + 699, + "ECMWF-IFS-LR", + 731, + "ECMWF-IFS-MR", + 384, + "FGOALS-f3-H", + 986, + "FGOALS-f3-L", + 160033, + "FGOALS-g3", + 23087, + "FIO-ESM-2-0", + 3263, + "GFDL-AM4", + 182, + "GFDL-CM4", + 8678, + "GFDL-CM4C192", + 452, + "GFDL-ESM2M", + 446, + "GFDL-ESM4", + 16509, + "GFDL-GRTCODE", + 12, + "GFDL-OM4p5B", + 36, + "GFDL-RFM-DISORT", + 4, + "GISS-E2-1-G", + 229629, + "GISS-E2-1-G-CC", + 5425, + "GISS-E2-1-H", + 32546, + "GISS-E2-2-G", + 29742, + "GISS-E2-2-H", + 2831, + "GISS-E3-G", + 941, + "HadGEM3-GC31-HH", + 592, + "HadGEM3-GC31-HM", + 1904, + "HadGEM3-GC31-LL", + 27856, + "HadGEM3-GC31-LM", + 834, + "HadGEM3-GC31-MH", + 113, + "HadGEM3-GC31-MM", + 289237, + "HiRAM-SIT-HR", + 357, + "HiRAM-SIT-LR", + 413, + "ICON-ESM-LR", + 2114, + "IITM-ESM", + 1299, + "INM-CM4-8", + 3275, + "INM-CM5-0", + 6147, + "INM-CM5-H", + 594, + "IPSL-CM5A2-INCA", + 4502, + "IPSL-CM6A-ATM-HR", + 320, + "IPSL-CM6A-ATM-ICO-HR", + 684, + "IPSL-CM6A-ATM-ICO-LR", + 704, + "IPSL-CM6A-ATM-ICO-MR", + 684, + "IPSL-CM6A-ATM-ICO-VHR", + 674, + "IPSL-CM6A-LR", + 1241928, + "IPSL-CM6A-LR-INCA", + 3995, + "KACE-1-0-G", + 6475, + "KIOST-ESM", + 5994, + "LBLRTM-12-8", + 8, + "MCM-UA-1-0", + 750, + "MIROC-ES2H", + 13815, + "MIROC-ES2H-NB", + 3278, + "MIROC-ES2L", + 409789, + "MIROC6", + 652660, + "MPI-ESM-1-2-HAM", + 19866, + "MPI-ESM1-2-HR", + 70919, + "MPI-ESM1-2-LR", + 179640, + "MPI-ESM1-2-XR", + 731, + "MRI-AGCM3-2-H", + 1259, + "MRI-AGCM3-2-S", + 1251, + "MRI-ESM2-0", + 474331, + "NESM3", + 5407, + "NICAM16-7S", + 458, + "NICAM16-8S", + 442, + "NICAM16-9S", + 443, + "NorCPM1", + 228744, + "NorESM1-F", + 534, + "NorESM2-LM", + 388969, + "NorESM2-MM", + 7530, + "RRTMG-LW-4-91", + 2, + "RRTMG-SW-4-02", + 2, + "RTE-RRTMGP-181204", + 4, + "SAM0-UNICON", + 2023, + "TaiESM1", + 50507, + "TaiESM1-TIMCOM", + 86, + "TaiESM1-TIMCOM2", + 66, + "UKESM1-0-LL", + 82876, + "UKESM1-1-LL", + 1124, + "UKESM1-ice-LL", + 352 + ], + "institution_id": [ + "AER", + 12, + "AS-RCEC", + 51277, + "AWI", + 71944, + "BCC", + 104384, + "CAMS", + 2236, + "CAS", + 192752, + "CCCR-IITM", + 1299, + "CCCma", + 1680115, + "CMCC", + 211451, + "CNRM-CERFACS", + 331545, + "CSIRO", + 124861, + "CSIRO-ARCCSS", + 16841, + "CSIRO-COSIMA", + 375, + "DKRZ", + 26953, + "DWD", + 6004, + "E3SM-Project", + 10819, + "EC-Earth-Consortium", + 274659, + "ECMWF", + 1814, + "FIO-QLNM", + 3263, + "HAMMOZ-Consortium", + 19866, + "INM", + 10016, + "IPSL", + 1253497, + "KIOST", + 5994, + "LLNL", + 162, + "MIROC", + 1080885, + "MOHC", + 394108, + "MPI-M", + 220447, + "MRI", + 476841, + "NASA-GISS", + 301114, + "NCAR", + 1438852, + "NCC", + 625777, + "NERC", + 4344, + "NIMS-KMA", + 11640, + "NIWA", + 1271, + "NOAA-GFDL", + 26319, + "NTU", + 152, + "NUIST", + 5407, + "RTE-RRTMGP-Consortium", + 4, + "RUBISCO", + 242, + "SNU", + 2023, + "THU", + 3356, + "UA", + 750, + "UCI", + 39600, + "UCSB", + 1994, + "UHH", + 8 + ], + "source_type": [ + "AER", + 2903539, + "AERM", + 541, + "AGCM", + 2284316, + "AOGCM", + 6720630, + "AOGCM,AER", + 194, + "BGC", + 2661135, + "CHEM", + 767139, + "ISM", + 12465, + "LAND", + 18020, + "OGCM", + 23958, + "RAD", + 5352 + ], + "experiment_id": [ + "1pctCO2", + 51143, + "1pctCO2-4xext", + 554, + "1pctCO2-bgc", + 11763, + "1pctCO2-cdr", + 4186, + "1pctCO2-rad", + 10331, + "1pctCO2Ndep", + 1929, + "1pctCO2Ndep-bgc", + 1928, + "1pctCO2to4x-withism", + 450, + "G1", + 9198, + "G6solar", + 6757, + "G6sulfur", + 7470, + "G7cirrus", + 1043, + "a4SST", + 641, + "a4SSTice", + 641, + "a4SSTice-4xCO2", + 639, + "abrupt-0p5xCO2", + 3514, + "abrupt-2xCO2", + 7571, + "abrupt-4xCO2", + 80257, + "abrupt-solm4p", + 2386, + "abrupt-solp4p", + 2925, + "amip", + 75578, + "amip-4xCO2", + 5365, + "amip-TIP", + 280, + "amip-TIP-nosh", + 272, + "amip-a4SST-4xCO2", + 761, + "amip-future4K", + 4193, + "amip-hist", + 14041, + "amip-hld", + 597, + "amip-lfmip-pObs", + 484, + "amip-lfmip-pdLC", + 3284, + "amip-lfmip-rmLC", + 3405, + "amip-lwoff", + 2212, + "amip-m4K", + 3484, + "amip-p4K", + 6102, + "amip-p4K-lwoff", + 2246, + "amip-piForcing", + 4203, + "aqua-4xCO2", + 2296, + "aqua-control", + 2278, + "aqua-control-lwoff", + 1512, + "aqua-p4K", + 2452, + "aqua-p4K-lwoff", + 1421, + "control-1950", + 4245, + "dcppA-assim", + 20057, + "dcppA-hindcast", + 2739506, + "dcppB-forecast", + 24345, + "dcppC-amv-ExTrop-neg", + 20648, + "dcppC-amv-ExTrop-pos", + 20221, + "dcppC-amv-Trop-neg", + 18135, + "dcppC-amv-Trop-pos", + 20647, + "dcppC-amv-neg", + 30933, + "dcppC-amv-pos", + 33038, + "dcppC-atl-control", + 20659, + "dcppC-atl-pacemaker", + 3820, + "dcppC-atl-spg", + 4874, + "dcppC-forecast-addAgung", + 7460, + "dcppC-forecast-addElChichon", + 7458, + "dcppC-forecast-addPinatubo", + 7460, + "dcppC-hindcast-noAgung", + 12376, + "dcppC-hindcast-noElChichon", + 12380, + "dcppC-hindcast-noPinatubo", + 12380, + "dcppC-ipv-NexTrop-neg", + 11327, + "dcppC-ipv-NexTrop-pos", + 11327, + "dcppC-ipv-neg", + 7663, + "dcppC-ipv-pos", + 8276, + "dcppC-pac-control", + 11300, + "dcppC-pac-pacemaker", + 3820, + "deforest-globe", + 11455, + "esm-1pct-brch-1000PgC", + 7983, + "esm-1pct-brch-2000PgC", + 2563, + "esm-1pct-brch-750PgC", + 1872, + "esm-1pctCO2", + 2236, + "esm-hist", + 34350, + "esm-pi-CO2pulse", + 5055, + "esm-pi-cdr-pulse", + 5049, + "esm-piControl", + 11355, + "esm-piControl-spinup", + 279, + "esm-sp585", + 265, + "esm-sp585-bgc", + 265, + "esm-ssp534-over", + 2758, + "esm-ssp585", + 18887, + "esm-ssp585-ocn-alk", + 356, + "esm-ssp585-ocn-alk-stop", + 356, + "esm-ssp585-ssp126Lu", + 6999, + "esm-ssp585ext", + 351, + "faf-all", + 5019, + "faf-antwater-stress", + 720, + "faf-heat", + 4697, + "faf-heat-NA0pct", + 2615, + "faf-heat-NA50pct", + 3757, + "faf-passiveheat", + 4447, + "faf-stress", + 5135, + "faf-water", + 5111, + "futSST-pdSIC", + 192678, + "highres-future", + 5195, + "highresSST-future", + 8302, + "highresSST-present", + 13071, + "hist-1950", + 8139, + "hist-1950HC", + 11492, + "hist-CO2", + 10428, + "hist-GHG", + 62389, + "hist-GHG-cmip5", + 1500, + "hist-aer", + 51336, + "hist-aer-cmip5", + 1420, + "hist-bgc", + 7517, + "hist-nat", + 73393, + "hist-nat-cmip5", + 1500, + "hist-noLu", + 16261, + "hist-piAer", + 12860, + "hist-piNTCF", + 13199, + "hist-resAMO", + 2296, + "hist-resIPO", + 3185, + "hist-sol", + 44804, + "hist-spAer-all", + 1581, + "hist-stratO3", + 21640, + "hist-totalO3", + 6505, + "hist-volc", + 37299, + "histSST", + 5054, + "histSST-1950HC", + 2778, + "histSST-noLu", + 1212, + "histSST-piAer", + 3476, + "histSST-piCH4", + 2727, + "histSST-piN2O", + 1993, + "histSST-piNTCF", + 4486, + "histSST-piO3", + 2182, + "historical", + 422708, + "historical-cmip5", + 1920, + "historical-ext", + 5130, + "historical-withism", + 470, + "land-cCO2", + 870, + "land-cClim", + 941, + "land-crop-grass", + 312, + "land-crop-noFert", + 696, + "land-crop-noIrrig", + 348, + "land-crop-noIrrigFert", + 348, + "land-hist", + 5151, + "land-hist-altLu1", + 122, + "land-hist-altLu2", + 122, + "land-hist-altStartYear", + 974, + "land-hist-cruNcep", + 1560, + "land-hist-princeton", + 1538, + "land-hist-wfdei", + 674, + "land-noFire", + 468, + "land-noLu", + 1228, + "land-noShiftCultivate", + 230, + "land-noWoodHarv", + 440, + "lfmip-pdLC", + 583, + "lfmip-rmLC", + 584, + "lgm", + 2338, + "lig127k", + 5412, + "midHolocene", + 8773, + "midPliocene-eoi400", + 1606, + "modelSST-futArcSIC", + 43095, + "modelSST-pdSIC", + 43100, + "omip1", + 9873, + "omip1-spunup", + 3390, + "omip2", + 8468, + "omip2-spunup", + 136, + "pa-futAntSIC", + 15600, + "pa-futArcSIC", + 143290, + "pa-futArcSIC-ext", + 1725, + "pa-pdSIC", + 143159, + "pa-pdSIC-ext", + 1726, + "pa-piAntSIC", + 15600, + "pa-piArcSIC", + 92502, + "past1000", + 2574, + "past2k", + 617, + "pdSST-futAntSIC", + 174507, + "pdSST-futArcSIC", + 379797, + "pdSST-futArcSICSIT", + 21740, + "pdSST-futBKSeasSIC", + 135424, + "pdSST-futOkhotskSIC", + 144275, + "pdSST-pdSIC", + 367440, + "pdSST-pdSICSIT", + 21738, + "pdSST-piAntSIC", + 174697, + "pdSST-piArcSIC", + 246256, + "piClim-2xDMS", + 2304, + "piClim-2xNOx", + 1799, + "piClim-2xVOC", + 2527, + "piClim-2xdust", + 3312, + "piClim-2xfire", + 2199, + "piClim-2xss", + 3037, + "piClim-4xCO2", + 5296, + "piClim-BC", + 4584, + "piClim-CH4", + 4311, + "piClim-HC", + 3448, + "piClim-N2O", + 3369, + "piClim-NH3", + 820, + "piClim-NOx", + 2637, + "piClim-NTCF", + 5029, + "piClim-O3", + 2693, + "piClim-OC", + 4386, + "piClim-SO2", + 4597, + "piClim-VOC", + 2641, + "piClim-aer", + 7767, + "piClim-anthro", + 5942, + "piClim-control", + 10118, + "piClim-ghg", + 4855, + "piClim-histaer", + 7280, + "piClim-histall", + 7568, + "piClim-histghg", + 6036, + "piClim-histnat", + 6617, + "piClim-lu", + 4598, + "piClim-spAer-aer", + 1837, + "piClim-spAer-anthro", + 2560, + "piClim-spAer-histaer", + 287, + "piClim-spAer-histall", + 159, + "piControl", + 53951, + "piControl-cmip5", + 292, + "piControl-spinup", + 671, + "piControl-withism", + 452, + "piSST", + 649, + "piSST-4xCO2", + 639, + "piSST-4xCO2-rad", + 676, + "piSST-pdSIC", + 202040, + "piSST-piSIC", + 153520, + "piSST-pxK", + 1024, + "rad-irf", + 122, + "rcp26-cmip5", + 2430, + "rcp45-cmip5", + 2430, + "rcp85-cmip5", + 2430, + "spinup-1950", + 908, + "ssp119", + 101881, + "ssp126", + 179238, + "ssp126-ssp370Lu", + 11622, + "ssp245", + 261745, + "ssp245-GHG", + 30973, + "ssp245-aer", + 21347, + "ssp245-cov-GHG", + 3800, + "ssp245-cov-aer", + 3800, + "ssp245-cov-fossil", + 62570, + "ssp245-cov-modgreen", + 59062, + "ssp245-cov-strgreen", + 63300, + "ssp245-covid", + 84067, + "ssp245-nat", + 31192, + "ssp245-stratO3", + 12086, + "ssp370", + 194201, + "ssp370-lowNTCF", + 26464, + "ssp370-lowNTCFCH4", + 6661, + "ssp370-ssp126Lu", + 13600, + "ssp370SST", + 4915, + "ssp370SST-lowAer", + 2858, + "ssp370SST-lowBC", + 2841, + "ssp370SST-lowCH4", + 1744, + "ssp370SST-lowNTCF", + 3388, + "ssp370SST-lowNTCFCH4", + 1958, + "ssp370SST-lowO3", + 1438, + "ssp370SST-ssp126Lu", + 1856, + "ssp370pdSST", + 2634, + "ssp434", + 19582, + "ssp460", + 21990, + "ssp534-over", + 36222, + "ssp534-over-bgc", + 3424, + "ssp585", + 198144, + "ssp585-bgc", + 6052, + "ssp585-withism", + 792, + "volc-long-eq", + 24029, + "volc-pinatubo-full", + 82745, + "volc-pinatubo-strat", + 28975, + "volc-pinatubo-surf", + 28975 + ], + "sub_experiment_id": [ + "none", + 6201394, + "s1920", + 7640, + "s1960", + 45398, + "s19601101", + 77, + "s1961", + 46607, + "s1962", + 59615, + "s1963", + 47264, + "s1964", + 46859, + "s19641101", + 125, + "s1965", + 47160, + "s1966", + 47098, + "s1967", + 46804, + "s1968", + 46642, + "s19681101", + 47, + "s1969", + 46800, + "s1970", + 46904, + "s1971", + 47751, + "s1972", + 47606, + "s19721101", + 83, + "s1973", + 47794, + "s1974", + 47744, + "s1975", + 47852, + "s1976", + 47572, + "s19761101", + 73, + "s1977", + 47578, + "s1978", + 47583, + "s1979", + 47548, + "s1980", + 47877, + "s1981", + 60502, + "s1982", + 48159, + "s1983", + 48077, + "s1984", + 47840, + "s1985", + 47999, + "s1986", + 48077, + "s1987", + 48129, + "s1988", + 47842, + "s1989", + 47978, + "s1990", + 60479, + "s1991", + 48298, + "s1992", + 48446, + "s1993", + 49561, + "s1994", + 49549, + "s1995", + 48500, + "s1996", + 46134, + "s1997", + 45111, + "s1998", + 45128, + "s1999", + 45124, + "s2000", + 45822, + "s2001", + 48227, + "s2002", + 48302, + "s2003", + 48314, + "s2004", + 48251, + "s2005", + 47359, + "s2006", + 45372, + "s2007", + 44192, + "s2008", + 44212, + "s20081101", + 1, + "s2009", + 44206, + "s2010", + 44192, + "s2011", + 44209, + "s2012", + 44207, + "s2013", + 44063, + "s2014", + 65501, + "s2015", + 41770, + "s2016", + 41776, + "s2017", + 34264, + "s2018", + 24541, + "s2019", + 19257, + "s2020", + 12811, + "s2021", + 11996 + ], + "nominal_resolution": [ + "10 km", + 766, + "100 km", + 3913451, + "10000 km", + 990, + "100km", + 384, + "1x1 degree", + 266425, + "200 km", + 5494, + "25 km", + 13550, + "250 km", + 3218190, + "2x2 degree", + 639, + "50 km", + 74355, + "500 km", + 1543029 + ], + "variant_label": [ + "r100i1p1f1", + 13602, + "r100i1p1f2", + 1747, + "r100i1p2f1", + 2890, + "r100i2p1f2", + 86, + "r101i1p1f1", + 13853, + "r101i1p1f2", + 1173, + "r101i1p2f1", + 432, + "r101i2p1f2", + 86, + "r102i1p1f1", + 11224, + "r102i1p1f2", + 1170, + "r102i1p2f1", + 432, + "r102i2p1f2", + 86, + "r103i1p1f1", + 8114, + "r103i1p1f2", + 1173, + "r103i1p2f1", + 432, + "r103i2p1f2", + 86, + "r104i1p1f1", + 7425, + "r104i1p1f2", + 1173, + "r104i1p2f1", + 432, + "r104i2p1f2", + 86, + "r105i1p1f1", + 7425, + "r105i1p1f2", + 1173, + "r105i1p2f1", + 432, + "r105i2p1f2", + 86, + "r106i1p1f1", + 6334, + "r106i1p1f2", + 1173, + "r106i1p2f1", + 432, + "r106i2p1f2", + 86, + "r107i1p1f1", + 6400, + "r107i1p1f2", + 1173, + "r107i1p2f1", + 432, + "r107i2p1f2", + 86, + "r108i1p1f1", + 6401, + "r108i1p1f2", + 1173, + "r108i1p2f1", + 432, + "r108i2p1f2", + 86, + "r109i1p1f1", + 6400, + "r109i1p1f2", + 1173, + "r109i1p2f1", + 432, + "r109i2p1f2", + 86, + "r10i1p1f1", + 191966, + "r10i1p1f2", + 27839, + "r10i1p1f242", + 4344, + "r10i1p1f3", + 595, + "r10i1p1f99", + 2340, + "r10i1p2f1", + 56793, + "r10i1p3f1", + 539, + "r10i1p5f1", + 1551, + "r10i1p5f2", + 1162, + "r10i2p1f1", + 16505, + "r10i2p1f2", + 86, + "r10i2p2f1", + 100, + "r10i3p2f1", + 488, + "r10i4p1f1", + 2, + "r110i1p1f1", + 6400, + "r110i1p1f2", + 1173, + "r110i1p2f1", + 432, + "r110i2p1f2", + 86, + "r111i1p1f1", + 6331, + "r111i1p1f2", + 1173, + "r111i1p2f1", + 432, + "r111i2p1f2", + 86, + "r112i1p1f1", + 6398, + "r112i1p1f2", + 1172, + "r112i1p2f1", + 432, + "r112i2p1f2", + 86, + "r113i1p1f1", + 6401, + "r113i1p1f2", + 1173, + "r113i1p2f1", + 432, + "r113i2p1f2", + 86, + "r114i1p1f1", + 6401, + "r114i1p1f2", + 1173, + "r114i1p2f1", + 432, + "r114i2p1f2", + 86, + "r115i1p1f1", + 6401, + "r115i1p1f2", + 1172, + "r115i1p2f1", + 432, + "r115i2p1f2", + 86, + "r116i1p1f1", + 6335, + "r116i1p1f2", + 1173, + "r116i1p2f1", + 432, + "r116i2p1f2", + 86, + "r117i1p1f1", + 6400, + "r117i1p1f2", + 1173, + "r117i1p2f1", + 432, + "r117i2p1f2", + 86, + "r118i1p1f1", + 6391, + "r118i1p1f2", + 1174, + "r118i1p2f1", + 431, + "r118i2p1f2", + 86, + "r119i1p1f1", + 6365, + "r119i1p1f2", + 1173, + "r119i1p2f1", + 432, + "r119i2p1f2", + 86, + "r11i1p1f1", + 74163, + "r11i1p1f2", + 13434, + "r11i1p1f242", + 4344, + "r11i1p1f3", + 84, + "r11i1p2f1", + 32153, + "r11i2p1f1", + 169, + "r11i2p1f2", + 86, + "r11i2p2f1", + 100, + "r120i1p1f1", + 6398, + "r120i1p1f2", + 1173, + "r120i1p2f1", + 432, + "r120i2p1f2", + 86, + "r121i1p1f1", + 6330, + "r121i1p1f2", + 1173, + "r121i1p2f1", + 432, + "r121i2p1f2", + 86, + "r122i1p1f1", + 6400, + "r122i1p1f2", + 1173, + "r122i1p2f1", + 432, + "r122i2p1f2", + 86, + "r123i1p1f1", + 6391, + "r123i1p1f2", + 1173, + "r123i1p2f1", + 432, + "r123i2p1f2", + 86, + "r124i1p1f1", + 6400, + "r124i1p1f2", + 1173, + "r124i1p2f1", + 432, + "r124i2p1f2", + 86, + "r125i1p1f1", + 6401, + "r125i1p1f2", + 1173, + "r125i1p2f1", + 432, + "r125i2p1f2", + 86, + "r126i1p1f1", + 6306, + "r126i1p1f2", + 1173, + "r126i1p2f1", + 432, + "r126i2p1f2", + 86, + "r127i1p1f1", + 6401, + "r127i1p1f2", + 1170, + "r127i1p2f1", + 432, + "r127i2p1f2", + 86, + "r128i1p1f1", + 6401, + "r128i1p1f2", + 1173, + "r128i1p2f1", + 432, + "r128i2p1f2", + 86, + "r129i1p1f1", + 6403, + "r129i1p1f2", + 1170, + "r129i1p2f1", + 432, + "r129i2p1f2", + 86, + "r12i1p1f1", + 64738, + "r12i1p1f2", + 13534, + "r12i1p1f242", + 4344, + "r12i1p1f3", + 84, + "r12i1p2f1", + 31792, + "r12i2p1f1", + 169, + "r12i2p1f2", + 86, + "r12i2p2f1", + 100, + "r130i1p1f1", + 6405, + "r130i1p1f2", + 1173, + "r130i1p2f1", + 432, + "r130i2p1f2", + 86, + "r131i1p1f1", + 6187, + "r131i1p1f2", + 1170, + "r131i1p2f1", + 432, + "r131i2p1f2", + 86, + "r132i1p1f1", + 6390, + "r132i1p1f2", + 1173, + "r132i1p2f1", + 432, + "r132i2p1f2", + 86, + "r133i1p1f1", + 6389, + "r133i1p1f2", + 1169, + "r133i1p2f1", + 432, + "r133i2p1f2", + 86, + "r134i1p1f1", + 6390, + "r134i1p1f2", + 1173, + "r134i1p2f1", + 432, + "r134i2p1f2", + 86, + "r135i1p1f1", + 6389, + "r135i1p1f2", + 1170, + "r135i1p2f1", + 432, + "r135i2p1f2", + 86, + "r136i1p1f1", + 6321, + "r136i1p1f2", + 1173, + "r136i1p2f1", + 432, + "r136i2p1f2", + 86, + "r137i1p1f1", + 6390, + "r137i1p1f2", + 1138, + "r137i1p2f1", + 432, + "r137i2p1f2", + 86, + "r138i1p1f1", + 6390, + "r138i1p1f2", + 1173, + "r138i1p2f1", + 432, + "r138i2p1f2", + 86, + "r139i1p1f1", + 6397, + "r139i1p1f2", + 1169, + "r139i1p2f1", + 432, + "r139i2p1f2", + 86, + "r13i1p1f1", + 63818, + "r13i1p1f2", + 13297, + "r13i1p1f242", + 4344, + "r13i1p1f3", + 84, + "r13i1p2f1", + 31810, + "r13i2p1f1", + 169, + "r13i2p1f2", + 86, + "r13i2p2f1", + 100, + "r140i1p1f1", + 6400, + "r140i1p1f2", + 1174, + "r140i1p2f1", + 432, + "r140i2p1f2", + 86, + "r141i1p1f1", + 6334, + "r141i1p1f2", + 1171, + "r141i1p2f1", + 432, + "r141i2p1f2", + 86, + "r142i1p1f1", + 6400, + "r142i1p1f2", + 1173, + "r142i1p2f1", + 432, + "r142i2p1f2", + 86, + "r143i1p1f1", + 6398, + "r143i1p1f2", + 1170, + "r143i1p2f1", + 432, + "r143i2p1f2", + 86, + "r144i1p1f1", + 6398, + "r144i1p1f2", + 1173, + "r144i1p2f1", + 432, + "r144i2p1f2", + 86, + "r145i1p1f1", + 6374, + "r145i1p1f2", + 1170, + "r145i1p2f1", + 432, + "r145i2p1f2", + 86, + "r146i1p1f1", + 6300, + "r146i1p1f2", + 1173, + "r146i1p2f1", + 432, + "r146i2p1f2", + 86, + "r147i1p1f1", + 6366, + "r147i1p1f2", + 1170, + "r147i1p2f1", + 432, + "r147i2p1f2", + 43, + "r148i1p1f1", + 6246, + "r148i1p1f2", + 1157, + "r148i1p2f1", + 430, + "r148i2p1f2", + 86, + "r149i1p1f1", + 6300, + "r149i1p1f2", + 1166, + "r149i1p2f1", + 432, + "r149i2p1f2", + 86, + "r14i1p1f1", + 65425, + "r14i1p1f2", + 12395, + "r14i1p1f242", + 4344, + "r14i1p1f3", + 84, + "r14i1p2f1", + 31802, + "r14i2p1f1", + 169, + "r14i2p1f2", + 86, + "r14i2p2f1", + 100, + "r150i1p1f1", + 6298, + "r150i1p1f2", + 1173, + "r150i1p2f1", + 432, + "r150i2p1f2", + 86, + "r151i1p1f1", + 5660, + "r151i1p1f2", + 255, + "r151i1p2f1", + 432, + "r151i2p1f2", + 661, + "r152i1p1f1", + 5737, + "r152i1p1f2", + 258, + "r152i1p2f1", + 432, + "r152i2p1f2", + 664, + "r153i1p1f1", + 5767, + "r153i1p1f2", + 255, + "r153i1p2f1", + 432, + "r153i2p1f2", + 660, + "r154i1p1f1", + 5767, + "r154i1p1f2", + 258, + "r154i1p2f1", + 432, + "r154i2p1f2", + 662, + "r155i1p1f1", + 5767, + "r155i1p1f2", + 255, + "r155i1p2f1", + 432, + "r155i2p1f2", + 661, + "r156i1p1f1", + 5621, + "r156i1p1f2", + 258, + "r156i1p2f1", + 432, + "r156i2p1f2", + 660, + "r157i1p1f1", + 5594, + "r157i1p1f2", + 255, + "r157i1p2f1", + 432, + "r157i2p1f2", + 661, + "r158i1p1f1", + 5687, + "r158i1p1f2", + 258, + "r158i1p2f1", + 432, + "r158i2p1f2", + 660, + "r159i1p1f1", + 5633, + "r159i1p1f2", + 255, + "r159i1p2f1", + 432, + "r159i2p1f2", + 660, + "r15i1p1f1", + 60986, + "r15i1p1f2", + 13212, + "r15i1p1f242", + 4344, + "r15i1p1f3", + 84, + "r15i1p2f1", + 31775, + "r15i2p1f1", + 169, + "r15i2p1f2", + 86, + "r15i2p2f1", + 100, + "r160i1p1f1", + 5687, + "r160i1p1f2", + 258, + "r160i1p2f1", + 432, + "r160i2p1f2", + 660, + "r161i1p1f1", + 5621, + "r161i1p1f2", + 255, + "r161i1p2f1", + 432, + "r161i2p1f2", + 660, + "r162i1p1f1", + 5687, + "r162i1p1f2", + 258, + "r162i1p2f1", + 432, + "r162i2p1f2", + 660, + "r163i1p1f1", + 5686, + "r163i1p1f2", + 255, + "r163i1p2f1", + 432, + "r163i2p1f2", + 660, + "r164i1p1f1", + 5683, + "r164i1p1f2", + 258, + "r164i1p2f1", + 432, + "r164i2p1f2", + 660, + "r165i1p1f1", + 5687, + "r165i1p1f2", + 255, + "r165i1p2f1", + 432, + "r165i2p1f2", + 660, + "r166i1p1f1", + 5621, + "r166i1p1f2", + 258, + "r166i1p2f1", + 432, + "r166i2p1f2", + 660, + "r167i1p1f1", + 5687, + "r167i1p1f2", + 255, + "r167i1p2f1", + 432, + "r167i2p1f2", + 661, + "r168i1p1f1", + 5687, + "r168i1p1f2", + 258, + "r168i1p2f1", + 432, + "r168i2p1f2", + 660, + "r169i1p1f1", + 5687, + "r169i1p1f2", + 255, + "r169i1p2f1", + 432, + "r169i2p1f2", + 660, + "r16i1p1f1", + 60640, + "r16i1p1f2", + 14102, + "r16i1p1f242", + 4344, + "r16i1p1f3", + 84, + "r16i1p2f1", + 31449, + "r16i2p1f1", + 169, + "r16i2p1f2", + 86, + "r16i2p2f1", + 100, + "r170i1p1f1", + 5686, + "r170i1p1f2", + 258, + "r170i1p2f1", + 432, + "r170i2p1f2", + 661, + "r171i1p1f1", + 5621, + "r171i1p1f2", + 255, + "r171i1p2f1", + 432, + "r171i2p1f2", + 660, + "r172i1p1f1", + 5687, + "r172i1p1f2", + 258, + "r172i1p2f1", + 432, + "r172i2p1f2", + 661, + "r173i1p1f1", + 5641, + "r173i1p1f2", + 255, + "r173i1p2f1", + 432, + "r173i2p1f2", + 660, + "r174i1p1f1", + 5649, + "r174i1p1f2", + 258, + "r174i1p2f1", + 432, + "r174i2p1f2", + 660, + "r175i1p1f1", + 5626, + "r175i1p1f2", + 255, + "r175i1p2f1", + 432, + "r175i2p1f2", + 660, + "r176i1p1f1", + 5501, + "r176i1p1f2", + 258, + "r176i1p2f1", + 432, + "r176i2p1f2", + 660, + "r177i1p1f1", + 5567, + "r177i1p1f2", + 255, + "r177i1p2f1", + 432, + "r177i2p1f2", + 661, + "r178i1p1f1", + 5567, + "r178i1p1f2", + 258, + "r178i1p2f1", + 432, + "r178i2p1f2", + 660, + "r179i1p1f1", + 5567, + "r179i1p1f2", + 255, + "r179i1p2f1", + 432, + "r179i2p1f2", + 660, + "r17i1p1f1", + 62974, + "r17i1p1f2", + 13418, + "r17i1p1f242", + 4344, + "r17i1p1f3", + 84, + "r17i1p2f1", + 31466, + "r17i2p1f1", + 169, + "r17i2p1f2", + 86, + "r17i2p2f1", + 100, + "r180i1p1f1", + 5567, + "r180i1p1f2", + 258, + "r180i1p2f1", + 432, + "r180i2p1f2", + 660, + "r181i1p1f1", + 5501, + "r181i1p1f2", + 255, + "r181i1p2f1", + 432, + "r181i2p1f2", + 661, + "r182i1p1f1", + 5567, + "r182i1p1f2", + 258, + "r182i1p2f1", + 432, + "r182i2p1f2", + 660, + "r183i1p1f1", + 5567, + "r183i1p1f2", + 255, + "r183i1p2f1", + 431, + "r183i2p1f2", + 660, + "r184i1p1f1", + 5567, + "r184i1p1f2", + 258, + "r184i1p2f1", + 432, + "r184i2p1f2", + 660, + "r185i1p1f1", + 5502, + "r185i1p1f2", + 255, + "r185i1p2f1", + 432, + "r185i2p1f2", + 660, + "r186i1p1f1", + 5311, + "r186i1p1f2", + 258, + "r186i1p2f1", + 432, + "r186i2p1f2", + 660, + "r187i1p1f1", + 5377, + "r187i1p1f2", + 255, + "r187i1p2f1", + 432, + "r187i2p1f2", + 660, + "r188i1p1f1", + 5377, + "r188i1p1f2", + 258, + "r188i1p2f1", + 432, + "r188i2p1f2", + 660, + "r189i1p1f1", + 5377, + "r189i1p1f2", + 255, + "r189i1p2f1", + 432, + "r189i2p1f2", + 660, + "r18i1p1f1", + 62761, + "r18i1p1f2", + 13553, + "r18i1p1f242", + 4344, + "r18i1p1f3", + 84, + "r18i1p2f1", + 31466, + "r18i2p1f1", + 169, + "r18i2p1f2", + 86, + "r18i2p2f1", + 100, + "r190i1p1f1", + 5377, + "r190i1p1f2", + 258, + "r190i1p2f1", + 432, + "r190i2p1f2", + 660, + "r191i1p1f1", + 5235, + "r191i1p1f2", + 255, + "r191i1p2f1", + 432, + "r191i2p1f2", + 660, + "r192i1p1f1", + 5377, + "r192i1p1f2", + 258, + "r192i1p2f1", + 432, + "r192i2p1f2", + 660, + "r193i1p1f1", + 5377, + "r193i1p1f2", + 254, + "r193i1p2f1", + 432, + "r193i2p1f2", + 660, + "r194i1p1f1", + 5377, + "r194i1p1f2", + 258, + "r194i1p2f1", + 432, + "r194i2p1f2", + 660, + "r195i1p1f1", + 5377, + "r195i1p1f2", + 255, + "r195i1p2f1", + 432, + "r195i2p1f2", + 660, + "r196i1p1f1", + 5310, + "r196i1p1f2", + 258, + "r196i1p2f1", + 432, + "r196i2p1f2", + 662, + "r197i1p1f1", + 5377, + "r197i1p1f2", + 255, + "r197i1p2f1", + 432, + "r197i2p1f2", + 660, + "r198i1p1f1", + 5377, + "r198i1p1f2", + 258, + "r198i1p2f1", + 432, + "r198i2p1f2", + 660, + "r199i1p1f1", + 5377, + "r199i1p1f2", + 255, + "r199i1p2f1", + 432, + "r199i2p1f2", + 649, + "r19i1p1f1", + 62778, + "r19i1p1f2", + 14010, + "r19i1p1f242", + 4344, + "r19i1p1f3", + 84, + "r19i1p2f1", + 31417, + "r19i2p1f1", + 169, + "r19i2p1f2", + 86, + "r19i2p2f1", + 97, + "r1i1000p1f1", + 1173, + "r1i1000p1f2", + 1304, + "r1i10p1f1", + 332, + "r1i14p1f1", + 113, + "r1i15p1f1", + 113, + "r1i1p11f1", + 242, + "r1i1p1f1", + 785515, + "r1i1p1f11", + 597, + "r1i1p1f2", + 164574, + "r1i1p1f242", + 4344, + "r1i1p1f3", + 14587, + "r1i1p1f4", + 5973, + "r1i1p1f99", + 2340, + "r1i1p2f1", + 108565, + "r1i1p2f2", + 612, + "r1i1p2f3", + 4, + "r1i1p3f1", + 43353, + "r1i1p3f2", + 2641, + "r1i1p3f3", + 4, + "r1i1p4f1", + 894, + "r1i1p4f2", + 5241, + "r1i1p5f1", + 9086, + "r1i1p5f2", + 1162, + "r1i2000p1f1", + 620, + "r1i2p1f1", + 43687, + "r1i2p1f2", + 86, + "r1i2p2f1", + 5659, + "r1i3p1f1", + 6827, + "r1i3p2f1", + 488, + "r1i4p1f1", + 4955, + "r1i5p1f1", + 500, + "r1i6p1f1", + 499, + "r1i7p1f1", + 497, + "r1i8p1f1", + 497, + "r1i9p1f1", + 332, + "r200i1p1f1", + 5393, + "r200i1p1f2", + 258, + "r200i1p2f1", + 432, + "r200i2p1f2", + 639, + "r201i1p1f1", + 396, + "r201i1p1f2", + 255, + "r201i1p2f1", + 432, + "r201i2p1f2", + 555, + "r202i1p1f1", + 396, + "r202i1p1f2", + 258, + "r202i1p2f1", + 432, + "r202i2p1f2", + 553, + "r203i1p1f1", + 396, + "r203i1p1f2", + 255, + "r203i1p2f1", + 432, + "r203i2p1f2", + 553, + "r204i1p1f1", + 396, + "r204i1p1f2", + 258, + "r204i1p2f1", + 432, + "r204i2p1f2", + 553, + "r205i1p1f1", + 396, + "r205i1p1f2", + 255, + "r205i1p2f1", + 432, + "r205i2p1f2", + 553, + "r206i1p1f1", + 396, + "r206i1p1f2", + 258, + "r206i1p2f1", + 432, + "r206i2p1f2", + 553, + "r207i1p1f1", + 396, + "r207i1p1f2", + 255, + "r207i1p2f1", + 432, + "r207i2p1f2", + 553, + "r208i1p1f1", + 396, + "r208i1p1f2", + 258, + "r208i1p2f1", + 432, + "r208i2p1f2", + 554, + "r209i1p1f1", + 396, + "r209i1p1f2", + 255, + "r209i1p2f1", + 432, + "r209i2p1f2", + 553, + "r20i1p1f1", + 62865, + "r20i1p1f2", + 12038, + "r20i1p1f242", + 4344, + "r20i1p1f3", + 84, + "r20i1p2f1", + 31351, + "r20i2p1f1", + 169, + "r20i2p1f2", + 86, + "r20i2p2f1", + 100, + "r210i1p1f1", + 396, + "r210i1p1f2", + 258, + "r210i1p2f1", + 432, + "r210i2p1f2", + 552, + "r211i1p1f1", + 396, + "r211i1p1f2", + 255, + "r211i1p2f1", + 432, + "r211i2p1f2", + 554, + "r212i1p1f1", + 396, + "r212i1p1f2", + 258, + "r212i1p2f1", + 432, + "r212i2p1f2", + 553, + "r213i1p1f1", + 396, + "r213i1p1f2", + 255, + "r213i1p2f1", + 432, + "r213i2p1f2", + 553, + "r214i1p1f1", + 396, + "r214i1p1f2", + 258, + "r214i1p2f1", + 432, + "r214i2p1f2", + 553, + "r215i1p1f1", + 396, + "r215i1p1f2", + 255, + "r215i1p2f1", + 432, + "r215i2p1f2", + 554, + "r216i1p1f1", + 396, + "r216i1p1f2", + 258, + "r216i1p2f1", + 432, + "r216i2p1f2", + 555, + "r217i1p1f1", + 396, + "r217i1p1f2", + 255, + "r217i1p2f1", + 432, + "r217i2p1f2", + 555, + "r218i1p1f1", + 396, + "r218i1p1f2", + 258, + "r218i1p2f1", + 432, + "r218i2p1f2", + 557, + "r219i1p1f1", + 396, + "r219i1p1f2", + 255, + "r219i1p2f1", + 432, + "r219i2p1f2", + 555, + "r21i1p1f1", + 50699, + "r21i1p1f2", + 11576, + "r21i1p1f242", + 4344, + "r21i1p1f3", + 84, + "r21i1p2f1", + 11273, + "r21i2p1f1", + 169, + "r21i2p1f2", + 86, + "r220i1p1f1", + 396, + "r220i1p1f2", + 258, + "r220i1p2f1", + 432, + "r220i2p1f2", + 555, + "r221i1p1f1", + 396, + "r221i1p1f2", + 255, + "r221i1p2f1", + 432, + "r221i2p1f2", + 560, + "r222i1p1f1", + 396, + "r222i1p1f2", + 258, + "r222i1p2f1", + 432, + "r222i2p1f2", + 576, + "r223i1p1f1", + 396, + "r223i1p1f2", + 255, + "r223i1p2f1", + 432, + "r223i2p1f2", + 576, + "r224i1p1f1", + 396, + "r224i1p1f2", + 258, + "r224i1p2f1", + 432, + "r224i2p1f2", + 576, + "r225i1p1f1", + 396, + "r225i1p1f2", + 255, + "r225i1p2f1", + 432, + "r225i2p1f2", + 576, + "r226i1p1f1", + 396, + "r226i1p1f2", + 258, + "r226i1p2f1", + 432, + "r226i2p1f2", + 576, + "r227i1p1f1", + 396, + "r227i1p1f2", + 255, + "r227i1p2f1", + 432, + "r227i2p1f2", + 576, + "r228i1p1f1", + 396, + "r228i1p1f2", + 258, + "r228i1p2f1", + 432, + "r228i2p1f2", + 576, + "r229i1p1f1", + 396, + "r229i1p1f2", + 255, + "r229i1p2f1", + 432, + "r229i2p1f2", + 576, + "r22i1p1f1", + 52314, + "r22i1p1f2", + 12181, + "r22i1p1f242", + 4344, + "r22i1p1f3", + 84, + "r22i1p2f1", + 11269, + "r22i2p1f1", + 169, + "r22i2p1f2", + 86, + "r230i1p1f1", + 396, + "r230i1p1f2", + 258, + "r230i1p2f1", + 432, + "r230i2p1f2", + 577, + "r231i1p1f1", + 396, + "r231i1p1f2", + 255, + "r231i1p2f1", + 432, + "r231i2p1f2", + 578, + "r232i1p1f1", + 396, + "r232i1p1f2", + 258, + "r232i1p2f1", + 432, + "r232i2p1f2", + 578, + "r233i1p1f1", + 396, + "r233i1p1f2", + 255, + "r233i1p2f1", + 432, + "r233i2p1f2", + 578, + "r234i1p1f1", + 396, + "r234i1p1f2", + 258, + "r234i1p2f1", + 432, + "r234i2p1f2", + 578, + "r235i1p1f1", + 396, + "r235i1p1f2", + 255, + "r235i1p2f1", + 432, + "r235i2p1f2", + 579, + "r236i1p1f1", + 396, + "r236i1p1f2", + 258, + "r236i1p2f1", + 432, + "r236i2p1f2", + 579, + "r237i1p1f1", + 396, + "r237i1p1f2", + 255, + "r237i1p2f1", + 432, + "r237i2p1f2", + 579, + "r238i1p1f1", + 396, + "r238i1p1f2", + 258, + "r238i1p2f1", + 432, + "r238i2p1f2", + 580, + "r239i1p1f1", + 396, + "r239i1p1f2", + 255, + "r239i1p2f1", + 432, + "r239i2p1f2", + 580, + "r23i1p1f1", + 50445, + "r23i1p1f2", + 11372, + "r23i1p1f242", + 4344, + "r23i1p1f3", + 84, + "r23i1p2f1", + 11254, + "r23i2p1f1", + 169, + "r23i2p1f2", + 86, + "r240i1p1f1", + 396, + "r240i1p1f2", + 258, + "r240i1p2f1", + 432, + "r240i2p1f2", + 580, + "r241i1p1f1", + 396, + "r241i1p1f2", + 255, + "r241i1p2f1", + 432, + "r241i2p1f2", + 581, + "r242i1p1f1", + 396, + "r242i1p1f2", + 258, + "r242i1p2f1", + 432, + "r242i2p1f2", + 580, + "r243i1p1f1", + 396, + "r243i1p1f2", + 255, + "r243i1p2f1", + 432, + "r243i2p1f2", + 580, + "r244i1p1f1", + 396, + "r244i1p1f2", + 258, + "r244i1p2f1", + 432, + "r244i2p1f2", + 580, + "r245i1p1f1", + 396, + "r245i1p1f2", + 255, + "r245i1p2f1", + 432, + "r245i2p1f2", + 579, + "r246i1p1f1", + 396, + "r246i1p1f2", + 258, + "r246i1p2f1", + 432, + "r246i2p1f2", + 580, + "r247i1p1f1", + 396, + "r247i1p1f2", + 255, + "r247i1p2f1", + 432, + "r247i2p1f2", + 580, + "r248i1p1f1", + 396, + "r248i1p1f2", + 258, + "r248i1p2f1", + 432, + "r248i2p1f2", + 580, + "r249i1p1f1", + 396, + "r249i1p1f2", + 255, + "r249i1p2f1", + 432, + "r249i2p1f2", + 580, + "r24i1p1f1", + 51056, + "r24i1p1f2", + 12175, + "r24i1p1f242", + 4344, + "r24i1p1f3", + 84, + "r24i1p2f1", + 11225, + "r24i2p1f1", + 169, + "r24i2p1f2", + 86, + "r250i1p1f1", + 396, + "r250i1p1f2", + 258, + "r250i1p2f1", + 432, + "r250i2p1f2", + 581, + "r251i1p1f1", + 396, + "r251i1p1f2", + 255, + "r251i1p2f1", + 432, + "r251i2p1f2", + 580, + "r252i1p1f1", + 396, + "r252i1p1f2", + 258, + "r252i1p2f1", + 432, + "r252i2p1f2", + 580, + "r253i1p1f1", + 396, + "r253i1p1f2", + 255, + "r253i1p2f1", + 432, + "r253i2p1f2", + 582, + "r254i1p1f1", + 396, + "r254i1p1f2", + 258, + "r254i1p2f1", + 432, + "r254i2p1f2", + 582, + "r255i1p1f1", + 396, + "r255i1p1f2", + 258, + "r255i1p2f1", + 432, + "r255i2p1f2", + 582, + "r256i1p1f1", + 396, + "r256i1p1f2", + 258, + "r256i1p2f1", + 432, + "r256i2p1f2", + 583, + "r257i1p1f1", + 396, + "r257i1p1f2", + 258, + "r257i1p2f1", + 432, + "r257i2p1f2", + 582, + "r258i1p1f1", + 396, + "r258i1p1f2", + 258, + "r258i1p2f1", + 432, + "r258i2p1f2", + 582, + "r259i1p1f1", + 396, + "r259i1p1f2", + 258, + "r259i1p2f1", + 432, + "r259i2p1f2", + 582, + "r25i1p1f1", + 51375, + "r25i1p1f2", + 11527, + "r25i1p1f242", + 4344, + "r25i1p1f3", + 84, + "r25i1p2f1", + 11267, + "r25i2p1f1", + 169, + "r25i2p1f2", + 86, + "r260i1p1f1", + 396, + "r260i1p1f2", + 258, + "r260i1p2f1", + 432, + "r260i2p1f2", + 583, + "r261i1p1f1", + 396, + "r261i1p1f2", + 258, + "r261i1p2f1", + 432, + "r261i2p1f2", + 583, + "r262i1p1f1", + 396, + "r262i1p1f2", + 258, + "r262i1p2f1", + 432, + "r262i2p1f2", + 582, + "r263i1p1f1", + 396, + "r263i1p1f2", + 258, + "r263i1p2f1", + 432, + "r263i2p1f2", + 583, + "r264i1p1f1", + 396, + "r264i1p1f2", + 258, + "r264i1p2f1", + 432, + "r264i2p1f2", + 582, + "r265i1p1f1", + 396, + "r265i1p1f2", + 258, + "r265i1p2f1", + 432, + "r265i2p1f2", + 583, + "r266i1p1f1", + 396, + "r266i1p1f2", + 258, + "r266i1p2f1", + 432, + "r266i2p1f2", + 583, + "r267i1p1f1", + 396, + "r267i1p1f2", + 258, + "r267i1p2f1", + 432, + "r267i2p1f2", + 583, + "r268i1p1f1", + 396, + "r268i1p1f2", + 258, + "r268i1p2f1", + 432, + "r268i2p1f2", + 584, + "r269i1p1f1", + 396, + "r269i1p1f2", + 258, + "r269i1p2f1", + 432, + "r269i2p1f2", + 585, + "r26i1p1f1", + 43167, + "r26i1p1f2", + 6983, + "r26i1p1f242", + 4344, + "r26i1p1f3", + 84, + "r26i1p2f1", + 6000, + "r26i2p1f1", + 169, + "r26i2p1f2", + 86, + "r270i1p1f1", + 396, + "r270i1p1f2", + 258, + "r270i1p2f1", + 432, + "r270i2p1f2", + 584, + "r271i1p1f1", + 396, + "r271i1p1f2", + 258, + "r271i1p2f1", + 432, + "r271i2p1f2", + 584, + "r272i1p1f1", + 396, + "r272i1p1f2", + 258, + "r272i1p2f1", + 432, + "r272i2p1f2", + 584, + "r273i1p1f1", + 396, + "r273i1p1f2", + 258, + "r273i1p2f1", + 432, + "r273i2p1f2", + 584, + "r274i1p1f1", + 396, + "r274i1p1f2", + 258, + "r274i1p2f1", + 432, + "r274i2p1f2", + 583, + "r275i1p1f1", + 396, + "r275i1p1f2", + 258, + "r275i1p2f1", + 432, + "r275i2p1f2", + 584, + "r276i1p1f1", + 396, + "r276i1p1f2", + 258, + "r276i1p2f1", + 432, + "r276i2p1f2", + 584, + "r277i1p1f1", + 396, + "r277i1p1f2", + 258, + "r277i1p2f1", + 432, + "r277i2p1f2", + 584, + "r278i1p1f1", + 396, + "r278i1p1f2", + 258, + "r278i1p2f1", + 432, + "r278i2p1f2", + 584, + "r279i1p1f1", + 396, + "r279i1p1f2", + 258, + "r279i1p2f1", + 432, + "r279i2p1f2", + 584, + "r27i1p1f1", + 43195, + "r27i1p1f2", + 6364, + "r27i1p1f242", + 4344, + "r27i1p1f3", + 84, + "r27i1p2f1", + 6002, + "r27i2p1f1", + 169, + "r27i2p1f2", + 86, + "r280i1p1f1", + 378, + "r280i1p1f2", + 258, + "r280i1p2f1", + 432, + "r280i2p1f2", + 584, + "r281i1p1f1", + 396, + "r281i1p1f2", + 255, + "r281i1p2f1", + 430, + "r281i2p1f2", + 569, + "r282i1p1f1", + 396, + "r282i1p1f2", + 258, + "r282i1p2f1", + 432, + "r282i2p1f2", + 584, + "r283i1p1f1", + 396, + "r283i1p1f2", + 258, + "r283i1p2f1", + 432, + "r283i2p1f2", + 568, + "r284i1p1f1", + 396, + "r284i1p1f2", + 258, + "r284i1p2f1", + 432, + "r284i2p1f2", + 584, + "r285i1p1f1", + 396, + "r285i1p1f2", + 258, + "r285i1p2f1", + 432, + "r285i2p1f2", + 584, + "r286i1p1f1", + 396, + "r286i1p1f2", + 258, + "r286i1p2f1", + 432, + "r286i2p1f2", + 584, + "r287i1p1f1", + 396, + "r287i1p1f2", + 258, + "r287i1p2f1", + 432, + "r287i2p1f2", + 584, + "r288i1p1f1", + 396, + "r288i1p1f2", + 258, + "r288i1p2f1", + 432, + "r288i2p1f2", + 585, + "r289i1p1f1", + 396, + "r289i1p1f2", + 258, + "r289i1p2f1", + 432, + "r289i2p1f2", + 584, + "r28i1p1f1", + 43200, + "r28i1p1f2", + 6983, + "r28i1p1f242", + 4344, + "r28i1p1f3", + 84, + "r28i1p2f1", + 6002, + "r28i2p1f1", + 169, + "r28i2p1f2", + 86, + "r290i1p1f1", + 396, + "r290i1p1f2", + 258, + "r290i1p2f1", + 432, + "r290i2p1f2", + 585, + "r291i1p1f1", + 396, + "r291i1p1f2", + 258, + "r291i1p2f1", + 432, + "r291i2p1f2", + 584, + "r292i1p1f1", + 396, + "r292i1p1f2", + 258, + "r292i1p2f1", + 432, + "r292i2p1f2", + 584, + "r293i1p1f1", + 396, + "r293i1p1f2", + 258, + "r293i1p2f1", + 432, + "r293i2p1f2", + 585, + "r294i1p1f1", + 396, + "r294i1p1f2", + 258, + "r294i1p2f1", + 432, + "r294i2p1f2", + 584, + "r295i1p1f1", + 396, + "r295i1p1f2", + 258, + "r295i1p2f1", + 432, + "r295i2p1f2", + 584, + "r296i1p1f1", + 396, + "r296i1p1f2", + 258, + "r296i1p2f1", + 432, + "r296i2p1f2", + 585, + "r297i1p1f1", + 396, + "r297i1p1f2", + 258, + "r297i1p2f1", + 432, + "r297i2p1f2", + 584, + "r298i1p1f1", + 396, + "r298i1p1f2", + 258, + "r298i1p2f1", + 432, + "r298i2p1f2", + 585, + "r299i1p1f1", + 396, + "r299i1p1f2", + 258, + "r299i1p2f1", + 432, + "r299i2p1f2", + 585, + "r29i1p1f1", + 43152, + "r29i1p1f2", + 6709, + "r29i1p1f242", + 4344, + "r29i1p1f3", + 84, + "r29i1p2f1", + 6004, + "r29i2p1f1", + 169, + "r29i2p1f2", + 86, + "r2i10p1f1", + 332, + "r2i1p1f1", + 338452, + "r2i1p1f2", + 58540, + "r2i1p1f242", + 4344, + "r2i1p1f3", + 4807, + "r2i1p1f4", + 991, + "r2i1p1f99", + 2340, + "r2i1p2f1", + 72869, + "r2i1p3f1", + 14225, + "r2i1p3f2", + 522, + "r2i1p4f2", + 3386, + "r2i1p5f1", + 3482, + "r2i1p5f2", + 1162, + "r2i2p1f1", + 14252, + "r2i2p1f2", + 420, + "r2i2p2f1", + 100, + "r2i3p1f1", + 5417, + "r2i3p2f1", + 488, + "r2i4p1f1", + 394, + "r2i5p1f1", + 332, + "r2i6p1f1", + 332, + "r2i7p1f1", + 332, + "r2i8p1f1", + 332, + "r2i9p1f1", + 332, + "r300i1p1f1", + 396, + "r300i1p1f2", + 258, + "r300i1p2f1", + 432, + "r300i2p1f2", + 584, + "r30i1p1f1", + 43156, + "r30i1p1f2", + 6471, + "r30i1p1f242", + 4344, + "r30i1p1f3", + 84, + "r30i1p2f1", + 6001, + "r30i2p1f1", + 169, + "r30i2p1f2", + 86, + "r31i1p1f1", + 38188, + "r31i1p1f2", + 3086, + "r31i1p1f3", + 84, + "r31i1p2f1", + 6002, + "r31i2p1f2", + 86, + "r32i1p1f1", + 38122, + "r32i1p1f2", + 3162, + "r32i1p1f3", + 84, + "r32i1p2f1", + 6002, + "r32i2p1f2", + 86, + "r33i1p1f1", + 38738, + "r33i1p1f2", + 3090, + "r33i1p1f3", + 84, + "r33i1p2f1", + 6004, + "r33i2p1f2", + 86, + "r34i1p1f1", + 37306, + "r34i1p1f2", + 3180, + "r34i1p1f3", + 84, + "r34i1p2f1", + 6002, + "r34i2p1f2", + 86, + "r35i1p1f1", + 37238, + "r35i1p1f2", + 3092, + "r35i1p1f3", + 84, + "r35i1p2f1", + 6002, + "r35i2p1f2", + 86, + "r36i1p1f1", + 37210, + "r36i1p1f2", + 3192, + "r36i1p1f3", + 84, + "r36i1p2f1", + 6001, + "r36i2p1f2", + 86, + "r37i1p1f1", + 37298, + "r37i1p1f2", + 3135, + "r37i1p1f3", + 84, + "r37i1p2f1", + 6003, + "r37i2p1f2", + 86, + "r38i1p1f1", + 37275, + "r38i1p1f2", + 3199, + "r38i1p1f3", + 84, + "r38i1p2f1", + 6003, + "r38i2p1f2", + 86, + "r39i1p1f1", + 37293, + "r39i1p1f2", + 3129, + "r39i1p1f3", + 84, + "r39i1p2f1", + 6003, + "r39i2p1f2", + 86, + "r3i10p1f1", + 332, + "r3i1p1f1", + 337241, + "r3i1p1f2", + 55779, + "r3i1p1f242", + 4344, + "r3i1p1f3", + 4691, + "r3i1p1f4", + 331, + "r3i1p1f99", + 2340, + "r3i1p2f1", + 72694, + "r3i1p3f1", + 14469, + "r3i1p3f2", + 522, + "r3i1p4f2", + 3388, + "r3i1p5f1", + 3483, + "r3i1p5f2", + 1162, + "r3i2p1f1", + 14204, + "r3i2p1f2", + 419, + "r3i2p2f1", + 100, + "r3i3p1f1", + 5417, + "r3i3p2f1", + 482, + "r3i4p1f1", + 394, + "r3i5p1f1", + 332, + "r3i6p1f1", + 332, + "r3i7p1f1", + 332, + "r3i8p1f1", + 332, + "r3i9p1f1", + 332, + "r40i1p1f1", + 36769, + "r40i1p1f2", + 3193, + "r40i1p1f3", + 84, + "r40i1p2f1", + 6001, + "r40i2p1f2", + 86, + "r41i1p1f1", + 17937, + "r41i1p1f2", + 1707, + "r41i1p1f3", + 84, + "r41i1p2f1", + 2886, + "r41i2p1f2", + 86, + "r42i1p1f1", + 17960, + "r42i1p1f2", + 1749, + "r42i1p1f3", + 84, + "r42i1p2f1", + 2888, + "r42i2p1f2", + 86, + "r43i1p1f1", + 17982, + "r43i1p1f2", + 1707, + "r43i1p1f3", + 84, + "r43i1p2f1", + 2889, + "r43i2p1f2", + 86, + "r44i1p1f1", + 17993, + "r44i1p1f2", + 1750, + "r44i1p1f3", + 84, + "r44i1p2f1", + 2890, + "r44i2p1f2", + 86, + "r45i1p1f1", + 18006, + "r45i1p1f2", + 1706, + "r45i1p1f3", + 84, + "r45i1p2f1", + 2889, + "r45i2p1f2", + 86, + "r46i1p1f1", + 18002, + "r46i1p1f2", + 1746, + "r46i1p1f3", + 83, + "r46i1p2f1", + 2890, + "r46i2p1f2", + 86, + "r47i1p1f1", + 17972, + "r47i1p1f2", + 1706, + "r47i1p1f3", + 84, + "r47i1p2f1", + 2890, + "r47i2p1f2", + 86, + "r48i1p1f1", + 17948, + "r48i1p1f2", + 1750, + "r48i1p1f3", + 83, + "r48i1p2f1", + 2889, + "r48i2p1f2", + 86, + "r49i1p1f1", + 17996, + "r49i1p1f2", + 1706, + "r49i1p1f3", + 84, + "r49i1p2f1", + 2890, + "r49i2p1f2", + 86, + "r4i10p1f1", + 332, + "r4i1p1f1", + 266168, + "r4i1p1f2", + 50167, + "r4i1p1f242", + 4344, + "r4i1p1f3", + 4263, + "r4i1p1f4", + 331, + "r4i1p1f99", + 2340, + "r4i1p2f1", + 58906, + "r4i1p3f1", + 13415, + "r4i1p5f1", + 3487, + "r4i1p5f2", + 1162, + "r4i2p1f1", + 11553, + "r4i2p1f2", + 86, + "r4i2p2f1", + 97, + "r4i3p1f1", + 5417, + "r4i3p2f1", + 488, + "r4i4p1f1", + 334, + "r4i5p1f1", + 332, + "r4i6p1f1", + 332, + "r4i7p1f1", + 332, + "r4i8p1f1", + 332, + "r4i9p1f1", + 332, + "r50i1p1f1", + 18005, + "r50i1p1f2", + 1750, + "r50i1p1f3", + 71, + "r50i1p2f1", + 2889, + "r50i2p1f2", + 86, + "r51i1p1f1", + 13490, + "r51i1p1f2", + 1707, + "r51i1p1f3", + 38, + "r51i1p2f1", + 2889, + "r51i2p1f2", + 86, + "r52i1p1f1", + 13518, + "r52i1p1f2", + 1750, + "r52i1p1f3", + 38, + "r52i1p2f1", + 2890, + "r52i2p1f2", + 86, + "r53i1p1f1", + 13516, + "r53i1p1f2", + 1707, + "r53i1p2f1", + 2889, + "r53i2p1f2", + 86, + "r54i1p1f1", + 13484, + "r54i1p1f2", + 1750, + "r54i1p1f3", + 38, + "r54i1p2f1", + 2890, + "r54i2p1f2", + 86, + "r55i1p1f1", + 13517, + "r55i1p1f2", + 1707, + "r55i1p1f3", + 38, + "r55i1p2f1", + 2888, + "r55i2p1f2", + 86, + "r56i1p1f1", + 13513, + "r56i1p1f2", + 1750, + "r56i1p1f3", + 38, + "r56i1p2f1", + 2890, + "r56i2p1f2", + 86, + "r57i1p1f1", + 13503, + "r57i1p1f2", + 1707, + "r57i1p1f3", + 38, + "r57i1p2f1", + 2889, + "r57i2p1f2", + 86, + "r58i1p1f1", + 13505, + "r58i1p1f2", + 1749, + "r58i1p1f3", + 38, + "r58i1p2f1", + 2890, + "r58i2p1f2", + 86, + "r59i1p1f1", + 13505, + "r59i1p1f2", + 1706, + "r59i1p1f3", + 38, + "r59i1p2f1", + 2889, + "r59i2p1f2", + 86, + "r5i10p1f1", + 332, + "r5i1p1f1", + 253905, + "r5i1p1f2", + 40658, + "r5i1p1f242", + 4344, + "r5i1p1f3", + 4316, + "r5i1p1f4", + 331, + "r5i1p1f99", + 2340, + "r5i1p2f1", + 58888, + "r5i1p3f1", + 12896, + "r5i1p5f1", + 2974, + "r5i1p5f2", + 1162, + "r5i2p1f1", + 11556, + "r5i2p1f2", + 86, + "r5i2p2f1", + 100, + "r5i3p1f1", + 5417, + "r5i3p2f1", + 488, + "r5i4p1f1", + 394, + "r5i5p1f1", + 332, + "r5i6p1f1", + 332, + "r5i7p1f1", + 332, + "r5i8p1f1", + 332, + "r5i9p1f1", + 332, + "r60i1p1f1", + 13503, + "r60i1p1f2", + 1749, + "r60i1p1f3", + 38, + "r60i1p2f1", + 2889, + "r60i2p1f2", + 86, + "r61i1p1f1", + 13497, + "r61i1p1f2", + 1706, + "r61i1p2f1", + 2890, + "r61i2p1f2", + 86, + "r62i1p1f1", + 13503, + "r62i1p1f2", + 1748, + "r62i1p2f1", + 2890, + "r62i2p1f2", + 86, + "r63i1p1f1", + 13496, + "r63i1p1f2", + 1705, + "r63i1p2f1", + 2890, + "r63i2p1f2", + 86, + "r64i1p1f1", + 13505, + "r64i1p1f2", + 1748, + "r64i1p2f1", + 2890, + "r64i2p1f2", + 86, + "r65i1p1f1", + 13505, + "r65i1p1f2", + 1700, + "r65i1p2f1", + 2890, + "r65i2p1f2", + 86, + "r66i1p1f1", + 13476, + "r66i1p1f2", + 1747, + "r66i1p2f1", + 2889, + "r66i2p1f2", + 86, + "r67i1p1f1", + 13472, + "r67i1p1f2", + 1677, + "r67i1p2f1", + 2890, + "r67i2p1f2", + 86, + "r68i1p1f1", + 13498, + "r68i1p1f2", + 1748, + "r68i1p2f1", + 2890, + "r68i2p1f2", + 86, + "r69i1p1f1", + 13505, + "r69i1p1f2", + 1662, + "r69i1p2f1", + 2890, + "r69i2p1f2", + 86, + "r6i10p1f1", + 332, + "r6i1p1f1", + 208449, + "r6i1p1f2", + 29898, + "r6i1p1f242", + 4344, + "r6i1p1f3", + 1268, + "r6i1p1f99", + 2340, + "r6i1p2f1", + 56802, + "r6i1p3f1", + 539, + "r6i1p5f1", + 1549, + "r6i1p5f2", + 1162, + "r6i2p1f1", + 16836, + "r6i2p1f2", + 86, + "r6i2p2f1", + 100, + "r6i3p1f1", + 332, + "r6i3p2f1", + 488, + "r6i4p1f1", + 394, + "r6i5p1f1", + 332, + "r6i6p1f1", + 332, + "r6i7p1f1", + 332, + "r6i8p1f1", + 332, + "r6i9p1f1", + 332, + "r70i1p1f1", + 13501, + "r70i1p1f2", + 1734, + "r70i1p2f1", + 2890, + "r70i2p1f2", + 86, + "r71i1p1f1", + 13498, + "r71i1p1f2", + 1661, + "r71i1p2f1", + 2890, + "r71i2p1f2", + 86, + "r72i1p1f1", + 13482, + "r72i1p1f2", + 1744, + "r72i1p2f1", + 2890, + "r72i2p1f2", + 86, + "r73i1p1f1", + 13441, + "r73i1p1f2", + 1661, + "r73i1p2f1", + 2890, + "r73i2p1f2", + 86, + "r74i1p1f1", + 13469, + "r74i1p1f2", + 1746, + "r74i1p2f1", + 2890, + "r74i2p1f2", + 86, + "r75i1p1f1", + 13497, + "r75i1p1f2", + 1661, + "r75i1p2f1", + 2890, + "r75i2p1f2", + 86, + "r76i1p1f1", + 13490, + "r76i1p1f2", + 1746, + "r76i1p2f1", + 2889, + "r76i2p1f2", + 86, + "r77i1p1f1", + 13486, + "r77i1p1f2", + 1661, + "r77i1p2f1", + 2890, + "r77i2p1f2", + 86, + "r78i1p1f1", + 13492, + "r78i1p1f2", + 1746, + "r78i1p2f1", + 2890, + "r78i2p1f2", + 86, + "r79i1p1f1", + 13499, + "r79i1p1f2", + 1660, + "r79i1p2f1", + 2889, + "r79i2p1f2", + 86, + "r7i10p1f1", + 332, + "r7i1p1f1", + 199007, + "r7i1p1f2", + 28081, + "r7i1p1f242", + 4344, + "r7i1p1f3", + 1275, + "r7i1p1f99", + 2340, + "r7i1p2f1", + 56795, + "r7i1p3f1", + 539, + "r7i1p5f1", + 1549, + "r7i1p5f2", + 1162, + "r7i2p1f1", + 16839, + "r7i2p1f2", + 86, + "r7i2p2f1", + 100, + "r7i3p1f1", + 332, + "r7i3p2f1", + 488, + "r7i4p1f1", + 394, + "r7i5p1f1", + 332, + "r7i6p1f1", + 332, + "r7i7p1f1", + 332, + "r7i8p1f1", + 332, + "r7i9p1f1", + 332, + "r80i1p1f1", + 13494, + "r80i1p1f2", + 1747, + "r80i1p2f1", + 2890, + "r80i2p1f2", + 86, + "r81i1p1f1", + 13484, + "r81i1p1f2", + 1661, + "r81i1p2f1", + 2889, + "r81i2p1f2", + 86, + "r82i1p1f1", + 13354, + "r82i1p1f2", + 1747, + "r82i1p2f1", + 2890, + "r82i2p1f2", + 86, + "r83i1p1f1", + 13494, + "r83i1p1f2", + 1661, + "r83i1p2f1", + 2890, + "r83i2p1f2", + 86, + "r84i1p1f1", + 13495, + "r84i1p1f2", + 1747, + "r84i1p2f1", + 2890, + "r84i2p1f2", + 86, + "r85i1p1f1", + 13499, + "r85i1p1f2", + 1661, + "r85i1p2f1", + 2889, + "r85i2p1f2", + 86, + "r86i1p1f1", + 13451, + "r86i1p1f2", + 1747, + "r86i1p2f1", + 2890, + "r86i2p1f2", + 86, + "r87i1p1f1", + 13487, + "r87i1p1f2", + 1661, + "r87i1p2f1", + 2890, + "r87i2p1f2", + 86, + "r88i1p1f1", + 13483, + "r88i1p1f2", + 1747, + "r88i1p2f1", + 2890, + "r88i2p1f2", + 86, + "r89i1p1f1", + 13389, + "r89i1p1f2", + 1661, + "r89i1p2f1", + 2889, + "r89i2p1f2", + 86, + "r8i10p1f1", + 332, + "r8i1p1f1", + 198535, + "r8i1p1f2", + 32831, + "r8i1p1f242", + 4344, + "r8i1p1f3", + 597, + "r8i1p1f99", + 2340, + "r8i1p2f1", + 56805, + "r8i1p3f1", + 539, + "r8i1p5f1", + 1551, + "r8i1p5f2", + 1162, + "r8i2p1f1", + 16837, + "r8i2p1f2", + 86, + "r8i2p2f1", + 100, + "r8i3p1f1", + 332, + "r8i3p2f1", + 488, + "r8i4p1f1", + 334, + "r8i5p1f1", + 332, + "r8i6p1f1", + 332, + "r8i7p1f1", + 332, + "r8i8p1f1", + 332, + "r8i9p1f1", + 332, + "r90i1p1f1", + 13443, + "r90i1p1f2", + 1747, + "r90i1p2f1", + 2890, + "r90i2p1f2", + 86, + "r91i1p1f1", + 13443, + "r91i1p1f2", + 1661, + "r91i1p2f1", + 2889, + "r91i2p1f2", + 86, + "r92i1p1f1", + 13440, + "r92i1p1f2", + 1747, + "r92i1p2f1", + 2890, + "r92i2p1f2", + 86, + "r93i1p1f1", + 13389, + "r93i1p1f2", + 1661, + "r93i1p2f1", + 2889, + "r93i2p1f2", + 86, + "r94i1p1f1", + 13432, + "r94i1p1f2", + 1747, + "r94i1p2f1", + 2890, + "r94i2p1f2", + 86, + "r95i1p1f1", + 13451, + "r95i1p1f2", + 1661, + "r95i1p2f1", + 2890, + "r95i2p1f2", + 86, + "r96i1p1f1", + 13438, + "r96i1p1f2", + 1746, + "r96i1p2f1", + 2890, + "r96i2p1f2", + 86, + "r97i1p1f1", + 13433, + "r97i1p1f2", + 1661, + "r97i1p2f1", + 2890, + "r97i2p1f2", + 86, + "r98i1p1f1", + 13428, + "r98i1p1f2", + 1747, + "r98i1p2f1", + 2890, + "r98i2p1f2", + 86, + "r99i1p1f1", + 13342, + "r99i1p1f2", + 1660, + "r99i1p2f1", + 2890, + "r99i2p1f2", + 86, + "r9i10p1f1", + 332, + "r9i1p1f1", + 190197, + "r9i1p1f2", + 28206, + "r9i1p1f242", + 4344, + "r9i1p1f3", + 597, + "r9i1p1f99", + 2340, + "r9i1p2f1", + 56791, + "r9i1p3f1", + 539, + "r9i1p5f1", + 1551, + "r9i1p5f2", + 1162, + "r9i2p1f1", + 16835, + "r9i2p1f2", + 86, + "r9i2p2f1", + 100, + "r9i3p1f1", + 332, + "r9i3p2f1", + 488, + "r9i4p1f1", + 394, + "r9i5p1f1", + 332, + "r9i6p1f1", + 332, + "r9i7p1f1", + 332, + "r9i8p1f1", + 332, + "r9i9p1f1", + 332 + ], + "grid_label": [ + "gm", + 28534, + "gn", + 6968543, + "gnz", + 78496, + "gr", + 1842247, + "gr1", + 95701, + "gr1z", + 247, + "gr2", + 1248, + "gr2z", + 7610, + "gr3", + 423, + "gra", + 15, + "grg", + 16, + "grz", + 14193 + ], + "table_id": [ + "3hr", + 43271, + "6hrLev", + 3690, + "6hrPlev", + 32082, + "6hrPlevPt", + 19408, + "AERday", + 50506, + "AERhr", + 982, + "AERmon", + 424595, + "AERmonZ", + 73349, + "Amon", + 2319917, + "CF3hr", + 739, + "CFday", + 128840, + "CFmon", + 162151, + "CFsubhr", + 3075, + "E1hr", + 152, + "E1hrClimMon", + 15, + "E3hr", + 2282, + "E3hrPt", + 328, + "Eday", + 209982, + "EdayZ", + 91806, + "Efx", + 6942, + "Emon", + 825752, + "EmonZ", + 100930, + "Esubhr", + 63, + "Eyr", + 21018, + "IfxGre", + 431, + "ImonAnt", + 2418, + "ImonGre", + 2432, + "IyrAnt", + 6, + "IyrGre", + 62, + "LImon", + 165142, + "Lmon", + 805572, + "Oclim", + 4572, + "Oday", + 21018, + "Odec", + 2694, + "Ofx", + 120466, + "Omon", + 1538856, + "Oyr", + 190125, + "SIday", + 67881, + "SImon", + 591756, + "day", + 864304, + "fx", + 137663 + ], + "frequency": [ + "1hr", + 1134, + "1hrCM", + 15, + "3hr", + 27362, + "3hrPt", + 19260, + "6hr", + 32872, + "6hrPt", + 22308, + "day", + 1432455, + "dec", + 2694, + "fx", + 265394, + "mon", + 6993380, + "monC", + 8731, + "monPt", + 17299, + "month", + 20, + "subhrPt", + 3138, + "yr", + 204424, + "yrPt", + 6787 + ], + "realm": [ + "aerosol", + 534184, + "atmos", + 4165646, + "atmosChem", + 12956, + "land", + 1614486, + "landIce", + 230101, + "ocean", + 1042032, + "ocnBgChem", + 8909, + "ocnBgchem", + 873340, + "sea", + 3, + "seaIce", + 660954, + "seaice", + 16 + ], + "variable_id": [ + "Multiple", + 2, + "abs550aer", + 12677, + "acabf", + 281, + "acabfIs", + 1600, + "agesno", + 3368, + "agessc", + 8202, + "airmass", + 1910, + "albc", + 14, + "albisccp", + 8517, + "albsn", + 40, + "amocrapid", + 3, + "aoanh", + 46, + "aod550volso4", + 2686, + "arag", + 775, + "aragos", + 29, + "areacella", + 32374, + "areacelli", + 3, + "areacello", + 30538, + "areacellr", + 2846, + "ares", + 152, + "bacc", + 91, + "baccos", + 64, + "baresoilFrac", + 18303, + "basin", + 12919, + "bddtalk", + 600, + "bddtdic", + 614, + "bddtdife", + 596, + "bddtdin", + 596, + "bddtdip", + 597, + "bddtdisi", + 592, + "bfe", + 3490, + "bfeos", + 2274, + "bigthetao", + 4216, + "bigthetaoga", + 2557, + "bldep", + 9396, + "bry", + 963, + "bsi", + 3673, + "bsios", + 2562, + "burntFractionAll", + 3907, + "c13Land", + 158, + "c13Litter", + 157, + "c13Soil", + 159, + "c13Veg", + 172, + "c14Land", + 157, + "c14Litter", + 161, + "c14Soil", + 158, + "c14Veg", + 168, + "c2h2", + 75, + "c2h6", + 993, + "c3PftFrac", + 13929, + "c3h6", + 880, + "c3h8", + 996, + "c4PftFrac", + 13928, + "cCwd", + 3866, + "cLand", + 22690, + "cLeaf", + 12988, + "cLitter", + 27144, + "cLitterAbove", + 4571, + "cLitterBelow", + 4940, + "cLitterCwd", + 336, + "cLitterGrass", + 3841, + "cLitterLut", + 696, + "cLitterShrub", + 346, + "cLitterSubSurf", + 3594, + "cLitterSurf", + 3594, + "cLitterTree", + 3841, + "cMisc", + 4583, + "cOther", + 3461, + "cProduct", + 9952, + "cProductLut", + 138, + "cRoot", + 13159, + "cSoil", + 26170, + "cSoilAbove1m", + 1976, + "cSoilFast", + 8762, + "cSoilGrass", + 3843, + "cSoilLevels", + 145, + "cSoilLut", + 705, + "cSoilMedium", + 8695, + "cSoilPools", + 1181, + "cSoilShrub", + 348, + "cSoilSlow", + 8759, + "cSoilTree", + 3913, + "cStem", + 10800, + "cTotFireLut", + 398, + "cVeg", + 27676, + "cVegGrass", + 4271, + "cVegLut", + 704, + "cVegShrub", + 778, + "cVegTree", + 4272, + "cWood", + 11228, + "calc", + 4078, + "calcos", + 448, + "ccb", + 13752, + "ccldncl", + 51, + "ccn", + 1434, + "cct", + 15216, + "cdnc", + 6961, + "cfadDbze94", + 47, + "cfadLidarsr532", + 51, + "cfc11", + 1208, + "cfc113global", + 60, + "cfc11global", + 2584, + "cfc12", + 1199, + "cfc12global", + 2582, + "ch3coch3", + 989, + "ch4", + 5962, + "ch4global", + 4389, + "cheaqpso4", + 1908, + "chegpso4", + 1910, + "chepasoa", + 57, + "chepsoa", + 981, + "chl", + 22317, + "chlcalc", + 47, + "chlcalcos", + 47, + "chldiat", + 3106, + "chldiatos", + 10428, + "chldiaz", + 1578, + "chldiazos", + 8791, + "chlmisc", + 2200, + "chlmiscos", + 2050, + "chlos", + 19144, + "chlpico", + 877, + "chlpicoos", + 8413, + "ci", + 12404, + "cl", + 15917, + "clayfrac", + 73, + "clc", + 844, + "clcalipso", + 3820, + "clcalipso2", + 9, + "clcalipsoice", + 80, + "clcalipsoliq", + 80, + "cldicemxrat", + 70, + "cldnci", + 1682, + "cldncl", + 1787, + "cldnvi", + 1873, + "cldwatmxrat", + 70, + "clhcalipso", + 8081, + "cli", + 14647, + "clic", + 366, + "climodis", + 1166, + "clis", + 332, + "clisccp", + 4331, + "clivi", + 41762, + "clivic", + 113, + "cllcalipso", + 8083, + "clmcalipso", + 8079, + "clmisr", + 95, + "cls", + 821, + "clt", + 89611, + "cltc", + 1954, + "cltcalipso", + 5680, + "cltisccp", + 7633, + "cltmodis", + 1166, + "clw", + 14660, + "clwc", + 371, + "clwmodis", + 1194, + "clws", + 340, + "clwvi", + 41861, + "clwvic", + 131, + "cly", + 963, + "cnc", + 326, + "co", + 1613, + "co2", + 11800, + "co23D", + 245, + "co2mass", + 5343, + "co2s", + 56, + "co3", + 4526, + "co3abio", + 151, + "co3abioos", + 62, + "co3nat", + 777, + "co3natos", + 366, + "co3os", + 1210, + "co3satarag", + 1720, + "co3sataragos", + 746, + "co3satcalc", + 3917, + "co3satcalcos", + 786, + "cod", + 3660, + "conccmcn", + 386, + "conccn", + 1175, + "concdust", + 926, + "concnmcn", + 93, + "cropFrac", + 20824, + "cropFracC3", + 13081, + "cropFracC4", + 12551, + "cw", + 57, + "darag", + 1, + "dcalc", + 978, + "dcw", + 23, + "dems", + 4, + "depdust", + 1345, + "deptho", + 27114, + "detoc", + 11021, + "detocos", + 3468, + "dfe", + 16708, + "dfeos", + 12577, + "dfr", + 15, + "dgw", + 23, + "difmxybo", + 28, + "difmxylo", + 358, + "diftrblo", + 2917, + "diftrelo", + 790, + "diftrxylo", + 123, + "difvho", + 4058, + "difvmo", + 971, + "difvmto", + 122, + "difvso", + 3403, + "difvtrto", + 682, + "dispkevfo", + 112, + "dispkexyfo", + 471, + "dissi14cabio", + 625, + "dissi14cabioos", + 338, + "dissic", + 24437, + "dissicabio", + 5229, + "dissicabioos", + 3147, + "dissicnat", + 6757, + "dissicnatos", + 3679, + "dissicos", + 6441, + "dissoc", + 5218, + "dissocos", + 1110, + "dmc", + 458, + "dmlt", + 67, + "dms", + 4418, + "dmso", + 102, + "dmsos", + 652, + "dpco2", + 3663, + "dpco2abio", + 174, + "dpco2nat", + 572, + "dpo2", + 2228, + "drivw", + 23, + "drybc", + 7312, + "drydust", + 7327, + "drynh3", + 789, + "drynh4", + 788, + "drynoy", + 1349, + "dryo3", + 1484, + "dryoa", + 3343, + "dryso2", + 8700, + "dryso4", + 7466, + "dryss", + 3571, + "dslw", + 23, + "dsn", + 23, + "dsw", + 23, + "dtaus", + 4, + "dtes", + 23, + "dtesn", + 23, + "ec", + 81, + "ec550aer", + 1710, + "edt", + 1788, + "emiaco", + 556, + "emianox", + 556, + "emiaoa", + 1251, + "emibc", + 7487, + "emibvoc", + 2226, + "emico", + 1446, + "emidms", + 8374, + "emidust", + 8848, + "emiisop", + 2816, + "emilnox", + 1406, + "eminh3", + 721, + "eminox", + 1486, + "emioa", + 3149, + "emiso2", + 8724, + "emiso4", + 3887, + "emiss", + 4803, + "emivoc", + 2650, + "eow", + 23, + "eparag100", + 438, + "epc100", + 12531, + "epcalc100", + 12142, + "epfe100", + 2611, + "epfy", + 24053, + "epfz", + 24070, + "epn100", + 5930, + "epp100", + 799, + "epsi100", + 4631, + "es", + 536, + "esn", + 46, + "et", + 20, + "evs", + 10780, + "evspsbl", + 59418, + "evspsblpot", + 5247, + "evspsblsoi", + 23849, + "evspsblveg", + 23213, + "evu", + 1787, + "exparag", + 14, + "expc", + 12137, + "expcalc", + 1512, + "expfe", + 2562, + "expn", + 560, + "expp", + 568, + "expsi", + 1851, + "fAnthDisturb", + 3683, + "fBNF", + 2807, + "fCLandToOcean", + 407, + "fDeforestToAtmos", + 7765, + "fDeforestToProduct", + 10205, + "fFire", + 4165, + "fFireAll", + 382, + "fFireNat", + 2022, + "fGrazing", + 514, + "fHarvest", + 7511, + "fHarvestToAtmos", + 3207, + "fHarvestToProduct", + 5447, + "fLitterFire", + 185, + "fLitterSoil", + 10728, + "fLuc", + 7555, + "fLulccAtmLut", + 484, + "fLulccProductLut", + 287, + "fLulccResidueLut", + 489, + "fN2O", + 2879, + "fNAnthDisturb", + 535, + "fNLandToOcean", + 160, + "fNLitterSoil", + 1520, + "fNOx", + 1411, + "fNProduct", + 2287, + "fNVegLitter", + 1208, + "fNVegSoil", + 119, + "fNdep", + 3702, + "fNfert", + 1771, + "fNgas", + 3732, + "fNgasFire", + 2297, + "fNgasNonFire", + 2104, + "fNleach", + 3795, + "fNloss", + 3744, + "fNnetmin", + 4132, + "fNup", + 3305, + "fProductDecomp", + 5875, + "fProductDecompLut", + 295, + "fVegFire", + 375, + "fVegLitter", + 12477, + "fVegLitterMortality", + 421, + "fVegLitterSenescence", + 5976, + "fVegSoil", + 181, + "fahLut", + 44, + "fbddtalk", + 2188, + "fbddtdic", + 2206, + "fbddtdife", + 2217, + "fbddtdin", + 2218, + "fbddtdip", + 2161, + "fbddtdisi", + 2189, + "fco2antt", + 303, + "fco2fos", + 93, + "fco2nat", + 735, + "fddtalk", + 736, + "fddtdic", + 738, + "fddtdife", + 722, + "fddtdin", + 725, + "fddtdip", + 721, + "fddtdisi", + 717, + "fediss", + 370, + "fescav", + 963, + "fg14co2abio", + 619, + "fgcfc11", + 809, + "fgcfc12", + 1536, + "fgco2", + 28887, + "fgco2abio", + 6090, + "fgco2nat", + 7511, + "fgdms", + 530, + "fgo2", + 10386, + "fgsf6", + 1372, + "ficeberg", + 5160, + "ficeberg2d", + 2, + "flandice", + 1319, + "flashrate", + 671, + "fldcapacity", + 45, + "fracInLut", + 520, + "fracLut", + 10394, + "fracOutLut", + 521, + "frfe", + 2944, + "fric", + 2813, + "friver", + 15571, + "frn", + 2951, + "froc", + 3255, + "fsfe", + 4546, + "fsitherm", + 5018, + "fsn", + 4477, + "gpp", + 32448, + "gppGrass", + 4165, + "gppLut", + 2049, + "gppShrub", + 663, + "gppTree", + 4164, + "gppc13", + 168, + "gppc14", + 168, + "grassFrac", + 16710, + "grassFracC3", + 13449, + "grassFracC4", + 13448, + "graz", + 4130, + "gwt", + 99, + "h2o", + 1953, + "hcfc22global", + 60, + "hcho", + 1610, + "hcl", + 2467, + "hcont300", + 579, + "hfbasin", + 14356, + "hfbasinpadv", + 1901, + "hfbasinpmadv", + 2907, + "hfbasinpmdiff", + 2252, + "hfbasinpsmadv", + 9, + "hfcorr", + 2057, + "hfds", + 32385, + "hfdsl", + 45, + "hfdsn", + 6570, + "hfdsnb", + 15, + "hfevapds", + 3128, + "hfgeou", + 4055, + "hfgeoubed", + 146, + "hfibthermds", + 1366, + "hfls", + 92000, + "hflsIs", + 1624, + "hflsLut", + 418, + "hflso", + 2624, + "hfmlt", + 49, + "hfrainds", + 1740, + "hfrunoffds", + 1009, + "hfsbl", + 47, + "hfsifrazil", + 4986, + "hfsnthermds", + 446, + "hfss", + 92405, + "hfssIs", + 1623, + "hfssLut", + 418, + "hfsso", + 2623, + "hfx", + 5289, + "hfy", + 5171, + "hno3", + 2651, + "ho2", + 1089, + "htovgyre", + 3105, + "htovovrt", + 3097, + "hur", + 64145, + "hurs", + 50869, + "hursmax", + 12901, + "hursmin", + 17886, + "hus", + 98074, + "hus7h", + 5, + "hus850", + 4541, + "huss", + 80353, + "hussLut", + 417, + "iareafl", + 2, + "iareagr", + 2, + "icem", + 274, + "icemIs", + 141, + "icfriver", + 715, + "intdic", + 12501, + "intdoc", + 1236, + "intparag", + 15, + "intpbfe", + 2763, + "intpbn", + 793, + "intpbp", + 395, + "intpbsi", + 2337, + "intpcalcite", + 931, + "intpn2", + 8010, + "intpoc", + 1616, + "intpp", + 13098, + "intppcalc", + 47, + "intppdiat", + 2523, + "intppdiaz", + 820, + "intppmisc", + 2090, + "intppnitrate", + 2343, + "intpppico", + 439, + "intuadse", + 5063, + "intuaw", + 6622, + "intvadse", + 5064, + "intvaw", + 6608, + "irrLut", + 291, + "isop", + 3682, + "jno2", + 1521, + "jo2", + 89, + "jo3", + 89, + "jpdftaureicemodis", + 95, + "jpdftaureliqmodis", + 96, + "ksat", + 149, + "lai", + 33493, + "laiLut", + 2017, + "landCoverFrac", + 4272, + "libmassbffl", + 2, + "libmassbfgr", + 2, + "licalvf", + 2, + "lim", + 2, + "limfecalc", + 47, + "limfediat", + 2443, + "limfediaz", + 764, + "limfemisc", + 4820, + "limfepico", + 379, + "limirrcalc", + 47, + "limirrdiat", + 2387, + "limirrdiaz", + 430, + "limirrmisc", + 4723, + "limirrpico", + 385, + "limncalc", + 47, + "limndiat", + 2446, + "limndiaz", + 47, + "limnmisc", + 4774, + "limnpico", + 377, + "limnsw", + 2, + "litempbotfl", + 2, + "litempbotgr", + 2, + "litemptop", + 278, + "litemptopIs", + 143, + "lithk", + 145, + "loadbc", + 3082, + "loaddust", + 7166, + "loadno3", + 2558, + "loadoa", + 2924, + "loadpoa", + 2689, + "loadso4", + 9310, + "loadsoa", + 131, + "loadss", + 10753, + "lossch4", + 1577, + "lossco", + 1531, + "lossn2o", + 813, + "lwp", + 10154, + "lwsffluxaero", + 57, + "lwsnl", + 11416, + "lwsrfasdust", + 50, + "lwsrfcsdust", + 50, + "lwtoaasdust", + 50, + "lwtoacsaer", + 1708, + "lwtoacsdust", + 50, + "lwtoafluxaerocs", + 253, + "masscello", + 8730, + "masso", + 5203, + "maxpblz", + 908, + "mc", + 8124, + "mcd", + 546, + "mcu", + 806, + "meanage", + 776, + "mfo", + 5065, + "mfodrake", + 3, + "mfoindo", + 3, + "minpblz", + 912, + "mlotst", + 26390, + "mlotstmax", + 5848, + "mlotstmin", + 5099, + "mlotstsq", + 7038, + "mmraerh2o", + 1684, + "mmraerso4", + 558, + "mmrbc", + 5195, + "mmrdust", + 4772, + "mmrnh4", + 775, + "mmrno3", + 1268, + "mmroa", + 4332, + "mmrpm1", + 1308, + "mmrpm10", + 1392, + "mmrpm2p5", + 2385, + "mmrso4", + 4712, + "mmrsoa", + 2021, + "mmrss", + 5274, + "modelCellAreai", + 2, + "mrfso", + 32121, + "mrfsofr", + 54, + "mrlqso", + 54, + "mrlsl", + 116, + "mrlso", + 10676, + "mrro", + 48448, + "mrroIs", + 1604, + "mrroLi", + 278, + "mrroLut", + 516, + "mrrob", + 198, + "mrros", + 29008, + "mrsfl", + 14741, + "mrsll", + 14653, + "mrso", + 44512, + "mrsoLut", + 515, + "mrsofc", + 5960, + "mrsol", + 31527, + "mrsos", + 48990, + "mrsosLut", + 422, + "mrsow", + 823, + "mrtws", + 6849, + "msftbarot", + 12208, + "msftmrho", + 2750, + "msftmrhompa", + 836, + "msftmyz", + 47, + "msftmz", + 16846, + "msftmzmpa", + 6837, + "msftmzsmpa", + 252, + "msftyrho", + 760, + "msftyrhompa", + 541, + "msftyz", + 6286, + "msftyzmpa", + 1775, + "msftyzsmpa", + 1, + "n2o", + 5805, + "n2oglobal", + 4479, + "nLand", + 4160, + "nLeaf", + 1876, + "nLitter", + 4035, + "nLitterCwd", + 334, + "nLitterSubSurf", + 89, + "nLitterSurf", + 89, + "nMineral", + 3817, + "nMineralNH4", + 1657, + "nMineralNO3", + 1653, + "nOther", + 89, + "nProduct", + 2276, + "nRoot", + 2165, + "nSoil", + 4154, + "nStem", + 2164, + "nVeg", + 3842, + "nbp", + 28919, + "necbLut", + 1397, + "nep", + 12516, + "netAtmosLandC13Flux", + 107, + "netAtmosLandC14Flux", + 109, + "netAtmosLandCO2Flux", + 17073, + "nh4", + 11687, + "nh4os", + 535, + "nh50", + 118, + "no", + 1622, + "no2", + 1658, + "no3", + 25391, + "no3os", + 17458, + "noy", + 1094, + "npp", + 32007, + "nppGrass", + 4193, + "nppLeaf", + 11800, + "nppLut", + 2056, + "nppOther", + 3300, + "nppRoot", + 11805, + "nppShrub", + 697, + "nppStem", + 7318, + "nppTree", + 4192, + "nppWood", + 11589, + "nudgincsm", + 26, + "nwdFracLut", + 5646, + "o2", + 24951, + "o2min", + 10748, + "o2os", + 17227, + "o2sat", + 2092, + "o2satos", + 1148, + "o3", + 16000, + "o3loss", + 1586, + "o3prod", + 1590, + "o3ste", + 212, + "obvfsq", + 4929, + "ocfriver", + 689, + "ocontempdiff", + 165, + "ocontempmint", + 13, + "ocontemppadvect", + 165, + "ocontemppmdiff", + 164, + "ocontemppsmadvect", + 23, + "ocontemprmadvect", + 194, + "ocontemptend", + 165, + "od440aer", + 4446, + "od443dust", + 94, + "od550aer", + 15354, + "od550aerh2o", + 2794, + "od550aerso", + 203, + "od550bb", + 429, + "od550bc", + 5629, + "od550csaer", + 4721, + "od550dust", + 11280, + "od550lt1aer", + 3625, + "od550no3", + 3104, + "od550oa", + 6683, + "od550so4", + 6785, + "od550soa", + 715, + "od550ss", + 9367, + "od865dust", + 492, + "od870aer", + 2108, + "oh", + 4242, + "omldamax", + 1295, + "opottempdiff", + 3513, + "opottempmint", + 4150, + "opottemppadvect", + 3477, + "opottemppmdiff", + 3510, + "opottemppsmadvect", + 342, + "opottemprmadvect", + 3342, + "opottemptend", + 3702, + "orog", + 40044, + "orogIs", + 166, + "osaltdiff", + 3668, + "osaltpadvect", + 3641, + "osaltpmdiff", + 3664, + "osaltpsmadvect", + 363, + "osaltrmadvect", + 3695, + "osalttend", + 3817, + "oxloss", + 123, + "oxprod", + 123, + "pabigthetao", + 7, + "pan", + 1545, + "parag", + 14, + "parasolRefl", + 879, + "pastureFrac", + 1824, + "pastureFracC3", + 714, + "pastureFracC4", + 715, + "pathetao", + 61, + "pbfe", + 998, + "pbo", + 9454, + "pbsi", + 1428, + "pcalc", + 991, + "pctisccp", + 9939, + "pflw", + 24, + "pfull", + 6566, + "ph", + 8263, + "phabio", + 190, + "phabioos", + 259, + "phalf", + 6528, + "phnat", + 844, + "phnatos", + 746, + "phos", + 3438, + "photo1d", + 1533, + "phyc", + 23747, + "phycalc", + 47, + "phycalcos", + 47, + "phycos", + 18529, + "phydiat", + 3685, + "phydiatos", + 589, + "phydiaz", + 1301, + "phydiazos", + 403, + "phyfe", + 4167, + "phyfeos", + 10565, + "phymisc", + 3146, + "phymiscos", + 200, + "phyn", + 6696, + "phynos", + 10038, + "phyp", + 1622, + "phypico", + 8913, + "phypicoos", + 408, + "phypos", + 521, + "physi", + 3044, + "physios", + 10200, + "pnitrate", + 1855, + "po4", + 19061, + "po4os", + 3187, + "pon", + 3584, + "ponos", + 3672, + "pop", + 1114, + "popos", + 722, + "pp", + 8012, + "ppdiat", + 2689, + "ppdiaz", + 693, + "ppmisc", + 3372, + "ppos", + 1812, + "pppico", + 14, + "pr", + 112164, + "prbigthetao", + 7, + "prc", + 45785, + "prcprof", + 8, + "prhmax", + 7030, + "prlsns", + 8, + "prlsprof", + 8, + "prra", + 9539, + "prraIs", + 1609, + "prrc", + 126, + "prrsn", + 15, + "prsn", + 71185, + "prsnIs", + 164, + "prsnc", + 106, + "prsnsn", + 15, + "prthetao", + 53, + "prveg", + 20598, + "prw", + 50998, + "ps", + 78119, + "psitem", + 6050, + "psl", + 118815, + "pso", + 2588, + "ptp", + 7773, + "qgwr", + 68, + "rGrowth", + 11618, + "rMaint", + 11617, + "ra", + 27837, + "raGrass", + 4187, + "raLeaf", + 270, + "raLut", + 1960, + "raRoot", + 274, + "raShrub", + 692, + "raTree", + 4191, + "rac13", + 158, + "rac14", + 159, + "rainmxrat", + 52, + "reffcclwtop", + 54, + "reffclic", + 565, + "reffclis", + 719, + "reffclwc", + 565, + "reffclws", + 936, + "reffclwtop", + 3897, + "reffsclwtop", + 203, + "remoc", + 988, + "residualFrac", + 9266, + "rh", + 27105, + "rhGrass", + 3836, + "rhLitter", + 3743, + "rhLut", + 864, + "rhShrub", + 342, + "rhSoil", + 4089, + "rhTree", + 3835, + "rhc13", + 157, + "rhc14", + 157, + "rivi", + 15, + "rivo", + 1659, + "rld", + 3288, + "rld4co2", + 2709, + "rldcs", + 3263, + "rldcs4co2", + 2710, + "rlds", + 85567, + "rldsIs", + 164, + "rldscs", + 46903, + "rlntds", + 2624, + "rls", + 39416, + "rlsaf", + 4, + "rlscsaf", + 4, + "rlu", + 3309, + "rlu4co2", + 2710, + "rlucs", + 3227, + "rlucs4co2", + 2710, + "rlus", + 65212, + "rlusIs", + 164, + "rlusLut", + 413, + "rlut", + 86488, + "rlut4co2", + 2725, + "rlutaf", + 2235, + "rlutcs", + 61192, + "rlutcs4co2", + 2723, + "rlutcsaf", + 2241, + "rootd", + 5760, + "rsd", + 3372, + "rsd4co2", + 2710, + "rsdcs", + 3006, + "rsdcs4co2", + 2710, + "rsdo", + 5035, + "rsdoabsorb", + 3639, + "rsds", + 100275, + "rsdsIs", + 175, + "rsdscs", + 55335, + "rsdscsdiff", + 3947, + "rsdsdiff", + 8988, + "rsdt", + 59960, + "rsntds", + 16418, + "rss", + 39399, + "rssaf", + 4, + "rsscsaf", + 4, + "rsu", + 3369, + "rsu4co2", + 2710, + "rsucs", + 3348, + "rsucs4co2", + 2710, + "rsus", + 65623, + "rsusIs", + 164, + "rsusLut", + 431, + "rsuscs", + 36208, + "rsut", + 63258, + "rsut4co2", + 2725, + "rsutaf", + 2292, + "rsutcs", + 52737, + "rsutcs4co2", + 2724, + "rsutcsaf", + 2258, + "rtmt", + 41176, + "rv850", + 2067, + "rzwc", + 362, + "sandfrac", + 69, + "sbl", + 20369, + "sblIs", + 1602, + "sblnosn", + 39, + "sci", + 7367, + "scldncl", + 203, + "sconcdust", + 5538, + "sconcso4", + 5527, + "sconcss", + 5543, + "sedustCI", + 15, + "sf6", + 1639, + "sfcWind", + 92555, + "sfcWindmax", + 42022, + "sfdsi", + 12847, + "sfno2", + 34, + "sfo3", + 43, + "sfo3max", + 308, + "sfpm25", + 283, + "sfriver", + 446, + "sftflf", + 2, + "sftgif", + 20995, + "sftgrf", + 10499, + "sftlf", + 31255, + "sftof", + 22007, + "shrubFrac", + 3173, + "si", + 15783, + "siage", + 5124, + "siareaacrossline", + 2327, + "siarean", + 8278, + "siareas", + 8315, + "sicompstren", + 4698, + "siconc", + 43452, + "siconca", + 25109, + "sidconcdyn", + 3208, + "sidconcth", + 4477, + "sidivvel", + 7603, + "sidmassdyn", + 5148, + "sidmassevapsubl", + 6222, + "sidmassgrowthbot", + 7077, + "sidmassgrowthwat", + 7180, + "sidmasslat", + 4647, + "sidmassmeltbot", + 7283, + "sidmassmelttop", + 7265, + "sidmasssi", + 7181, + "sidmassth", + 5174, + "sidmasstranx", + 6030, + "sidmasstrany", + 6035, + "sidragbot", + 558, + "sidragtop", + 1617, + "siextentn", + 8382, + "siextents", + 8389, + "sifb", + 4183, + "siflcondbot", + 4217, + "siflcondtop", + 5890, + "siflfwbot", + 4482, + "siflfwdrain", + 3401, + "sifllatstop", + 5158, + "sifllwdtop", + 4748, + "sifllwutop", + 4964, + "siflsenstop", + 5827, + "siflsensupbot", + 4431, + "siflswdbot", + 1629, + "siflswdtop", + 5127, + "siflswutop", + 4894, + "siforcecoriolx", + 3633, + "siforcecorioly", + 3641, + "siforceintstrx", + 3600, + "siforceintstry", + 3609, + "siforcetiltx", + 3325, + "siforcetilty", + 3329, + "sihc", + 6647, + "siitdconc", + 2979, + "siitdsnconc", + 892, + "siitdsnthick", + 1964, + "siitdthick", + 1996, + "siltfrac", + 30, + "simass", + 22373, + "simassacrossline", + 2675, + "simpconc", + 2172, + "simpmass", + 1530, + "simprefrozen", + 74, + "sios", + 9738, + "sipr", + 5659, + "sirdgconc", + 966, + "sirdgthick", + 1787, + "sisali", + 1176, + "sisaltmass", + 7797, + "sishevel", + 6505, + "sisnconc", + 9878, + "sisnhc", + 4711, + "sisnmass", + 10708, + "sisnthick", + 28425, + "sispeed", + 18095, + "sistremax", + 1630, + "sistresave", + 1628, + "sistrxdtop", + 7216, + "sistrxubot", + 6021, + "sistrydtop", + 7209, + "sistryubot", + 6025, + "sitempbot", + 3982, + "sitempsnic", + 5755, + "sitemptop", + 20935, + "sithick", + 33031, + "sitimefrac", + 23304, + "siu", + 29348, + "siv", + 29316, + "sivol", + 15066, + "sivoln", + 8685, + "sivols", + 8412, + "sltbasin", + 1624, + "slthick", + 190, + "sltnortha", + 78, + "sltovgyre", + 2680, + "sltovovrt", + 2650, + "smc", + 455, + "smoc", + 3, + "snc", + 48111, + "sncIs", + 135, + "snd", + 43559, + "sndmassdyn", + 2349, + "sndmassmelt", + 6054, + "sndmasssi", + 2494, + "sndmasssnf", + 8037, + "sndmasssubl", + 3016, + "sndmasswindrif", + 295, + "snicefreez", + 276, + "snicefreezIs", + 143, + "snicem", + 276, + "snicemIs", + 141, + "snm", + 16294, + "snmIs", + 141, + "snmassacrossline", + 2343, + "snowmxrat", + 73, + "snrefr", + 39, + "snw", + 35548, + "snwc", + 303, + "so", + 38561, + "so2", + 4306, + "sob", + 7630, + "soga", + 12647, + "solbnd", + 31, + "somint", + 4463, + "sootsn", + 2089, + "sos", + 42557, + "sosga", + 4419, + "sossq", + 6190, + "spco2", + 21582, + "spco2abio", + 3157, + "spco2nat", + 3374, + "strbasemag", + 2, + "sw", + 28, + "sweLut", + 407, + "swsffluxaero", + 1, + "swsrfasdust", + 50, + "swsrfcsdust", + 50, + "swtoaasdust", + 50, + "swtoacsdust", + 50, + "swtoafluxaerocs", + 253, + "sza", + 31, + "t2", + 31, + "t20d", + 9828, + "tSoilPools", + 558, + "ta", + 132682, + "ta500", + 4860, + "ta700", + 4337, + "ta850", + 22585, + "talk", + 26640, + "talknat", + 1565, + "talknatos", + 574, + "talkos", + 6116, + "tas", + 116763, + "tasIs", + 1595, + "tasLut", + 421, + "tasmax", + 83025, + "tasmaxCrop", + 224, + "tasmin", + 83377, + "tasminCrop", + 232, + "tatp", + 2653, + "tau", + 25, + "tauu", + 55277, + "tauucorr", + 14, + "tauuo", + 16047, + "tauupbl", + 409, + "tauv", + 55321, + "tauvcorr", + 14, + "tauvo", + 15941, + "tauvpbl", + 410, + "tcs", + 59, + "tdps", + 11012, + "tg", + 4, + "tgs", + 69, + "thetao", + 41847, + "thetaoga", + 11436, + "thetaot", + 5784, + "thetaot2000", + 5590, + "thetaot300", + 5583, + "thetaot700", + 5582, + "thkcello", + 10229, + "tnhus", + 1741, + "tnhusa", + 2628, + "tnhusc", + 3145, + "tnhusd", + 564, + "tnhusmp", + 2221, + "tnhuspbl", + 1046, + "tnhusscp", + 1040, + "tnhusscpbl", + 2047, + "tnkebto", + 491, + "tnpeo", + 1235, + "tnt", + 4242, + "tnta", + 5089, + "tntc", + 7434, + "tntd", + 50, + "tntmp", + 7438, + "tntnogw", + 304, + "tntogw", + 555, + "tntpbl", + 1046, + "tntr", + 4540, + "tntrl", + 3818, + "tntrlcs", + 2270, + "tntrs", + 3413, + "tntrscs", + 2265, + "tntscp", + 3078, + "tntscpbl", + 4508, + "tob", + 7553, + "tomint", + 38, + "topg", + 145, + "tos", + 53266, + "tosga", + 6015, + "tossq", + 8566, + "toz", + 3825, + "tpf", + 116, + "tr", + 327, + "tran", + 22549, + "treeFrac", + 16575, + "treeFracBdlDcd", + 11575, + "treeFracBdlEvg", + 11513, + "treeFracNdlDcd", + 11510, + "treeFracNdlEvg", + 11566, + "treeFracPrimDec", + 3231, + "treeFracPrimEver", + 3232, + "tropoz", + 1430, + "ts", + 66776, + "tsIs", + 164, + "tsl", + 34575, + "tsland", + 59, + "tslsi", + 4918, + "tslsiLut", + 388, + "tsn", + 6019, + "tsnIs", + 132, + "tsnl", + 16, + "tsns", + 50, + "ttop", + 2228, + "twap", + 79, + "tws", + 5, + "u2", + 88, + "ua", + 133180, + "ua10", + 5877, + "ua100m", + 7, + "ua27", + 2, + "uas", + 81487, + "umo", + 12787, + "uo", + 31181, + "uqint", + 179, + "ut", + 32, + "utendepfd", + 23750, + "utendnogw", + 4727, + "utendogw", + 12802, + "utendvtem", + 6051, + "utendwtem", + 6048, + "uv", + 30, + "uwap", + 22, + "v2", + 87, + "va", + 113666, + "va100m", + 7, + "va27", + 2, + "vas", + 81996, + "vegFrac", + 16388, + "vegHeight", + 2853, + "vegHeightCrop", + 391, + "vegHeightGrass", + 391, + "vegHeightPasture", + 119, + "vegHeightShrub", + 387, + "vegHeightTree", + 386, + "vmo", + 12699, + "vmrox", + 138, + "vo", + 31111, + "volcello", + 15449, + "volo", + 8435, + "vqint", + 179, + "vsf", + 2775, + "vsfcorr", + 21, + "vsfevap", + 384, + "vsfpr", + 392, + "vsfriver", + 388, + "vsfsit", + 919, + "vt", + 31, + "vt100", + 3791, + "vtem", + 23851, + "vtendnogw", + 443, + "vtendogw", + 3695, + "vwap", + 22, + "wa", + 1339, + "wap", + 87622, + "wap2", + 22, + "wap500", + 5686, + "wbptemp", + 22, + "wbptemp7h", + 6, + "wetbc", + 7266, + "wetdust", + 7316, + "wetlandCH4", + 1831, + "wetlandCH4cons", + 251, + "wetlandCH4prod", + 4267, + "wetlandFrac", + 12396, + "wetnh3", + 777, + "wetnh4", + 810, + "wetnoy", + 1375, + "wetoa", + 3292, + "wetso2", + 8567, + "wetso4", + 7534, + "wetss", + 3420, + "wfcorr", + 616, + "wfo", + 16465, + "wfonocorr", + 2227, + "wilt", + 45, + "wmo", + 11638, + "wo", + 18586, + "wsgmax10m", + 7, + "wtd", + 3304, + "wtem", + 22576, + "xgwdparam", + 7, + "xvelbase", + 2, + "xvelmean", + 2, + "xvelsurf", + 2, + "ygwdparam", + 7, + "yvelbase", + 2, + "yvelmean", + 2, + "yvelsurf", + 2, + "zfull", + 5276, + "zfullo", + 516, + "zg", + 104113, + "zg10", + 5901, + "zg100", + 4627, + "zg1000", + 9756, + "zg500", + 25440, + "zg7h", + 4, + "zhalf", + 39, + "zhalfo", + 708, + "zmeso", + 2741, + "zmesoos", + 198, + "zmicro", + 2768, + "zmicroos", + 198, + "zmla", + 1086, + "zmtnt", + 260, + "zo2min", + 11826, + "zooc", + 23343, + "zoocos", + 5794, + "zos", + 37480, + "zossq", + 18219, + "zostoga", + 14900, + "zsatarag", + 1030, + "zsatcalc", + 1474, + "ztp", + 7557, + "zvelbase", + 2, + "zvelsurf", + 2 + ], + "cf_standard_name": [ + "3d-field_of_transported_co2", + 23, + "3d_field_of_transported_co2", + 92, + "Atlantic Meridional Overturning Circulation at 26.5N", + 1, + "CO2_3D_tracer", + 34, + "Carbon_flux_out_of_storage_product_pools_into_atmos", + 19, + "Meridional Overturning Circulation at 34S", + 1, + "abiotic_carbonate_ion_concentration", + 134, + "abiotic_delta_pco_partial_pressure", + 157, + "abiotic_dissolved_inorganic_carbon-14_concentration", + 548, + "abiotic_dissolved_inorganic_carbon_concentration", + 5034, + "abiotic_ph", + 164, + "abiotic_surface_aqueous_partial_pressure_of_co2", + 3006, + "aerodynamic_resistance", + 152, + "aerosol_extinction_coefficient", + 1259, + "aerosol_number_concentration", + 840, + "aerosol_optical_depth_at_550_nm_due_to_stratospheric_volcanic_aerosols", + 169, + "aerosol_sulfate_mass_mixing_ratio", + 2274, + "aerosol_water_aod@550nm", + 756, + "aerosol_water_mass_mixing_ratio", + 952, + "age_of_sea_ice", + 5124, + "age_of_stratospheric_air", + 776, + "age_of_surface_snow", + 3368, + "air_pressure", + 13094, + "air_pressure_at_cloud_top", + 9939, + "air_pressure_at_convective_cloud_base", + 13752, + "air_pressure_at_convective_cloud_top", + 15216, + "air_pressure_at_mean_sea_level", + 58297, + "air_pressure_at_sea_level", + 4307, + "air_temperature", + 450098, + "air_temperature_at_cloud_top", + 2228, + "all-sky_surface_longwave_radiative_flux_due_to_dust", + 40, + "all-sky_surface_shortwave_radiative_flux_due_to_dust", + 38, + "ambient_aerosol_absorption_optical_thickness_at_550_nm", + 1803, + "ambient_aerosol_absorption_optical_thickness_at_550nm", + 5430, + "ambient_aerosol_optical_depth_at_870nm", + 764, + "ambient_aerosol_optical_thickness_at_440_nm", + 953, + "ambient_aerosol_optical_thickness_at_440nm", + 601, + "ambient_aerosol_optical_thickness_at_550_nm", + 3585, + "ambient_aerosol_optical_thickness_at_550nm", + 9599, + "ambient_aerosol_optical_thickness_at_870_nm", + 542, + "ambient_fine_aerosol_optical_depth_at_550nm", + 919, + "ambient_fine_mode_aerosol_optical_thickness_at_550_nm", + 953, + "anthropogenic_heat_flux_generated_from_non-renewable_human_primary_energy_consumption", + 14, + "aqueous-phase_production_rate_of_so4", + 1224, + "area_covered_by_floating_ice_shelves", + 2, + "area_covered_by_grounded_ice_sheet", + 2, + "area_fraction", + 278264, + "artificial_tracer_with_50_day_lifetime", + 112, + "atlantic_meridional_overturning_circulation", + 2, + "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol", + 1017, + "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol_particles", + 4427, + "atmosphere_boundary_layer_thickness", + 12302, + "atmosphere_cloud_condensed_water_content", + 2137, + "atmosphere_cloud_ice_content", + 2130, + "atmosphere_convective_cloud_condensed_water_content", + 19, + "atmosphere_downdraft_convective_mass_flux", + 546, + "atmosphere_eastward_stress_due_to_gravity_wave_drag", + 7, + "atmosphere_heat_diffusivity", + 1788, + "atmosphere_mass_content_of_black_carbon_dry_aerosol", + 40, + "atmosphere_mass_content_of_cloud_condensed_water", + 39724, + "atmosphere_mass_content_of_cloud_ice", + 39632, + "atmosphere_mass_content_of_cloud_liquid_water", + 10154, + "atmosphere_mass_content_of_convective_cloud_condensed_water", + 112, + "atmosphere_mass_content_of_convective_cloud_ice", + 30, + "atmosphere_mass_content_of_dust_dry_aerosol", + 636, + "atmosphere_mass_content_of_dust_dry_aerosol_particles", + 4548, + "atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles", + 2549, + "atmosphere_mass_content_of_nitrate_dry_aerosol", + 36, + "atmosphere_mass_content_of_nitrate_dry_aerosol_particles", + 2444, + "atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol", + 39, + "atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles", + 2501, + "atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol", + 38, + "atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_particles", + 2446, + "atmosphere_mass_content_of_sea_salt_dry_aerosol_particles", + 4659, + "atmosphere_mass_content_of_seasalt_dry_aerosol", + 624, + "atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol", + 1, + "atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_particles", + 3, + "atmosphere_mass_content_of_sulfate_dry_aerosol", + 623, + "atmosphere_mass_content_of_sulfate_dry_aerosol_particles", + 3238, + "atmosphere_mass_content_of_water_vapor", + 48639, + "atmosphere_mass_of_air_per_unit_area", + 1910, + "atmosphere_mass_of_carbon_dioxide", + 5343, + "atmosphere_momentum_diffusivity", + 1787, + "atmosphere_net_upward_convective_mass_flux", + 8124, + "atmosphere_net_upward_deep_convective_mass_flux", + 458, + "atmosphere_net_upward_shallow_convective_mass_flux", + 455, + "atmosphere_northward_stress_due_to_gravity_wave_drag", + 7, + "atmosphere_number_content_of_cloud_droplets", + 1873, + "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", + 10585, + "atmosphere_optical_thickness_due_to_black_carbon_ambient_aerosol", + 5629, + "atmosphere_optical_thickness_due_to_cloud", + 3660, + "atmosphere_optical_thickness_due_to_dust_ambient_aerosol", + 839, + "atmosphere_optical_thickness_due_to_dust_ambient_aerosol_particles", + 4092, + "atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol", + 1, + "atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol_particles", + 1923, + "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol", + 1627, + "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol_particles", + 3305, + "atmosphere_optical_thickness_due_to_pm1_ambient_aerosol", + 526, + "atmosphere_optical_thickness_due_to_pm1_ambient_aerosol_particles", + 1227, + "atmosphere_optical_thickness_due_to_sea_salt_ambient_aerosol_particles", + 3072, + "atmosphere_optical_thickness_due_to_seasalt_ambient_aerosol", + 835, + "atmosphere_optical_thickness_due_to_stratiform_cloud", + 4, + "atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", + 1, + "atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol_particles", + 3345, + "atmosphere_optical_thickness_due_to_water_in_ambient_aerosol", + 97, + "atmosphere_optical_thickness_due_to_water_in_ambient_aerosol_particles", + 1941, + "atmosphere_relative_vorticity", + 2067, + "atmosphere_transformed_eulerian_mean_meridional_overturning_mass_streamfunction", + 1775, + "atmosphere_updraft_convective_mass_flux", + 806, + "atmosphere_water_vapor_content", + 2359, + "autotrophic_respiration_on_grass_tiles", + 1056, + "autotrophic_respiration_on_grass_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 84, + "autotrophic_respiration_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 73, + "autotrophic_respiration_on_shrub_tiles", + 262, + "autotrophic_respiration_on_shrub_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 84, + "autotrophic_respiration_on_tree_tiles", + 1061, + "autotrophic_respiration_on_tree_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 84, + "average_normal_stress_in_sea_ice", + 1428, + "basal_downward_heat_flux_in_sea_ice", + 2293, + "basal_specific_mass_balance_flux_of_floating_ice_shelf", + 2, + "basal_specific_mass_balance_flux_of_grounded_ice_sheet", + 2, + "basal_temperature_of_floating_ice_shelf", + 2, + "basal_temperature_of_grounded_ice_sheet", + 2, + "bedrock_altitude", + 145, + "biological_nitrogen_fixation", + 1126, + "calipso_ice_cloud_fraction", + 13, + "calipso_ice_cloud_percentage", + 49, + "calipso_liquid_cloud_fraction", + 13, + "calipso_liquid_cloud_percentage", + 49, + "canopy_albedo", + 14, + "canopy_height", + 4527, + "canopy_snow_amount", + 287, + "canopy_temperature", + 59, + "canopy_water_amount", + 57, + "carbon-13_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land_[kgc_m-2_s-1]", + 59, + "carbon-13_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_on_land_[kgc_m-2_s-1]", + 59, + "carbon-13_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land_[kgc_m-2_s-1]", + 59, + "carbon-14_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land_[kgc_m-2_s-1]", + 59, + "carbon-14_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_on_land_[kgc_m-2_s-1]", + 59, + "carbon-14_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land_[kgc_m-2_s-1]", + 59, + "carbon_content_of_products_of_anthropogenic_land_use_change", + 501, + "carbon_harvested_due_to_land-use_or_land-cover_change_process_that_enters_anthropogenic_product_pools_on_tile", + 168, + "carbon_in_above_and_below-ground_litter_pools_on_land-use_tiles", + 284, + "carbon_in_above_and_belowground_litter_pools_on_land_use_tiles", + 64, + "carbon_in_soil_pool_on_land-use_tiles", + 283, + "carbon_in_soil_pool_on_land_use_tiles", + 71, + "carbon_mass_content_of_forestry_and_agricultural_products", + 4664, + "carbon_mass_flux_due_to_npp_allocation_to_leaf", + 5248, + "carbon_mass_flux_due_to_npp_allocation_to_roots", + 5251, + "carbon_mass_flux_due_to_npp_allocation_to_wood", + 5234, + "carbon_mass_flux_from_vegetation_into_atmosphere_due_to_co2_emission_from_all_fire", + 218, + "carbon_mass_flux_from_vegetation_into_atmosphere_due_to_co2_emission_from_all_fire_[kgc_m-2_s-1]", + 103, + "carbon_mass_flux_into_atmosphere_due_to_any_human_activity", + 57, + "carbon_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land", + 10196, + "carbon_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land_[kgc_m-2_s-1]", + 6256, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_fire_including_all_sources", + 109, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_fire_including_all_sources_[kgc_m-2_s-1]", + 102, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_natural_fire", + 152, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_natural_fire_[kgc_m-2_s-1]", + 2, + "carbon_mass_flux_into_atmosphere_due_to_co2_emissions_from_fire_resulting_from_all_sources_including_natural,_anthropogenic_and_land_use_change.", + 118, + "carbon_mass_flux_into_atmosphere_due_to_growth_autotrophic_respiration_on_land", + 4989, + "carbon_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_from_litter_on_land", + 1371, + "carbon_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_from_soil_on_land", + 1458, + "carbon_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_on_land", + 10248, + "carbon_mass_flux_into_atmosphere_due_to_maintenance_autotrophic_respiration_on_land", + 4993, + "carbon_mass_flux_into_atmosphere_due_to_maintenance_autotrophic_respiration_on_land_[kgc_m-2_s-1]", + 471, + "carbon_mass_flux_into_forestry_and_agricultural_products_due_to_anthropogenic_land_use_or_land_cover_change", + 4832, + "carbon_mass_flux_into_litter_and_soil_due_to_anthropogenic_land_use_or_land_cover_change", + 9, + "carbon_mass_flux_into_soil_and_litter_due_to_anthropogenic_land_use_or_land_cover_change", + 146, + "carbon_mass_flux_into_soil_from_litter", + 10728, + "carbon_mass_flux_into_soil_from_vegetation_excluding_litter", + 181, + "carbon_mass_flux_into_wood_and_agricultural_product_pools_due_to_anthropogenic_land_use_or_land_cover_change", + 11, + "carbon_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land", + 12925, + "carbon_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land_[kgc_m-2_s-1]", + 7444, + "carbon_mass_flux_out_of_atmosphere_due_to_net_primary_production_on_land", + 12855, + "carbon_mass_in_above-ground_litter", + 2469, + "carbon_mass_in_below-ground_litter", + 2536, + "carbon_mass_in_coarse_woody_debris", + 588, + "carbon_mass_in_each_model_soil_level_(summed_over_all_soil_carbon_pools_in_that_level)", + 138, + "carbon_mass_in_each_model_soil_pool_(summed_over_vertical_levels)", + 840, + "carbon_mass_in_fast_soil_pool", + 2063, + "carbon_mass_in_leaves", + 6121, + "carbon_mass_in_litter_on_grass_tiles", + 876, + "carbon_mass_in_litter_on_shrub_tiles", + 83, + "carbon_mass_in_litter_on_tree_tiles", + 876, + "carbon_mass_in_litter_pool", + 17375, + "carbon_mass_in_medium_soil_pool", + 2157, + "carbon_mass_in_model_soil_pool", + 14752, + "carbon_mass_in_other_living_compartments_on_land", + 690, + "carbon_mass_in_products_of_land-use_change", + 3203, + "carbon_mass_in_products_of_land_use_change", + 1613, + "carbon_mass_in_roots", + 6112, + "carbon_mass_in_slow_soil_pool", + 2092, + "carbon_mass_in_soil_on_grass_tiles", + 877, + "carbon_mass_in_soil_on_shrub_tiles", + 83, + "carbon_mass_in_soil_on_tree_tiles", + 876, + "carbon_mass_in_soil_pool", + 1800, + "carbon_mass_in_soil_pool_above_1m_depth", + 322, + "carbon_mass_in_stem", + 6166, + "carbon_mass_in_vegetation_components_other_than_leaves,_stems_and_roots", + 983, + "carbon_mass_in_wood", + 5089, + "carbon_transferred_directly_to_atmosphere_due_to_any_land-use_or_land-cover_change_activities", + 106, + "carbon_transferred_directly_to_atmosphere_due_to_any_land-use_or_land-cover_change_activities_[kgc_m-2_s-1]", + 65, + "carbon_transferred_directly_to_atmosphere_due_to_any_land-use_or_land-cover_change_activities_including_deforestation_or_agricultural_fire", + 154, + "carbon_transferred_to_soil_or_litter_pools_due_to_land-use_or_land-cover_change_processes_on_tile", + 334, + "carbonate_ion_concentration_for_sea_water_in_equilibrium_with_pure_calcite", + 467, + "cell_area", + 65763, + "cell_thickness", + 10398, + "ch3coch3_volume_mixing_ratio", + 656, + "change_in_groundwater", + 8, + "change_in_interception_storage", + 8, + "change_in_river_storage", + 8, + "change_in_snow/ice_cold_content", + 8, + "change_in_snow_water_equivalent", + 8, + "change_in_soil_moisture", + 8, + "change_in_surface_heat_storage", + 8, + "change_in_surface_water_storage", + 8, + "change_over_time_in_amount_of_ice_and_snow_on_land", + 15, + "change_over_time_in_canopy_water_amount", + 15, + "change_over_time_in_groundwater_amount", + 15, + "change_over_time_in_land_water_amount", + 15, + "change_over_time_in_mass_content_of_water_in_soil", + 15, + "change_over_time_in_river_water_amount", + 15, + "change_over_time_in_thermal_energy_content_of_ice_and_snow_on_land", + 15, + "change_over_time_in_thermal_energy_content_of_vegetation_and_litter_and_soil", + 15, + "chemical_production_of_dry_aerosol_secondary_organic_matter", + 562, + "clear-sky_surface_longwave_radiative_flux_due_to_dust", + 42, + "clear-sky_surface_shortwave_radiative_flux_due_to_dust", + 37, + "cloud-top_effective_droplet_radius", + 2, + "cloud-top_effective_droplet_radius_in_convective_cloud", + 5, + "cloud-top_effective_droplet_radius_in_stratiform_cloud", + 140, + "cloud_albedo", + 8517, + "cloud_area_fraction", + 104090, + "cloud_area_fraction_in_atmosphere_layer", + 48606, + "cloud_droplet_number_concentration_of_convective_cloud_tops", + 5, + "cloud_droplet_number_concentration_of_stratiform_cloud_tops", + 140, + "cloud_ice_mixing_ratio", + 70, + "cloud_liquid_water_mixing_ratio", + 70, + "compressive_strength_of_sea_ice", + 4698, + "concentration_of_dust", + 636, + "conductive_heat_flux_at_sea_ice_surface", + 543, + "convection_time_fraction", + 12404, + "convective_cloud_area_fraction", + 1954, + "convective_cloud_area_fraction_in_atmosphere_layer", + 844, + "convective_ice_water_path", + 83, + "convective_precipitation_flux", + 45785, + "convective_rainfall_flux", + 134, + "convective_snowfall_flux", + 106, + "coriolis_force_term_in_force_balance_(x-component)", + 1638, + "coriolis_force_term_in_force_balance_(y-component)", + 1638, + "covariance_over_longitude_of_northward_wind_and_air_temperature", + 308, + "decomposition_out_of_product_pools_to_co2_in_atmos", + 1923, + "decomposition_out_of_product_pools_to_co2_in_atmosphere", + 311, + "decomposition_out_of_product_pools_to_co2_in_atmosphere_as_carbon_mass_flux_[kgc_m-2_s-1]", + 143, + "deforested_biomass_into_product_pool_due_to_anthorpogenic_land_use_change", + 2, + "deforested_biomass_that_goes_into_product_pool_as_a_result_of_anthropogenic_land-use_change", + 4318, + "deforested_biomass_that_goes_into_product_pool_as_a_result_of_anthropogenic_land_use_change", + 1161, + "deforested_or_harvested_biomass_as_a_result_of_anthropogenic_land-use_or_change", + 425, + "depth_at_shallowest_isotherm_defined_by_soil_temperature", + 44, + "depth_at_shallowest_local_minimum_in_vertical_profile_of_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", + 11826, + "depth_below_geoid", + 1224, + "depth_integral_of_product_of_sea_water_density_and_conservative_temperature", + 8, + "depth_integral_of_product_of_sea_water_density_and_prognostic_salinity", + 3272, + "depth_of_frozen_soil", + 8, + "depth_of_isosurface_of_sea_water_potential_temperature", + 9828, + "depth_to_soil_thaw", + 23, + "dew_point_temperature", + 11012, + "dissolved_organic_carbon_content", + 581, + "dissolved_oxygen_concentration_at_saturation", + 783, + "divergence_of_sea_ice_velocity", + 7603, + "downward_heat_flux_at_ground_level_in_snow", + 15, + "downward_inorganic_carbon_flux_at_ocean_bottom", + 1500, + "downward_liquid_water_mass_flux_into_groundwater", + 52, + "downward_organic_carbon_flux_at_ocean_bottom", + 1890, + "downward_sea_ice_basal_salt_flux", + 12847, + "downward_x_stress_at_sea_water_surface", + 2689, + "downward_x_stress_correction_at_sea_water_surface", + 2, + "downward_y_stress_at_sea_water_surface", + 2688, + "downward_y_stress_correction_at_sea_water_surface", + 2, + "downwelling_longwave_flux_in_air", + 5997, + "downwelling_longwave_flux_in_air_assuming_clear_sky", + 5973, + "downwelling_shortwave_flux_in_air", + 6082, + "downwelling_shortwave_flux_in_air_assuming_clear_sky", + 5716, + "downwelling_shortwave_flux_in_sea_water", + 5035, + "downwelling_shortwave_flux_in_sea_water_at_sea_ice_base", + 702, + "downwelling_shortwave_flux_under_sea_ice", + 927, + "dry_and_wet_deposition_of_reactive_nitrogen_onto_land", + 1134, + "dry_deposition_rate_of_black_carbon_aerosol_mass", + 5883, + "dry_deposition_rate_of_dry_aerosol_total_organic_matter", + 2087, + "dry_deposition_rate_of_dust", + 5980, + "dry_deposition_rate_of_nh3", + 158, + "dry_deposition_rate_of_nh4", + 502, + "dry_deposition_rate_of_noy", + 905, + "dry_deposition_rate_of_o3", + 636, + "dry_deposition_rate_of_sea-salt_aerosol", + 1035, + "dry_deposition_rate_of_seasalt", + 1271, + "dry_deposition_rate_of_so2", + 5678, + "dry_deposition_rate_of_so4", + 6037, + "dust_aerosol_mass_mixing_ratio", + 2338, + "dust_aod@550nm", + 1774, + "dust_optical_depth_at_865nm", + 58, + "dust_optical_thickness_at_550nm", + 4768, + "eastward_atmosphere_dry_static_energy_transport_across_unit_distance", + 4673, + "eastward_atmosphere_water_transport_across_unit_distance", + 6232, + "eastward_humidity_transport", + 38, + "eastward_surface_stress_from_planetary_boundary_layer_scheme", + 242, + "eastward_wind", + 220552, + "effective_radius_of_cloud_liquid_water_particle_at_liquid_water_cloud_top", + 3646, + "effective_radius_of_cloud_liquid_water_particles_at_liquid_water_cloud_top", + 249, + "effective_radius_of_convective_cloud_ice_particle", + 565, + "effective_radius_of_convective_cloud_liquid_water_particle", + 565, + "effective_radius_of_convective_cloud_liquid_water_particle_at_convective_liquid_water_cloud_top", + 49, + "effective_radius_of_stratiform_cloud_ice_particle", + 711, + "effective_radius_of_stratiform_cloud_ice_particles", + 4, + "effective_radius_of_stratiform_cloud_liquid_water_particle", + 920, + "effective_radius_of_stratiform_cloud_liquid_water_particle_at_stratiform_liquid_water_cloud_top", + 62, + "effective_radius_of_stratiform_cloud_liquid_water_particles", + 9, + "effective_radius_of_stratiform_cloud_liquid_water_particles_at_stratiform_liquid_water_cloud_top", + 1, + "elemental_carbon_mass_mixing_ratio", + 2554, + "emission_rate_of_black_carbon_aerosol_mass", + 520, + "energy_of_sublimation", + 23, + "epfy", + 201, + "epfz", + 202, + "equivalent_thickness_at_stp_of_atmosphere_ozone_content", + 5255, + "evaporation", + 323, + "evaporation_including_sublimation_and_transpiration", + 28543, + "evaporation_including_sublimation_and_transpiration_", + 18, + "evs", + 16, + "fast_soil_pool_carbon_content", + 442, + "fast_soil_pool_mass_content_of_carbon", + 6257, + "field_capacity", + 2, + "fire_CO2_emissions_from_all_sources", + 1, + "fire_CO2_emissions_from_vegetation_carbon", + 1, + "fire_CO2_emissions_from_wildfire", + 1, + "floating_ice_shelf_area_percentage", + 2, + "flux_from_wood_and_agricultural_product_pools_on_land_use_tile_into_atmosphere", + 169, + "flux_of_inorganic_carbon_into_ocean_surface_by_runoff", + 424, + "flux_of_organic_carbon_into_ocean_surface_by_runoff", + 410, + "fraction_of_land_use_tile_tile_that_is_non-woody_vegetation_(_e.g._herbaceous_crops)", + 35, + "fraction_of_rainfall_on_snow.", + 7, + "fraction_of_snowfall_on_snow.", + 7, + "fraction_of_time_steps_with_sea_ice", + 15866, + "fraction_of_time_with_sea_ice_area_fraction_above_threshold", + 6887, + "frequency_of_lightning_flashes_per_unit_area", + 23, + "freshwater_flux_from_ice_surface", + 29, + "freshwater_flux_from_sea-ice_surface", + 1608, + "freshwater_flux_from_sea_ice", + 315, + "frozen_moisture_content_of_soil_layer", + 4, + "frozen_soil_depth", + 7, + "frozen_water_content_of_soil_layer", + 14737, + "frozen_water_in_soil", + 7, + "gas-phase_production_rate_of_so4", + 1228, + "geopotential_height", + 149840, + "geothermal_heat_flux_beneath_land_ice", + 137, + "global_average_sea_water_conservative_temperature", + 1550, + "global_average_thermosteric_sea_level_change", + 14900, + "grid_averaged_methane_consumption_(methanotrophy)_from_wetlands", + 215, + "grid_averaged_methane_emissions_from_wetlands", + 339, + "grid_averaged_methane_production_(methanogenesis)_from_wetlands", + 4094, + "gross_primary_production_on_grass_tiles", + 1392, + "gross_primary_production_on_grass_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 80, + "gross_primary_production_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 72, + "gross_primary_production_on_shrub_tiles", + 233, + "gross_primary_production_on_shrub_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 80, + "gross_primary_production_on_tree_tiles", + 1393, + "gross_primary_production_on_tree_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 80, + "gross_primary_productivity_of_biomass_expressed_as_13C", + 12, + "gross_primary_productivity_of_biomass_expressed_as_14C", + 11, + "gross_primary_productivity_of_biomass_expressed_as_carbon", + 18639, + "gross_primary_productivity_on_land-use_tile", + 227, + "gross_primary_productivity_on_land_use_tile", + 924, + "ground_surface_temperature", + 4, + "grounded_ice_sheet_area_fraction", + 10446, + "grounded_ice_sheet_area_percentage", + 53, + "groundwater intake", + 46, + "groundwater_intake", + 53, + "groundwater_recharge_from_soil_layer", + 16, + "growth_limitation_of_calcareous_phytoplankton_due_to_solar_irradiance", + 7, + "growth_limitation_of_diatoms_due_to_solar_irradiance", + 784, + "growth_limitation_of_diazotrophs_due_to_solar_irradiance", + 29, + "growth_limitation_of_miscellaneous_phytoplankton_due_to_solar_irradiance", + 945, + "growth_limitation_of_picophytoplankton_due_to_solar_irradiance", + 22, + "harvested_biomass_into_product_pool", + 1, + "harvested_biomass_that_goes_into_product_pool", + 1090, + "heat_content_of_ocean_layer", + 25, + "heat_content_of_upper_300_meters", + 554, + "heat_flux_correction", + 2057, + "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", + 4986, + "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", + 1366, + "heat_flux_into_sea_water_due_to_snow_thermodynamics", + 446, + "height_above_reference_ellipsoid", + 5315, + "heterotrophic_respiration_carbon_flux", + 1459, + "heterotrophic_respiration_carbon_flux_from_litter", + 1, + "heterotrophic_respiration_carbon_flux_from_soil", + 1, + "heterotrophic_respiration_on_grass_tiles", + 876, + "heterotrophic_respiration_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 77, + "heterotrophic_respiration_on_shrub_tiles", + 83, + "heterotrophic_respiration_on_tree_tiles", + 876, + "histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid", + 51, + "histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid", + 47, + "hydrometeor_effective_radius_of_stratiform_cloud_ice", + 4, + "ice_cloud_area_fraction", + 1133, + "ice_cloud_area_fraction_in_atmosphere_layer", + 18, + "ice_sheet_mass", + 2, + "ice_sheet_mass_that_does_not_displace_sea_water", + 2, + "ice_sheet_surface_ice_melt_flux", + 131, + "ice_sheet_surface_mass_balance_flux", + 1070, + "ice_sheet_surface_snow_and_ice_sublimation_flux", + 133, + "ice_sheet_temperature_at_top_of_ice_sheet_model", + 133, + "incoming_water_volume_transport_along_river_channel", + 8, + "integral_of_product_of_eastward_wind_and_specific_humidity_wrt_height", + 2, + "integral_of_product_of_northward_wind_and_specific_humidity_wrt_height", + 2, + "integral_of_sea_ice_temperature_wrt_depth_expressed_as_heat_content", + 1836, + "integral_with_respect_to_depth_of_product_of_sea_water_density_and_potential_temperature", + 3168, + "integral_wrt_depth_of_product_of_potential_temperature_and_sea_water_density", + 102, + "integral_wrt_depth_of_product_of_salinity_and_sea_water_density", + 102, + "integral_wrt_depth_of_product_of_sea_water_density_and_conservative_temperature", + 5, + "integral_wrt_depth_of_product_of_sea_water_density_and_potential_temperature", + 879, + "integral_wrt_depth_of_product_of_sea_water_density_and_prognostic_temperature", + 38, + "integral_wrt_depth_of_product_of_sea_water_density_and_salinity", + 1088, + "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent", + 736, + "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", + 2188, + "integral_wrt_height_of_product_of_eastward_wind_and_specific_humidity", + 27, + "integral_wrt_height_of_product_of_northward_wind_and_specific_humidity", + 27, + "integrated_eastward_wind_times_humidity", + 112, + "integrated_northward_wind_times_humidity", + 112, + "internal_ice_heat_content", + 9, + "internal_stress_term_in_force_balance_(x-component)", + 1602, + "internal_stress_term_in_force_balance_(y-component)", + 1608, + "iron_growth_limitation_of_calcareous_phytoplankton", + 7, + "iron_growth_limitation_of_diatoms", + 794, + "iron_growth_limitation_of_diazotrophs", + 264, + "iron_growth_limitation_of_miscellaneous_phytoplankton", + 865, + "iron_growth_limitation_of_picophytoplankton", + 22, + "iron_limitation_of_calcareous_phytoplankton", + 40, + "iron_limitation_of_diatoms", + 1649, + "iron_limitation_of_diazotrophs", + 500, + "iron_limitation_of_other_phytoplankton", + 3955, + "iron_limitation_of_picophytoplankton", + 357, + "iron_loss_to_sediments", + 1702, + "irradiance_limitation_of_calcareous_phytoplankton", + 40, + "irradiance_limitation_of_diatoms", + 1603, + "irradiance_limitation_of_diazotrophs", + 401, + "irradiance_limitation_of_other_phytoplankton", + 3778, + "irradiance_limitation_of_picophytoplankton", + 363, + "irrigation_flux_including_any_irrigation_for_crops,_trees,_pasture,_or_urban_lawns", + 172, + "lagrangian_tendency_of_air_pressure", + 93307, + "land_area_fraction", + 31255, + "land_ice_area_fraction", + 20995, + "land_ice_basal_drag", + 2, + "land_ice_basal_x_velocity", + 2, + "land_ice_basal_y_velocity", + 2, + "land_ice_calving_flux", + 2, + "land_ice_runoff_flux", + 278, + "land_ice_surface_melt_flux", + 30, + "land_ice_surface_specific_mass_balance_flux", + 550, + "land_ice_thickness", + 145, + "land_ice_vertical_mean_x_velocity", + 2, + "land_ice_vertical_mean_y_velocity", + 2, + "land_surface_liquid_water_amount", + 16, + "land_water_amount", + 4930, + "large_scale_rainfall_flux", + 2, + "large_scale_snowfall_flux", + 2, + "lateral_sea_ice_melt_rate", + 1988, + "lateral_transfer_of_carbon_out_of_grid_cell_that_eventually_goes_into_ocean", + 261, + "lateral_transfer_of_nitrogen_out_of_grid_cell_that_eventually_goes_into_ocean", + 14, + "latitude", + 1, + "leaf_area_index", + 35476, + "leaf_area_index_on_land_use_tile", + 34, + "leaf_carbon_content", + 513, + "leaf_mass_content_of_carbon", + 6354, + "leaf_mass_content_of_nitrogen", + 1616, + "lightning_flash_rate", + 648, + "liquid_cloud_area_fraction_in_atmosphere_layer", + 2, + "liquid_moisture_content_of_soil_layer", + 4, + "liquid_water_cloud_area_fraction", + 1133, + "liquid_water_cloud_area_fraction_in_atmosphere_layer", + 16, + "liquid_water_content_of_permafrost_layer", + 24, + "liquid_water_content_of_snow_layer", + 461, + "liquid_water_content_of_soil_layer", + 25259, + "liquid_water_content_of_surface_snow", + 21663, + "litter_carbon_content", + 1242, + "litter_carbon_flux", + 441, + "litter_mass_content_of_13C", + 9, + "litter_mass_content_of_14C", + 9, + "litter_mass_content_of_carbon", + 15068, + "litter_mass_content_of_nitrogen", + 2882, + "load_of_black_carbon_aerosol", + 493, + "load_of_dry_aerosol_organic_matter", + 384, + "load_of_dry_aerosol_primary_organic_matter", + 205, + "load_of_dry_aerosol_secondary_organic_matter", + 127, + "load_of_dust", + 1982, + "load_of_no3", + 78, + "load_of_sea-salt_aerosol", + 4512, + "load_of_seasalt", + 958, + "load_of_so4", + 5449, + "longitude", + 1, + "longwave_flux_due_to_volcanic_aerosols_at_the_surface", + 57, + "longwave_flux_due_to_volcanic_aerosols_at_toa_under_clear_sky", + 169, + "lwe_thickness_of_surface_snow_amount", + 406, + "magnitude_of_surface_downward_stress", + 25, + "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", + 94, + "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", + 13534, + "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", + 10369, + "mass_concentration_of_dust_dry_aerosol_in_air", + 925, + "mass_concentration_of_dust_dry_aerosol_particles_in_air", + 3043, + "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", + 4250, + "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", + 41461, + "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", + 9290, + "mass_concentration_of_sea_salt_dry_aerosol_particles_in_air", + 2771, + "mass_concentration_of_seasalt_dry_aerosol_in_air", + 922, + "mass_concentration_of_sulfate_dry_aerosol_in_air", + 921, + "mass_concentration_of_sulfate_dry_aerosol_particles_in_air", + 2754, + "mass_content_of_13C_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 9, + "mass_content_of_14C_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 9, + "mass_content_of_carbon_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 6778, + "mass_content_of_nitrogen_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 2933, + "mass_content_of_water_in_soil", + 18890, + "mass_content_of_water_in_soil_layer", + 30537, + "mass_content_of_water_in_soil_layer_defined_by_root_depth", + 314, + "mass_flux_of_13c_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land", + 90, + "mass_flux_of_13c_into_atmosphere_due_to_heterotrophic_respiration_on_land", + 89, + "mass_flux_of_13c_out_of_atmosphere_due_to_gross_primary_production_on_land", + 97, + "mass_flux_of_14c_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land", + 91, + "mass_flux_of_14c_into_atmosphere_due_to_heterotrophic_respiration_on_land", + 89, + "mass_flux_of_14c_out_of_atmosphere_due_to_gross_primary_production_on_land", + 98, + "mass_flux_of_carbon_into_forestry_and_agricultural_products_due_to_crop_harvesting", + 4356, + "mass_flux_of_carbon_into_litter_from_vegetation", + 5979, + "mass_flux_of_carbon_into_litter_from_vegetation_due_to_mortality", + 216, + "mass_flux_of_carbon_into_litter_from_vegetation_due_to_senescence", + 1884, + "mass_flux_of_carbon_into_sea_water_from_rivers", + 146, + "mass_flux_of_carbon_out_of_soil_due_to_leaching_and_runoff", + 2593, + "mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_into_sea_from_rivers", + 146, + "mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_out_of_litter_and_soil_due_to_immobilisation_and_remineralization", + 2921, + "mass_fraction_of_ammonium_dry_aerosol_particles_in_air", + 285, + "mass_fraction_of_carbon_dioxide_tracer_in_air", + 96, + "mass_fraction_of_cloud_ice_in_air", + 14647, + "mass_fraction_of_cloud_liquid_water_in_air", + 14660, + "mass_fraction_of_convective_cloud_ice_in_air", + 366, + "mass_fraction_of_convective_cloud_liquid_water_in_air", + 371, + "mass_fraction_of_dust_dry_aerosol_particles_in_air", + 2434, + "mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air", + 2641, + "mass_fraction_of_frozen_water_in_soil_moisture", + 54, + "mass_fraction_of_liquid_precipitation_in_air", + 2, + "mass_fraction_of_nitrate_dry_aerosol_particles_in_air", + 509, + "mass_fraction_of_particulate_organic_matter_dry_aerosol_particles_in_air", + 2387, + "mass_fraction_of_pm10_ambient_aerosol_particles_in_air", + 443, + "mass_fraction_of_pm1_dry_aerosol_particles_in_air", + 528, + "mass_fraction_of_pm2p5_dry_aerosol_particles_in_air", + 860, + "mass_fraction_of_rain_in_air", + 50, + "mass_fraction_of_rainfall_falling_onto_surface_snow", + 8, + "mass_fraction_of_sea_salt_dry_aerosol_particles_in_air", + 2222, + "mass_fraction_of_seasalt_dry_aerosol_particles_in_air", + 427, + "mass_fraction_of_secondary_particulate_organic_matter_dry_aerosol_particles_in_air", + 1617, + "mass_fraction_of_snow_in_air", + 73, + "mass_fraction_of_solid_precipitation_falling_onto_surface_snow", + 8, + "mass_fraction_of_stratiform_cloud_ice_in_air", + 332, + "mass_fraction_of_stratiform_cloud_liquid_water_in_air", + 340, + "mass_fraction_of_sulfate_dry_aerosol_in_air", + 558, + "mass_fraction_of_sulfate_dry_aerosol_particles_in_air", + 2438, + "mass_fraction_of_unfrozen_water_in_soil_moisture", + 54, + "mass_fraction_of_water_in_air", + 1953, + "mass_fraction_of_water_in_ambient_aerosol_particles_in_air", + 732, + "mass_of_13c_in_all_terrestrial_carbon_pools", + 149, + "mass_of_13c_in_litter_pool", + 148, + "mass_of_13c_in_soil_pool", + 150, + "mass_of_13c_in_vegetation", + 160, + "mass_of_14c_in_all_terrestrial_carbon_pools", + 148, + "mass_of_14c_in_litter_pool", + 152, + "mass_of_14c_in_soil_pool", + 149, + "mass_of_14c_in_vegetation", + 156, + "mass_of_salt_in_sea_ice_per_area", + 6564, + "maximum_over_coordinate_rotation_of_sea_ice_horizontal_shear_strain_rate", + 349, + "maximum_over_coordinate_rotation_of_sea_ice_horizontal_shear_stress", + 197, + "maximum_shear_of_sea-ice_velocity_field", + 6147, + "maximum_shear_stress_in_sea_ice", + 1433, + "medium_soil_pool_carbon_content", + 441, + "medium_soil_pool_mass_content_of_carbon", + 6097, + "meltpond_mass_per_unit_area", + 940, + "meridional_overturning_circulation_at_34s", + 2, + "meridional_streamfunction_transformed_eulerian_mean", + 23, + "mineral_ammonium_in_the_soil", + 210, + "mineral_nitrate_in_the_soil", + 207, + "mineral_nitrogen_in_the_soil", + 1219, + "minimum_depth_of_aragonite_undersaturation_in_sea_water", + 1030, + "minimum_depth_of_calcite_undersaturation_in_sea_water", + 1474, + "minus_tendency_of_atmosphere_mass_content_of_ammonia_due_to_dry_deposition", + 75, + "minus_tendency_of_atmosphere_mass_content_of_ammonia_due_to_wet_deposition", + 72, + "minus_tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_dry_deposition", + 75, + "minus_tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_wet_deposition", + 77, + "minus_tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_deposition", + 392, + "minus_tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_dry_deposition", + 1136, + "minus_tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_wet_deposition", + 1123, + "minus_tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_dry_deposition", + 1218, + "minus_tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_wet_deposition", + 1198, + "minus_tendency_of_atmosphere_mass_content_of_insoluble_dust_dry_aerosol_particles_due_to_deposition", + 2, + "minus_tendency_of_atmosphere_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_deposition", + 2568, + "minus_tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_dry_deposition", + 233, + "minus_tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_wet_deposition", + 231, + "minus_tendency_of_atmosphere_mass_content_of_ozone_due_to_dry_deposition", + 292, + "minus_tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_dry_deposition", + 1045, + "minus_tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_wet_deposition", + 984, + "minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_dry_deposition", + 1054, + "minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_wet_deposition", + 960, + "minus_tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_dry_deposition", + 1218, + "minus_tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_wet_deposition", + 1287, + "minus_tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_dry_deposition", + 2455, + "minus_tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_wet_deposition", + 2428, + "minus_tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_denitrification_and_sedimentation", + 1244, + "minus_tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", + 1297, + "minus_tendency_of_ocean_mole_content_of_iron_due_to_sedimentation", + 1242, + "minus_tendency_of_ocean_mole_content_of_organic_carbon_due_to_sedimentation", + 1365, + "miscellaneous_living_matter_carbon_content", + 122, + "miscellaneous_living_matter_mass_content_of_carbon", + 6214, + "miscellaneous_living_matter_mass_content_of_nitrogen", + 89, + "modis_ice_cloud_area_percentage", + 33, + "modis_liquid_cloud_fraction", + 12, + "modis_liquid_cloud_percentage", + 49, + "moisture_content_of_soil_layer", + 4071, + "moisture_in_upper_portion_of_soil_column", + 28675, + "moisture_in_upper_portion_of_soil_column_of_land-use_tile", + 185, + "moisture_in_upper_portion_of_soil_column_of_land_use_tile", + 81, + "mole_concentration_of_ammonium_in_sea_water", + 12222, + "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", + 804, + "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", + 155, + "mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", + 94, + "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", + 4526, + "mole_concentration_of_carbonate_abiotic_analogue_expressed_as_carbon_in_sea_water", + 20, + "mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_aragonite_in_sea_water", + 1091, + "mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_calcite_in_sea_water", + 1988, + "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water", + 5736, + "mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_aragonite_in_sea_water", + 981, + "mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_calcite_in_sea_water", + 1808, + "mole_concentration_of_carbonate_natural_analogue_expressed_as_carbon_in_sea_water", + 749, + "mole_concentration_of_cfc-11_in_sea_water", + 8, + "mole_concentration_of_cfc-12_in_sea_water", + 8, + "mole_concentration_of_cfc11_in_sea_water", + 1186, + "mole_concentration_of_cfc12_in_sea_water", + 1178, + "mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", + 4274, + "mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", + 1704, + "mole_concentration_of_dimethyl_sulfide_in_sea_water", + 754, + "mole_concentration_of_dissolved_inorganic_14C_in_sea_water", + 111, + "mole_concentration_of_dissolved_inorganic_carbon_abiotic_analogue_in_sea_water", + 449, + "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", + 30878, + "mole_concentration_of_dissolved_inorganic_carbon_natural_analogue_in_sea_water", + 1880, + "mole_concentration_of_dissolved_inorganic_phosphorous_in_sea_water", + 1467, + "mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water", + 7393, + "mole_concentration_of_dissolved_inorganic_silicon_in_sea_water", + 5437, + "mole_concentration_of_dissolved_iron_in_sea_water", + 29285, + "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", + 42178, + "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", + 1972, + "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_shallowest_local_minimum_in_vertical_profile", + 10748, + "mole_concentration_of_dissolved_organic_carbon_in_sea_water", + 6328, + "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", + 2939, + "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", + 2966, + "mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", + 3346, + "mole_concentration_of_nitrate_in_sea_water", + 42849, + "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", + 14489, + "mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", + 3673, + "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", + 5764, + "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", + 7256, + "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", + 1836, + "mole_concentration_of_particulate_organic_matter_expressed_as_silicon_in_sea_water", + 1229, + "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", + 42276, + "mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", + 14732, + "mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", + 16734, + "mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", + 2143, + "mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", + 13244, + "mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", + 9321, + "mole_concentration_of_sf6_in_sea_water", + 1000, + "mole_concentration_of_sulfur_hexafluoride_in_sea_water", + 626, + "mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", + 29137, + "mole_fraction_of_acetone_in_air", + 333, + "mole_fraction_of_artificial_tracer_with_fixed_lifetime_in_air", + 6, + "mole_fraction_of_carbon_dioxide_in_air", + 11856, + "mole_fraction_of_carbon_monoxide_in_air", + 1613, + "mole_fraction_of_cfc113_in_air", + 60, + "mole_fraction_of_cfc11_in_air", + 2584, + "mole_fraction_of_cfc12_in_air", + 2582, + "mole_fraction_of_dimethyl_sulfide_in_air", + 4418, + "mole_fraction_of_ethane_in_air", + 993, + "mole_fraction_of_ethyne_in_air", + 75, + "mole_fraction_of_formaldehyde_in_air", + 1610, + "mole_fraction_of_hcfc22_in_air", + 60, + "mole_fraction_of_hydrogen_chloride_in_air", + 2467, + "mole_fraction_of_hydroperoxyl_radical_in_air", + 1089, + "mole_fraction_of_hydroxyl_radical_in_air", + 4242, + "mole_fraction_of_inorganic_bromine_in_air", + 963, + "mole_fraction_of_inorganic_chlorine_in_air", + 963, + "mole_fraction_of_isoprene_in_air", + 3682, + "mole_fraction_of_methane_in_air", + 10351, + "mole_fraction_of_nitric_acid_in_air", + 2651, + "mole_fraction_of_nitrogen_dioxide_in_air", + 1692, + "mole_fraction_of_nitrogen_monoxide_in_air", + 1622, + "mole_fraction_of_nitrous_oxide_in_air", + 10284, + "mole_fraction_of_noy_expressed_as_nitrogen_in_air", + 1094, + "mole_fraction_of_o_and_o3_and_o1d", + 46, + "mole_fraction_of_odd_oxygen_(o,_o3_and_o1d)", + 63, + "mole_fraction_of_ox_in_air", + 29, + "mole_fraction_of_ozone_in_air", + 16564, + "mole_fraction_of_peroxyacetyl_nitrate_in_air", + 1545, + "mole_fraction_of_propane_in_air", + 996, + "mole_fraction_of_propene_in_air", + 880, + "mole_fraction_of_sulfur_dioxide_in_air", + 4306, + "moles_per_unit_mass_of_cfc-11_in_sea_water", + 14, + "moles_per_unit_mass_of_cfc-12_in_sea_water", + 13, + "moles_per_unit_mass_of_sf6_in_sea_water", + 13, + "monthly_loss_of_atmospheric_carbon_monoxide", + 992, + "monthly_loss_of_atmospheric_methane", + 1038, + "monthly_loss_of_atmospheric_nitrous_oxide", + 605, + "natural_carbonate_ion_concentration", + 269, + "natural_delta_co2_partial_pressure_", + 323, + "natural_dissolved_inorganic_carbon_concentration", + 5461, + "natural_ph", + 313, + "natural_surface_aqueous_partial_pressure_of_co2", + 2906, + "natural_total_alkalinity", + 830, + "net_conductive_heat_flux_in_ice_at_the_surface", + 1253, + "net_conductive_heat_fluxes_in_ice_at_the_bottom", + 1893, + "net_downward_radiative_flux_at_top_of_atmosphere_model", + 41176, + "net_downward_shortwave_flux_at_sea_water_surface", + 16418, + "net_mass_flux_of_13c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes", + 45, + "net_mass_flux_of_13c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes_[kgc_m-2_s-1]", + 53, + "net_mass_flux_of_14c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes", + 47, + "net_mass_flux_of_14c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes_[kgc_m-2_s-1]", + 53, + "net_nitrogen_release_from_soil_and_litter_as_the_outcome_of_nitrogen_immobilisation_and_gross_mineralisation", + 1211, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_calcareous_phytoplankton", + 7, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diatoms", + 826, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diazotrophs", + 273, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_miscellaneous_phytoplankton", + 836, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_phytoplankton", + 4745, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_picophytoplankton", + 30, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_due_to_nitrate_utilization", + 752, + "net_primary_mole_productivity_of_carbon_by_calcareous_phytoplankton", + 40, + "net_primary_mole_productivity_of_carbon_by_diazotrophs", + 547, + "net_primary_mole_productivity_of_carbon_by_picophytoplankton", + 409, + "net_primary_organic_carbon_production_by_diatoms", + 1697, + "net_primary_organic_carbon_production_by_other_phytoplankton", + 1254, + "net_primary_production_allcoated_to_other_pools_(not_leaves_stem_or_roots)", + 734, + "net_primary_production_allcoated_to_stem", + 734, + "net_primary_production_allocated_to_leaves_as_carbon_mass_flux_[kgc_m-2_s-1]", + 489, + "net_primary_production_allocated_to_other_pools_(not_leaves_stem_or_roots)", + 108, + "net_primary_production_allocated_to_other_pools_(not_leaves_stem_or_roots)_as_carbon_mass_flux_[kgc_m-2_s-1]", + 103, + "net_primary_production_allocated_to_roots_as_carbon_mass_flux_[kgc_m-2_s-1]", + 495, + "net_primary_production_allocated_to_stem", + 3786, + "net_primary_production_allocated_to_stem_as_carbon_mass_flux_[kgc_m-2_s-1]", + 308, + "net_primary_production_allocated_to_wood_as_carbon_mass_flux_[kgc_m-2_s-1]", + 480, + "net_primary_production_on_grass_tiles", + 1422, + "net_primary_production_on_grass_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 89, + "net_primary_production_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 78, + "net_primary_production_on_land_as_carbon_mass_flux_[kgc_m-2_s-1]", + 7284, + "net_primary_production_on_shrub_tiles", + 263, + "net_primary_production_on_shrub_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 89, + "net_primary_production_on_tree_tiles", + 1420, + "net_primary_production_on_tree_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 89, + "net_primary_productivity_of_biomass_expressed_as_carbon", + 18402, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_leaves", + 5937, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_miscellaneous_living_matter", + 2355, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_roots", + 5933, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_stems", + 2490, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_wood", + 5751, + "net_primary_productivity_of_carbon_accumulated_in_leaves", + 126, + "net_primary_productivity_of_carbon_accumulated_in_roots", + 126, + "net_primary_productivity_of_carbon_accumulated_in_wood", + 124, + "net_primary_productivity_on_land-use_tile", + 225, + "net_primary_productivity_on_land_use_tile", + 929, + "net_rate_of_absorption_of_shortwave_energy_in_ocean_layer", + 3639, + "nh4_mass_mixing_ratio", + 490, + "nitrate_aod@550nm", + 1180, + "nitrogen_growth_limitation_of_calcareous_phytoplankton", + 7, + "nitrogen_growth_limitation_of_diatoms", + 792, + "nitrogen_growth_limitation_of_diazotrophs", + 8, + "nitrogen_growth_limitation_of_miscellaneous_phytoplankton", + 959, + "nitrogen_growth_limitation_of_picophytoplankton", + 22, + "nitrogen_limitation_of_calcareous_phytoplankton", + 40, + "nitrogen_limitation_of_diatoms", + 1654, + "nitrogen_limitation_of_diazotrophs", + 39, + "nitrogen_limitation_of_other_phytoplankton", + 3815, + "nitrogen_limitation_of_picophytoplankton", + 355, + "nitrogen_loss_to_sediments_and_through_denitrification", + 1707, + "nitrogen_mass_content_of_forestry_and_agricultural_products", + 1142, + "nitrogen_mass_flux_into_forestry_and_agricultural_products_due_to_anthropogenic_land_use_or_land_cover_change", + 1862, + "nitrogen_mass_flux_into_litter_from_vegetation", + 454, + "nitrogen_mass_flux_into_soil_from_litter", + 516, + "nitrogen_mass_flux_into_soil_from_vegetation_excluding_litter", + 48, + "nitrogen_mass_flux_out_of_land_due_to_any_human_activity", + 153, + "nitrogen_mass_in_coarse_woody_debris", + 210, + "nitrogen_mass_in_leaves", + 260, + "nitrogen_mass_in_litter_pool", + 1153, + "nitrogen_mass_in_products_of_land-use_change", + 393, + "nitrogen_mass_in_products_of_land_use_change", + 741, + "nitrogen_mass_in_roots", + 259, + "nitrogen_mass_in_soil_pool", + 1227, + "nitrogen_mass_in_stem", + 257, + "nitrogen_mass_in_vegetation", + 1213, + "nitrogen_production", + 492, + "no3_aerosol_mass_mixing_ratio", + 759, + "northward_acceleration_due_to_orographic_gravity_wave_drag", + 3141, + "northward_atmosphere_dry_static_energy_transport_across_unit_distance", + 4674, + "northward_atmosphere_water_transport_across_unit_distance", + 6218, + "northward_eddy_temperature_flux", + 586, + "northward_eliassen_palm_flux_in_air", + 23852, + "northward_heat_flux_in_air_due_to_eddy_advection", + 2897, + "northward_humidity_transport", + 38, + "northward_ocean_heat_transport", + 14356, + "northward_ocean_heat_transport_due_to_gyre", + 3105, + "northward_ocean_heat_transport_due_to_overturning", + 3097, + "northward_ocean_heat_transport_due_to_parameterized_eddy_advection", + 1901, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_advection", + 1037, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_diffusion", + 689, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_advection", + 1870, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_diffusion", + 1563, + "northward_ocean_heat_transport_due_to_parameterized_submesoscale_advection", + 9, + "northward_ocean_salt_transport", + 1702, + "northward_ocean_salt_transport_due_to_gyre", + 2680, + "northward_ocean_salt_transport_due_to_overturning", + 2650, + "northward_surface_stress_from_planetary_boundary_layer_scheme", + 244, + "northward_transformed_eulerian_mean_air_velocity", + 23851, + "northward_wind", + 195670, + "nudging_increment_in_mass_content_of_water_in_soil", + 17, + "nudging_increment_of_water_in_soil_moisture", + 8, + "nudging_increment_of_water_in_soil_mositure", + 1, + "number_concentration_coarse_mode_aerosol", + 286, + "number_concentration_of_ambient_aerosol_particles_in_air", + 335, + "number_concentration_of_cloud_condensation_nuclei_at_stp_in_air", + 1434, + "number_concentration_of_cloud_liquid_water_particles_in_air", + 6961, + "number_concentration_of_cloud_liquid_water_particles_in_air_at_liquid_water_cloud_top", + 1787, + "number_concentration_of_coarse_mode_ambient_aerosol_particles_in_air", + 100, + "number_concentration_of_convective_cloud_liquid_water_particle_at_convective_liquid_water_cloud_top", + 46, + "number_concentration_of_ice_crystals_in_air_at_ice_cloud_top", + 1682, + "number_concentration_of_nucleation_mode_aerosol", + 49, + "number_concentration_of_nucleation_mode_ambient_aerosol_particles_in_air", + 44, + "number_concentration_of_stratiform_cloud_liquid_water_particle_at_stratiform_liquid_water_cloud_top", + 62, + "number_concentration_of_stratiform_cloud_liquid_water_particles_at_stratiform_liquid_water_cloud_top", + 1, + "o3_destruction_rate", + 1030, + "o3_production_rate", + 1037, + "obvfsq", + 1, + "ocean_barotropic_mass_streamfunction", + 12208, + "ocean_drag_coefficient", + 397, + "ocean_heat_x_transport", + 5289, + "ocean_heat_y_transport", + 5171, + "ocean_kinetic_energy_dissipation_per_unit_area_due_to_vertical_friction", + 112, + "ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction", + 471, + "ocean_mass_content_of_dissolved_inorganic_carbon", + 12501, + "ocean_mass_content_of_dissolved_organic_carbon", + 655, + "ocean_mass_content_of_particulate_organic_matter_expressed_as_carbon", + 937, + "ocean_mass_x_transport", + 12787, + "ocean_mass_y_transport", + 12699, + "ocean_meridional_overturning_mass_streamfunction", + 19643, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", + 5681, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", + 1992, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", + 223, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_eddy_advection", + 29, + "ocean_mixed_layer_thickness_defined_by_mixing_scheme", + 1295, + "ocean_mixed_layer_thickness_defined_by_sigma_t", + 37337, + "ocean_momentum_xy_biharmonic_diffusivity", + 28, + "ocean_momentum_xy_laplacian_diffusivity", + 358, + "ocean_tracer_bolus_laplacian_diffusivity", + 107, + "ocean_tracer_diffusivity_due_to_parameterized_mesoscale_advection", + 2620, + "ocean_tracer_epineutral_laplacian_diffusivity", + 790, + "ocean_tracer_laplacian_diffusivity_due_to_parameterized_mesoscale_eddy_advection", + 190, + "ocean_tracer_xy_laplacian_diffusivity", + 123, + "ocean_vertical_heat_diffusivity", + 4058, + "ocean_vertical_momentum_diffusivity", + 971, + "ocean_vertical_momentum_diffusivity_due_to_tides", + 122, + "ocean_vertical_salt_diffusivity", + 3403, + "ocean_vertical_tracer_diffusivity_due_to_tides", + 682, + "ocean_volume", + 15449, + "ocean_y_overturning_mass_streamfunction", + 7046, + "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", + 1566, + "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", + 750, + "ocean_y_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", + 1, + "open_water_evaporation", + 8, + "opottempmint", + 1, + "opottemptend", + 32, + "optical_thickness_at_443_nm_dust", + 12, + "optical_thickness_at_443nm_dust", + 58, + "optical_thickness_at_865_nm_dust", + 265, + "other_vegegtation_components_carbon_content", + 35, + "outgoing_water_volume_transport_along_river_channel", + 1035, + "particulate_organic_aerosol_optical_depth_at_550nm", + 204, + "particulate_organic_carbon_content", + 679, + "permafrost_layer_thickness", + 116, + "phosphorus_production", + 124, + "photolysis_rate_of_diatomic_molecular_oxygen", + 77, + "photolysis_rate_of_molecular_oxygen", + 12, + "photolysis_rate_of_nitrogen_dioxide", + 547, + "photolysis_rate_of_no2", + 974, + "photolysis_rate_of_o3_to_o1d", + 483, + "photolysis_rate_of_ozone", + 12, + "photolysis_rate_of_ozone_(o3)", + 77, + "photolysis_rate_of_ozone_(o3)_to_excited_atomic_oxygen_(the_singlet_d_state,_o1d)", + 540, + "photolysis_rate_of_ozone_to_1D_oxygen_atom", + 510, + "plant_respiration_carbon_flux", + 2705, + "plant_respiration_on_land-use_tile", + 189, + "plant_respiration_on_land_use_tile", + 892, + "pm1.0_mass_mixing_ratio", + 780, + "pm10_mass_mixing_ratio", + 949, + "pm2.5_mass_mixing_ratio", + 1525, + "pm2.5_mass_mixing_ratio_in_lowest_model_layer", + 283, + "precipitation_flux", + 119194, + "precipitation_flux_onto_canopy", + 20598, + "primary_emission_and_chemical_production_of_dry_aerosol_organic_matter", + 1170, + "primary_organic_carbon_production_by_all_types_of_phytoplankton", + 8353, + "primary_organic_carbon_production_by_phytoplankton_based_on_nitrate_uptake_alone", + 1591, + "product_of_air_temperature_and_omega", + 3, + "product_of_eastward_wind_and_air_temperature", + 32, + "product_of_eastward_wind_and_northward_wind", + 30, + "product_of_eastward_wind_and_omega", + 22, + "product_of_lagrangian_tendency_of_air_pressure_and_air_temperature", + 3, + "product_of_northward_wind_and_air_temperature", + 31, + "product_of_northward_wind_and_omega", + 22, + "product_of_omega_and_air_temperature", + 73, + "rainfall_flux", + 16807, + "region", + 12919, + "relative_humidity", + 145801, + "remineralization_of_organic_carbon", + 639, + "rendency_of_eastward_wind_due_to_tem_northward_advection_and_coriolis_term", + 11, + "rendency_of_eastward_wind_due_to_tem_upward_advection", + 10, + "river_discharge", + 623, + "river_inflow", + 7, + "root_carbon_content", + 513, + "root_depth", + 5760, + "root_mass_content_of_carbon", + 6534, + "root_mass_content_of_nitrogen", + 1906, + "root_zone_soil_moisture", + 48, + "runoff_flux", + 50568, + "salt_flux_into_sea_water_from_rivers", + 446, + "sand_fraction", + 21, + "saturated_hydraulic_conductivity", + 21, + "sea-ice_area_flux_through_straits", + 414, + "sea-ice_area_fractions_in_thickness_categories", + 297, + "sea-ice_heat_content_per_unit_area", + 1658, + "sea-ice_mass_change_from_dynamics", + 2109, + "sea-ice_mass_change_from_thermodynamics", + 2117, + "sea-ice_mass_change_through_evaporation_and_sublimation", + 1641, + "sea-ice_mass_change_through_growth_in_supercooled_open_water_(aka_frazil)", + 1248, + "sea-ice_mass_change_through_lateral_melting", + 9, + "sea-ice_mass_change_through_snow-to-ice_conversion", + 1760, + "sea-ice_thickness_in_thickness_categories", + 297, + "sea-salt_aerosol_mass_mixing_ratio", + 1142, + "sea-salt_aerosol_optical_depth_at_550nm", + 4439, + "sea-surface_tilt_term_in_force_balance_(x-component)", + 1487, + "sea-surface_tilt_term_in_force_balance_(y-component)", + 1496, + "sea_area_fraction", + 22007, + "sea_floor_depth_below_geoid", + 27114, + "sea_ice_amount", + 22373, + "sea_ice_area", + 16593, + "sea_ice_area_flux_through_straits", + 1072, + "sea_ice_area_fraction", + 71243, + "sea_ice_area_transport_across_line", + 841, + "sea_ice_average_normal_horizontal_stress", + 200, + "sea_ice_basal_drag_coefficient_for_momentum_in_sea_water", + 161, + "sea_ice_basal_net_downward_sensible_heat_flux", + 31, + "sea_ice_basal_temperature", + 2093, + "sea_ice_extent", + 16771, + "sea_ice_freeboard", + 4183, + "sea_ice_mass_content_of_salt", + 1225, + "sea_ice_melt_pond_thickness", + 590, + "sea_ice_salinity", + 1176, + "sea_ice_salt_content", + 2, + "sea_ice_salt_mass", + 6, + "sea_ice_speed", + 18095, + "sea_ice_surface_temperature", + 26690, + "sea_ice_temperature_expressed_as_heat_content", + 3144, + "sea_ice_thickness", + 51583, + "sea_ice_time_fraction", + 526, + "sea_ice_transport_across_line", + 2675, + "sea_ice_volume", + 17097, + "sea_ice_x_force_per_unit_area_due_to_coriolis_effect", + 1995, + "sea_ice_x_force_per_unit_area_due_to_sea_surface_tilt", + 1838, + "sea_ice_x_internal_stress", + 1998, + "sea_ice_x_transport", + 6030, + "sea_ice_x_velocity", + 29350, + "sea_ice_y_force_per_unit_area_due_to_coriolis_effect", + 2003, + "sea_ice_y_force_per_unit_area_due_to_sea_surface_tilt", + 1833, + "sea_ice_y_internal_stress", + 2001, + "sea_ice_y_transport", + 6035, + "sea_ice_y_velocity", + 29315, + "sea_level_pressure", + 56192, + "sea_level_pressure_", + 18, + "sea_salt_aod@550nm", + 1021, + "sea_salt_mass_mixing_ratio", + 1483, + "sea_surface_height_above_geoid", + 37480, + "sea_surface_salinity", + 46976, + "sea_surface_temperature", + 59281, + "sea_water_added_conservative_temperature", + 7, + "sea_water_added_potential_temperature", + 19, + "sea_water_additional_potential_temperature", + 42, + "sea_water_age_since_surface_contact", + 8202, + "sea_water_alkalinity_expressed_as_mole_equivalent", + 32756, + "sea_water_alkalinity_natural_analogue_expressed_as_mole_equivalent", + 986, + "sea_water_conservative_temperature", + 3635, + "sea_water_convervative_temperature", + 1588, + "sea_water_mass", + 5203, + "sea_water_mass_per_unit_area", + 8730, + "sea_water_ph_abiotic_analogue_reported_on_total_scale", + 58, + "sea_water_ph_natural_analogue_reported_on_total_scale", + 813, + "sea_water_ph_reported_on_total_scale", + 11701, + "sea_water_potential_temperature", + 75822, + "sea_water_potential_temperature_at_sea_floor", + 7552, + "sea_water_pressure_at_sea_floor", + 9454, + "sea_water_pressure_at_sea_water_surface", + 2588, + "sea_water_redistributed_conservative_temperature", + 7, + "sea_water_redistributed_potential_temperature", + 49, + "sea_water_resdistributed_potential_temperature", + 4, + "sea_water_salinity", + 51208, + "sea_water_salinity_at_sea_floor", + 7629, + "sea_water_surface_downward_x_stress", + 3494, + "sea_water_surface_downward_y_stress", + 3495, + "sea_water_transport_across_line", + 5071, + "sea_water_volume", + 8435, + "sea_water_x_velocity", + 31181, + "sea_water_y_velocity", + 31111, + "secondary_organic_aerosol_mass_mixing_ratio", + 404, + "sedimentation_flux_of_dust_mode_coarse_insoluble", + 13, + "shallow_convection_time_fraction", + 7367, + "shortwave_flux_due_to_volcanic_aerosols_at_toa_under_clear_sky", + 169, + "shortwave_heating_rate_due_to_volcanic_aerosols", + 1, + "sidmassevapsubl", + 16, + "sidmasssi", + 16, + "sidmassth", + 16, + "silt_fraction", + 2, + "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", + 452, + "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", + 13654, + "sinking_mole_flux_of_particulate_iron_in_sea_water", + 5173, + "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", + 24668, + "sinking_mole_flux_of_particulate_organic_nitrogen_in_sea_water", + 6490, + "sinking_mole_flux_of_particulate_organic_phosphorus_in_sea_water", + 1367, + "sinking_mole_flux_of_particulate_silicon_in_sea_water", + 6482, + "sitimefrac", + 25, + "slow_soil_pool_carbon_content", + 441, + "slow_soil_pool_mass_content_of_carbon", + 6226, + "snow_evaporation", + 3, + "snow_mass_flux_through_straits", + 1501, + "snow_mass_rate_of_change_through_advection_by_sea-ice_dynamics", + 571, + "snow_mass_rate_of_change_through_avection_by_sea-ice_dynamics", + 1087, + "snow_mass_rate_of_change_through_evaporation_or_sublimation", + 1509, + "snow_mass_rate_of_change_through_snow-to-ice_conversion", + 1670, + "snow_thickness_in_thickness_categories", + 297, + "snow_thickness_over_categories", + 1, + "snow_transport_across_line_due_to_sea_ice_dynamics", + 842, + "snow_water_equivalent_intercepted_by_the_vegetation", + 16, + "snow_water_equivalent_on_land_use_tile", + 1, + "snowfall_flux", + 79386, + "soa_aod@550nm", + 41, + "sob", + 1, + "soil_carbon_content", + 1632, + "soil_carbon_content_by_pool", + 1, + "soil_carbon_turnover_rate_by_pool", + 1, + "soil_frozen_water_content", + 32103, + "soil_heterotrophic_respiration_on_land-use_tile", + 187, + "soil_heterotrophic_respiration_on_land_use_tile", + 145, + "soil_hydraulic_conductivity_at_saturation", + 128, + "soil_liquid_water_content", + 66, + "soil_mass_content_of_13C", + 9, + "soil_mass_content_of_14C", + 9, + "soil_mass_content_of_carbon", + 16605, + "soil_mass_content_of_inorganic_ammonium_expressed_as_nitrogen", + 1447, + "soil_mass_content_of_inorganic_nitrate_expressed_as_nitrogen", + 1446, + "soil_mass_content_of_inorganic_nitrogen_expressed_as_nitrogen", + 2598, + "soil_mass_content_of_nitrogen", + 2927, + "soil_moisture_content", + 2510, + "soil_moisture_content_at_field_capacity", + 5960, + "soil_pool_carbon_decay_rate", + 24, + "soil_temperature", + 34575, + "solar_zenith_angle", + 31, + "somint", + 1, + "soot_content_of_surface_snow", + 2089, + "sossq", + 1, + "specific_humidity", + 183389, + "square_of_air_temperature", + 31, + "square_of_brunt_vaisala_frequency_in_sea_water", + 4928, + "square_of_eastward_wind", + 88, + "square_of_lagrangian_tendency_of_air_pressure", + 22, + "square_of_northward_wind", + 87, + "square_of_ocean_mixed_layer_thickness_defined_by_sigma_t", + 7038, + "square_of_sea_surface_height_above_geoid", + 18219, + "square_of_sea_surface_salinity", + 6189, + "square_of_sea_surface_temperature", + 8566, + "stem_carbon_content", + 36, + "stem_mass_content_of_carbon", + 10296, + "stem_mass_content_of_nitrogen", + 1907, + "strain_rate_(shear)", + 9, + "strat_aerosol_optical_depth", + 1, + "stratiform_cloud_area_fraction_in_atmosphere_layer", + 821, + "stratiform_cloud_liquid_droplet_effective_radius", + 7, + "stratiform_cloud_longwave_emissivity", + 4, + "stratiform_rainfall_flux", + 6, + "stratiform_snowfall_flux", + 6, + "stratosphere_optical_thickness_due_to_ambient_aerosol_particles", + 42, + "stratosphere_optical_thickness_due_to_volcanic_ambient_aerosol_particles", + 2517, + "stratospheric_optical_depth_at_550_nm_(all_aerosols)_2d-field_(here_we_limit_the_computation_of_od_to_the_stratosphere_only)", + 81, + "stratospheric_optical_depth_at_550nm_(all_aerosols)_2d-field_(stratosphere_only)", + 79, + "sublimation_of_the_snow_free_area", + 23, + "subsurface_litter_carbon_content", + 807, + "subsurface_litter_mass_content_of_carbon", + 5191, + "subsurface_litter_mass_content_of_nitrogen", + 89, + "subsurface_runoff_flux", + 198, + "sulfate_aerosol_optical_depth_at_550nm", + 970, + "sulfate_aod@550nm", + 2469, + "surface_abiotic_carbonate_ion_concentration", + 59, + "surface_abiotic_dissolved_inorganic_carbon-14_concentration", + 304, + "surface_abiotic_dissolved_inorganic_carbon_concentration", + 2893, + "surface_abiotic_ph", + 227, + "surface_air_pressure", + 78119, + "surface_albedo", + 40, + "surface_altitude", + 40209, + "surface_carbon_dioxide_abiotic_analogue_partial_pressure_difference_between_sea_water_and_air", + 168, + "surface_carbon_dioxide_natural_analogue_partial_pressure_difference_between_sea_water_and_air", + 717, + "surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air", + 3663, + "surface_concentration_of_dust", + 1860, + "surface_concentration_of_sea-salt_aerosol", + 522, + "surface_concentration_of_seasalt", + 1328, + "surface_concentration_of_so4", + 1852, + "surface_diffuse_downwelling_shortwave_flux_in_air", + 8988, + "surface_diffuse_downwelling_shortwave_flux_in_air_assuming_clear_sky", + 3947, + "surface_dissolved_oxygen_concentration_at_saturation", + 485, + "surface_downward_cfc11_flux", + 319, + "surface_downward_cfc12_flux", + 965, + "surface_downward_eastward_stress", + 55277, + "surface_downward_eastward_stress_due_to_boundary_layer_mixing", + 167, + "surface_downward_flux_of_abiotic_14co2", + 257, + "surface_downward_flux_of_abiotic_co2", + 5046, + "surface_downward_flux_of_natural_co2", + 5245, + "surface_downward_heat_flux_in_air", + 45, + "surface_downward_heat_flux_in_sea_water", + 32385, + "surface_downward_heat_flux_in_snow", + 6570, + "surface_downward_latent_heat_flux", + 2623, + "surface_downward_mass_flux_of_14C_dioxide_abiotic_analogue_expressed_as_carbon", + 70, + "surface_downward_mass_flux_of_carbon-14_as_abiotic_14co2_[kgc_m-2_s-1]", + 292, + "surface_downward_mass_flux_of_carbon_as_abiotic_co2_[kgc_m-2_s-1]", + 701, + "surface_downward_mass_flux_of_carbon_as_natural_co2_[kgc_m-2_s-1]", + 998, + "surface_downward_mass_flux_of_carbon_dioxide_abiotic_analogue_expressed_as_carbon", + 343, + "surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon", + 28887, + "surface_downward_mass_flux_of_carbon_dioxide_natural_analogue_expressed_as_carbon", + 1268, + "surface_downward_mass_flux_of_methane_due_to_wetland_biological_consumption", + 36, + "surface_downward_mass_flux_of_water_due_to_irrigation", + 119, + "surface_downward_mole_flux_of_cfc11", + 490, + "surface_downward_mole_flux_of_cfc12", + 571, + "surface_downward_mole_flux_of_molecular_oxygen", + 10386, + "surface_downward_mole_flux_of_sulfur_hexafluoride", + 498, + "surface_downward_northward_stress", + 55321, + "surface_downward_northward_stress_due_to_boundary_layer_mixing", + 166, + "surface_downward_sensible_heat_flux", + 6716, + "surface_downward_sf6_flux", + 874, + "surface_downward_x_stress", + 17080, + "surface_downward_x_stress_correction", + 12, + "surface_downward_y_stress", + 16967, + "surface_downward_y_stress_correction", + 12, + "surface_downwelling_longwave_flux_in_air", + 90479, + "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", + 46903, + "surface_downwelling_shortwave_flux_in_air", + 105577, + "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", + 55335, + "surface_drag_coefficient_for_momentum_in_air", + 1617, + "surface_evapotranspiration", + 8, + "surface_ice_melt_flux", + 254, + "surface_litter_carbon_content", + 490, + "surface_litter_mass_content_of_carbon", + 5206, + "surface_litter_mass_content_of_nitrogen", + 89, + "surface_mass_balance_flux", + 260, + "surface_mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_aragonite_in_sea_water", + 394, + "surface_mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_calcite_in_sea_water", + 440, + "surface_mole_concentration_of_particulate_organic_matter_expressed_as_silicon_in_sea_water", + 1333, + "surface_molecular_oxygen_partial_pressure_difference_between_sea_water_and_air", + 2228, + "surface_natural_carbonate_ion_concentration", + 125, + "surface_natural_dissolved_inorganic_carbon_concentration", + 3095, + "surface_natural_ph", + 464, + "surface_natural_total_alkalinity", + 323, + "surface_net_downward_longwave_dust_ambient_aerosol_particles_direct_radiative_effect", + 10, + "surface_net_downward_longwave_dust_ambient_aerosol_particles_direct_radiative_effect_assuming_clear_sky", + 8, + "surface_net_downward_longwave_flux", + 42040, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_13C_due_to_all_land_processes", + 9, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_14C_due_to_all_land_processes", + 9, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes", + 47389, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change", + 12516, + "surface_net_downward_shortwave_dust_ambient_aerosol_particles_direct_radiative_effect", + 12, + "surface_net_downward_shortwave_dust_ambient_aerosol_particles_direct_radiative_effect_assuming_clear_sky", + 13, + "surface_net_downward_shortwave_flux", + 39398, + "surface_net_longwave_flux_aerosol_free", + 4, + "surface_net_longwave_flux_aerosol_free_clear_sky", + 4, + "surface_net_shortwave_flux_aerosol_free", + 4, + "surface_net_shortwave_flux_aerosol_free_clear_sky", + 4, + "surface_net_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_anthropogenic_land_use_change", + 15320, + "surface_net_upward_mass_flux_of_methane_due_to_emission_from_wetland_biological_processes", + 1492, + "surface_partial_pressure_of_carbon_dioxide_in_sea_water", + 21582, + "surface_runoff_flux", + 29008, + "surface_snow_amount", + 35548, + "surface_snow_and_ice_melt_flux", + 417, + "surface_snow_and_ice_melt_heat_flux", + 49, + "surface_snow_and_ice_refreezing_flux", + 458, + "surface_snow_and_ice_sublimation_flux", + 16007, + "surface_snow_and_ice_sublimation_flux_", + 9, + "surface_snow_area_fraction", + 59016, + "surface_snow_melt_flux", + 22489, + "surface_snow_sublimation_flux", + 2, + "surface_snow_thickness", + 73650, + "surface_temperature", + 72751, + "surface_total_dissolved_inorganic_phosphorus_concentration", + 501, + "surface_total_dissolved_inorganic_silicon_concentration", + 9223, + "surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_growth", + 197, + "surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_maintenance", + 196, + "surface_upward_heat_flux_due_to_anthropogenic_energy_consumption", + 30, + "surface_upward_latent_heat_flux", + 99200, + "surface_upward_latent_heat_flux_due_to_sublimation", + 24, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_13C_due_to_heterotrophic_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_13C_due_to_plant_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_14C_due_to_heterotrophic_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_14C_due_to_plant_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_direct_to_atmosphere_due_to_anthropogenic_land_use_land_cover_change", + 11, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_anthrogpogenic_emission", + 2, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_land_use_or_land_cover_change_excluding_forestry_and_agricultural_products", + 148, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_crop_harvesting", + 10718, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fires", + 207, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fires_excluding_anthropogenic_land_use_change", + 4165, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_grazing", + 514, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_litter_in_fires", + 185, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_fires", + 1867, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", + 735, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_vegetation_in_fires", + 53, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_heterotrophic_respiration", + 15547, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration", + 15925, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_for_biomass_growth", + 5967, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_for_biomass_maintenance", + 5957, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_in_leaves", + 50, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_in_roots", + 52, + "surface_upward_mass_flux_of_carbon_due_to_heterotrophic_respiration_in_litter", + 2371, + "surface_upward_mass_flux_of_carbon_due_to_heterotrophic_respiration_in_soil", + 2630, + "surface_upward_mass_flux_of_methane_due_to_emission_from_wetland_biological_production", + 173, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen", + 2551, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_due_to_all_land_processes_excluding_fires", + 1735, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_due_to_emission_from_fires", + 2001, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_out_of_vegetation_and_litter_and_soil", + 2550, + "surface_upward_mass_flux_of_nitrous_oxide_expressed_as_nitrogen_out_of_vegetation_and_litter_and_soil", + 2034, + "surface_upward_mass_flux_of_nox_expressed_as_nitrogen_out_of_vegetation_and_litter_and_soil", + 1411, + "surface_upward_mole_flux_of_dimethyl_sulfide", + 530, + "surface_upward_sensible_heat_flux", + 100273, + "surface_upwelling_longwave_flux_in_air", + 70753, + "surface_upwelling_shortwave_flux_in_air", + 71111, + "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", + 36208, + "surface_water_evaporation_flux", + 15, + "surface_water_storage", + 12, + "temperature_at_ice-ocean_interface", + 1889, + "temperature_at_top_of_ice_sheet_model", + 288, + "temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water", + 3128, + "temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water", + 1740, + "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", + 1009, + "temperature_in_surface_snow", + 6167, + "temperature_tendency_due_to_dissipation_orographic_gravity_wave_drag", + 1, + "temperature_tendency_due_to_non-orographic_gravity_wave_dissipation", + 132, + "temperature_tendency_due_to_orographic_gravity_wave_dissipation", + 237, + "temperature_tendency_nonorographic_gravity_wave_dissipation", + 14, + "temperature_tendency_orographic_gravity_wave_dissipation", + 134, + "tendency_of_air_temperature", + 4242, + "tendency_of_air_temperature_due_to_advection", + 5089, + "tendency_of_air_temperature_due_to_boundary_layer_mixing", + 1046, + "tendency_of_air_temperature_due_to_convection", + 7434, + "tendency_of_air_temperature_due_to_diabatic_processes", + 260, + "tendency_of_air_temperature_due_to_diffusion", + 16, + "tendency_of_air_temperature_due_to_dissipation_of_nonorographic_gravity_waves", + 158, + "tendency_of_air_temperature_due_to_dissipation_of_orographic_gravity_waves", + 183, + "tendency_of_air_temperature_due_to_longwave_heating", + 3818, + "tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky", + 2270, + "tendency_of_air_temperature_due_to_model_physics", + 7438, + "tendency_of_air_temperature_due_to_numerical_diffusion", + 34, + "tendency_of_air_temperature_due_to_radiative_heating", + 4540, + "tendency_of_air_temperature_due_to_shortwave_heating", + 3413, + "tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky", + 2265, + "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation", + 815, + "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", + 4508, + "tendency_of_air_temperature_due_to_stratiform_clouds_and_precipitation", + 2263, + "tendency_of_atmosphere_mass_content_of_ammonia_due_to_dry_deposition", + 556, + "tendency_of_atmosphere_mass_content_of_ammonia_due_to_emission", + 721, + "tendency_of_atmosphere_mass_content_of_ammonia_due_to_wet_deposition", + 555, + "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_biogenic_nmvoc_expressed_as_carbon_due_to_emission", + 1732, + "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", + 3927, + "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_forestry_and_agricultural_products", + 3594, + "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", + 93, + "tendency_of_atmosphere_mass_content_of_carbon_monoxide_due_to_emission", + 2002, + "tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_emission", + 8374, + "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_emission", + 2714, + "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_emission", + 2297, + "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_isoprene_due_to_emission", + 2816, + "tendency_of_atmosphere_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_anthropogenic_emission", + 382, + "tendency_of_atmosphere_mass_content_of_nmvoc_due_to_emission", + 1881, + "tendency_of_atmosphere_mass_content_of_nox_expressed_as_nitrogen_due_to_emission", + 2042, + "tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_ozone_due_to_dry_deposition", + 556, + "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_net_chemical_production_and_emission", + 2396, + "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_emission", + 2235, + "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_emission", + 211, + "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_particles_due_to_net_chemical_production", + 428, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_aqueous_phase_net_chemical_production", + 684, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_dry_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_emission", + 2255, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_gaseous_phase_net_chemical_production", + 682, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_wet_deposition", + 211, + "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_dry_deposition", + 567, + "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_emission", + 8724, + "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_wet_deposition", + 557, + "tendency_of_atmosphere_mass_content_of_water_vapor_due_to_sublimation_of_surface_ice", + 16, + "tendency_of_atmosphere_mass_content_of_water_vapor_due_to_sublimation_of_surface_snow_and_ice", + 7286, + "tendency_of_atmosphere_mole_concentration_of_carbon_monoxide_due_to_chemical_destruction", + 329, + "tendency_of_atmosphere_mole_concentration_of_methane_due_to_chemical_destruction", + 539, + "tendency_of_atmosphere_mole_concentration_of_nitrous_oxide_due_to_chemical_destruction", + 208, + "tendency_of_atmosphere_mole_concentration_of_ozone_due_to_chemical_destruction", + 556, + "tendency_of_atmosphere_mole_concentration_of_ozone_due_to_chemical_production", + 553, + "tendency_of_atmosphere_moles_of_nox_expressed_as_nitrogen", + 1406, + "tendency_of_atmosphere_of_mole_concentration_of_carbon_monoxide_due_to_chemical_destruction", + 210, + "tendency_of_atmospheric_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_wood_and_agricultural_product_pool", + 11, + "tendency_of_eastward_wind_due_to_advection_by_northward_transformed_eulerian_mean_air_velocity", + 1787, + "tendency_of_eastward_wind_due_to_advection_by_the_northward_transformed_eulerian_mean_air_velocity", + 5, + "tendency_of_eastward_wind_due_to_advection_by_the_upward_transformed_eulerian_mean_air_velocity", + 6, + "tendency_of_eastward_wind_due_to_advection_by_upward_transformed_eulerian_mean_air_velocity", + 1769, + "tendency_of_eastward_wind_due_to_eliassen_palm_flux_divergence", + 23552, + "tendency_of_eastward_wind_due_to_nonorographic_gravity_wave_drag", + 4727, + "tendency_of_eastward_wind_due_to_orographic_gravity_wave_drag", + 12802, + "tendency_of_eastward_wind_due_to_tem_northward_advection_and_coriolis_term", + 4231, + "tendency_of_eastward_wind_due_to_tem_upward_advection", + 4246, + "tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_biological_production", + 14, + "tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_dissolution", + 1, + "tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_biological_production", + 991, + "tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_dissolution", + 978, + "tendency_of_mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_due_to_biological_processes", + 614, + "tendency_of_mole_concentration_of_dissolved_inorganic_iron_in_sea_water_due_to_biological_processes", + 596, + "tendency_of_mole_concentration_of_dissolved_inorganic_nitrogen_in_sea_water_due_to_biological_processes", + 596, + "tendency_of_mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water_due_to_biological_processes", + 597, + "tendency_of_mole_concentration_of_dissolved_inorganic_silicon_in_sea_water_due_to_biological_processes", + 592, + "tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_dissolution_from_inorganic_particles", + 370, + "tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_scavenging_by_inorganic_particles", + 963, + "tendency_of_mole_concentration_of_iron_in_sea_water_due_to_biological_production", + 998, + "tendency_of_mole_concentration_of_ox_in_air_due_to_chemical_and_photolytic_production", + 21, + "tendency_of_mole_concentration_of_ox_in_air_due_to_chemical_destruction", + 21, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", + 1358, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", + 9824, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diatoms", + 2689, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diazotrophs", + 693, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_miscellaneous_phytoplankton", + 3372, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_picophytoplankton", + 14, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_nitrate_utilization", + 1855, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_remineralization", + 349, + "tendency_of_mole_concentration_of_silicon_in_sea_water_due_to_biological_production", + 1428, + "tendency_of_northward_wind_due_to_nonorographic_gravity_wave_drag", + 287, + "tendency_of_northward_wind_due_to_orographic_gravity_wave_drag", + 402, + "tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport", + 106, + "tendency_of_ocean_eddy_kinetic_energy_content_due_to_parameterized_eddy_advection", + 385, + "tendency_of_ocean_mole_content_of_aragonite_expressed_as_carbon_due_to_biological_production", + 15, + "tendency_of_ocean_mole_content_of_calcite_expressed_as_carbon_due_to_biological_production", + 931, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon", + 738, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon_due_to_biological_processes", + 2206, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron", + 722, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron_due_to_biological_processes", + 2217, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen", + 725, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen_due_to_biological_processes", + 2218, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus", + 721, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus_due_to_biological_processes", + 2161, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon", + 717, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon_due_to_biological_processes", + 2189, + "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_deposition_and_fixation_and_runoff", + 4477, + "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_fixation", + 8010, + "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_runoff_and_sediment_dissolution", + 291, + "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", + 16, + "tendency_of_ocean_mole_content_of_iron_due_to_biological_production", + 2763, + "tendency_of_ocean_mole_content_of_iron_due_to_deposition_and_runoff_and_sediment_dissolution", + 4546, + "tendency_of_ocean_mole_content_of_nitrogen_due_to_biological_production", + 301, + "tendency_of_ocean_mole_content_of_organic_carbon_due_to_runoff_and_sediment_dissolution", + 279, + "tendency_of_ocean_mole_content_of_phosphorus_due_to_biological_production", + 271, + "tendency_of_ocean_mole_content_of_silicon_due_to_biological_production", + 2337, + "tendency_of_ocean_potential_energy_content", + 1235, + "tendency_of_sea_ice_amount_due_to_basal_melting", + 7283, + "tendency_of_sea_ice_amount_due_to_congelation_ice_accumulation", + 7077, + "tendency_of_sea_ice_amount_due_to_conversion_of_snow_to_sea_ice", + 3665, + "tendency_of_sea_ice_amount_due_to_dynamics", + 8, + "tendency_of_sea_ice_amount_due_to_frazil_ice_accumulation_in_leads", + 5418, + "tendency_of_sea_ice_amount_due_to_freezing_in_open_water", + 514, + "tendency_of_sea_ice_amount_due_to_lateral_melting", + 2650, + "tendency_of_sea_ice_amount_due_to_sea_ice_dynamics", + 3031, + "tendency_of_sea_ice_amount_due_to_sea_ice_thermodynamics", + 3033, + "tendency_of_sea_ice_amount_due_to_snow_conversion", + 1740, + "tendency_of_sea_ice_amount_due_to_surface_melting", + 7265, + "tendency_of_sea_ice_amount_due_to_thermodynamics", + 8, + "tendency_of_sea_ice_area_fraction_due_to_dynamics", + 3208, + "tendency_of_sea_ice_area_fraction_due_to_thermodynamics", + 4477, + "tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", + 600, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content", + 165, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", + 148, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", + 165, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_dianeutral_mixing", + 17, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", + 147, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion", + 17, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", + 16, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection", + 7, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_(sum_of_eulerian_+_parameterized)_advection", + 131, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection", + 63, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content", + 3670, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", + 3028, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", + 3477, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_dianeutral_mixing", + 485, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", + 2967, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion", + 543, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", + 298, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection", + 44, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_residual_mean_advection", + 3342, + "tendency_of_sea_water_salinity_expressed_as_salt_content", + 3817, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing", + 3177, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection", + 3641, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_dianeutral_mixing", + 491, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_diffusion", + 3120, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion", + 544, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_advection", + 312, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection", + 51, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection", + 3695, + "tendency_of_snow_mass_due_to_sea_ice_dynamics", + 4, + "tendency_of_soil_and_vegetation_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_fixation", + 1681, + "tendency_of_soil_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_fertilization", + 717, + "tendency_of_specific_humidity", + 1741, + "tendency_of_specific_humidity_due_to_advection", + 2628, + "tendency_of_specific_humidity_due_to_boundary_layer_mixing", + 1046, + "tendency_of_specific_humidity_due_to_convection", + 3144, + "tendency_of_specific_humidity_due_to_diffusion", + 564, + "tendency_of_specific_humidity_due_to_model_physics", + 2221, + "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation", + 443, + "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", + 2047, + "tendency_of_specific_humidity_due_to_stratiform_clouds_and_precipitation", + 597, + "tendency_of_surface_snow_amount_due_to_conversion_of_snow_to_sea_ice", + 824, + "tendency_of_surface_snow_amount_due_to_drifting_into_sea", + 295, + "tendency_of_surface_snow_amount_due_to_sea_ice_dynamics", + 687, + "tendency_of_surface_snow_and_ice_amount_due_to_sublimation", + 41, + "tendency_of_vegetation_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_fixation", + 2094, + "terrestrial_water_storage", + 294, + "thermal_energy_content_of_surface_snow", + 4711, + "thickness_of_ice_on_sea_ice_melt_pond", + 74, + "thickness_of_soil_layers", + 21, + "toa_bidirectional_reflectance", + 879, + "toa_clear-sky_longwave_radiative_forcing_due_to_dust", + 40, + "toa_incoming_shortwave_flux", + 59960, + "toa_instantaneous_longwave_forcing", + 1758, + "toa_instantaneous_shortwave_forcing", + 100, + "toa_longwave_dust_ambient_aerosol_particles_direct_radiative_effect_assuming_clear_sky", + 10, + "toa_outgoing_clear-sky,_aerosol-free_shortwave_radiation", + 476, + "toa_outgoing_clear-sky_shortwave_radiation", + 186, + "toa_outgoing_longwave_flux", + 91448, + "toa_outgoing_longwave_flux_assuming_clear_sky", + 66156, + "toa_outgoing_longwave_flux_due_to_volcanic_ambient_aerosol_particles_assuming_clear_sky", + 84, + "toa_outgoing_shortwave_flux", + 68275, + "toa_outgoing_shortwave_flux_assuming_clear_sky", + 55492, + "toa_outgoing_shortwave_flux_assuming_clear_sky_and_no_aerosol", + 1565, + "toa_outgoing_shortwave_flux_due_to_volcanic_ambient_aerosol_particles_assuming_clear_sky", + 84, + "tob", + 1, + "top-of-atmosphere_solar_insolation_for_each_band", + 31, + "total_autotrophic_respiration_on_land_as_carbon_mass_flux_[kgc_m-2_s-1]", + 465, + "total_carbon_in_all_terrestrial_carbon_pools", + 15910, + "total_carbon_loss_from_natural_and_managed_fire_on_land-use_tile,_including_deforestation_fires", + 106, + "total_carbon_loss_from_natural_and_managed_fire_on_land-use_tile,_including_deforestation_fires_[kgc_m-2_s-1]", + 77, + "total_carbon_loss_from_natural_and_managed_fire_on_land_use_tile,_including_deforestation_fires", + 60, + "total_carbon_mass_flux_from_vegetation_to_litter", + 6057, + "total_carbon_mass_flux_from_vegetation_to_litter_as_a_result_of_leaf,_branch,_and_root_senescence", + 4092, + "total_carbon_mass_flux_from_vegetation_to_litter_as_a_result_of_mortality", + 205, + "total_deposition_rate_of_dust", + 953, + "total_direct_emission_rate_of_so4", + 1632, + "total_dissolved_inorganic_phosphorus_concentration", + 12887, + "total_dissolved_inorganic_silicon_concentration", + 10861, + "total_emission_of_anthropogenic_organic_aerosol", + 364, + "total_emission_rate_of_anthropogenic_organic_aerosol", + 470, + "total_emission_rate_of_biogenic_nmvoc", + 494, + "total_emission_rate_of_black_carbon_aerosol_mass", + 4670, + "total_emission_rate_of_dust", + 6134, + "total_emission_rate_of_nmvoc", + 769, + "total_emission_rate_of_sea-salt_aerosol", + 1080, + "total_emission_rate_of_seasalt", + 1277, + "total_evapotranspiration", + 12, + "total_grazing_of_phytoplankton_by_zooplankton", + 2772, + "total_heterotrophic_respiration_on_land_as_carbon_mass_flux_[kgc_m-2_s-1]", + 6484, + "total_land_carbon", + 2, + "total_land_n2o_flux", + 845, + "total_n_added_for_cropland_fertilisation_(artificial_and_manure)", + 741, + "total_n_loss_to_leaching_or_runoff_(sum_of_ammonium,_nitrite_and_nitrate)", + 749, + "total_n_lost_(including_nhx,_nox,_n2o,_n2_and_leaching)", + 742, + "total_net_production_of_anthropogenic_secondary_organic_aerosol", + 48, + "total_nitrogen_added_for_cropland_fertilisation_(artificial_and_manure)", + 313, + "total_nitrogen_in_all_terrestrial_nitrogen_pools", + 1227, + "total_nitrogen_loss_to_leaching_or_runoff_(sum_of_ammonium,_nitrite_and_nitrate)", + 453, + "total_nitrogen_lost_(including_nhx,_nox,_n2o,_n2_and_leaching)", + 452, + "total_nitrogen_lost_to_the_atmosphere_(including_nhx,_nox,_n2o,_n2)_from_all_processes_except_fire", + 369, + "total_nitrogen_lost_to_the_atmosphere_(including_nhx,_nox,_n2o,_n2)_from_fire", + 296, + "total_nitrogen_lost_to_the_atmosphere_(sum_of_nhx,_nox,_n2o,_n2)", + 1181, + "total_nitrogen_mass_flux_from_litter_to_soil", + 1004, + "total_nitrogen_mass_flux_from_vegetation_directly_to_soil", + 71, + "total_nitrogen_mass_flux_from_vegetation_to_litter", + 754, + "total_odd_oxygen_(ox)_loss_rate", + 56, + "total_odd_oxygen_(ox)_production_rate", + 56, + "total_organic_aerosol_aod@550nm", + 1722, + "total_organic_aerosol_mass_mixing_ratio", + 1945, + "total_organic_aerosol_optical_depth_at_550nm", + 928, + "total_ox_loss_rate", + 46, + "total_ox_production_rate", + 46, + "total_plant_nitrogen_uptake_(sum_of_ammonium_and_nitrate),_irrespective_of_the_source_of_nitrogen", + 741, + "total_plant_nitrogen_uptake_(sum_of_ammonium_and_nitrate)_irrespective_of_the_source_of_nitrogen", + 470, + "total_respiration_from_leaves", + 117, + "total_respiration_from_leaves_as_carbon_mass_flux_[kgc_m-2_s-1]", + 103, + "total_respiration_from_roots", + 119, + "total_respiration_from_roots_as_carbon_mass_flux_[kgc_m-2_s-1]", + 103, + "total_soil_moisture", + 320, + "total_soil_moisture_content", + 23300, + "total_soil_moisture_content_", + 16, + "total_water_content_of_soil_layer", + 17506, + "total_water_storage", + 2, + "total_water_storage_in_a_grid_cell", + 1628, + "tracer_age_of_air_northern_hemisphere", + 40, + "tracer_lifetime", + 6, + "transformed_eulerian_mean_mass_stramfunction", + 19, + "transformed_eulerian_mean_mass_streamfunction", + 4233, + "transformed_eulerian_mean_upward_wind", + 14470, + "transpiration", + 5, + "transpiration_flux", + 22544, + "tropopause_air_pressure", + 7773, + "tropopause_air_temperature", + 2653, + "tropopause_altitude", + 7557, + "turnover_rate_of_each_model_soil_carbon_pool", + 533, + "u-tendency_by_vstar_advection", + 17, + "u-tendency_by_wstar_advection", + 17, + "upward_air_velocity", + 1339, + "upward_component_of_land-ice_basal_velocity", + 2, + "upward_component_of_land-ice_surface_velocity", + 2, + "upward_eliassen_palm_flux_in_air", + 23868, + "upward_geothermal_heat_flux_at_ground_level_in_land_ice", + 9, + "upward_geothermal_heat_flux_at_sea_floor", + 4055, + "upward_ocean_mass_transport", + 11638, + "upward_sea_ice_basal_heat_flux", + 4431, + "upward_sea_water_velocity", + 18585, + "upward_transformed_eulerian_mean_air_velocity", + 8106, + "upward_x_stress_at_sea_ice_base", + 6021, + "upward_y_stress_at_sea_ice_base", + 6025, + "upwelling_longwave_flux_in_air", + 6019, + "upwelling_longwave_flux_in_air_assuming_clear_sky", + 5937, + "upwelling_shortwave_flux_in_air", + 6079, + "upwelling_shortwave_flux_in_air_assuming_clear_sky", + 6058, + "utendepfd", + 198, + "v-tendency_nonorographic_gravity_wave_drag", + 156, + "v-tendency_orographic_gravity_wave_drag", + 152, + "vegetation_area_fraction", + 326, + "vegetation_carbon_content", + 37701, + "vegetation_mass_content_of_13C", + 12, + "vegetation_mass_content_of_14C", + 12, + "vegetation_mass_content_of_nitrogen", + 2629, + "vertical_integral_eastward_wind_by_dry_static_energy", + 2, + "vertical_integral_eastward_wind_by_total_water", + 2, + "vertical_integral_northward_wind_by_dry_static_energy", + 2, + "vertical_integral_northward_wind_by_total_water", + 2, + "vertically_integrated_eastward_dry_transport_(cp.t_+zg).u_(mass_weighted_vertical_integral_of_the_product_of_northward_wind_by_dry_static_energy_per_mass_unit)", + 388, + "vertically_integrated_eastward_moisture_transport_(mass_weighted_vertical_integral_of_the_product_of_eastward_wind_by_total_water_mass_per_unit_mass)", + 388, + "vertically_integrated_northward_dry_transport_(cp.t_+zg).v_(mass_weighted_vertical_integral_of_the_product_of_northward_wind_by_dry_static_energy_per_mass_unit)", + 388, + "vertically_integrated_northward_moisture_transport_(mass_weighted_vertical_integral_of_the_product_of_northward_wind_by_total_water_mass_per_unit_mass)", + 388, + "virtual_salt_flux_correction", + 21, + "virtual_salt_flux_into_sea_water", + 2775, + "virtual_salt_flux_into_sea_water_due_to_evaporation", + 384, + "virtual_salt_flux_into_sea_water_due_to_rainfall", + 392, + "virtual_salt_flux_into_sea_water_due_to_sea_ice_thermodynamics", + 919, + "virtual_salt_flux_into_sea_water_from_rivers", + 388, + "volume_extinction_coefficient_in_air_due_to_ambient_aerosol_particles", + 451, + "volume_fraction_of_clay_in_soil", + 73, + "volume_fraction_of_condensed_water_in_soil_at_field_capacity", + 866, + "volume_fraction_of_condensed_water_in_soil_at_wilting_point", + 43, + "volume_fraction_of_sand_in_soil", + 48, + "volume_fraction_of_silt_in_soil", + 28, + "water_evaporation_flux", + 5569, + "water_evaporation_flux_from_canopy", + 23294, + "water_evaporation_flux_from_soil", + 24385, + "water_evaporation_flux_where_ice_free_ocean_over_sea", + 5006, + "water_evapotranspiration_flux", + 35331, + "water_flux_correction", + 616, + "water_flux_into_sea_water", + 16465, + "water_flux_into_sea_water_due_to_sea_ice_thermodynamics", + 9154, + "water_flux_into_sea_water_due_to_surface_drainage", + 1764, + "water_flux_into_sea_water_from_icebergs", + 5162, + "water_flux_into_sea_water_from_land_ice", + 1319, + "water_flux_into_sea_water_from_rivers", + 15571, + "water_flux_into_sea_water_from_sea_ice", + 31, + "water_flux_into_sea_water_without_flux_correction", + 2227, + "water_flux_to_downstream", + 1, + "water_potential_evaporation_flux", + 5247, + "water_table_depth", + 1780, + "water_table_depth_from_surface.", + 1524, + "wet_bulb_potential_temperature", + 28, + "wet_deposition_of_noy_incl_aerosol_nitrate", + 344, + "wet_deposition_rate_of_black_carbon_aerosol_mass", + 5857, + "wet_deposition_rate_of_dry_aerosol_total_organic_matter", + 2097, + "wet_deposition_rate_of_dust", + 5982, + "wet_deposition_rate_of_nh3", + 150, + "wet_deposition_rate_of_nh4", + 522, + "wet_deposition_rate_of_noy_including_aerosol_nitrate", + 589, + "wet_deposition_rate_of_sea-salt_aerosol", + 978, + "wet_deposition_rate_of_seasalt", + 1271, + "wet_deposition_rate_of_so2", + 5582, + "wet_deposition_rate_of_so4", + 6036, + "wilting_point", + 2, + "wind_speed", + 134575, + "wind_speed_of_gust", + 7, + "wood_and_agricultural_product_pool_carbon_associated_with_land-use_tiles", + 13, + "wood_and_agricultural_product_pool_carbon_associated_with_land_use_tiles;_examples_of_products_include_paper,_cardboard,_timber_for_construction,_and_crop_harvest_for_food_or_fuel.", + 96, + "wood_carbon_content", + 441, + "wood_debris_mass_content_of_carbon", + 3614, + "wood_debris_mass_content_of_nitrogen", + 124, + "x-component_of_land_ice_surface_velocity", + 2, + "y-component_of_land_ice_surface_velocity", + 2 + ] + }, + "facet_ranges": {}, + "facet_intervals": {}, + "facet_heatmaps": {} + } + } +} \ No newline at end of file diff --git a/tests/fixtures/metagrid_default_request.json b/tests/fixtures/metagrid_default_request.json new file mode 100644 index 0000000..3d4a676 --- /dev/null +++ b/tests/fixtures/metagrid_default_request.json @@ -0,0 +1,13406 @@ +{ + "request": "project=CMIP6&query=%2A&format=application%2Fsolr%2Bjson&type=Dataset&offset=0&limit=10&latest=true&facets=activity_id%2C%20data_node%2C%20source_id%2C%20institution_id%2C%20source_type%2C%20experiment_id%2C%20sub_experiment_id%2C%20nominal_resolution%2C%20variant_label%2C%20grid_label%2C%20table_id%2C%20frequency%2C%20realm%2C%20variable_id%2C%20cf_standard_name", + "globus_query": { + "q": null, + "advanced": true, + "limit": 10, + "offset": 0, + "filters": [ + { + "type": "match_any", + "field_name": "project", + "values": [ + "CMIP6" + ] + }, + { + "type": "match_any", + "field_name": "type", + "values": [ + "Dataset" + ] + }, + { + "type": "match_any", + "field_name": "latest", + "values": [ + true + ] + } + ], + "facets": [ + { + "name": "activity_id", + "type": "terms", + "field_name": "activity_id" + }, + { + "name": "data_node", + "type": "terms", + "field_name": "data_node" + }, + { + "name": "source_id", + "type": "terms", + "field_name": "source_id" + }, + { + "name": "institution_id", + "type": "terms", + "field_name": "institution_id" + }, + { + "name": "source_type", + "type": "terms", + "field_name": "source_type" + }, + { + "name": "experiment_id", + "type": "terms", + "field_name": "experiment_id" + }, + { + "name": "sub_experiment_id", + "type": "terms", + "field_name": "sub_experiment_id" + }, + { + "name": "nominal_resolution", + "type": "terms", + "field_name": "nominal_resolution" + }, + { + "name": "variant_label", + "type": "terms", + "field_name": "variant_label" + }, + { + "name": "grid_label", + "type": "terms", + "field_name": "grid_label" + }, + { + "name": "table_id", + "type": "terms", + "field_name": "table_id" + }, + { + "name": "frequency", + "type": "terms", + "field_name": "frequency" + }, + { + "name": "realm", + "type": "terms", + "field_name": "realm" + }, + { + "name": "variable_id", + "type": "terms", + "field_name": "variable_id" + }, + { + "name": "cf_standard_name", + "type": "terms", + "field_name": "cf_standard_name" + } + ] + }, + "globus_response": { + "gmeta": [ + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "northward_ocean_heat_transport" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "geo_units": [ + "degrees_north" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "north_degrees": 89.50723, + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 4686043, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "south_degrees": -78.29248, + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/las|LAS" + ], + "variable": [ + "hfbasin" + ], + "variable_id": [ + "hfbasin" + ], + "variable_long_name": [ + "Northward Ocean Heat Transport" + ], + "variable_units": [ + "W" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3|PID|pid" + ], + "_version_": 1660740810020225000, + "retracted": false, + "_timestamp": "2020-03-10T02:04:16.724Z", + "score": 1 + }, + "entry_id": "Dataset", + "matched_principal_sets": [] + } + ] + }, + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_surface_downward_x_stress" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/ad0a0055-ba72-3a18-882e-fdace6ffa5a0" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 436004228, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tauuo" + ], + "variable_id": [ + "tauuo" + ], + "variable_long_name": [ + "Sea Water Surface Downward X Stress" + ], + "variable_units": [ + "N m-2" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/ad0a0055-ba72-3a18-882e-fdace6ffa5a0|PID|pid" + ], + "_version_": 1660741635081764900, + "retracted": false, + "_timestamp": "2020-03-10T02:17:23.564Z", + "score": 1 + }, + "entry_id": "Dataset", + "matched_principal_sets": [] + } + ] + }, + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_surface_downward_y_stress" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/fb714cf6-8e01-3f28-adb2-240935e4ed50" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 442646269, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tauvo" + ], + "variable_id": [ + "tauvo" + ], + "variable_long_name": [ + "Sea Water Surface Downward Y Stress" + ], + "variable_units": [ + "N m-2" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/fb714cf6-8e01-3f28-adb2-240935e4ed50|PID|pid" + ], + "_version_": 1660741638658457600, + "retracted": false, + "_timestamp": "2020-03-10T02:17:26.975Z", + "score": 1 + }, + "entry_id": "Dataset", + "matched_principal_sets": [] + } + ] + }, + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_potential_temperature" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "height_bottom": 3.046773, + "height_top": 5624.9517, + "height_units": "m", + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 15, + "pid": [ + "hdl:21.14100/065cbdee-e4e9-311b-8c9f-1159f7f64622" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 14791910495, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429|application/las|LAS" + ], + "variable": [ + "thetao" + ], + "variable_id": [ + "thetao" + ], + "variable_long_name": [ + "Sea Water Potential Temperature" + ], + "variable_units": [ + "degC" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/065cbdee-e4e9-311b-8c9f-1159f7f64622|PID|pid" + ], + "_version_": 1660741643833180200, + "retracted": false, + "_timestamp": "2020-03-10T02:17:31.910Z", + "score": 1 + }, + "entry_id": "Dataset", + "matched_principal_sets": [] + } + ] + }, + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_potential_temperature_at_sea_floor" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/259acc84-4981-3a3e-92b6-4e44015feaf3" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 446929893, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tob" + ], + "variable_id": [ + "tob" + ], + "variable_long_name": [ + "Sea Water Potential Temperature at Sea Floor" + ], + "variable_units": [ + "degC" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/259acc84-4981-3a3e-92b6-4e44015feaf3|PID|pid" + ], + "_version_": 1660741647809380400, + "retracted": false, + "_timestamp": "2020-03-10T02:17:35.702Z", + "score": 1 + }, + "entry_id": "Dataset", + "matched_principal_sets": [] + } + ] + }, + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_surface_temperature" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/7487aaf6-0bce-3736-bd8a-8183d63044ae" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 421497825, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tos" + ], + "variable_id": [ + "tos" + ], + "variable_long_name": [ + "Sea Surface Temperature" + ], + "variable_units": [ + "degC" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/7487aaf6-0bce-3736-bd8a-8183d63044ae|PID|pid" + ], + "_version_": 1660741652415774700, + "retracted": false, + "_timestamp": "2020-03-10T02:17:40.095Z", + "score": 1 + }, + "entry_id": "Dataset", + "matched_principal_sets": [] + } + ] + }, + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_surface_temperature" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/26ea0221-eb43-322d-a367-ba958f8bacb5" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 252294, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tosga" + ], + "variable_id": [ + "tosga" + ], + "variable_long_name": [ + "Global Average Sea Surface Temperature" + ], + "variable_units": [ + "degC" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/26ea0221-eb43-322d-a367-ba958f8bacb5|PID|pid" + ], + "_version_": 1660741656869077000, + "retracted": false, + "_timestamp": "2020-03-10T02:17:44.342Z", + "score": 1 + }, + "entry_id": "Dataset", + "matched_principal_sets": [] + } + ] + }, + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "square_of_sea_surface_temperature" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/f7379e12-6abf-32f2-a0d6-c7beb4821f83" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 428634458, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tossq" + ], + "variable_id": [ + "tossq" + ], + "variable_long_name": [ + "Square of Sea Surface Temperature" + ], + "variable_units": [ + "degC2" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/f7379e12-6abf-32f2-a0d6-c7beb4821f83|PID|pid" + ], + "_version_": 1660741661152510000, + "retracted": false, + "_timestamp": "2020-03-10T02:17:48.427Z", + "score": 1 + }, + "entry_id": "Dataset", + "matched_principal_sets": [] + } + ] + }, + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "ocean_mass_x_transport" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "height_bottom": 3.046773, + "height_top": 5624.9517, + "height_units": "m", + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 15, + "pid": [ + "hdl:21.14100/6a0e33ce-3305-3969-a567-8ea100239fce" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 15236974915, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429|application/las|LAS" + ], + "variable": [ + "umo" + ], + "variable_id": [ + "umo" + ], + "variable_long_name": [ + "Ocean Mass X Transport" + ], + "variable_units": [ + "kg s-1" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/6a0e33ce-3305-3969-a567-8ea100239fce|PID|pid" + ], + "_version_": 1660741665597423600, + "retracted": false, + "_timestamp": "2020-03-10T02:17:52.666Z", + "score": 1 + }, + "entry_id": "Dataset", + "matched_principal_sets": [] + } + ] + }, + { + "subject": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "entries": [ + { + "content": { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_x_velocity" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "height_bottom": 3.046773, + "height_top": 5624.9517, + "height_units": "m", + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 15, + "pid": [ + "hdl:21.14100/fde85622-5345-344d-99c8-30ece5296165" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 15234143364, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429|application/las|LAS" + ], + "variable": [ + "uo" + ], + "variable_id": [ + "uo" + ], + "variable_long_name": [ + "Sea Water X Velocity" + ], + "variable_units": [ + "m s-1" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/fde85622-5345-344d-99c8-30ece5296165|PID|pid" + ], + "_version_": 1660741669727764500, + "retracted": false, + "_timestamp": "2020-03-10T02:17:56.604Z", + "score": 1 + }, + "entry_id": "Dataset", + "matched_principal_sets": [] + } + ] + } + ], + "facet_results": [ + { + "name": "sub_experiment_id", + "value": null, + "buckets": [ + { + "value": "none", + "count": 5451509 + }, + { + "value": "s2014", + "count": 62846 + }, + { + "value": "s1990", + "count": 57874 + }, + { + "value": "s1981", + "count": 57854 + }, + { + "value": "s1962", + "count": 56298 + }, + { + "value": "s1993", + "count": 47020 + }, + { + "value": "s1994", + "count": 47006 + }, + { + "value": "s1992", + "count": 46072 + }, + { + "value": "s1995", + "count": 41503 + }, + { + "value": "s2003", + "count": 41235 + } + ] + }, + { + "name": "data_node", + "value": null, + "buckets": [ + { + "value": "esgf-node.ornl.gov", + "count": 5673390 + }, + { + "value": "crd-esgf-drc.ec.gc.ca", + "count": 846349 + }, + { + "value": "esgf-data.ucar.edu", + "count": 705152 + }, + { + "value": "esgf-data02.diasjp.net", + "count": 376806 + }, + { + "value": "esgf-data03.diasjp.net", + "count": 147797 + }, + { + "value": "dpesgf03.nccs.nasa.gov", + "count": 144179 + }, + { + "value": "esg.lasg.ac.cn", + "count": 109481 + }, + { + "value": "esgf-data04.diasjp.net", + "count": 63289 + }, + { + "value": "cmip.bcc.cma.cn", + "count": 50297 + }, + { + "value": "esgf-nimscmip6.apcc21.org", + "count": 3297 + } + ] + }, + { + "name": "experiment_id", + "value": null, + "buckets": [ + { + "value": "dcppA-hindcast", + "count": 2580419 + }, + { + "value": "historical", + "count": 360939 + }, + { + "value": "pdSST-futArcSIC", + "count": 356326 + }, + { + "value": "pdSST-pdSIC", + "count": 344989 + }, + { + "value": "pdSST-piArcSIC", + "count": 220757 + }, + { + "value": "ssp245", + "count": 208182 + }, + { + "value": "futSST-pdSIC", + "count": 192462 + }, + { + "value": "piSST-pdSIC", + "count": 183331 + }, + { + "value": "ssp370", + "count": 169458 + }, + { + "value": "ssp585", + "count": 165994 + } + ] + }, + { + "name": "source_type", + "value": null, + "buckets": [ + { + "value": "AOGCM", + "count": 6019571 + }, + { + "value": "BGC", + "count": 2394640 + }, + { + "value": "AER", + "count": 2232881 + }, + { + "value": "AGCM", + "count": 2085633 + }, + { + "value": "CHEM", + "count": 554385 + }, + { + "value": "OGCM", + "count": 16651 + }, + { + "value": "LAND", + "count": 14482 + }, + { + "value": "ISM", + "count": 11665 + }, + { + "value": "RAD", + "count": 5334 + }, + { + "value": "AERM", + "count": 541 + } + ] + }, + { + "name": "cf_standard_name", + "value": null, + "buckets": [ + { + "value": "air_temperature", + "count": 404403 + }, + { + "value": "area_fraction", + "count": 267759 + }, + { + "value": "eastward_wind", + "count": 198459 + }, + { + "value": "northward_wind", + "count": 174140 + }, + { + "value": "specific_humidity", + "count": 164396 + }, + { + "value": "geopotential_height", + "count": 136329 + }, + { + "value": "relative_humidity", + "count": 126146 + }, + { + "value": "wind_speed", + "count": 121219 + }, + { + "value": "precipitation_flux", + "count": 107727 + }, + { + "value": "surface_downwelling_shortwave_flux_in_air", + "count": 95835 + } + ] + }, + { + "name": "table_id", + "value": null, + "buckets": [ + { + "value": "Amon", + "count": 2090910 + }, + { + "value": "Omon", + "count": 1377277 + }, + { + "value": "day", + "count": 763480 + }, + { + "value": "Emon", + "count": 762827 + }, + { + "value": "Lmon", + "count": 746173 + }, + { + "value": "SImon", + "count": 532119 + }, + { + "value": "AERmon", + "count": 370008 + }, + { + "value": "Eday", + "count": 193278 + }, + { + "value": "Oyr", + "count": 173520 + }, + { + "value": "LImon", + "count": 144723 + } + ] + }, + { + "name": "frequency", + "value": null, + "buckets": [ + { + "value": "mon", + "count": 6302504 + }, + { + "value": "day", + "count": 1280044 + }, + { + "value": "fx", + "count": 237969 + }, + { + "value": "yr", + "count": 186719 + }, + { + "value": "6hr", + "count": 29363 + }, + { + "value": "3hr", + "count": 22161 + }, + { + "value": "6hrPt", + "count": 16713 + }, + { + "value": "3hrPt", + "count": 16595 + }, + { + "value": "monPt", + "count": 15624 + }, + { + "value": "monC", + "count": 7677 + } + ] + }, + { + "name": "institution_id", + "value": null, + "buckets": [ + { + "value": "CCCma", + "count": 1625098 + }, + { + "value": "NCAR", + "count": 1352439 + }, + { + "value": "IPSL", + "count": 1239740 + }, + { + "value": "MIROC", + "count": 697939 + }, + { + "value": "NCC", + "count": 603303 + }, + { + "value": "MOHC", + "count": 371600 + }, + { + "value": "CNRM-CERFACS", + "count": 300725 + }, + { + "value": "MRI", + "count": 291816 + }, + { + "value": "NASA-GISS", + "count": 283902 + }, + { + "value": "EC-Earth-Consortium", + "count": 224683 + } + ] + }, + { + "name": "variant_label", + "value": null, + "buckets": [ + { + "value": "r1i1p1f1", + "count": 629892 + }, + { + "value": "r3i1p1f1", + "count": 280710 + }, + { + "value": "r2i1p1f1", + "count": 277873 + }, + { + "value": "r4i1p1f1", + "count": 225664 + }, + { + "value": "r5i1p1f1", + "count": 212124 + }, + { + "value": "r6i1p1f1", + "count": 181746 + }, + { + "value": "r7i1p1f1", + "count": 175068 + }, + { + "value": "r8i1p1f1", + "count": 174187 + }, + { + "value": "r10i1p1f1", + "count": 167846 + }, + { + "value": "r9i1p1f1", + "count": 165600 + } + ] + }, + { + "name": "variable_id", + "value": null, + "buckets": [ + { + "value": "ua", + "count": 120050 + }, + { + "value": "ta", + "count": 119762 + }, + { + "value": "psl", + "count": 106669 + }, + { + "value": "tas", + "count": 104471 + }, + { + "value": "va", + "count": 101348 + }, + { + "value": "pr", + "count": 100715 + }, + { + "value": "zg", + "count": 93481 + }, + { + "value": "rsds", + "count": 91098 + }, + { + "value": "hus", + "count": 87681 + }, + { + "value": "sfcWind", + "count": 83451 + } + ] + }, + { + "name": "grid_label", + "value": null, + "buckets": [ + { + "value": "gn", + "count": 6191094 + }, + { + "value": "gr", + "count": 1766157 + }, + { + "value": "gr1", + "count": 71672 + }, + { + "value": "gnz", + "count": 51228 + }, + { + "value": "gm", + "count": 25688 + }, + { + "value": "grz", + "count": 13803 + }, + { + "value": "gr2z", + "count": 4922 + }, + { + "value": "gr2", + "count": 1167 + }, + { + "value": "gr3", + "count": 422 + }, + { + "value": "gr1z", + "count": 246 + } + ] + }, + { + "name": "activity_id", + "value": null, + "buckets": [ + { + "value": "DCPP", + "count": 2899382 + }, + { + "value": "PAMIP", + "count": 2569472 + }, + { + "value": "ScenarioMIP", + "count": 846075 + }, + { + "value": "CMIP", + "count": 620870 + }, + { + "value": "DAMIP", + "count": 538436 + }, + { + "value": "AerChemMIP", + "count": 306367 + }, + { + "value": "VolMIP", + "count": 139562 + }, + { + "value": "C4MIP", + "count": 61749 + }, + { + "value": "LUMIP", + "count": 57059 + }, + { + "value": "RFMIP", + "count": 54428 + } + ] + }, + { + "name": "realm", + "value": null, + "buckets": [ + { + "value": "atmos", + "count": 3726573 + }, + { + "value": "land", + "count": 1498361 + }, + { + "value": "ocean", + "count": 918233 + }, + { + "value": "ocnBgchem", + "count": 803260 + }, + { + "value": "seaIce", + "count": 592415 + }, + { + "value": "aerosol", + "count": 470072 + }, + { + "value": "landIce", + "count": 202174 + }, + { + "value": "atmosChem", + "count": 11527 + }, + { + "value": "ocnBgChem", + "count": 3942 + }, + { + "value": "seaice", + "count": 16 + } + ] + }, + { + "name": "nominal_resolution", + "value": null, + "buckets": [ + { + "value": "100 km", + "count": 3514132 + }, + { + "value": "250 km", + "count": 2887913 + }, + { + "value": "500 km", + "count": 1403943 + }, + { + "value": "1x1 degree", + "count": 235297 + }, + { + "value": "50 km", + "count": 65910 + }, + { + "value": "25 km", + "count": 12112 + }, + { + "value": "200 km", + "count": 5335 + }, + { + "value": "10000 km", + "count": 748 + }, + { + "value": "10 km", + "count": 564 + }, + { + "value": "2x2 degree", + "count": 474 + } + ] + }, + { + "name": "source_id", + "value": null, + "buckets": [ + { + "value": "CanESM5", + "count": 1542594 + }, + { + "value": "IPSL-CM6A-LR", + "count": 1228574 + }, + { + "value": "CESM1-1-CAM5-CMIP5", + "count": 708810 + }, + { + "value": "MIROC6", + "count": 420096 + }, + { + "value": "NorESM2-LM", + "count": 372010 + }, + { + "value": "CESM2", + "count": 351414 + }, + { + "value": "MRI-ESM2-0", + "count": 290510 + }, + { + "value": "HadGEM3-GC31-MM", + "count": 278410 + }, + { + "value": "MIROC-ES2L", + "count": 266779 + }, + { + "value": "CNRM-CM6-1", + "count": 243246 + } + ] + } + ], + "offset": 0, + "count": 10, + "total": 8126429, + "has_next_page": true + }, + "esg_search_response": { + "responseHeader": { + "status": 0, + "QTime": 2595, + "params": { + "df": "text", + "q.alt": "*:*", + "indent": "true", + "echoParams": "all", + "fl": "*,score", + "start": "0", + "fq": [ + "type:Dataset", + "project:\"CMIP6\"", + "latest:True" + ], + "rows": "10", + "q": "*", + "shards": "esgf-data-node-solr-query:8983/solr/datasets", + "tie": "0.01", + "facet.limit": "-1", + "qf": "text", + "facet.method": "enum", + "facet.mincount": "1", + "facet": "true", + "wt": "json", + "facet.sort": "lex" + } + }, + "response": { + "numFound": 8126429, + "start": 0, + "docs": [ + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "northward_ocean_heat_transport" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "geo_units": [ + "degrees_north" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "north_degrees": 89.50723, + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 4686043, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "south_degrees": -78.29248, + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429|application/las|LAS" + ], + "variable": [ + "hfbasin" + ], + "variable_id": [ + "hfbasin" + ], + "variable_long_name": [ + "Northward Ocean Heat Transport" + ], + "variable_units": [ + "W" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.hfbasin.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/be3a1612-4db6-338c-a4eb-f40b2cccade3|PID|pid" + ], + "_version_": 1660740810020225000, + "retracted": false, + "_timestamp": "2020-03-10T02:04:16.724Z", + "score": 1 + }, + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_surface_downward_x_stress" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/ad0a0055-ba72-3a18-882e-fdace6ffa5a0" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 436004228, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tauuo" + ], + "variable_id": [ + "tauuo" + ], + "variable_long_name": [ + "Sea Water Surface Downward X Stress" + ], + "variable_units": [ + "N m-2" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauuo.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/ad0a0055-ba72-3a18-882e-fdace6ffa5a0|PID|pid" + ], + "_version_": 1660741635081764900, + "retracted": false, + "_timestamp": "2020-03-10T02:17:23.564Z", + "score": 1 + }, + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_surface_downward_y_stress" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/fb714cf6-8e01-3f28-adb2-240935e4ed50" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 442646269, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tauvo" + ], + "variable_id": [ + "tauvo" + ], + "variable_long_name": [ + "Sea Water Surface Downward Y Stress" + ], + "variable_units": [ + "N m-2" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tauvo.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/fb714cf6-8e01-3f28-adb2-240935e4ed50|PID|pid" + ], + "_version_": 1660741638658457600, + "retracted": false, + "_timestamp": "2020-03-10T02:17:26.975Z", + "score": 1 + }, + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_potential_temperature" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "height_bottom": 3.046773, + "height_top": 5624.9517, + "height_units": "m", + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 15, + "pid": [ + "hdl:21.14100/065cbdee-e4e9-311b-8c9f-1159f7f64622" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 14791910495, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429|application/las|LAS" + ], + "variable": [ + "thetao" + ], + "variable_id": [ + "thetao" + ], + "variable_long_name": [ + "Sea Water Potential Temperature" + ], + "variable_units": [ + "degC" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.thetao.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/065cbdee-e4e9-311b-8c9f-1159f7f64622|PID|pid" + ], + "_version_": 1660741643833180200, + "retracted": false, + "_timestamp": "2020-03-10T02:17:31.910Z", + "score": 1 + }, + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_potential_temperature_at_sea_floor" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/259acc84-4981-3a3e-92b6-4e44015feaf3" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 446929893, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tob" + ], + "variable_id": [ + "tob" + ], + "variable_long_name": [ + "Sea Water Potential Temperature at Sea Floor" + ], + "variable_units": [ + "degC" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tob.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/259acc84-4981-3a3e-92b6-4e44015feaf3|PID|pid" + ], + "_version_": 1660741647809380400, + "retracted": false, + "_timestamp": "2020-03-10T02:17:35.702Z", + "score": 1 + }, + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_surface_temperature" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/7487aaf6-0bce-3736-bd8a-8183d63044ae" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 421497825, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tos" + ], + "variable_id": [ + "tos" + ], + "variable_long_name": [ + "Sea Surface Temperature" + ], + "variable_units": [ + "degC" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tos.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/7487aaf6-0bce-3736-bd8a-8183d63044ae|PID|pid" + ], + "_version_": 1660741652415774700, + "retracted": false, + "_timestamp": "2020-03-10T02:17:40.095Z", + "score": 1 + }, + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_surface_temperature" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/26ea0221-eb43-322d-a367-ba958f8bacb5" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 252294, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tosga" + ], + "variable_id": [ + "tosga" + ], + "variable_long_name": [ + "Global Average Sea Surface Temperature" + ], + "variable_units": [ + "degC" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tosga.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/26ea0221-eb43-322d-a367-ba958f8bacb5|PID|pid" + ], + "_version_": 1660741656869077000, + "retracted": false, + "_timestamp": "2020-03-10T02:17:44.342Z", + "score": 1 + }, + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "square_of_sea_surface_temperature" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 1, + "pid": [ + "hdl:21.14100/f7379e12-6abf-32f2-a0d6-c7beb4821f83" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 428634458, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429|application/las|LAS" + ], + "variable": [ + "tossq" + ], + "variable_id": [ + "tossq" + ], + "variable_long_name": [ + "Square of Sea Surface Temperature" + ], + "variable_units": [ + "degC2" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.tossq.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/f7379e12-6abf-32f2-a0d6-c7beb4821f83|PID|pid" + ], + "_version_": 1660741661152510000, + "retracted": false, + "_timestamp": "2020-03-10T02:17:48.427Z", + "score": 1 + }, + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "ocean_mass_x_transport" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "height_bottom": 3.046773, + "height_top": 5624.9517, + "height_units": "m", + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 15, + "pid": [ + "hdl:21.14100/6a0e33ce-3305-3969-a567-8ea100239fce" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 15236974915, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429|application/las|LAS" + ], + "variable": [ + "umo" + ], + "variable_id": [ + "umo" + ], + "variable_long_name": [ + "Ocean Mass X Transport" + ], + "variable_units": [ + "kg s-1" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.umo.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/6a0e33ce-3305-3969-a567-8ea100239fce|PID|pid" + ], + "_version_": 1660741665597423600, + "retracted": false, + "_timestamp": "2020-03-10T02:17:52.666Z", + "score": 1 + }, + { + "id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429|crd-esgf-drc.ec.gc.ca", + "version": "20190429", + "access": [ + "HTTPServer", + "GridFTP", + "OPENDAP", + "LAS" + ], + "activity_drs": [ + "CMIP" + ], + "activity_id": [ + "CMIP" + ], + "cf_standard_name": [ + "sea_water_x_velocity" + ], + "citation_url": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429.json" + ], + "data_node": "crd-esgf-drc.ec.gc.ca", + "data_specs_version": [ + "01.00.31" + ], + "dataset_id_template_": [ + "%(mip_era)s.%(activity_drs)s.%(institution_id)s.%(source_id)s.%(experiment_id)s.%(member_id)s.%(table_id)s.%(variable_id)s.%(grid_label)s" + ], + "datetime_start": "1850-01-16T12:00:00Z", + "datetime_stop": "2000-12-16T12:00:00Z", + "directory_format_template_": [ + "%(root)s/%(mip_era)s/%(activity_drs)s/%(institution_id)s/%(source_id)s/%(experiment_id)s/%(member_id)s/%(table_id)s/%(variable_id)s/%(grid_label)s/%(version)s" + ], + "experiment_id": [ + "1pctCO2" + ], + "experiment_title": [ + "1 percent per year increase in CO2" + ], + "frequency": [ + "mon" + ], + "further_info_url": [ + "https://furtherinfo.es-doc.org/CMIP6.CCCma.CanESM5-CanOE.1pctCO2.none.r1i1p2f1" + ], + "grid": [ + "ORCA1 tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 361 x 290 longitude/latitude; 45 vertical levels; top grid cell 0-6.19 m" + ], + "grid_label": [ + "gn" + ], + "height_bottom": 3.046773, + "height_top": 5624.9517, + "height_units": "m", + "index_node": "esgf-node.llnl.gov", + "instance_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429", + "institution_id": [ + "CCCma" + ], + "latest": true, + "master_id": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn", + "member_id": [ + "r1i1p2f1" + ], + "mip_era": [ + "CMIP6" + ], + "model_cohort": [ + "Registered" + ], + "nominal_resolution": [ + "100 km" + ], + "number_of_aggregations": 2, + "number_of_files": 15, + "pid": [ + "hdl:21.14100/fde85622-5345-344d-99c8-30ece5296165" + ], + "product": [ + "model-output" + ], + "project": [ + "CMIP6" + ], + "realm": [ + "ocean" + ], + "replica": false, + "size": 15234143364, + "source_id": [ + "CanESM5-CanOE" + ], + "source_type": [ + "AOGCM" + ], + "sub_experiment_id": [ + "none" + ], + "table_id": [ + "Omon" + ], + "title": "CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn", + "type": "Dataset", + "url": [ + "http://crd-esgf-drc.ec.gc.ca/thredds/catalog/esgcet/1356/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429.xml#CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429|application/xml+thredds|THREDDS", + "http://crd-esgf-drc.ec.gc.ca/las/getUI.do?catid=2D7D52D9ABAF43CDC673C1D95DCBF3BC_ns_CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429|application/las|LAS" + ], + "variable": [ + "uo" + ], + "variable_id": [ + "uo" + ], + "variable_long_name": [ + "Sea Water X Velocity" + ], + "variable_units": [ + "m s-1" + ], + "variant_label": [ + "r1i1p2f1" + ], + "xlink": [ + "http://cera-www.dkrz.de/WDCC/meta/CMIP6/CMIP6.CMIP.CCCma.CanESM5-CanOE.1pctCO2.r1i1p2f1.Omon.uo.gn.v20190429.json|Citation|citation", + "http://hdl.handle.net/hdl:21.14100/fde85622-5345-344d-99c8-30ece5296165|PID|pid" + ], + "_version_": 1660741669727764500, + "retracted": false, + "_timestamp": "2020-03-10T02:17:56.604Z", + "score": 1 + } + ], + "maxScore": 1 + }, + "facet_counts": { + "facet_queries": {}, + "facet_fields": { + "activity_id": [ + "AerChemMIP", + 306367, + "C4MIP", + 61749, + "CDRMIP", + 25318, + "CFMIP", + 51924, + "CMIP", + 620870, + "DAMIP", + 538436, + "DCPP", + 2899382, + "FAFMIP", + 24226, + "GMMIP", + 16931, + "GeoMIP", + 21712, + "HighResMIP", + 35222, + "ISMIP6", + 2198, + "LS3MIP", + 10551, + "LUMIP", + 57059, + "OMIP", + 14431, + "PAMIP", + 2569472, + "PMIP", + 18078, + "RFMIP", + 54428, + "ScenarioMIP", + 846075, + "VolMIP", + 139562 + ], + "data_node": [ + "cmip.bcc.cma.cn", + 50297, + "cmip.dess.tsinghua.edu.cn", + 1388, + "crd-esgf-drc.ec.gc.ca", + 846349, + "dist.nmlab.snu.ac.kr", + 840, + "dpesgf03.nccs.nasa.gov", + 144179, + "esg.lasg.ac.cn", + 109481, + "esgdata.gfdl.noaa.gov", + 2310, + "esgf-data.ucar.edu", + 705152, + "esgf-data02.diasjp.net", + 376806, + "esgf-data03.diasjp.net", + 147797, + "esgf-data04.diasjp.net", + 63289, + "esgf-nimscmip6.apcc21.org", + 3297, + "esgf-node.ornl.gov", + 5673390, + "lapdat02-p.gfdl.noaa.gov", + 1, + "polaris.pknu.ac.kr", + 1853 + ], + "source_id": [ + "4AOP-v1-5", + 6, + "ACCESS-CM2", + 15117, + "ACCESS-ESM1-5", + 113834, + "ACCESS-OM2", + 280, + "ACCESS-OM2-025", + 95, + "ARTS-2-3", + 8, + "AWI-CM-1-1-HR", + 174, + "AWI-CM-1-1-LR", + 174, + "AWI-CM-1-1-MR", + 68998, + "AWI-ESM-1-1-LR", + 2351, + "BCC-CSM2-HR", + 1200, + "BCC-CSM2-MR", + 87627, + "BCC-ESM1", + 12072, + "CAMS-CSM1-0", + 2155, + "CAS-ESM2-0", + 6022, + "CESM1-1-CAM5-CMIP5", + 708810, + "CESM1-CAM5-SE-HR", + 690, + "CESM1-CAM5-SE-LR", + 754, + "CESM1-WACCM-SC", + 193294, + "CESM2", + 351414, + "CESM2-FV2", + 18816, + "CESM2-WACCM", + 62682, + "CESM2-WACCM-FV2", + 15979, + "CIESM", + 3153, + "CMCC-CM2-HR4", + 1301, + "CMCC-CM2-SR5", + 198713, + "CMCC-CM2-VHR4", + 408, + "CMCC-ESM2", + 7663, + "CNRM-CM6-1", + 243246, + "CNRM-CM6-1-HR", + 6547, + "CNRM-ESM2-1", + 50932, + "CanESM5", + 1542594, + "CanESM5-1", + 65572, + "CanESM5-CanOE", + 16932, + "E3SM-1-0", + 44417, + "E3SM-1-1", + 1578, + "E3SM-1-1-ECA", + 750, + "E3SM-2-0", + 4022, + "EC-Earth3", + 160013, + "EC-Earth3-AerChem", + 9049, + "EC-Earth3-CC", + 23071, + "EC-Earth3-HR", + 9077, + "EC-Earth3-LR", + 676, + "EC-Earth3-Veg", + 12355, + "EC-Earth3-Veg-LR", + 6231, + "EC-Earth3P", + 2132, + "EC-Earth3P-HR", + 2078, + "EC-Earth3P-VHR", + 1, + "ECMWF-IFS-HR", + 695, + "ECMWF-IFS-LR", + 727, + "ECMWF-IFS-MR", + 384, + "FGOALS-f3-H", + 887, + "FGOALS-f3-L", + 158818, + "FGOALS-g3", + 18705, + "FIO-ESM-2-0", + 3176, + "GFDL-AM4", + 110, + "GFDL-CM4", + 8073, + "GFDL-CM4C192", + 451, + "GFDL-ESM2M", + 442, + "GFDL-ESM4", + 15520, + "GFDL-GRTCODE", + 12, + "GFDL-OM4p5B", + 36, + "GFDL-RFM-DISORT", + 4, + "GISS-E2-1-G", + 214519, + "GISS-E2-1-G-CC", + 4340, + "GISS-E2-1-H", + 32462, + "GISS-E2-2-G", + 29742, + "GISS-E2-2-H", + 2831, + "GISS-E3-G", + 8, + "HadGEM3-GC31-HH", + 465, + "HadGEM3-GC31-HM", + 1850, + "HadGEM3-GC31-LL", + 25401, + "HadGEM3-GC31-LM", + 806, + "HadGEM3-GC31-MH", + 109, + "HadGEM3-GC31-MM", + 278410, + "HiRAM-SIT-HR", + 314, + "HiRAM-SIT-LR", + 353, + "ICON-ESM-LR", + 2106, + "IITM-ESM", + 1205, + "INM-CM4-8", + 3275, + "INM-CM5-0", + 6117, + "INM-CM5-H", + 594, + "IPSL-CM5A2-INCA", + 4104, + "IPSL-CM6A-ATM-HR", + 315, + "IPSL-CM6A-ATM-ICO-HR", + 684, + "IPSL-CM6A-ATM-ICO-LR", + 704, + "IPSL-CM6A-ATM-ICO-MR", + 684, + "IPSL-CM6A-ATM-ICO-VHR", + 674, + "IPSL-CM6A-LR", + 1228574, + "IPSL-CM6A-LR-INCA", + 3995, + "KACE-1-0-G", + 6163, + "KIOST-ESM", + 3991, + "LBLRTM-12-8", + 8, + "MCM-UA-1-0", + 746, + "MIROC-ES2H", + 10195, + "MIROC-ES2L", + 266779, + "MIROC6", + 420096, + "MPI-ESM-1-2-HAM", + 17501, + "MPI-ESM1-2-HR", + 67333, + "MPI-ESM1-2-LR", + 176741, + "MPI-ESM1-2-XR", + 650, + "MRI-AGCM3-2-H", + 654, + "MRI-AGCM3-2-S", + 652, + "MRI-ESM2-0", + 290510, + "NESM3", + 5382, + "NICAM16-7S", + 300, + "NICAM16-8S", + 284, + "NICAM16-9S", + 285, + "NorCPM1", + 223327, + "NorESM1-F", + 534, + "NorESM2-LM", + 372010, + "NorESM2-MM", + 7432, + "RRTMG-LW-4-91", + 2, + "RRTMG-SW-4-02", + 2, + "RTE-RRTMGP-181204", + 4, + "SAM0-UNICON", + 1877, + "TaiESM1", + 49889, + "TaiESM1-TIMCOM", + 86, + "TaiESM1-TIMCOM2", + 66, + "UKESM1-0-LL", + 73711, + "UKESM1-1-LL", + 1123, + "UKESM1-ice-LL", + 352 + ], + "institution_id": [ + "AER", + 12, + "AS-RCEC", + 50556, + "AWI", + 71697, + "BCC", + 100899, + "CAMS", + 2155, + "CAS", + 184432, + "CCCR-IITM", + 1205, + "CCCma", + 1625098, + "CMCC", + 208085, + "CNRM-CERFACS", + 300725, + "CSIRO", + 113834, + "CSIRO-ARCCSS", + 15117, + "CSIRO-COSIMA", + 375, + "DKRZ", + 26662, + "DWD", + 5983, + "E3SM-Project", + 8792, + "EC-Earth-Consortium", + 224683, + "ECMWF", + 1806, + "FIO-QLNM", + 3176, + "HAMMOZ-Consortium", + 17501, + "INM", + 9986, + "IPSL", + 1239740, + "KIOST", + 3991, + "LLNL", + 162, + "MIROC", + 697939, + "MOHC", + 371600, + "MPI-M", + 214185, + "MRI", + 291816, + "NASA-GISS", + 283902, + "NCAR", + 1352439, + "NCC", + 603303, + "NERC", + 4292, + "NIMS-KMA", + 11228, + "NIWA", + 1270, + "NOAA-GFDL", + 24648, + "NTU", + 152, + "NUIST", + 5382, + "RTE-RRTMGP-Consortium", + 4, + "RUBISCO", + 219, + "SNU", + 1877, + "THU", + 3153, + "UA", + 746, + "UCI", + 39600, + "UCSB", + 1994, + "UHH", + 8 + ], + "source_type": [ + "AER", + 2232881, + "AERM", + 541, + "AGCM", + 2085633, + "AOGCM", + 6019571, + "AOGCM,AER", + 182, + "BGC", + 2394640, + "CHEM", + 554385, + "ISM", + 11665, + "LAND", + 14482, + "OGCM", + 16651, + "RAD", + 5334 + ], + "experiment_id": [ + "1pctCO2", + 44449, + "1pctCO2-4xext", + 388, + "1pctCO2-bgc", + 9105, + "1pctCO2-cdr", + 3069, + "1pctCO2-rad", + 8315, + "1pctCO2Ndep", + 1471, + "1pctCO2Ndep-bgc", + 1470, + "1pctCO2to4x-withism", + 449, + "G1", + 7962, + "G6solar", + 6030, + "G6sulfur", + 6788, + "G7cirrus", + 932, + "a4SST", + 639, + "a4SSTice", + 639, + "a4SSTice-4xCO2", + 639, + "abrupt-0p5xCO2", + 2934, + "abrupt-2xCO2", + 6967, + "abrupt-4xCO2", + 59128, + "abrupt-solm4p", + 1956, + "abrupt-solp4p", + 2483, + "amip", + 66641, + "amip-4xCO2", + 4645, + "amip-TIP", + 276, + "amip-TIP-nosh", + 268, + "amip-a4SST-4xCO2", + 628, + "amip-future4K", + 3577, + "amip-hist", + 12183, + "amip-hld", + 591, + "amip-lfmip-pObs", + 179, + "amip-lfmip-pdLC", + 2649, + "amip-lfmip-rmLC", + 2828, + "amip-lwoff", + 1886, + "amip-m4K", + 3020, + "amip-p4K", + 5013, + "amip-p4K-lwoff", + 1920, + "amip-piForcing", + 3647, + "aqua-4xCO2", + 1943, + "aqua-control", + 1926, + "aqua-control-lwoff", + 1374, + "aqua-p4K", + 1926, + "aqua-p4K-lwoff", + 1282, + "control-1950", + 3625, + "dcppA-assim", + 18457, + "dcppA-hindcast", + 2580419, + "dcppB-forecast", + 24073, + "dcppC-amv-ExTrop-neg", + 19018, + "dcppC-amv-ExTrop-pos", + 19439, + "dcppC-amv-Trop-neg", + 17643, + "dcppC-amv-Trop-pos", + 19865, + "dcppC-amv-neg", + 30851, + "dcppC-amv-pos", + 32957, + "dcppC-atl-control", + 18228, + "dcppC-atl-pacemaker", + 3110, + "dcppC-atl-spg", + 4874, + "dcppC-forecast-addAgung", + 7430, + "dcppC-forecast-addElChichon", + 7428, + "dcppC-forecast-addPinatubo", + 7430, + "dcppC-hindcast-noAgung", + 12346, + "dcppC-hindcast-noElChichon", + 12350, + "dcppC-hindcast-noPinatubo", + 12350, + "dcppC-ipv-NexTrop-neg", + 11317, + "dcppC-ipv-NexTrop-pos", + 11317, + "dcppC-ipv-neg", + 6878, + "dcppC-ipv-pos", + 7491, + "dcppC-pac-control", + 11001, + "dcppC-pac-pacemaker", + 3110, + "deforest-globe", + 9944, + "esm-1pct-brch-1000PgC", + 7148, + "esm-1pct-brch-2000PgC", + 2027, + "esm-1pct-brch-750PgC", + 1350, + "esm-1pctCO2", + 1505, + "esm-hist", + 30000, + "esm-pi-CO2pulse", + 4594, + "esm-pi-cdr-pulse", + 4588, + "esm-piControl", + 9154, + "esm-piControl-spinup", + 279, + "esm-sp585", + 265, + "esm-sp585-bgc", + 265, + "esm-ssp534-over", + 1513, + "esm-ssp585", + 15834, + "esm-ssp585-ocn-alk", + 356, + "esm-ssp585-ocn-alk-stop", + 356, + "esm-ssp585-ssp126Lu", + 6174, + "esm-ssp585ext", + 351, + "faf-all", + 3702, + "faf-antwater-stress", + 692, + "faf-heat", + 3727, + "faf-heat-NA0pct", + 1978, + "faf-heat-NA50pct", + 2920, + "faf-passiveheat", + 3529, + "faf-stress", + 3759, + "faf-water", + 3919, + "futSST-pdSIC", + 192462, + "highres-future", + 4747, + "highresSST-future", + 7003, + "highresSST-present", + 11672, + "hist-1950", + 7414, + "hist-1950HC", + 9383, + "hist-CO2", + 7422, + "hist-GHG", + 49155, + "hist-GHG-cmip5", + 1500, + "hist-aer", + 41958, + "hist-aer-cmip5", + 1420, + "hist-bgc", + 5735, + "hist-nat", + 59231, + "hist-nat-cmip5", + 1500, + "hist-noLu", + 15524, + "hist-piAer", + 10936, + "hist-piNTCF", + 11064, + "hist-resAMO", + 1512, + "hist-resIPO", + 2101, + "hist-sol", + 37372, + "hist-spAer-all", + 1569, + "hist-stratO3", + 16545, + "hist-totalO3", + 6505, + "hist-volc", + 31209, + "histSST", + 4109, + "histSST-1950HC", + 2213, + "histSST-noLu", + 966, + "histSST-piAer", + 2760, + "histSST-piCH4", + 2135, + "histSST-piN2O", + 1436, + "histSST-piNTCF", + 3576, + "histSST-piO3", + 1396, + "historical", + 360939, + "historical-cmip5", + 1920, + "historical-ext", + 5130, + "historical-withism", + 470, + "land-cCO2", + 745, + "land-cClim", + 702, + "land-crop-grass", + 312, + "land-crop-noFert", + 352, + "land-crop-noIrrig", + 348, + "land-crop-noIrrigFert", + 348, + "land-hist", + 1710, + "land-hist-altLu1", + 113, + "land-hist-altLu2", + 113, + "land-hist-altStartYear", + 756, + "land-hist-cruNcep", + 1421, + "land-hist-princeton", + 1291, + "land-hist-wfdei", + 555, + "land-noFire", + 459, + "land-noLu", + 966, + "land-noShiftCultivate", + 221, + "land-noWoodHarv", + 431, + "lgm", + 1852, + "lig127k", + 4853, + "midHolocene", + 7661, + "midPliocene-eoi400", + 1561, + "modelSST-futArcSIC", + 43000, + "modelSST-pdSIC", + 43000, + "omip1", + 7060, + "omip1-spunup", + 1952, + "omip2", + 5283, + "omip2-spunup", + 136, + "pa-futAntSIC", + 15600, + "pa-futArcSIC", + 143075, + "pa-futArcSIC-ext", + 1720, + "pa-pdSIC", + 142942, + "pa-pdSIC-ext", + 1724, + "pa-piAntSIC", + 15393, + "pa-piArcSIC", + 87851, + "past1000", + 1543, + "past2k", + 608, + "pdSST-futAntSIC", + 162481, + "pdSST-futArcSIC", + 356326, + "pdSST-futArcSICSIT", + 21740, + "pdSST-futBKSeasSIC", + 123437, + "pdSST-futOkhotskSIC", + 131926, + "pdSST-pdSIC", + 344989, + "pdSST-pdSICSIT", + 21738, + "pdSST-piAntSIC", + 162675, + "pdSST-piArcSIC", + 220757, + "piClim-2xDMS", + 2053, + "piClim-2xNOx", + 1405, + "piClim-2xVOC", + 2111, + "piClim-2xdust", + 2703, + "piClim-2xfire", + 1806, + "piClim-2xss", + 2704, + "piClim-4xCO2", + 4429, + "piClim-BC", + 3717, + "piClim-CH4", + 2953, + "piClim-HC", + 2181, + "piClim-N2O", + 2495, + "piClim-NH3", + 820, + "piClim-NOx", + 2169, + "piClim-NTCF", + 3179, + "piClim-O3", + 1760, + "piClim-OC", + 3674, + "piClim-SO2", + 3936, + "piClim-VOC", + 2159, + "piClim-aer", + 6413, + "piClim-anthro", + 4611, + "piClim-control", + 7933, + "piClim-ghg", + 4030, + "piClim-histaer", + 4622, + "piClim-histall", + 4958, + "piClim-histghg", + 4429, + "piClim-histnat", + 4066, + "piClim-lu", + 3858, + "piClim-spAer-aer", + 1778, + "piClim-spAer-anthro", + 1954, + "piClim-spAer-histaer", + 287, + "piClim-spAer-histall", + 159, + "piControl", + 42583, + "piControl-cmip5", + 292, + "piControl-spinup", + 659, + "piControl-withism", + 451, + "piSST", + 647, + "piSST-4xCO2", + 639, + "piSST-4xCO2-rad", + 676, + "piSST-pdSIC", + 183331, + "piSST-piSIC", + 153305, + "piSST-pxK", + 614, + "rad-irf", + 110, + "rcp26-cmip5", + 2430, + "rcp45-cmip5", + 2430, + "rcp85-cmip5", + 2430, + "spinup-1950", + 761, + "ssp119", + 84592, + "ssp126", + 147400, + "ssp126-ssp370Lu", + 8963, + "ssp245", + 208182, + "ssp245-GHG", + 20686, + "ssp245-aer", + 15929, + "ssp245-cov-GHG", + 3800, + "ssp245-cov-aer", + 3800, + "ssp245-cov-fossil", + 48209, + "ssp245-cov-modgreen", + 44701, + "ssp245-cov-strgreen", + 48940, + "ssp245-covid", + 66958, + "ssp245-nat", + 22519, + "ssp245-stratO3", + 9077, + "ssp370", + 169458, + "ssp370-lowNTCF", + 19349, + "ssp370-lowNTCFCH4", + 5542, + "ssp370-ssp126Lu", + 9283, + "ssp370SST", + 3602, + "ssp370SST-lowAer", + 2406, + "ssp370SST-lowBC", + 2390, + "ssp370SST-lowCH4", + 1429, + "ssp370SST-lowNTCF", + 2618, + "ssp370SST-lowNTCFCH4", + 1702, + "ssp370SST-lowO3", + 1190, + "ssp370SST-ssp126Lu", + 1586, + "ssp370pdSST", + 2201, + "ssp434", + 16568, + "ssp460", + 19916, + "ssp534-over", + 28032, + "ssp534-over-bgc", + 2625, + "ssp585", + 165994, + "ssp585-bgc", + 4634, + "ssp585-withism", + 440, + "volc-long-eq", + 20537, + "volc-pinatubo-full", + 73045, + "volc-pinatubo-strat", + 19275, + "volc-pinatubo-surf", + 19275 + ], + "sub_experiment_id": [ + "none", + 5451509, + "s1920", + 6220, + "s1960", + 42438, + "s1961", + 43606, + "s1962", + 56298, + "s1963", + 44064, + "s1964", + 44055, + "s1965", + 44097, + "s1966", + 44064, + "s1967", + 44045, + "s1968", + 44160, + "s1969", + 44065, + "s1970", + 44149, + "s1971", + 44923, + "s1972", + 44925, + "s1973", + 44926, + "s1974", + 44920, + "s1975", + 44918, + "s1976", + 44888, + "s1977", + 44925, + "s1978", + 44960, + "s1979", + 44928, + "s1980", + 45503, + "s1981", + 57854, + "s1982", + 45517, + "s1983", + 45499, + "s1984", + 45495, + "s1985", + 45428, + "s1986", + 45505, + "s1987", + 45477, + "s1988", + 45494, + "s1989", + 45403, + "s1990", + 57874, + "s1991", + 45743, + "s1992", + 46072, + "s1993", + 47020, + "s1994", + 47006, + "s1995", + 45959, + "s1996", + 43756, + "s1997", + 42567, + "s1998", + 42583, + "s1999", + 42580, + "s2000", + 43476, + "s2001", + 45684, + "s2002", + 45749, + "s2003", + 45750, + "s2004", + 45706, + "s2005", + 44816, + "s2006", + 42829, + "s2007", + 41660, + "s2008", + 41670, + "s2009", + 41664, + "s2010", + 41651, + "s2011", + 41664, + "s2012", + 41665, + "s2013", + 41522, + "s2014", + 62846, + "s2015", + 39205, + "s2016", + 39215, + "s2017", + 31742, + "s2018", + 22020, + "s2019", + 17343, + "s2020", + 11982, + "s2021", + 11152 + ], + "nominal_resolution": [ + "10 km", + 564, + "100 km", + 3514132, + "10000 km", + 748, + "100km", + 1, + "1x1 degree", + 235297, + "200 km", + 5335, + "25 km", + 12112, + "250 km", + 2887913, + "2x2 degree", + 474, + "50 km", + 65910, + "500 km", + 1403943 + ], + "variant_label": [ + "r100i1p1f1", + 12572, + "r100i1p1f2", + 1705, + "r100i1p2f1", + 2880, + "r100i2p1f2", + 86, + "r101i1p1f1", + 12477, + "r101i1p1f2", + 1011, + "r101i1p2f1", + 432, + "r101i2p1f2", + 86, + "r102i1p1f1", + 11009, + "r102i1p1f2", + 1010, + "r102i1p2f1", + 432, + "r102i2p1f2", + 86, + "r103i1p1f1", + 7967, + "r103i1p1f2", + 1001, + "r103i1p2f1", + 432, + "r103i2p1f2", + 86, + "r104i1p1f1", + 7278, + "r104i1p1f2", + 1131, + "r104i1p2f1", + 432, + "r104i2p1f2", + 86, + "r105i1p1f1", + 7277, + "r105i1p1f2", + 970, + "r105i1p2f1", + 432, + "r105i2p1f2", + 86, + "r106i1p1f1", + 6191, + "r106i1p1f2", + 1009, + "r106i1p2f1", + 432, + "r106i2p1f2", + 86, + "r107i1p1f1", + 6257, + "r107i1p1f2", + 989, + "r107i1p2f1", + 432, + "r107i2p1f2", + 86, + "r108i1p1f1", + 6258, + "r108i1p1f2", + 1056, + "r108i1p2f1", + 432, + "r108i2p1f2", + 86, + "r109i1p1f1", + 6257, + "r109i1p1f2", + 982, + "r109i1p2f1", + 432, + "r109i2p1f2", + 86, + "r10i1p1f1", + 167846, + "r10i1p1f2", + 23118, + "r10i1p1f242", + 2896, + "r10i1p1f3", + 595, + "r10i1p1f99", + 2296, + "r10i1p2f1", + 56618, + "r10i1p3f1", + 539, + "r10i1p5f1", + 1551, + "r10i1p5f2", + 1162, + "r10i2p1f1", + 15125, + "r10i2p1f2", + 86, + "r10i2p2f1", + 100, + "r10i3p2f1", + 488, + "r10i4p1f1", + 2, + "r110i1p1f1", + 6257, + "r110i1p1f2", + 1010, + "r110i1p2f1", + 432, + "r110i2p1f2", + 86, + "r111i1p1f1", + 6188, + "r111i1p1f2", + 968, + "r111i1p2f1", + 432, + "r111i2p1f2", + 86, + "r112i1p1f1", + 6256, + "r112i1p1f2", + 1131, + "r112i1p2f1", + 432, + "r112i2p1f2", + 86, + "r113i1p1f1", + 6258, + "r113i1p1f2", + 995, + "r113i1p2f1", + 432, + "r113i2p1f2", + 86, + "r114i1p1f1", + 6258, + "r114i1p1f2", + 1013, + "r114i1p2f1", + 432, + "r114i2p1f2", + 86, + "r115i1p1f1", + 6258, + "r115i1p1f2", + 974, + "r115i1p2f1", + 432, + "r115i2p1f2", + 86, + "r116i1p1f1", + 6192, + "r116i1p1f2", + 992, + "r116i1p2f1", + 432, + "r116i2p1f2", + 86, + "r117i1p1f1", + 6257, + "r117i1p1f2", + 999, + "r117i1p2f1", + 432, + "r117i2p1f2", + 86, + "r118i1p1f1", + 6248, + "r118i1p1f2", + 1015, + "r118i1p2f1", + 431, + "r118i2p1f2", + 86, + "r119i1p1f1", + 6222, + "r119i1p1f2", + 1002, + "r119i1p2f1", + 432, + "r119i2p1f2", + 86, + "r11i1p1f1", + 70478, + "r11i1p1f2", + 10603, + "r11i1p1f242", + 2896, + "r11i1p1f3", + 84, + "r11i1p2f1", + 32100, + "r11i2p1f1", + 169, + "r11i2p1f2", + 86, + "r11i2p2f1", + 100, + "r120i1p1f1", + 6255, + "r120i1p1f2", + 1140, + "r120i1p2f1", + 432, + "r120i2p1f2", + 86, + "r121i1p1f1", + 6187, + "r121i1p1f2", + 995, + "r121i1p2f1", + 432, + "r121i2p1f2", + 86, + "r122i1p1f1", + 6257, + "r122i1p1f2", + 1018, + "r122i1p2f1", + 432, + "r122i2p1f2", + 86, + "r123i1p1f1", + 6248, + "r123i1p1f2", + 971, + "r123i1p2f1", + 432, + "r123i2p1f2", + 86, + "r124i1p1f1", + 6257, + "r124i1p1f2", + 1081, + "r124i1p2f1", + 432, + "r124i2p1f2", + 86, + "r125i1p1f1", + 6258, + "r125i1p1f2", + 1003, + "r125i1p2f1", + 432, + "r125i2p1f2", + 86, + "r126i1p1f1", + 6163, + "r126i1p1f2", + 1021, + "r126i1p2f1", + 432, + "r126i2p1f2", + 86, + "r127i1p1f1", + 6258, + "r127i1p1f2", + 1007, + "r127i1p2f1", + 432, + "r127i2p1f2", + 86, + "r128i1p1f1", + 6258, + "r128i1p1f2", + 1140, + "r128i1p2f1", + 432, + "r128i2p1f2", + 86, + "r129i1p1f1", + 6260, + "r129i1p1f2", + 996, + "r129i1p2f1", + 432, + "r129i2p1f2", + 86, + "r12i1p1f1", + 61160, + "r12i1p1f2", + 11033, + "r12i1p1f242", + 2896, + "r12i1p1f3", + 84, + "r12i1p2f1", + 31739, + "r12i2p1f1", + 169, + "r12i2p1f2", + 86, + "r12i2p2f1", + 100, + "r130i1p1f1", + 6262, + "r130i1p1f2", + 1010, + "r130i1p2f1", + 432, + "r130i2p1f2", + 86, + "r131i1p1f1", + 6058, + "r131i1p1f2", + 986, + "r131i1p2f1", + 432, + "r131i2p1f2", + 86, + "r132i1p1f1", + 6261, + "r132i1p1f2", + 1002, + "r132i1p2f1", + 432, + "r132i2p1f2", + 86, + "r133i1p1f1", + 6260, + "r133i1p1f2", + 986, + "r133i1p2f1", + 432, + "r133i2p1f2", + 86, + "r134i1p1f1", + 6261, + "r134i1p1f2", + 1019, + "r134i1p2f1", + 432, + "r134i2p1f2", + 86, + "r135i1p1f1", + 6260, + "r135i1p1f2", + 1009, + "r135i1p2f1", + 432, + "r135i2p1f2", + 86, + "r136i1p1f1", + 6192, + "r136i1p1f2", + 1141, + "r136i1p2f1", + 432, + "r136i2p1f2", + 86, + "r137i1p1f1", + 6261, + "r137i1p1f2", + 967, + "r137i1p2f1", + 432, + "r137i2p1f2", + 86, + "r138i1p1f1", + 6261, + "r138i1p1f2", + 1034, + "r138i1p2f1", + 432, + "r138i2p1f2", + 86, + "r139i1p1f1", + 6268, + "r139i1p1f2", + 985, + "r139i1p2f1", + 432, + "r139i2p1f2", + 86, + "r13i1p1f1", + 60465, + "r13i1p1f2", + 10877, + "r13i1p1f242", + 2896, + "r13i1p1f3", + 84, + "r13i1p2f1", + 31757, + "r13i2p1f1", + 169, + "r13i2p1f2", + 86, + "r13i2p2f1", + 100, + "r140i1p1f1", + 6271, + "r140i1p1f2", + 1065, + "r140i1p2f1", + 432, + "r140i2p1f2", + 86, + "r141i1p1f1", + 6205, + "r141i1p1f2", + 1021, + "r141i1p2f1", + 432, + "r141i2p1f2", + 86, + "r142i1p1f1", + 6271, + "r142i1p1f2", + 1021, + "r142i1p2f1", + 432, + "r142i2p1f2", + 86, + "r143i1p1f1", + 6271, + "r143i1p1f2", + 1003, + "r143i1p2f1", + 432, + "r143i2p1f2", + 86, + "r144i1p1f1", + 6269, + "r144i1p1f2", + 1142, + "r144i1p2f1", + 432, + "r144i2p1f2", + 86, + "r145i1p1f1", + 6246, + "r145i1p1f2", + 1015, + "r145i1p2f1", + 432, + "r145i2p1f2", + 86, + "r146i1p1f1", + 6171, + "r146i1p1f2", + 1026, + "r146i1p2f1", + 432, + "r146i2p1f2", + 86, + "r147i1p1f1", + 6237, + "r147i1p1f2", + 1014, + "r147i1p2f1", + 432, + "r147i2p1f2", + 43, + "r148i1p1f1", + 6117, + "r148i1p1f2", + 986, + "r148i1p2f1", + 430, + "r148i2p1f2", + 86, + "r149i1p1f1", + 6171, + "r149i1p1f2", + 1004, + "r149i1p2f1", + 432, + "r149i2p1f2", + 86, + "r14i1p1f1", + 62547, + "r14i1p1f2", + 10037, + "r14i1p1f242", + 2896, + "r14i1p1f3", + 84, + "r14i1p2f1", + 31749, + "r14i2p1f1", + 169, + "r14i2p1f2", + 86, + "r14i2p2f1", + 100, + "r150i1p1f1", + 6169, + "r150i1p1f2", + 1023, + "r150i1p2f1", + 432, + "r150i2p1f2", + 86, + "r151i1p1f1", + 5592, + "r151i1p1f2", + 164, + "r151i1p2f1", + 432, + "r151i2p1f2", + 655, + "r152i1p1f1", + 5669, + "r152i1p1f2", + 258, + "r152i1p2f1", + 432, + "r152i2p1f2", + 659, + "r153i1p1f1", + 5699, + "r153i1p1f2", + 116, + "r153i1p2f1", + 432, + "r153i2p1f2", + 652, + "r154i1p1f1", + 5699, + "r154i1p1f2", + 135, + "r154i1p2f1", + 432, + "r154i2p1f2", + 654, + "r155i1p1f1", + 5699, + "r155i1p1f2", + 128, + "r155i1p2f1", + 432, + "r155i2p1f2", + 654, + "r156i1p1f1", + 5553, + "r156i1p1f2", + 182, + "r156i1p2f1", + 432, + "r156i2p1f2", + 654, + "r157i1p1f1", + 5526, + "r157i1p1f2", + 113, + "r157i1p2f1", + 432, + "r157i2p1f2", + 655, + "r158i1p1f1", + 5619, + "r158i1p1f2", + 132, + "r158i1p2f1", + 432, + "r158i2p1f2", + 653, + "r159i1p1f1", + 5565, + "r159i1p1f2", + 126, + "r159i1p2f1", + 432, + "r159i2p1f2", + 655, + "r15i1p1f1", + 58394, + "r15i1p1f2", + 10862, + "r15i1p1f242", + 2896, + "r15i1p1f3", + 84, + "r15i1p2f1", + 31745, + "r15i2p1f1", + 169, + "r15i2p1f2", + 86, + "r15i2p2f1", + 100, + "r160i1p1f1", + 5619, + "r160i1p1f2", + 258, + "r160i1p2f1", + 432, + "r160i2p1f2", + 655, + "r161i1p1f1", + 5553, + "r161i1p1f2", + 117, + "r161i1p2f1", + 432, + "r161i2p1f2", + 657, + "r162i1p1f1", + 5619, + "r162i1p1f2", + 149, + "r162i1p2f1", + 432, + "r162i2p1f2", + 655, + "r163i1p1f1", + 5618, + "r163i1p1f2", + 140, + "r163i1p2f1", + 432, + "r163i2p1f2", + 656, + "r164i1p1f1", + 5619, + "r164i1p1f2", + 119, + "r164i1p2f1", + 432, + "r164i2p1f2", + 651, + "r165i1p1f1", + 5619, + "r165i1p1f2", + 127, + "r165i1p2f1", + 432, + "r165i2p1f2", + 652, + "r166i1p1f1", + 5553, + "r166i1p1f2", + 137, + "r166i1p2f1", + 432, + "r166i2p1f2", + 657, + "r167i1p1f1", + 5619, + "r167i1p1f2", + 111, + "r167i1p2f1", + 432, + "r167i2p1f2", + 658, + "r168i1p1f1", + 5619, + "r168i1p1f2", + 258, + "r168i1p2f1", + 432, + "r168i2p1f2", + 651, + "r169i1p1f1", + 5619, + "r169i1p1f2", + 126, + "r169i1p2f1", + 432, + "r169i2p1f2", + 655, + "r16i1p1f1", + 57783, + "r16i1p1f2", + 11610, + "r16i1p1f242", + 2896, + "r16i1p1f3", + 84, + "r16i1p2f1", + 31419, + "r16i2p1f1", + 169, + "r16i2p1f2", + 86, + "r16i2p2f1", + 100, + "r170i1p1f1", + 5618, + "r170i1p1f2", + 137, + "r170i1p2f1", + 432, + "r170i2p1f2", + 657, + "r171i1p1f1", + 5553, + "r171i1p1f2", + 132, + "r171i1p2f1", + 432, + "r171i2p1f2", + 656, + "r172i1p1f1", + 5619, + "r172i1p1f2", + 182, + "r172i1p2f1", + 432, + "r172i2p1f2", + 660, + "r173i1p1f1", + 5573, + "r173i1p1f2", + 120, + "r173i1p2f1", + 432, + "r173i2p1f2", + 653, + "r174i1p1f1", + 5581, + "r174i1p1f2", + 143, + "r174i1p2f1", + 432, + "r174i2p1f2", + 653, + "r175i1p1f1", + 5558, + "r175i1p1f2", + 135, + "r175i1p2f1", + 432, + "r175i2p1f2", + 654, + "r176i1p1f1", + 5433, + "r176i1p1f2", + 258, + "r176i1p2f1", + 432, + "r176i2p1f2", + 651, + "r177i1p1f1", + 5499, + "r177i1p1f2", + 123, + "r177i1p2f1", + 432, + "r177i2p1f2", + 653, + "r178i1p1f1", + 5499, + "r178i1p1f2", + 129, + "r178i1p2f1", + 432, + "r178i2p1f2", + 657, + "r179i1p1f1", + 5499, + "r179i1p1f2", + 114, + "r179i1p2f1", + 432, + "r179i2p1f2", + 657, + "r17i1p1f1", + 60116, + "r17i1p1f2", + 11013, + "r17i1p1f242", + 2896, + "r17i1p1f3", + 84, + "r17i1p2f1", + 31436, + "r17i2p1f1", + 169, + "r17i2p1f2", + 86, + "r17i2p2f1", + 100, + "r180i1p1f1", + 5499, + "r180i1p1f2", + 118, + "r180i1p2f1", + 432, + "r180i2p1f2", + 658, + "r181i1p1f1", + 5432, + "r181i1p1f2", + 129, + "r181i1p2f1", + 432, + "r181i2p1f2", + 657, + "r182i1p1f1", + 5499, + "r182i1p1f2", + 134, + "r182i1p2f1", + 432, + "r182i2p1f2", + 652, + "r183i1p1f1", + 5499, + "r183i1p1f2", + 133, + "r183i1p2f1", + 431, + "r183i2p1f2", + 650, + "r184i1p1f1", + 5499, + "r184i1p1f2", + 258, + "r184i1p2f1", + 432, + "r184i2p1f2", + 651, + "r185i1p1f1", + 5434, + "r185i1p1f2", + 121, + "r185i1p2f1", + 432, + "r185i2p1f2", + 655, + "r186i1p1f1", + 5243, + "r186i1p1f2", + 152, + "r186i1p2f1", + 432, + "r186i2p1f2", + 655, + "r187i1p1f1", + 5309, + "r187i1p1f2", + 131, + "r187i1p2f1", + 432, + "r187i2p1f2", + 659, + "r188i1p1f1", + 5309, + "r188i1p1f2", + 182, + "r188i1p2f1", + 432, + "r188i2p1f2", + 653, + "r189i1p1f1", + 5309, + "r189i1p1f2", + 124, + "r189i1p2f1", + 432, + "r189i2p1f2", + 656, + "r18i1p1f1", + 59915, + "r18i1p1f2", + 11079, + "r18i1p1f242", + 2896, + "r18i1p1f3", + 84, + "r18i1p2f1", + 31436, + "r18i2p1f1", + 169, + "r18i2p1f2", + 86, + "r18i2p2f1", + 100, + "r190i1p1f1", + 5309, + "r190i1p1f2", + 138, + "r190i1p2f1", + 432, + "r190i2p1f2", + 656, + "r191i1p1f1", + 5167, + "r191i1p1f2", + 104, + "r191i1p2f1", + 432, + "r191i2p1f2", + 655, + "r192i1p1f1", + 5309, + "r192i1p1f2", + 258, + "r192i1p2f1", + 432, + "r192i2p1f2", + 655, + "r193i1p1f1", + 5309, + "r193i1p1f2", + 137, + "r193i1p2f1", + 432, + "r193i2p1f2", + 655, + "r194i1p1f1", + 5309, + "r194i1p1f2", + 140, + "r194i1p2f1", + 432, + "r194i2p1f2", + 654, + "r195i1p1f1", + 5309, + "r195i1p1f2", + 129, + "r195i1p2f1", + 432, + "r195i2p1f2", + 655, + "r196i1p1f1", + 5242, + "r196i1p1f2", + 118, + "r196i1p2f1", + 432, + "r196i2p1f2", + 658, + "r197i1p1f1", + 5309, + "r197i1p1f2", + 122, + "r197i1p2f1", + 432, + "r197i2p1f2", + 655, + "r198i1p1f1", + 5309, + "r198i1p1f2", + 136, + "r198i1p2f1", + 432, + "r198i2p1f2", + 650, + "r199i1p1f1", + 5309, + "r199i1p1f2", + 121, + "r199i1p2f1", + 432, + "r199i2p1f2", + 646, + "r19i1p1f1", + 59917, + "r19i1p1f2", + 11581, + "r19i1p1f242", + 2896, + "r19i1p1f3", + 84, + "r19i1p2f1", + 31387, + "r19i2p1f1", + 169, + "r19i2p1f2", + 86, + "r19i2p2f1", + 97, + "r1i1000p1f1", + 782, + "r1i1000p1f2", + 861, + "r1i10p1f1", + 332, + "r1i14p1f1", + 111, + "r1i15p1f1", + 111, + "r1i1p11f1", + 219, + "r1i1p1f1", + 629892, + "r1i1p1f11", + 358, + "r1i1p1f2", + 125180, + "r1i1p1f242", + 2896, + "r1i1p1f3", + 11937, + "r1i1p1f4", + 5494, + "r1i1p1f99", + 2296, + "r1i1p2f1", + 104242, + "r1i1p2f2", + 412, + "r1i1p2f3", + 4, + "r1i1p3f1", + 41920, + "r1i1p3f2", + 2171, + "r1i1p3f3", + 4, + "r1i1p4f1", + 422, + "r1i1p4f2", + 4033, + "r1i1p5f1", + 9084, + "r1i1p5f2", + 1162, + "r1i2000p1f1", + 620, + "r1i2p1f1", + 33241, + "r1i2p1f2", + 86, + "r1i2p2f1", + 5659, + "r1i3p1f1", + 5090, + "r1i3p2f1", + 488, + "r1i4p1f1", + 4946, + "r1i5p1f1", + 496, + "r1i6p1f1", + 495, + "r1i7p1f1", + 493, + "r1i8p1f1", + 493, + "r1i9p1f1", + 332, + "r200i1p1f1", + 5325, + "r200i1p1f2", + 258, + "r200i1p2f1", + 432, + "r200i2p1f2", + 636, + "r201i1p1f1", + 330, + "r201i1p1f2", + 94, + "r201i1p2f1", + 432, + "r201i2p1f2", + 544, + "r202i1p1f1", + 330, + "r202i1p1f2", + 139, + "r202i1p2f1", + 432, + "r202i2p1f2", + 544, + "r203i1p1f1", + 330, + "r203i1p1f2", + 144, + "r203i1p2f1", + 432, + "r203i2p1f2", + 543, + "r204i1p1f1", + 330, + "r204i1p1f2", + 183, + "r204i1p2f1", + 432, + "r204i2p1f2", + 549, + "r205i1p1f1", + 330, + "r205i1p1f2", + 152, + "r205i1p2f1", + 432, + "r205i2p1f2", + 551, + "r206i1p1f1", + 330, + "r206i1p1f2", + 125, + "r206i1p2f1", + 432, + "r206i2p1f2", + 546, + "r207i1p1f1", + 330, + "r207i1p1f2", + 132, + "r207i1p2f1", + 432, + "r207i2p1f2", + 547, + "r208i1p1f1", + 330, + "r208i1p1f2", + 258, + "r208i1p2f1", + 432, + "r208i2p1f2", + 547, + "r209i1p1f1", + 330, + "r209i1p1f2", + 117, + "r209i1p2f1", + 432, + "r209i2p1f2", + 546, + "r20i1p1f1", + 59897, + "r20i1p1f2", + 9648, + "r20i1p1f242", + 2896, + "r20i1p1f3", + 84, + "r20i1p2f1", + 31321, + "r20i2p1f1", + 169, + "r20i2p1f2", + 86, + "r20i2p2f1", + 100, + "r210i1p1f1", + 330, + "r210i1p1f2", + 157, + "r210i1p2f1", + 432, + "r210i2p1f2", + 546, + "r211i1p1f1", + 330, + "r211i1p1f2", + 137, + "r211i1p2f1", + 432, + "r211i2p1f2", + 551, + "r212i1p1f1", + 330, + "r212i1p1f2", + 118, + "r212i1p2f1", + 432, + "r212i2p1f2", + 548, + "r213i1p1f1", + 330, + "r213i1p1f2", + 130, + "r213i1p2f1", + 432, + "r213i2p1f2", + 550, + "r214i1p1f1", + 330, + "r214i1p1f2", + 149, + "r214i1p2f1", + 432, + "r214i2p1f2", + 549, + "r215i1p1f1", + 330, + "r215i1p1f2", + 131, + "r215i1p2f1", + 432, + "r215i2p1f2", + 548, + "r216i1p1f1", + 330, + "r216i1p1f2", + 258, + "r216i1p2f1", + 432, + "r216i2p1f2", + 550, + "r217i1p1f1", + 330, + "r217i1p1f2", + 109, + "r217i1p2f1", + 432, + "r217i2p1f2", + 552, + "r218i1p1f1", + 330, + "r218i1p1f2", + 160, + "r218i1p2f1", + 432, + "r218i2p1f2", + 552, + "r219i1p1f1", + 330, + "r219i1p1f2", + 126, + "r219i1p2f1", + 432, + "r219i2p1f2", + 549, + "r21i1p1f1", + 47829, + "r21i1p1f2", + 9215, + "r21i1p1f242", + 2896, + "r21i1p1f3", + 84, + "r21i1p2f1", + 11243, + "r21i2p1f1", + 169, + "r21i2p1f2", + 86, + "r220i1p1f1", + 330, + "r220i1p1f2", + 182, + "r220i1p2f1", + 432, + "r220i2p1f2", + 550, + "r221i1p1f1", + 330, + "r221i1p1f2", + 138, + "r221i1p2f1", + 432, + "r221i2p1f2", + 558, + "r222i1p1f1", + 330, + "r222i1p1f2", + 152, + "r222i1p2f1", + 432, + "r222i2p1f2", + 572, + "r223i1p1f1", + 330, + "r223i1p1f2", + 132, + "r223i1p2f1", + 432, + "r223i2p1f2", + 569, + "r224i1p1f1", + 330, + "r224i1p1f2", + 258, + "r224i1p2f1", + 432, + "r224i2p1f2", + 570, + "r225i1p1f1", + 330, + "r225i1p1f2", + 123, + "r225i1p2f1", + 432, + "r225i2p1f2", + 571, + "r226i1p1f1", + 330, + "r226i1p1f2", + 147, + "r226i1p2f1", + 432, + "r226i2p1f2", + 571, + "r227i1p1f1", + 330, + "r227i1p1f2", + 134, + "r227i1p2f1", + 432, + "r227i2p1f2", + 571, + "r228i1p1f1", + 330, + "r228i1p1f2", + 118, + "r228i1p2f1", + 432, + "r228i2p1f2", + 572, + "r229i1p1f1", + 330, + "r229i1p1f2", + 131, + "r229i1p2f1", + 432, + "r229i2p1f2", + 571, + "r22i1p1f1", + 49316, + "r22i1p1f2", + 9815, + "r22i1p1f242", + 2896, + "r22i1p1f3", + 84, + "r22i1p2f1", + 11239, + "r22i2p1f1", + 169, + "r22i2p1f2", + 86, + "r230i1p1f1", + 330, + "r230i1p1f2", + 167, + "r230i1p2f1", + 432, + "r230i2p1f2", + 574, + "r231i1p1f1", + 330, + "r231i1p1f2", + 122, + "r231i1p2f1", + 432, + "r231i2p1f2", + 574, + "r232i1p1f1", + 330, + "r232i1p1f2", + 258, + "r232i1p2f1", + 432, + "r232i2p1f2", + 572, + "r233i1p1f1", + 330, + "r233i1p1f2", + 137, + "r233i1p2f1", + 432, + "r233i2p1f2", + 572, + "r234i1p1f1", + 330, + "r234i1p1f2", + 156, + "r234i1p2f1", + 432, + "r234i2p1f2", + 571, + "r235i1p1f1", + 330, + "r235i1p1f2", + 123, + "r235i1p2f1", + 432, + "r235i2p1f2", + 577, + "r236i1p1f1", + 330, + "r236i1p1f2", + 182, + "r236i1p2f1", + 432, + "r236i2p1f2", + 577, + "r237i1p1f1", + 330, + "r237i1p1f2", + 140, + "r237i1p2f1", + 432, + "r237i2p1f2", + 573, + "r238i1p1f1", + 330, + "r238i1p1f2", + 159, + "r238i1p2f1", + 432, + "r238i2p1f2", + 573, + "r239i1p1f1", + 330, + "r239i1p1f2", + 122, + "r239i1p2f1", + 432, + "r239i2p1f2", + 574, + "r23i1p1f1", + 47553, + "r23i1p1f2", + 9022, + "r23i1p1f242", + 2896, + "r23i1p1f3", + 84, + "r23i1p2f1", + 11224, + "r23i2p1f1", + 169, + "r23i2p1f2", + 86, + "r240i1p1f1", + 330, + "r240i1p1f2", + 258, + "r240i1p2f1", + 432, + "r240i2p1f2", + 572, + "r241i1p1f1", + 330, + "r241i1p1f2", + 145, + "r241i1p2f1", + 432, + "r241i2p1f2", + 573, + "r242i1p1f1", + 330, + "r242i1p1f2", + 157, + "r242i1p2f1", + 432, + "r242i2p1f2", + 574, + "r243i1p1f1", + 330, + "r243i1p1f2", + 101, + "r243i1p2f1", + 432, + "r243i2p1f2", + 575, + "r244i1p1f1", + 330, + "r244i1p1f2", + 118, + "r244i1p2f1", + 432, + "r244i2p1f2", + 574, + "r245i1p1f1", + 330, + "r245i1p1f2", + 141, + "r245i1p2f1", + 432, + "r245i2p1f2", + 572, + "r246i1p1f1", + 330, + "r246i1p1f2", + 156, + "r246i1p2f1", + 432, + "r246i2p1f2", + 576, + "r247i1p1f1", + 330, + "r247i1p1f2", + 146, + "r247i1p2f1", + 432, + "r247i2p1f2", + 572, + "r248i1p1f1", + 330, + "r248i1p1f2", + 258, + "r248i1p2f1", + 432, + "r248i2p1f2", + 576, + "r249i1p1f1", + 330, + "r249i1p1f2", + 133, + "r249i1p2f1", + 432, + "r249i2p1f2", + 574, + "r24i1p1f1", + 47918, + "r24i1p1f2", + 9849, + "r24i1p1f242", + 2896, + "r24i1p1f3", + 84, + "r24i1p2f1", + 11195, + "r24i2p1f1", + 169, + "r24i2p1f2", + 86, + "r250i1p1f1", + 330, + "r250i1p1f2", + 144, + "r250i1p2f1", + 432, + "r250i2p1f2", + 578, + "r251i1p1f1", + 330, + "r251i1p1f2", + 136, + "r251i1p2f1", + 432, + "r251i2p1f2", + 576, + "r252i1p1f1", + 330, + "r252i1p1f2", + 182, + "r252i1p2f1", + 432, + "r252i2p1f2", + 575, + "r253i1p1f1", + 330, + "r253i1p1f2", + 122, + "r253i1p2f1", + 432, + "r253i2p1f2", + 579, + "r254i1p1f1", + 330, + "r254i1p1f2", + 171, + "r254i1p2f1", + 432, + "r254i2p1f2", + 579, + "r255i1p1f1", + 330, + "r255i1p1f2", + 112, + "r255i1p2f1", + 432, + "r255i2p1f2", + 577, + "r256i1p1f1", + 330, + "r256i1p1f2", + 258, + "r256i1p2f1", + 432, + "r256i2p1f2", + 580, + "r257i1p1f1", + 330, + "r257i1p1f2", + 159, + "r257i1p2f1", + 432, + "r257i2p1f2", + 580, + "r258i1p1f1", + 330, + "r258i1p1f2", + 155, + "r258i1p2f1", + 432, + "r258i2p1f2", + 578, + "r259i1p1f1", + 330, + "r259i1p1f2", + 177, + "r259i1p2f1", + 432, + "r259i2p1f2", + 577, + "r25i1p1f1", + 48556, + "r25i1p1f2", + 8950, + "r25i1p1f242", + 2895, + "r25i1p1f3", + 84, + "r25i1p2f1", + 11237, + "r25i2p1f1", + 169, + "r25i2p1f2", + 86, + "r260i1p1f1", + 330, + "r260i1p1f2", + 118, + "r260i1p2f1", + 432, + "r260i2p1f2", + 579, + "r261i1p1f1", + 330, + "r261i1p1f2", + 149, + "r261i1p2f1", + 432, + "r261i2p1f2", + 579, + "r262i1p1f1", + 330, + "r262i1p1f2", + 160, + "r262i1p2f1", + 432, + "r262i2p1f2", + 579, + "r263i1p1f1", + 330, + "r263i1p1f2", + 145, + "r263i1p2f1", + 432, + "r263i2p1f2", + 581, + "r264i1p1f1", + 330, + "r264i1p1f2", + 233, + "r264i1p2f1", + 432, + "r264i2p1f2", + 573, + "r265i1p1f1", + 330, + "r265i1p1f2", + 173, + "r265i1p2f1", + 432, + "r265i2p1f2", + 576, + "r266i1p1f1", + 330, + "r266i1p1f2", + 160, + "r266i1p2f1", + 432, + "r266i2p1f2", + 581, + "r267i1p1f1", + 330, + "r267i1p1f2", + 151, + "r267i1p2f1", + 432, + "r267i2p1f2", + 574, + "r268i1p1f1", + 330, + "r268i1p1f2", + 182, + "r268i1p2f1", + 432, + "r268i2p1f2", + 575, + "r269i1p1f1", + 330, + "r269i1p1f2", + 148, + "r269i1p2f1", + 432, + "r269i2p1f2", + 578, + "r26i1p1f1", + 40898, + "r26i1p1f2", + 5597, + "r26i1p1f242", + 2896, + "r26i1p1f3", + 84, + "r26i1p2f1", + 5990, + "r26i2p1f1", + 169, + "r26i2p1f2", + 86, + "r270i1p1f1", + 330, + "r270i1p1f2", + 160, + "r270i1p2f1", + 432, + "r270i2p1f2", + 579, + "r271i1p1f1", + 330, + "r271i1p1f2", + 156, + "r271i1p2f1", + 432, + "r271i2p1f2", + 576, + "r272i1p1f1", + 330, + "r272i1p1f2", + 215, + "r272i1p2f1", + 432, + "r272i2p1f2", + 580, + "r273i1p1f1", + 330, + "r273i1p1f2", + 158, + "r273i1p2f1", + 432, + "r273i2p1f2", + 577, + "r274i1p1f1", + 330, + "r274i1p1f2", + 183, + "r274i1p2f1", + 432, + "r274i2p1f2", + 579, + "r275i1p1f1", + 330, + "r275i1p1f2", + 156, + "r275i1p2f1", + 432, + "r275i2p1f2", + 576, + "r276i1p1f1", + 330, + "r276i1p1f2", + 118, + "r276i1p2f1", + 432, + "r276i2p1f2", + 576, + "r277i1p1f1", + 330, + "r277i1p1f2", + 169, + "r277i1p2f1", + 432, + "r277i2p1f2", + 574, + "r278i1p1f1", + 330, + "r278i1p1f2", + 172, + "r278i1p2f1", + 432, + "r278i2p1f2", + 578, + "r279i1p1f1", + 330, + "r279i1p1f2", + 136, + "r279i1p2f1", + 432, + "r279i2p1f2", + 579, + "r27i1p1f1", + 40833, + "r27i1p1f2", + 5364, + "r27i1p1f242", + 2896, + "r27i1p1f3", + 84, + "r27i1p2f1", + 5992, + "r27i2p1f1", + 169, + "r27i2p1f2", + 86, + "r280i1p1f1", + 312, + "r280i1p1f2", + 215, + "r280i1p2f1", + 432, + "r280i2p1f2", + 576, + "r281i1p1f1", + 330, + "r281i1p1f2", + 160, + "r281i1p2f1", + 430, + "r281i2p1f2", + 556, + "r282i1p1f1", + 330, + "r282i1p1f2", + 160, + "r282i1p2f1", + 432, + "r282i2p1f2", + 574, + "r283i1p1f1", + 330, + "r283i1p1f2", + 164, + "r283i1p2f1", + 432, + "r283i2p1f2", + 563, + "r284i1p1f1", + 330, + "r284i1p1f2", + 182, + "r284i1p2f1", + 432, + "r284i2p1f2", + 575, + "r285i1p1f1", + 330, + "r285i1p1f2", + 154, + "r285i1p2f1", + 432, + "r285i2p1f2", + 576, + "r286i1p1f1", + 330, + "r286i1p1f2", + 151, + "r286i1p2f1", + 432, + "r286i2p1f2", + 577, + "r287i1p1f1", + 330, + "r287i1p1f2", + 162, + "r287i1p2f1", + 432, + "r287i2p1f2", + 581, + "r288i1p1f1", + 330, + "r288i1p1f2", + 215, + "r288i1p2f1", + 432, + "r288i2p1f2", + 581, + "r289i1p1f1", + 330, + "r289i1p1f2", + 151, + "r289i1p2f1", + 432, + "r289i2p1f2", + 580, + "r28i1p1f1", + 40837, + "r28i1p1f2", + 6002, + "r28i1p1f242", + 2896, + "r28i1p1f3", + 84, + "r28i1p2f1", + 5992, + "r28i2p1f1", + 169, + "r28i2p1f2", + 86, + "r290i1p1f1", + 330, + "r290i1p1f2", + 151, + "r290i1p2f1", + 432, + "r290i2p1f2", + 579, + "r291i1p1f1", + 330, + "r291i1p1f2", + 141, + "r291i1p2f1", + 432, + "r291i2p1f2", + 583, + "r292i1p1f1", + 330, + "r292i1p1f2", + 118, + "r292i1p2f1", + 432, + "r292i2p1f2", + 583, + "r293i1p1f1", + 330, + "r293i1p1f2", + 147, + "r293i1p2f1", + 432, + "r293i2p1f2", + 582, + "r294i1p1f1", + 330, + "r294i1p1f2", + 151, + "r294i1p2f1", + 432, + "r294i2p1f2", + 582, + "r295i1p1f1", + 330, + "r295i1p1f2", + 140, + "r295i1p2f1", + 432, + "r295i2p1f2", + 583, + "r296i1p1f1", + 330, + "r296i1p1f2", + 215, + "r296i1p2f1", + 432, + "r296i2p1f2", + 583, + "r297i1p1f1", + 330, + "r297i1p1f2", + 152, + "r297i1p2f1", + 432, + "r297i2p1f2", + 580, + "r298i1p1f1", + 330, + "r298i1p1f2", + 151, + "r298i1p2f1", + 432, + "r298i2p1f2", + 580, + "r299i1p1f1", + 330, + "r299i1p1f2", + 163, + "r299i1p2f1", + 432, + "r299i2p1f2", + 582, + "r29i1p1f1", + 40792, + "r29i1p1f2", + 5394, + "r29i1p1f242", + 2896, + "r29i1p1f3", + 84, + "r29i1p2f1", + 5994, + "r29i2p1f1", + 169, + "r29i2p1f2", + 86, + "r2i10p1f1", + 332, + "r2i1p1f1", + 277873, + "r2i1p1f2", + 50265, + "r2i1p1f242", + 2896, + "r2i1p1f3", + 4212, + "r2i1p1f4", + 991, + "r2i1p1f99", + 2296, + "r2i1p2f1", + 69910, + "r2i1p3f1", + 13411, + "r2i1p3f2", + 522, + "r2i1p4f2", + 2480, + "r2i1p5f1", + 3480, + "r2i1p5f2", + 1162, + "r2i2p1f1", + 12825, + "r2i2p1f2", + 383, + "r2i2p2f1", + 100, + "r2i3p1f1", + 3722, + "r2i3p2f1", + 488, + "r2i4p1f1", + 394, + "r2i5p1f1", + 332, + "r2i6p1f1", + 332, + "r2i7p1f1", + 332, + "r2i8p1f1", + 332, + "r2i9p1f1", + 332, + "r300i1p1f1", + 330, + "r300i1p1f2", + 179, + "r300i1p2f1", + 432, + "r300i2p1f2", + 580, + "r30i1p1f1", + 40796, + "r30i1p1f2", + 5403, + "r30i1p1f242", + 2896, + "r30i1p1f3", + 84, + "r30i1p2f1", + 5991, + "r30i2p1f1", + 169, + "r30i2p1f2", + 86, + "r31i1p1f1", + 36021, + "r31i1p1f2", + 3002, + "r31i1p1f3", + 84, + "r31i1p2f1", + 5992, + "r31i2p1f2", + 86, + "r32i1p1f1", + 36069, + "r32i1p1f2", + 3071, + "r32i1p1f3", + 84, + "r32i1p2f1", + 5992, + "r32i2p1f2", + 86, + "r33i1p1f1", + 36693, + "r33i1p1f2", + 2955, + "r33i1p1f3", + 84, + "r33i1p2f1", + 5994, + "r33i2p1f2", + 86, + "r34i1p1f1", + 35260, + "r34i1p1f2", + 3085, + "r34i1p1f3", + 84, + "r34i1p2f1", + 5992, + "r34i2p1f2", + 86, + "r35i1p1f1", + 35193, + "r35i1p1f2", + 2960, + "r35i1p1f3", + 84, + "r35i1p2f1", + 5992, + "r35i2p1f2", + 86, + "r36i1p1f1", + 35160, + "r36i1p1f2", + 3089, + "r36i1p1f3", + 84, + "r36i1p2f1", + 5991, + "r36i2p1f2", + 86, + "r37i1p1f1", + 35249, + "r37i1p1f2", + 3036, + "r37i1p1f3", + 84, + "r37i1p2f1", + 5993, + "r37i2p1f2", + 86, + "r38i1p1f1", + 35231, + "r38i1p1f2", + 3061, + "r38i1p1f3", + 84, + "r38i1p2f1", + 5993, + "r38i2p1f2", + 86, + "r39i1p1f1", + 35246, + "r39i1p1f2", + 3008, + "r39i1p1f3", + 84, + "r39i1p2f1", + 5993, + "r39i2p1f2", + 86, + "r3i10p1f1", + 332, + "r3i1p1f1", + 280710, + "r3i1p1f2", + 47570, + "r3i1p1f242", + 2896, + "r3i1p1f3", + 4124, + "r3i1p1f4", + 331, + "r3i1p1f99", + 2296, + "r3i1p2f1", + 69732, + "r3i1p3f1", + 13655, + "r3i1p3f2", + 522, + "r3i1p4f2", + 2482, + "r3i1p5f1", + 3481, + "r3i1p5f2", + 1162, + "r3i2p1f1", + 12799, + "r3i2p1f2", + 382, + "r3i2p2f1", + 100, + "r3i3p1f1", + 3722, + "r3i3p2f1", + 482, + "r3i4p1f1", + 394, + "r3i5p1f1", + 332, + "r3i6p1f1", + 332, + "r3i7p1f1", + 332, + "r3i8p1f1", + 332, + "r3i9p1f1", + 332, + "r40i1p1f1", + 34723, + "r40i1p1f2", + 3118, + "r40i1p1f3", + 84, + "r40i1p2f1", + 5991, + "r40i2p1f2", + 86, + "r41i1p1f1", + 15891, + "r41i1p1f2", + 1676, + "r41i1p1f3", + 84, + "r41i1p2f1", + 2876, + "r41i2p1f2", + 86, + "r42i1p1f1", + 15916, + "r42i1p1f2", + 1718, + "r42i1p1f3", + 84, + "r42i1p2f1", + 2878, + "r42i2p1f2", + 86, + "r43i1p1f1", + 15936, + "r43i1p1f2", + 1676, + "r43i1p1f3", + 84, + "r43i1p2f1", + 2879, + "r43i2p1f2", + 86, + "r44i1p1f1", + 15943, + "r44i1p1f2", + 1718, + "r44i1p1f3", + 84, + "r44i1p2f1", + 2880, + "r44i2p1f2", + 86, + "r45i1p1f1", + 15959, + "r45i1p1f2", + 1673, + "r45i1p1f3", + 84, + "r45i1p2f1", + 2879, + "r45i2p1f2", + 86, + "r46i1p1f1", + 15958, + "r46i1p1f2", + 1715, + "r46i1p1f3", + 83, + "r46i1p2f1", + 2880, + "r46i2p1f2", + 86, + "r47i1p1f1", + 15925, + "r47i1p1f2", + 1675, + "r47i1p1f3", + 84, + "r47i1p2f1", + 2880, + "r47i2p1f2", + 86, + "r48i1p1f1", + 15901, + "r48i1p1f2", + 1712, + "r48i1p1f3", + 83, + "r48i1p2f1", + 2879, + "r48i2p1f2", + 86, + "r49i1p1f1", + 15949, + "r49i1p1f2", + 1673, + "r49i1p1f3", + 84, + "r49i1p2f1", + 2880, + "r49i2p1f2", + 86, + "r4i10p1f1", + 332, + "r4i1p1f1", + 225664, + "r4i1p1f2", + 42674, + "r4i1p1f242", + 2896, + "r4i1p1f3", + 3731, + "r4i1p1f4", + 331, + "r4i1p1f99", + 2296, + "r4i1p2f1", + 58588, + "r4i1p3f1", + 12601, + "r4i1p5f1", + 3485, + "r4i1p5f2", + 1162, + "r4i2p1f1", + 11553, + "r4i2p1f2", + 86, + "r4i2p2f1", + 97, + "r4i3p1f1", + 3722, + "r4i3p2f1", + 488, + "r4i4p1f1", + 334, + "r4i5p1f1", + 332, + "r4i6p1f1", + 332, + "r4i7p1f1", + 332, + "r4i8p1f1", + 332, + "r4i9p1f1", + 332, + "r50i1p1f1", + 15958, + "r50i1p1f2", + 1718, + "r50i1p1f3", + 71, + "r50i1p2f1", + 2879, + "r50i2p1f2", + 86, + "r51i1p1f1", + 12457, + "r51i1p1f2", + 1674, + "r51i1p1f3", + 38, + "r51i1p2f1", + 2879, + "r51i2p1f2", + 86, + "r52i1p1f1", + 12488, + "r52i1p1f2", + 1714, + "r52i1p1f3", + 38, + "r52i1p2f1", + 2880, + "r52i2p1f2", + 86, + "r53i1p1f1", + 12486, + "r53i1p1f2", + 1676, + "r53i1p2f1", + 2879, + "r53i2p1f2", + 86, + "r54i1p1f1", + 12455, + "r54i1p1f2", + 1718, + "r54i1p1f3", + 38, + "r54i1p2f1", + 2880, + "r54i2p1f2", + 86, + "r55i1p1f1", + 12487, + "r55i1p1f2", + 1675, + "r55i1p1f3", + 38, + "r55i1p2f1", + 2878, + "r55i2p1f2", + 86, + "r56i1p1f1", + 12482, + "r56i1p1f2", + 1718, + "r56i1p1f3", + 38, + "r56i1p2f1", + 2880, + "r56i2p1f2", + 86, + "r57i1p1f1", + 12474, + "r57i1p1f2", + 1675, + "r57i1p1f3", + 38, + "r57i1p2f1", + 2879, + "r57i2p1f2", + 86, + "r58i1p1f1", + 12472, + "r58i1p1f2", + 1716, + "r58i1p1f3", + 38, + "r58i1p2f1", + 2880, + "r58i2p1f2", + 86, + "r59i1p1f1", + 12473, + "r59i1p1f2", + 1675, + "r59i1p1f3", + 38, + "r59i1p2f1", + 2879, + "r59i2p1f2", + 86, + "r5i10p1f1", + 332, + "r5i1p1f1", + 212124, + "r5i1p1f2", + 34874, + "r5i1p1f242", + 2896, + "r5i1p1f3", + 4262, + "r5i1p1f4", + 331, + "r5i1p1f99", + 2295, + "r5i1p2f1", + 58570, + "r5i1p3f1", + 12081, + "r5i1p5f1", + 2972, + "r5i1p5f2", + 1162, + "r5i2p1f1", + 11556, + "r5i2p1f2", + 86, + "r5i2p2f1", + 100, + "r5i3p1f1", + 3722, + "r5i3p2f1", + 488, + "r5i4p1f1", + 394, + "r5i5p1f1", + 332, + "r5i6p1f1", + 332, + "r5i7p1f1", + 332, + "r5i8p1f1", + 332, + "r5i9p1f1", + 332, + "r60i1p1f1", + 12471, + "r60i1p1f2", + 1716, + "r60i1p1f3", + 38, + "r60i1p2f1", + 2879, + "r60i2p1f2", + 86, + "r61i1p1f1", + 12466, + "r61i1p1f2", + 1675, + "r61i1p2f1", + 2880, + "r61i2p1f2", + 86, + "r62i1p1f1", + 12468, + "r62i1p1f2", + 1716, + "r62i1p2f1", + 2880, + "r62i2p1f2", + 86, + "r63i1p1f1", + 12464, + "r63i1p1f2", + 1674, + "r63i1p2f1", + 2880, + "r63i2p1f2", + 86, + "r64i1p1f1", + 12473, + "r64i1p1f2", + 1717, + "r64i1p2f1", + 2880, + "r64i2p1f2", + 86, + "r65i1p1f1", + 12474, + "r65i1p1f2", + 1667, + "r65i1p2f1", + 2880, + "r65i2p1f2", + 86, + "r66i1p1f1", + 12445, + "r66i1p1f2", + 1714, + "r66i1p2f1", + 2879, + "r66i2p1f2", + 86, + "r67i1p1f1", + 12442, + "r67i1p1f2", + 1644, + "r67i1p2f1", + 2880, + "r67i2p1f2", + 86, + "r68i1p1f1", + 12465, + "r68i1p1f2", + 1716, + "r68i1p2f1", + 2880, + "r68i2p1f2", + 86, + "r69i1p1f1", + 12474, + "r69i1p1f2", + 1630, + "r69i1p2f1", + 2880, + "r69i2p1f2", + 86, + "r6i10p1f1", + 332, + "r6i1p1f1", + 181746, + "r6i1p1f2", + 24640, + "r6i1p1f242", + 2896, + "r6i1p1f3", + 1224, + "r6i1p1f99", + 2296, + "r6i1p2f1", + 56627, + "r6i1p3f1", + 539, + "r6i1p5f1", + 1549, + "r6i1p5f2", + 1162, + "r6i2p1f1", + 15456, + "r6i2p1f2", + 86, + "r6i2p2f1", + 100, + "r6i3p1f1", + 332, + "r6i3p2f1", + 488, + "r6i4p1f1", + 394, + "r6i5p1f1", + 332, + "r6i6p1f1", + 332, + "r6i7p1f1", + 332, + "r6i8p1f1", + 332, + "r6i9p1f1", + 332, + "r70i1p1f1", + 12472, + "r70i1p1f2", + 1703, + "r70i1p2f1", + 2880, + "r70i2p1f2", + 86, + "r71i1p1f1", + 12468, + "r71i1p1f2", + 1629, + "r71i1p2f1", + 2880, + "r71i2p1f2", + 86, + "r72i1p1f1", + 12452, + "r72i1p1f2", + 1713, + "r72i1p2f1", + 2880, + "r72i2p1f2", + 86, + "r73i1p1f1", + 12411, + "r73i1p1f2", + 1629, + "r73i1p2f1", + 2880, + "r73i2p1f2", + 86, + "r74i1p1f1", + 12438, + "r74i1p1f2", + 1714, + "r74i1p2f1", + 2880, + "r74i2p1f2", + 86, + "r75i1p1f1", + 12467, + "r75i1p1f2", + 1629, + "r75i1p2f1", + 2880, + "r75i2p1f2", + 86, + "r76i1p1f1", + 12459, + "r76i1p1f2", + 1704, + "r76i1p2f1", + 2879, + "r76i2p1f2", + 86, + "r77i1p1f1", + 12455, + "r77i1p1f2", + 1630, + "r77i1p2f1", + 2880, + "r77i2p1f2", + 86, + "r78i1p1f1", + 12464, + "r78i1p1f2", + 1714, + "r78i1p2f1", + 2880, + "r78i2p1f2", + 86, + "r79i1p1f1", + 12467, + "r79i1p1f2", + 1627, + "r79i1p2f1", + 2879, + "r79i2p1f2", + 86, + "r7i10p1f1", + 332, + "r7i1p1f1", + 175068, + "r7i1p1f2", + 22840, + "r7i1p1f242", + 2896, + "r7i1p1f3", + 1226, + "r7i1p1f99", + 2296, + "r7i1p2f1", + 56620, + "r7i1p3f1", + 539, + "r7i1p5f1", + 1549, + "r7i1p5f2", + 1162, + "r7i2p1f1", + 15459, + "r7i2p1f2", + 86, + "r7i2p2f1", + 100, + "r7i3p1f1", + 332, + "r7i3p2f1", + 488, + "r7i4p1f1", + 394, + "r7i5p1f1", + 332, + "r7i6p1f1", + 332, + "r7i7p1f1", + 332, + "r7i8p1f1", + 332, + "r7i9p1f1", + 332, + "r80i1p1f1", + 12462, + "r80i1p1f2", + 1712, + "r80i1p2f1", + 2880, + "r80i2p1f2", + 86, + "r81i1p1f1", + 12454, + "r81i1p1f2", + 1630, + "r81i1p2f1", + 2879, + "r81i2p1f2", + 86, + "r82i1p1f1", + 12322, + "r82i1p1f2", + 1716, + "r82i1p2f1", + 2880, + "r82i2p1f2", + 86, + "r83i1p1f1", + 12461, + "r83i1p1f2", + 1629, + "r83i1p2f1", + 2880, + "r83i2p1f2", + 86, + "r84i1p1f1", + 12466, + "r84i1p1f2", + 1715, + "r84i1p2f1", + 2880, + "r84i2p1f2", + 86, + "r85i1p1f1", + 12467, + "r85i1p1f2", + 1629, + "r85i1p2f1", + 2879, + "r85i2p1f2", + 86, + "r86i1p1f1", + 12424, + "r86i1p1f2", + 1715, + "r86i1p2f1", + 2880, + "r86i2p1f2", + 86, + "r87i1p1f1", + 12456, + "r87i1p1f2", + 1630, + "r87i1p2f1", + 2880, + "r87i2p1f2", + 86, + "r88i1p1f1", + 12457, + "r88i1p1f2", + 1715, + "r88i1p2f1", + 2880, + "r88i2p1f2", + 86, + "r89i1p1f1", + 12355, + "r89i1p1f2", + 1630, + "r89i1p2f1", + 2879, + "r89i2p1f2", + 86, + "r8i10p1f1", + 332, + "r8i1p1f1", + 174187, + "r8i1p1f2", + 27434, + "r8i1p1f242", + 2896, + "r8i1p1f3", + 597, + "r8i1p1f99", + 2296, + "r8i1p2f1", + 56630, + "r8i1p3f1", + 539, + "r8i1p5f1", + 1551, + "r8i1p5f2", + 1162, + "r8i2p1f1", + 15457, + "r8i2p1f2", + 86, + "r8i2p2f1", + 100, + "r8i3p1f1", + 332, + "r8i3p2f1", + 488, + "r8i4p1f1", + 334, + "r8i5p1f1", + 332, + "r8i6p1f1", + 332, + "r8i7p1f1", + 332, + "r8i8p1f1", + 332, + "r8i9p1f1", + 332, + "r90i1p1f1", + 12409, + "r90i1p1f2", + 1716, + "r90i1p2f1", + 2880, + "r90i2p1f2", + 86, + "r91i1p1f1", + 12410, + "r91i1p1f2", + 1629, + "r91i1p2f1", + 2879, + "r91i2p1f2", + 86, + "r92i1p1f1", + 12410, + "r92i1p1f2", + 1715, + "r92i1p2f1", + 2880, + "r92i2p1f2", + 86, + "r93i1p1f1", + 12358, + "r93i1p1f2", + 1626, + "r93i1p2f1", + 2879, + "r93i2p1f2", + 86, + "r94i1p1f1", + 12399, + "r94i1p1f2", + 1714, + "r94i1p2f1", + 2880, + "r94i2p1f2", + 86, + "r95i1p1f1", + 12421, + "r95i1p1f2", + 1627, + "r95i1p2f1", + 2880, + "r95i2p1f2", + 86, + "r96i1p1f1", + 12404, + "r96i1p1f2", + 1711, + "r96i1p2f1", + 2880, + "r96i2p1f2", + 86, + "r97i1p1f1", + 12400, + "r97i1p1f2", + 1630, + "r97i1p2f1", + 2880, + "r97i2p1f2", + 86, + "r98i1p1f1", + 12398, + "r98i1p1f2", + 1714, + "r98i1p2f1", + 2880, + "r98i2p1f2", + 86, + "r99i1p1f1", + 12315, + "r99i1p1f2", + 1628, + "r99i1p2f1", + 2880, + "r99i2p1f2", + 86, + "r9i10p1f1", + 332, + "r9i1p1f1", + 165600, + "r9i1p1f2", + 23120, + "r9i1p1f242", + 2896, + "r9i1p1f3", + 597, + "r9i1p1f99", + 2296, + "r9i1p2f1", + 56616, + "r9i1p3f1", + 539, + "r9i1p5f1", + 1551, + "r9i1p5f2", + 1162, + "r9i2p1f1", + 15455, + "r9i2p1f2", + 86, + "r9i2p2f1", + 100, + "r9i3p1f1", + 332, + "r9i3p2f1", + 488, + "r9i4p1f1", + 394, + "r9i5p1f1", + 332, + "r9i6p1f1", + 332, + "r9i7p1f1", + 332, + "r9i8p1f1", + 332, + "r9i9p1f1", + 332 + ], + "grid_label": [ + "gm", + 25688, + "gn", + 6191094, + "gnz", + 51228, + "gr", + 1766157, + "gr1", + 71672, + "gr1z", + 246, + "gr2", + 1167, + "gr2z", + 4922, + "gr3", + 422, + "gra", + 15, + "grg", + 15, + "grz", + 13803 + ], + "table_id": [ + "3hr", + 35868, + "6hrLev", + 2209, + "6hrPlev", + 28826, + "6hrPlevPt", + 15041, + "AERday", + 46467, + "AERhr", + 554, + "AERmon", + 370008, + "AERmonZ", + 67450, + "Amon", + 2090910, + "CF3hr", + 689, + "CFday", + 124166, + "CFmon", + 133379, + "CFsubhr", + 2689, + "E1hr", + 101, + "E1hrClimMon", + 15, + "E3hr", + 1910, + "E3hrPt", + 287, + "Eday", + 193278, + "EdayZ", + 77546, + "Efx", + 6694, + "Emon", + 762827, + "EmonZ", + 89933, + "Esubhr", + 45, + "Eyr", + 19044, + "IfxGre", + 407, + "ImonAnt", + 2274, + "ImonGre", + 2287, + "IyrAnt", + 5, + "IyrGre", + 60, + "LImon", + 144723, + "Lmon", + 746173, + "Oclim", + 4465, + "Oday", + 17797, + "Odec", + 1726, + "Ofx", + 107398, + "Omon", + 1377277, + "Oyr", + 173520, + "SIday", + 59204, + "SImon", + 532119, + "day", + 763480, + "fx", + 123578 + ], + "frequency": [ + "1hr", + 655, + "1hrCM", + 15, + "3hr", + 22161, + "3hrPt", + 16595, + "6hr", + 29363, + "6hrPt", + 16713, + "day", + 1280044, + "dec", + 1726, + "fx", + 237969, + "mon", + 6302504, + "monC", + 7677, + "monPt", + 15624, + "month", + 20, + "subhrPt", + 2734, + "yr", + 186719, + "yrPt", + 5910 + ], + "realm": [ + "aerosol", + 470072, + "atmos", + 3726573, + "atmosChem", + 11527, + "land", + 1498361, + "landIce", + 202174, + "ocean", + 918233, + "ocnBgChem", + 3942, + "ocnBgchem", + 803260, + "sea", + 3, + "seaIce", + 592415, + "seaice", + 16 + ], + "variable_id": [ + "Multiple", + 2, + "abs550aer", + 11743, + "acabf", + 264, + "acabfIs", + 1507, + "agesno", + 3339, + "agessc", + 6251, + "airmass", + 1407, + "albc", + 13, + "albisccp", + 7946, + "albsn", + 30, + "amocrapid", + 2, + "aoanh", + 43, + "aod550volso4", + 2602, + "arag", + 711, + "aragos", + 28, + "areacella", + 28694, + "areacelli", + 3, + "areacello", + 27289, + "areacellr", + 2654, + "ares", + 141, + "bacc", + 79, + "baccos", + 55, + "baresoilFrac", + 17606, + "basin", + 10679, + "bddtalk", + 532, + "bddtdic", + 528, + "bddtdife", + 528, + "bddtdin", + 526, + "bddtdip", + 532, + "bddtdisi", + 522, + "bfe", + 3348, + "bfeos", + 2186, + "bigthetao", + 3675, + "bigthetaoga", + 2450, + "bldep", + 8588, + "bry", + 710, + "bsi", + 3529, + "bsios", + 2467, + "burntFractionAll", + 3572, + "c13Land", + 91, + "c13Litter", + 91, + "c13Soil", + 91, + "c13Veg", + 139, + "c14Land", + 91, + "c14Litter", + 93, + "c14Soil", + 91, + "c14Veg", + 137, + "c2h2", + 59, + "c2h6", + 720, + "c3PftFrac", + 13571, + "c3h6", + 620, + "c3h8", + 720, + "c4PftFrac", + 13569, + "cCwd", + 3632, + "cLand", + 21467, + "cLeaf", + 11900, + "cLitter", + 25696, + "cLitterAbove", + 4103, + "cLitterBelow", + 4480, + "cLitterCwd", + 276, + "cLitterGrass", + 3825, + "cLitterLut", + 594, + "cLitterShrub", + 342, + "cLitterSubSurf", + 3577, + "cLitterSurf", + 3577, + "cLitterTree", + 3825, + "cMisc", + 4506, + "cOther", + 3389, + "cProduct", + 9101, + "cProductLut", + 127, + "cRoot", + 12078, + "cSoil", + 24636, + "cSoilAbove1m", + 1742, + "cSoilFast", + 8050, + "cSoilGrass", + 3826, + "cSoilLevels", + 100, + "cSoilLut", + 605, + "cSoilMedium", + 8013, + "cSoilPools", + 1103, + "cSoilShrub", + 342, + "cSoilSlow", + 8081, + "cSoilTree", + 3889, + "cStem", + 10228, + "cTotFireLut", + 304, + "cVeg", + 26247, + "cVegGrass", + 4197, + "cVegLut", + 604, + "cVegShrub", + 716, + "cVegTree", + 4197, + "cWood", + 10552, + "calc", + 3776, + "calcos", + 434, + "ccb", + 10757, + "ccldncl", + 50, + "ccn", + 1395, + "cct", + 12208, + "cdnc", + 6210, + "cfadDbze94", + 32, + "cfadLidarsr532", + 39, + "cfc11", + 991, + "cfc113global", + 58, + "cfc11global", + 2428, + "cfc12", + 1038, + "cfc12global", + 2430, + "ch3coch3", + 716, + "ch4", + 4446, + "ch4global", + 3986, + "cheaqpso4", + 1492, + "chegpso4", + 1495, + "chepasoa", + 49, + "chepsoa", + 881, + "chl", + 20399, + "chlcalc", + 39, + "chlcalcos", + 39, + "chldiat", + 2754, + "chldiatos", + 10248, + "chldiaz", + 1336, + "chldiazos", + 8683, + "chlmisc", + 2082, + "chlmiscos", + 1971, + "chlos", + 17648, + "chlpico", + 652, + "chlpicoos", + 8311, + "ci", + 11219, + "cl", + 14539, + "clayfrac", + 73, + "clc", + 733, + "clcalipso", + 3485, + "clcalipso2", + 6, + "clcalipsoice", + 67, + "clcalipsoliq", + 67, + "cldicemxrat", + 68, + "cldnci", + 1094, + "cldncl", + 1192, + "cldnvi", + 1355, + "cldwatmxrat", + 68, + "clhcalipso", + 7556, + "cli", + 13402, + "clic", + 332, + "climodis", + 1122, + "clis", + 313, + "clisccp", + 3982, + "clivi", + 38072, + "clivic", + 107, + "cllcalipso", + 7554, + "clmcalipso", + 7558, + "clmisr", + 77, + "cls", + 721, + "clt", + 81340, + "cltc", + 1821, + "cltcalipso", + 5077, + "cltisccp", + 7007, + "cltmodis", + 1122, + "clw", + 13403, + "clwc", + 339, + "clwmodis", + 1149, + "clws", + 320, + "clwvi", + 38217, + "clwvic", + 117, + "cly", + 710, + "cnc", + 316, + "co", + 1323, + "co2", + 10359, + "co23D", + 234, + "co2mass", + 4712, + "co2s", + 51, + "co3", + 4002, + "co3abio", + 51, + "co3abioos", + 26, + "co3nat", + 581, + "co3natos", + 282, + "co3os", + 1022, + "co3satarag", + 1454, + "co3sataragos", + 665, + "co3satcalc", + 3626, + "co3satcalcos", + 705, + "cod", + 3392, + "conccmcn", + 291, + "conccn", + 805, + "concdust", + 643, + "concnmcn", + 82, + "cropFrac", + 19639, + "cropFracC3", + 12834, + "cropFracC4", + 12341, + "cw", + 39, + "dcalc", + 841, + "dcw", + 17, + "dems", + 2, + "depdust", + 935, + "deptho", + 24057, + "detoc", + 10349, + "detocos", + 2963, + "dfe", + 15268, + "dfeos", + 11703, + "dfr", + 10, + "dgw", + 17, + "difmxybo", + 14, + "difmxylo", + 219, + "diftrblo", + 2711, + "diftrelo", + 547, + "diftrxylo", + 116, + "difvho", + 3886, + "difvmo", + 959, + "difvmto", + 110, + "difvso", + 3234, + "difvtrto", + 672, + "dispkevfo", + 107, + "dispkexyfo", + 327, + "dissi14cabio", + 366, + "dissi14cabioos", + 173, + "dissic", + 22729, + "dissicabio", + 4528, + "dissicabioos", + 2597, + "dissicnat", + 5972, + "dissicnatos", + 3109, + "dissicos", + 5133, + "dissoc", + 4819, + "dissocos", + 1016, + "dmc", + 249, + "dmlt", + 52, + "dms", + 3654, + "dmso", + 99, + "dmsos", + 567, + "dpco2", + 3453, + "dpco2abio", + 122, + "dpco2nat", + 504, + "dpo2", + 2154, + "drivw", + 17, + "drybc", + 6482, + "drydust", + 6523, + "drynh3", + 747, + "drynh4", + 746, + "drynoy", + 1098, + "dryo3", + 1215, + "dryoa", + 2386, + "dryso2", + 7838, + "dryso4", + 6610, + "dryss", + 2568, + "dslw", + 17, + "dsn", + 17, + "dsw", + 17, + "dtaus", + 2, + "dtes", + 17, + "dtesn", + 17, + "ec", + 65, + "ec550aer", + 1091, + "edt", + 1192, + "emiaco", + 541, + "emianox", + 541, + "emiaoa", + 999, + "emibc", + 7033, + "emibvoc", + 2140, + "emico", + 1186, + "emidms", + 7538, + "emidust", + 7980, + "emiisop", + 2513, + "emilnox", + 1171, + "eminh3", + 696, + "eminox", + 1188, + "emioa", + 2811, + "emiso2", + 7854, + "emiso4", + 3506, + "emiss", + 3937, + "emivoc", + 2388, + "eow", + 17, + "eparag100", + 398, + "epc100", + 11061, + "epcalc100", + 10681, + "epfe100", + 2451, + "epfy", + 21691, + "epfz", + 21624, + "epn100", + 4706, + "epp100", + 709, + "epsi100", + 4388, + "es", + 371, + "esn", + 39, + "et", + 14, + "evs", + 9190, + "evspsbl", + 53719, + "evspsblpot", + 5067, + "evspsblsoi", + 21955, + "evspsblveg", + 21388, + "evu", + 1195, + "exparag", + 14, + "expc", + 11675, + "expcalc", + 1355, + "expfe", + 2346, + "expn", + 424, + "expp", + 433, + "expsi", + 1597, + "fAnthDisturb", + 3598, + "fBNF", + 2270, + "fCLandToOcean", + 340, + "fDeforestToAtmos", + 7286, + "fDeforestToProduct", + 9602, + "fFire", + 3891, + "fFireAll", + 328, + "fFireNat", + 1937, + "fGrazing", + 473, + "fHarvest", + 7258, + "fHarvestToAtmos", + 3184, + "fHarvestToProduct", + 5308, + "fLitterFire", + 125, + "fLitterSoil", + 10116, + "fLuc", + 7292, + "fLulccAtmLut", + 395, + "fLulccProductLut", + 270, + "fLulccResidueLut", + 404, + "fN2O", + 2424, + "fNAnthDisturb", + 521, + "fNLandToOcean", + 143, + "fNLitterSoil", + 1078, + "fNOx", + 1356, + "fNProduct", + 2146, + "fNVegLitter", + 806, + "fNVegSoil", + 114, + "fNdep", + 3155, + "fNfert", + 1277, + "fNgas", + 3203, + "fNgasFire", + 2189, + "fNgasNonFire", + 1987, + "fNleach", + 3239, + "fNloss", + 3204, + "fNnetmin", + 3577, + "fNup", + 1995, + "fProductDecomp", + 5375, + "fProductDecompLut", + 278, + "fVegFire", + 319, + "fVegLitter", + 11415, + "fVegLitterMortality", + 316, + "fVegLitterSenescence", + 5451, + "fVegSoil", + 176, + "fahLut", + 35, + "fbddtalk", + 2083, + "fbddtdic", + 2099, + "fbddtdife", + 2100, + "fbddtdin", + 2101, + "fbddtdip", + 2060, + "fbddtdisi", + 2084, + "fco2antt", + 249, + "fco2fos", + 92, + "fco2nat", + 650, + "fddtalk", + 649, + "fddtdic", + 649, + "fddtdife", + 633, + "fddtdin", + 636, + "fddtdip", + 633, + "fddtdisi", + 633, + "fediss", + 302, + "fescav", + 673, + "fg14co2abio", + 363, + "fgcfc11", + 744, + "fgcfc12", + 1421, + "fgco2", + 26796, + "fgco2abio", + 5425, + "fgco2nat", + 6711, + "fgdms", + 498, + "fgo2", + 8910, + "fgsf6", + 1267, + "ficeberg", + 4955, + "ficeberg2d", + 1, + "flandice", + 1310, + "flashrate", + 645, + "fldcapacity", + 44, + "fracInLut", + 474, + "fracLut", + 9313, + "fracOutLut", + 474, + "frfe", + 2172, + "fric", + 2683, + "friver", + 13990, + "frn", + 2172, + "froc", + 2459, + "fsfe", + 3698, + "fsitherm", + 4337, + "fsn", + 3630, + "gpp", + 30756, + "gppGrass", + 4105, + "gppLut", + 1559, + "gppShrub", + 614, + "gppTree", + 4103, + "gppc13", + 137, + "gppc14", + 137, + "grassFrac", + 16095, + "grassFracC3", + 13107, + "grassFracC4", + 13108, + "graz", + 3851, + "gwt", + 81, + "h2o", + 1621, + "hcfc22global", + 55, + "hcho", + 1319, + "hcl", + 1937, + "hcont300", + 568, + "hfbasin", + 13492, + "hfbasinpadv", + 1801, + "hfbasinpmadv", + 2557, + "hfbasinpmdiff", + 1999, + "hfbasinpsmadv", + 8, + "hfcorr", + 1448, + "hfds", + 29129, + "hfdsl", + 31, + "hfdsn", + 5920, + "hfdsnb", + 10, + "hfevapds", + 2397, + "hfgeou", + 3826, + "hfgeoubed", + 138, + "hfibthermds", + 1262, + "hfls", + 82907, + "hflsIs", + 1530, + "hflsLut", + 333, + "hflso", + 2080, + "hfmlt", + 32, + "hfrainds", + 1249, + "hfrunoffds", + 601, + "hfsbl", + 30, + "hfsifrazil", + 3758, + "hfsnthermds", + 376, + "hfss", + 83326, + "hfssIs", + 1529, + "hfssLut", + 332, + "hfsso", + 2079, + "hfx", + 4297, + "hfy", + 4293, + "hno3", + 2106, + "ho2", + 823, + "htovgyre", + 2656, + "htovovrt", + 2678, + "hur", + 57096, + "hurs", + 43395, + "hursmax", + 10622, + "hursmin", + 15033, + "hus", + 87681, + "hus850", + 4169, + "huss", + 72214, + "hussLut", + 332, + "iareafl", + 2, + "iareagr", + 2, + "icem", + 258, + "icemIs", + 133, + "icfriver", + 644, + "intdic", + 12294, + "intdoc", + 1139, + "intparag", + 14, + "intpbfe", + 2609, + "intpbn", + 707, + "intpbp", + 387, + "intpbsi", + 2253, + "intpcalcite", + 849, + "intpn2", + 6718, + "intpoc", + 1585, + "intpp", + 11872, + "intppcalc", + 39, + "intppdiat", + 2347, + "intppdiaz", + 711, + "intppmisc", + 2009, + "intppnitrate", + 2169, + "intpppico", + 340, + "intuadse", + 4888, + "intuaw", + 6047, + "intvadse", + 4887, + "intvaw", + 6029, + "irrLut", + 216, + "isop", + 3089, + "jno2", + 1237, + "jo2", + 86, + "jo3", + 86, + "jpdftaureicemodis", + 76, + "jpdftaureliqmodis", + 76, + "ksat", + 148, + "lai", + 31485, + "laiLut", + 1551, + "landCoverFrac", + 4139, + "libmassbffl", + 2, + "libmassbfgr", + 2, + "licalvf", + 2, + "lim", + 2, + "limfecalc", + 39, + "limfediat", + 2294, + "limfediaz", + 679, + "limfemisc", + 4322, + "limfepico", + 308, + "limirrcalc", + 39, + "limirrdiat", + 2238, + "limirrdiaz", + 347, + "limirrmisc", + 4225, + "limirrpico", + 312, + "limncalc", + 39, + "limndiat", + 2294, + "limndiaz", + 39, + "limnmisc", + 4277, + "limnpico", + 308, + "limnsw", + 2, + "litempbotfl", + 2, + "litempbotgr", + 2, + "litemptop", + 262, + "litemptopIs", + 135, + "lithk", + 137, + "loadbc", + 2956, + "loaddust", + 6299, + "loadno3", + 2551, + "loadoa", + 2852, + "loadpoa", + 2676, + "loadso4", + 5201, + "loadsoa", + 125, + "loadss", + 9869, + "lossch4", + 1260, + "lossco", + 1255, + "lossn2o", + 568, + "lwp", + 9616, + "lwsffluxaero", + 57, + "lwsnl", + 10975, + "lwsrfasdust", + 32, + "lwsrfcsdust", + 32, + "lwtoaasdust", + 32, + "lwtoacsaer", + 1308, + "lwtoacsdust", + 32, + "lwtoafluxaerocs", + 169, + "masscello", + 7881, + "masso", + 4771, + "maxpblz", + 638, + "mc", + 6696, + "mcd", + 330, + "mcu", + 557, + "meanage", + 514, + "mfo", + 4776, + "mfodrake", + 2, + "mfoindo", + 2, + "minpblz", + 637, + "mlotst", + 23687, + "mlotstmax", + 5087, + "mlotstmin", + 4420, + "mlotstsq", + 6387, + "mmraerh2o", + 1231, + "mmraerso4", + 543, + "mmrbc", + 4388, + "mmrdust", + 3920, + "mmrnh4", + 731, + "mmrno3", + 1213, + "mmroa", + 3602, + "mmrpm1", + 1031, + "mmrpm10", + 1048, + "mmrpm2p5", + 1720, + "mmrso4", + 3860, + "mmrsoa", + 1929, + "mmrss", + 4458, + "modelCellAreai", + 2, + "mrfso", + 27647, + "mrfsofr", + 40, + "mrlqso", + 40, + "mrlsl", + 4, + "mrlso", + 10042, + "mrro", + 42465, + "mrroIs", + 1513, + "mrroLi", + 262, + "mrroLut", + 427, + "mrrob", + 176, + "mrros", + 25894, + "mrsfl", + 14425, + "mrsll", + 14322, + "mrso", + 38097, + "mrsoLut", + 423, + "mrsofc", + 5645, + "mrsol", + 28734, + "mrsos", + 43637, + "mrsosLut", + 333, + "mrsow", + 814, + "mrtws", + 6551, + "msftbarot", + 11000, + "msftmrho", + 2303, + "msftmrhompa", + 635, + "msftmz", + 15463, + "msftmzmpa", + 6114, + "msftmzsmpa", + 196, + "msftyrho", + 488, + "msftyrhompa", + 347, + "msftyz", + 5551, + "msftyzmpa", + 1499, + "msftyzsmpa", + 1, + "n2o", + 4297, + "n2oglobal", + 4056, + "nLand", + 3582, + "nLeaf", + 1759, + "nLitter", + 3467, + "nLitterCwd", + 280, + "nLitterSubSurf", + 85, + "nLitterSurf", + 85, + "nMineral", + 3244, + "nMineralNH4", + 1552, + "nMineralNO3", + 1547, + "nOther", + 85, + "nProduct", + 1785, + "nRoot", + 2049, + "nSoil", + 3584, + "nStem", + 2045, + "nVeg", + 3291, + "nbp", + 27464, + "necbLut", + 987, + "nep", + 11594, + "netAtmosLandC13Flux", + 75, + "netAtmosLandC14Flux", + 77, + "netAtmosLandCO2Flux", + 15955, + "nh4", + 11327, + "nh4os", + 455, + "nh50", + 99, + "no", + 1333, + "no2", + 1366, + "no3", + 23399, + "no3os", + 16101, + "noy", + 828, + "npp", + 30356, + "nppGrass", + 4128, + "nppLeaf", + 10788, + "nppLut", + 1566, + "nppOther", + 3240, + "nppRoot", + 10788, + "nppShrub", + 644, + "nppStem", + 6840, + "nppTree", + 4126, + "nppWood", + 10587, + "nudgincsm", + 16, + "nwdFracLut", + 5369, + "o2", + 22993, + "o2min", + 10619, + "o2os", + 15843, + "o2sat", + 1328, + "o2satos", + 898, + "o3", + 13950, + "o3loss", + 1263, + "o3prod", + 1267, + "o3ste", + 187, + "obvfsq", + 4197, + "ocfriver", + 628, + "ocontempdiff", + 143, + "ocontempmint", + 12, + "ocontemppadvect", + 143, + "ocontemppmdiff", + 143, + "ocontemppsmadvect", + 21, + "ocontemprmadvect", + 173, + "ocontemptend", + 143, + "od440aer", + 4085, + "od443dust", + 86, + "od550aer", + 13890, + "od550aerh2o", + 2746, + "od550aerso", + 186, + "od550bb", + 413, + "od550bc", + 5164, + "od550csaer", + 4648, + "od550dust", + 10376, + "od550lt1aer", + 2810, + "od550no3", + 3050, + "od550oa", + 5845, + "od550so4", + 5918, + "od550soa", + 659, + "od550ss", + 8930, + "od865dust", + 469, + "od870aer", + 1699, + "oh", + 3640, + "omldamax", + 1175, + "opottempdiff", + 3362, + "opottempmint", + 3882, + "opottemppadvect", + 3331, + "opottemppmdiff", + 3358, + "opottemppsmadvect", + 255, + "opottemprmadvect", + 3199, + "opottemptend", + 3552, + "orog", + 35241, + "orogIs", + 155, + "osaltdiff", + 3494, + "osaltpadvect", + 3472, + "osaltpmdiff", + 3493, + "osaltpsmadvect", + 276, + "osaltrmadvect", + 3527, + "osalttend", + 3642, + "oxloss", + 97, + "oxprod", + 97, + "pabigthetao", + 6, + "pan", + 1257, + "parag", + 14, + "parasolRefl", + 611, + "pastureFrac", + 1399, + "pastureFracC3", + 659, + "pastureFracC4", + 660, + "pathetao", + 53, + "pbfe", + 852, + "pbo", + 8143, + "pbsi", + 1221, + "pcalc", + 851, + "pctisccp", + 9286, + "pflw", + 16, + "pfull", + 6067, + "ph", + 6938, + "phabio", + 76, + "phabioos", + 147, + "phalf", + 6052, + "phnat", + 625, + "phnatos", + 555, + "phos", + 2536, + "photo1d", + 1245, + "phyc", + 22070, + "phycalc", + 39, + "phycalcos", + 39, + "phycos", + 17141, + "phydiat", + 3381, + "phydiatos", + 507, + "phydiaz", + 1062, + "phydiazos", + 331, + "phyfe", + 3802, + "phyfeos", + 10387, + "phymisc", + 3049, + "phymiscos", + 190, + "phyn", + 6019, + "phynos", + 9925, + "phyp", + 1392, + "phypico", + 8671, + "phypicoos", + 331, + "phypos", + 420, + "physi", + 2701, + "physios", + 10029, + "pnitrate", + 1571, + "po4", + 17718, + "po4os", + 2302, + "pon", + 3547, + "ponos", + 3225, + "pop", + 1083, + "popos", + 701, + "pp", + 7336, + "ppdiat", + 2592, + "ppdiaz", + 681, + "ppmisc", + 3262, + "ppos", + 1674, + "pppico", + 14, + "pr", + 100715, + "prbigthetao", + 6, + "prc", + 40145, + "prcprof", + 6, + "prhmax", + 7012, + "prlsns", + 6, + "prlsprof", + 6, + "prra", + 8184, + "prraIs", + 1515, + "prrc", + 85, + "prrsn", + 10, + "prsn", + 62465, + "prsnIs", + 153, + "prsnc", + 70, + "prsnsn", + 10, + "prthetao", + 46, + "prveg", + 19586, + "prw", + 45967, + "ps", + 70971, + "psitem", + 5080, + "psl", + 106669, + "pso", + 1872, + "ptp", + 7174, + "qgwr", + 56, + "rGrowth", + 11004, + "rMaint", + 11004, + "ra", + 26616, + "raGrass", + 4122, + "raLeaf", + 211, + "raLut", + 1472, + "raRoot", + 211, + "raShrub", + 639, + "raTree", + 4124, + "rac13", + 91, + "rac14", + 91, + "rainmxrat", + 52, + "reffcclwtop", + 53, + "reffclic", + 548, + "reffclis", + 680, + "reffclwc", + 548, + "reffclws", + 856, + "reffclwtop", + 3064, + "reffsclwtop", + 197, + "remoc", + 849, + "residualFrac", + 8617, + "rh", + 25749, + "rhGrass", + 3819, + "rhLitter", + 3679, + "rhLut", + 766, + "rhShrub", + 337, + "rhSoil", + 4018, + "rhTree", + 3819, + "rhc13", + 91, + "rhc14", + 91, + "rivi", + 10, + "rivo", + 1536, + "rld", + 2406, + "rld4co2", + 2655, + "rldcs", + 2382, + "rldcs4co2", + 2657, + "rlds", + 77534, + "rldsIs", + 153, + "rldscs", + 41803, + "rlntds", + 2078, + "rls", + 37669, + "rlsaf", + 4, + "rlscsaf", + 4, + "rlu", + 2427, + "rlu4co2", + 2657, + "rlucs", + 2347, + "rlucs4co2", + 2656, + "rlus", + 58015, + "rlusIs", + 153, + "rlusLut", + 330, + "rlut", + 77903, + "rlut4co2", + 2671, + "rlutaf", + 1945, + "rlutcs", + 56065, + "rlutcs4co2", + 2672, + "rlutcsaf", + 1959, + "rootd", + 5554, + "rsd", + 2486, + "rsd4co2", + 2657, + "rsdcs", + 2133, + "rsdcs4co2", + 2656, + "rsdo", + 4536, + "rsdoabsorb", + 3489, + "rsds", + 91098, + "rsdsIs", + 164, + "rsdscs", + 50039, + "rsdscsdiff", + 3902, + "rsdsdiff", + 8658, + "rsdt", + 54914, + "rsntds", + 13442, + "rss", + 37592, + "rssaf", + 4, + "rsscsaf", + 4, + "rsu", + 2483, + "rsu4co2", + 2658, + "rsucs", + 2464, + "rsucs4co2", + 2656, + "rsus", + 58475, + "rsusIs", + 153, + "rsusLut", + 346, + "rsuscs", + 31623, + "rsut", + 57766, + "rsut4co2", + 2671, + "rsutaf", + 1991, + "rsutcs", + 47958, + "rsutcs4co2", + 2672, + "rsutcsaf", + 1959, + "rtmt", + 37711, + "rv850", + 1410, + "rzwc", + 346, + "sandfrac", + 69, + "sbl", + 16022, + "sblIs", + 1511, + "sblnosn", + 26, + "sci", + 7144, + "scldncl", + 197, + "sconcdust", + 5003, + "sconcso4", + 4984, + "sconcss", + 4998, + "sedustCI", + 14, + "sf6", + 1514, + "sfcWind", + 83451, + "sfcWindmax", + 37768, + "sfdsi", + 11941, + "sfno2", + 32, + "sfo3", + 39, + "sfo3max", + 123, + "sfpm25", + 142, + "sfriver", + 412, + "sftflf", + 2, + "sftgif", + 19042, + "sftgrf", + 10050, + "sftlf", + 27503, + "sftof", + 18123, + "shrubFrac", + 2854, + "si", + 15291, + "siage", + 4818, + "siareaacrossline", + 2080, + "siarean", + 7957, + "siareas", + 7686, + "sicompstren", + 4119, + "siconc", + 36964, + "siconca", + 23237, + "sidconcdyn", + 2642, + "sidconcth", + 3914, + "sidivvel", + 7050, + "sidmassdyn", + 4576, + "sidmassevapsubl", + 5486, + "sidmassgrowthbot", + 6355, + "sidmassgrowthwat", + 6455, + "sidmasslat", + 3984, + "sidmassmeltbot", + 6542, + "sidmassmelttop", + 6528, + "sidmasssi", + 6467, + "sidmassth", + 4609, + "sidmasstranx", + 5603, + "sidmasstrany", + 5610, + "sidragbot", + 264, + "sidragtop", + 1529, + "siextentn", + 8055, + "siextents", + 8064, + "sifb", + 3679, + "siflcondbot", + 3716, + "siflcondtop", + 5247, + "siflfwbot", + 3912, + "siflfwdrain", + 2930, + "sifllatstop", + 4650, + "sifllwdtop", + 4250, + "sifllwutop", + 4429, + "siflsenstop", + 5329, + "siflsensupbot", + 3898, + "siflswdbot", + 1207, + "siflswdtop", + 4573, + "siflswutop", + 4366, + "siforcecoriolx", + 3186, + "siforcecorioly", + 3189, + "siforceintstrx", + 3155, + "siforceintstry", + 3156, + "siforcetiltx", + 2952, + "siforcetilty", + 2955, + "sihc", + 6012, + "siitdconc", + 2613, + "siitdsnconc", + 588, + "siitdsnthick", + 1602, + "siitdthick", + 1637, + "siltfrac", + 30, + "simass", + 20158, + "simassacrossline", + 2384, + "simpconc", + 1950, + "simpmass", + 1444, + "simprefrozen", + 71, + "sios", + 9603, + "sipr", + 5239, + "sirdgconc", + 766, + "sirdgthick", + 1724, + "sisali", + 1114, + "sisaltmass", + 7415, + "sishevel", + 6099, + "sisnconc", + 9220, + "sisnhc", + 4208, + "sisnmass", + 9867, + "sisnthick", + 24276, + "sispeed", + 16890, + "sistremax", + 1272, + "sistresave", + 1270, + "sistrxdtop", + 6627, + "sistrxubot", + 5392, + "sistrydtop", + 6622, + "sistryubot", + 5398, + "sitempbot", + 3460, + "sitempsnic", + 5310, + "sitemptop", + 19116, + "sithick", + 27993, + "sitimefrac", + 21575, + "siu", + 25672, + "siv", + 25540, + "sivol", + 13917, + "sivoln", + 8344, + "sivols", + 8071, + "sltbasin", + 1526, + "slthick", + 176, + "sltnortha", + 74, + "sltovgyre", + 2246, + "sltovovrt", + 2246, + "smc", + 249, + "smoc", + 2, + "snc", + 42455, + "sncIs", + 127, + "snd", + 38276, + "sndmassdyn", + 1903, + "sndmassmelt", + 5396, + "sndmasssi", + 2002, + "sndmasssnf", + 7208, + "sndmasssubl", + 2680, + "sndmasswindrif", + 287, + "snicefreez", + 260, + "snicefreezIs", + 135, + "snicem", + 260, + "snicemIs", + 133, + "snm", + 13989, + "snmIs", + 133, + "snmassacrossline", + 2094, + "snowmxrat", + 72, + "snrefr", + 26, + "snw", + 30213, + "snwc", + 299, + "so", + 33741, + "so2", + 3616, + "sob", + 6350, + "soga", + 12138, + "solbnd", + 31, + "somint", + 4169, + "sootsn", + 1947, + "sos", + 36938, + "sosga", + 4000, + "sossq", + 5314, + "spco2", + 20061, + "spco2abio", + 2636, + "spco2nat", + 2873, + "strbasemag", + 2, + "sw", + 21, + "sweLut", + 323, + "swsffluxaero", + 1, + "swsrfasdust", + 32, + "swsrfcsdust", + 32, + "swtoaasdust", + 32, + "swtoacsdust", + 32, + "swtoafluxaerocs", + 169, + "sza", + 31, + "t2", + 26, + "t20d", + 8919, + "tSoilPools", + 549, + "ta", + 119762, + "ta500", + 4440, + "ta700", + 4281, + "ta850", + 21021, + "talk", + 24875, + "talknat", + 1316, + "talknatos", + 506, + "talkos", + 4804, + "tas", + 104471, + "tasIs", + 1504, + "tasLut", + 337, + "tasmax", + 73937, + "tasmaxCrop", + 176, + "tasmin", + 74291, + "tasminCrop", + 182, + "tatp", + 2286, + "tau", + 16, + "tauu", + 49853, + "tauucorr", + 8, + "tauuo", + 12958, + "tauupbl", + 361, + "tauv", + 49881, + "tauvcorr", + 8, + "tauvo", + 12948, + "tauvpbl", + 361, + "tcs", + 49, + "tdps", + 10204, + "tgs", + 54, + "thetao", + 36735, + "thetaoga", + 10926, + "thetaot", + 4904, + "thetaot2000", + 4729, + "thetaot300", + 4720, + "thetaot700", + 4722, + "thkcello", + 9991, + "tnhus", + 1249, + "tnhusa", + 1809, + "tnhusc", + 2296, + "tnhusd", + 479, + "tnhusmp", + 1707, + "tnhuspbl", + 808, + "tnhusscp", + 800, + "tnhusscpbl", + 1590, + "tnkebto", + 341, + "tnpeo", + 1073, + "tnt", + 2975, + "tnta", + 3451, + "tntc", + 5073, + "tntd", + 48, + "tntmp", + 5307, + "tntnogw", + 293, + "tntogw", + 512, + "tntpbl", + 805, + "tntr", + 3303, + "tntrl", + 2957, + "tntrlcs", + 1452, + "tntrs", + 2629, + "tntrscs", + 1450, + "tntscp", + 2110, + "tntscpbl", + 3229, + "tob", + 6647, + "tomint", + 37, + "topg", + 137, + "tos", + 46113, + "tosga", + 5175, + "tossq", + 7410, + "toz", + 3144, + "tpf", + 111, + "tr", + 314, + "tran", + 20822, + "treeFrac", + 16046, + "treeFracBdlDcd", + 11389, + "treeFracBdlEvg", + 11328, + "treeFracNdlDcd", + 11326, + "treeFracNdlEvg", + 11382, + "treeFracPrimDec", + 3207, + "treeFracPrimEver", + 3208, + "tropoz", + 1152, + "ts", + 61473, + "tsIs", + 154, + "tsl", + 30947, + "tsland", + 44, + "tslsi", + 3413, + "tslsiLut", + 332, + "tsn", + 4271, + "tsnIs", + 124, + "tsnl", + 11, + "tsns", + 33, + "ttop", + 1914, + "twap", + 71, + "tws", + 4, + "u2", + 78, + "ua", + 120050, + "ua10", + 5511, + "ua100m", + 6, + "uas", + 72892, + "umo", + 11682, + "uo", + 26644, + "uqint", + 161, + "ut", + 27, + "utendepfd", + 21441, + "utendnogw", + 3509, + "utendogw", + 11121, + "utendvtem", + 5082, + "utendwtem", + 5077, + "uv", + 25, + "uwap", + 20, + "v2", + 76, + "va", + 101348, + "va100m", + 6, + "vas", + 72786, + "vegFrac", + 15812, + "vegHeight", + 2660, + "vegHeightCrop", + 341, + "vegHeightGrass", + 339, + "vegHeightPasture", + 114, + "vegHeightShrub", + 339, + "vegHeightTree", + 337, + "vmo", + 11684, + "vmrox", + 132, + "vo", + 26612, + "volcello", + 15173, + "volo", + 7953, + "vqint", + 162, + "vsf", + 2648, + "vsfcorr", + 17, + "vsfevap", + 314, + "vsfpr", + 322, + "vsfriver", + 314, + "vsfsit", + 780, + "vt", + 26, + "vt100", + 3530, + "vtem", + 21525, + "vtendnogw", + 437, + "vtendogw", + 3690, + "vwap", + 20, + "wa", + 998, + "wap", + 78884, + "wap2", + 20, + "wap500", + 5279, + "wbptemp", + 19, + "wetbc", + 6320, + "wetdust", + 6510, + "wetlandCH4", + 1709, + "wetlandCH4cons", + 197, + "wetlandCH4prod", + 3797, + "wetlandFrac", + 11980, + "wetnh3", + 743, + "wetnh4", + 766, + "wetnoy", + 1122, + "wetoa", + 2327, + "wetso2", + 7708, + "wetso4", + 6549, + "wetss", + 2453, + "wfcorr", + 553, + "wfo", + 13324, + "wfonocorr", + 1928, + "wilt", + 44, + "wmo", + 10072, + "wo", + 15339, + "wsgmax10m", + 6, + "wtd", + 3048, + "wtem", + 20239, + "xgwdparam", + 5, + "xvelbase", + 2, + "xvelmean", + 2, + "xvelsurf", + 2, + "ygwdparam", + 5, + "yvelbase", + 2, + "yvelmean", + 2, + "yvelsurf", + 2, + "zfull", + 5065, + "zfullo", + 498, + "zg", + 93481, + "zg10", + 5535, + "zg100", + 4234, + "zg1000", + 8969, + "zg500", + 24110, + "zhalf", + 37, + "zhalfo", + 625, + "zmeso", + 2660, + "zmesoos", + 188, + "zmicro", + 2685, + "zmicroos", + 188, + "zmla", + 794, + "zmtnt", + 237, + "zo2min", + 11643, + "zooc", + 21729, + "zoocos", + 4515, + "zos", + 33123, + "zossq", + 17847, + "zostoga", + 13639, + "zsatarag", + 742, + "zsatcalc", + 1170, + "ztp", + 6617, + "zvelbase", + 2, + "zvelsurf", + 2 + ], + "cf_standard_name": [ + "3d-field_of_transported_co2", + 21, + "3d_field_of_transported_co2", + 87, + "Atlantic Meridional Overturning Circulation at 26.5N", + 1, + "CO2_3D_tracer", + 30, + "Carbon_flux_out_of_storage_product_pools_into_atmos", + 17, + "Meridional Overturning Circulation at 34S", + 1, + "abiotic_carbonate_ion_concentration", + 35, + "abiotic_delta_pco_partial_pressure", + 105, + "abiotic_dissolved_inorganic_carbon-14_concentration", + 294, + "abiotic_dissolved_inorganic_carbon_concentration", + 4343, + "abiotic_ph", + 52, + "abiotic_surface_aqueous_partial_pressure_of_co2", + 2487, + "aerodynamic_resistance", + 141, + "aerosol_extinction_coefficient", + 658, + "aerosol_number_concentration", + 499, + "aerosol_optical_depth_at_550_nm_due_to_stratospheric_volcanic_aerosols", + 85, + "aerosol_sulfate_mass_mixing_ratio", + 1515, + "aerosol_water_aod@550nm", + 752, + "aerosol_water_mass_mixing_ratio", + 559, + "age_of_sea_ice", + 4818, + "age_of_stratospheric_air", + 514, + "age_of_surface_snow", + 3339, + "air_pressure", + 12119, + "air_pressure_at_cloud_top", + 9286, + "air_pressure_at_convective_cloud_base", + 10757, + "air_pressure_at_convective_cloud_top", + 12208, + "air_pressure_at_mean_sea_level", + 56064, + "air_pressure_at_sea_level", + 4136, + "air_temperature", + 404403, + "air_temperature_at_cloud_top", + 1914, + "all-sky_surface_longwave_radiative_flux_due_to_dust", + 23, + "all-sky_surface_shortwave_radiative_flux_due_to_dust", + 21, + "ambient_aerosol_absorption_optical_thickness_at_550_nm", + 1415, + "ambient_aerosol_absorption_optical_thickness_at_550nm", + 5013, + "ambient_aerosol_optical_depth_at_870nm", + 434, + "ambient_aerosol_optical_thickness_at_440_nm", + 933, + "ambient_aerosol_optical_thickness_at_440nm", + 337, + "ambient_aerosol_optical_thickness_at_550_nm", + 2906, + "ambient_aerosol_optical_thickness_at_550nm", + 8979, + "ambient_aerosol_optical_thickness_at_870_nm", + 532, + "ambient_fine_aerosol_optical_depth_at_550nm", + 583, + "ambient_fine_mode_aerosol_optical_thickness_at_550_nm", + 570, + "anthropogenic_heat_flux_generated_from_non-renewable_human_primary_energy_consumption", + 5, + "aqueous-phase_production_rate_of_so4", + 839, + "area_covered_by_floating_ice_shelves", + 2, + "area_covered_by_grounded_ice_sheet", + 2, + "area_fraction", + 267759, + "artificial_tracer_with_50_day_lifetime", + 93, + "atlantic_meridional_overturning_circulation", + 1, + "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol", + 982, + "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol_particles", + 4333, + "atmosphere_boundary_layer_thickness", + 10657, + "atmosphere_cloud_condensed_water_content", + 2007, + "atmosphere_cloud_ice_content", + 2012, + "atmosphere_convective_cloud_condensed_water_content", + 16, + "atmosphere_downdraft_convective_mass_flux", + 330, + "atmosphere_eastward_stress_due_to_gravity_wave_drag", + 5, + "atmosphere_heat_diffusivity", + 1192, + "atmosphere_mass_content_of_black_carbon_dry_aerosol", + 36, + "atmosphere_mass_content_of_cloud_condensed_water", + 36210, + "atmosphere_mass_content_of_cloud_ice", + 36060, + "atmosphere_mass_content_of_cloud_liquid_water", + 9616, + "atmosphere_mass_content_of_convective_cloud_condensed_water", + 101, + "atmosphere_mass_content_of_convective_cloud_ice", + 29, + "atmosphere_mass_content_of_dust_dry_aerosol", + 616, + "atmosphere_mass_content_of_dust_dry_aerosol_particles", + 4452, + "atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles", + 2545, + "atmosphere_mass_content_of_nitrate_dry_aerosol", + 33, + "atmosphere_mass_content_of_nitrate_dry_aerosol_particles", + 2444, + "atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol", + 35, + "atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles", + 2496, + "atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol", + 34, + "atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_particles", + 2446, + "atmosphere_mass_content_of_sea_salt_dry_aerosol_particles", + 4557, + "atmosphere_mass_content_of_seasalt_dry_aerosol", + 603, + "atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_particles", + 3, + "atmosphere_mass_content_of_sulfate_dry_aerosol", + 602, + "atmosphere_mass_content_of_sulfate_dry_aerosol_particles", + 3189, + "atmosphere_mass_content_of_water_vapor", + 43734, + "atmosphere_mass_of_air_per_unit_area", + 1407, + "atmosphere_mass_of_carbon_dioxide", + 4712, + "atmosphere_momentum_diffusivity", + 1195, + "atmosphere_net_upward_convective_mass_flux", + 6696, + "atmosphere_net_upward_deep_convective_mass_flux", + 249, + "atmosphere_net_upward_shallow_convective_mass_flux", + 249, + "atmosphere_northward_stress_due_to_gravity_wave_drag", + 5, + "atmosphere_number_content_of_cloud_droplets", + 1355, + "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", + 10201, + "atmosphere_optical_thickness_due_to_black_carbon_ambient_aerosol", + 5164, + "atmosphere_optical_thickness_due_to_cloud", + 3392, + "atmosphere_optical_thickness_due_to_dust_ambient_aerosol", + 804, + "atmosphere_optical_thickness_due_to_dust_ambient_aerosol_particles", + 3995, + "atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol", + 1, + "atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol_particles", + 1899, + "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol", + 1563, + "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol_particles", + 3233, + "atmosphere_optical_thickness_due_to_pm1_ambient_aerosol", + 501, + "atmosphere_optical_thickness_due_to_pm1_ambient_aerosol_particles", + 1156, + "atmosphere_optical_thickness_due_to_sea_salt_ambient_aerosol_particles", + 3018, + "atmosphere_optical_thickness_due_to_seasalt_ambient_aerosol", + 801, + "atmosphere_optical_thickness_due_to_stratiform_cloud", + 2, + "atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", + 1, + "atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol_particles", + 3261, + "atmosphere_optical_thickness_due_to_water_in_ambient_aerosol", + 87, + "atmosphere_optical_thickness_due_to_water_in_ambient_aerosol_particles", + 1907, + "atmosphere_relative_vorticity", + 1410, + "atmosphere_transformed_eulerian_mean_meridional_overturning_mass_streamfunction", + 1766, + "atmosphere_updraft_convective_mass_flux", + 557, + "atmosphere_water_vapor_content", + 2233, + "autotrophic_respiration_on_grass_tiles", + 1009, + "autotrophic_respiration_on_grass_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 74, + "autotrophic_respiration_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 63, + "autotrophic_respiration_on_shrub_tiles", + 221, + "autotrophic_respiration_on_shrub_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 74, + "autotrophic_respiration_on_tree_tiles", + 1012, + "autotrophic_respiration_on_tree_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 74, + "average_normal_stress_in_sea_ice", + 1122, + "basal_downward_heat_flux_in_sea_ice", + 2225, + "basal_specific_mass_balance_flux_of_floating_ice_shelf", + 2, + "basal_specific_mass_balance_flux_of_grounded_ice_sheet", + 2, + "basal_temperature_of_floating_ice_shelf", + 2, + "basal_temperature_of_grounded_ice_sheet", + 2, + "bedrock_altitude", + 137, + "biological_nitrogen_fixation", + 685, + "calipso_ice_cloud_fraction", + 13, + "calipso_ice_cloud_percentage", + 38, + "calipso_liquid_cloud_fraction", + 13, + "calipso_liquid_cloud_percentage", + 38, + "canopy_albedo", + 13, + "canopy_height", + 4130, + "canopy_snow_amount", + 284, + "canopy_temperature", + 49, + "canopy_water_amount", + 39, + "carbon-13_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land_[kgc_m-2_s-1]", + 51, + "carbon-13_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_on_land_[kgc_m-2_s-1]", + 51, + "carbon-13_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land_[kgc_m-2_s-1]", + 51, + "carbon-14_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land_[kgc_m-2_s-1]", + 51, + "carbon-14_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_on_land_[kgc_m-2_s-1]", + 51, + "carbon-14_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land_[kgc_m-2_s-1]", + 51, + "carbon_content_of_products_of_anthropogenic_land_use_change", + 478, + "carbon_harvested_due_to_land-use_or_land-cover_change_process_that_enters_anthropogenic_product_pools_on_tile", + 154, + "carbon_in_above_and_below-ground_litter_pools_on_land-use_tiles", + 188, + "carbon_in_above_and_belowground_litter_pools_on_land_use_tiles", + 61, + "carbon_in_soil_pool_on_land-use_tiles", + 189, + "carbon_in_soil_pool_on_land_use_tiles", + 68, + "carbon_mass_content_of_forestry_and_agricultural_products", + 4609, + "carbon_mass_flux_due_to_npp_allocation_to_leaf", + 4431, + "carbon_mass_flux_due_to_npp_allocation_to_roots", + 4432, + "carbon_mass_flux_due_to_npp_allocation_to_wood", + 4421, + "carbon_mass_flux_from_vegetation_into_atmosphere_due_to_co2_emission_from_all_fire", + 182, + "carbon_mass_flux_from_vegetation_into_atmosphere_due_to_co2_emission_from_all_fire_[kgc_m-2_s-1]", + 85, + "carbon_mass_flux_into_atmosphere_due_to_any_human_activity", + 53, + "carbon_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land", + 9488, + "carbon_mass_flux_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land_[kgc_m-2_s-1]", + 6205, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_fire_including_all_sources", + 77, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_fire_including_all_sources_[kgc_m-2_s-1]", + 84, + "carbon_mass_flux_into_atmosphere_due_to_co2_emission_from_natural_fire", + 145, + "carbon_mass_flux_into_atmosphere_due_to_co2_emissions_from_fire_resulting_from_all_sources_including_natural,_anthropogenic_and_land_use_change.", + 116, + "carbon_mass_flux_into_atmosphere_due_to_growth_autotrophic_respiration_on_land", + 4558, + "carbon_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_from_litter_on_land", + 1310, + "carbon_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_from_soil_on_land", + 1392, + "carbon_mass_flux_into_atmosphere_due_to_heterotrophic_respiration_on_land", + 9450, + "carbon_mass_flux_into_atmosphere_due_to_maintenance_autotrophic_respiration_on_land", + 4560, + "carbon_mass_flux_into_atmosphere_due_to_maintenance_autotrophic_respiration_on_land_[kgc_m-2_s-1]", + 423, + "carbon_mass_flux_into_forestry_and_agricultural_products_due_to_anthropogenic_land_use_or_land_cover_change", + 4734, + "carbon_mass_flux_into_litter_and_soil_due_to_anthropogenic_land_use_or_land_cover_change", + 9, + "carbon_mass_flux_into_soil_and_litter_due_to_anthropogenic_land_use_or_land_cover_change", + 143, + "carbon_mass_flux_into_soil_from_litter", + 10116, + "carbon_mass_flux_into_soil_from_vegetation_excluding_litter", + 176, + "carbon_mass_flux_into_wood_and_agricultural_product_pools_due_to_anthropogenic_land_use_or_land_cover_change", + 11, + "carbon_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land", + 11726, + "carbon_mass_flux_out_of_atmosphere_due_to_gross_primary_production_on_land_[kgc_m-2_s-1]", + 7372, + "carbon_mass_flux_out_of_atmosphere_due_to_net_primary_production_on_land", + 11656, + "carbon_mass_in_above-ground_litter", + 2040, + "carbon_mass_in_below-ground_litter", + 2107, + "carbon_mass_in_coarse_woody_debris", + 435, + "carbon_mass_in_each_model_soil_level_(summed_over_all_soil_carbon_pools_in_that_level)", + 93, + "carbon_mass_in_each_model_soil_pool_(summed_over_vertical_levels)", + 775, + "carbon_mass_in_fast_soil_pool", + 1514, + "carbon_mass_in_leaves", + 5210, + "carbon_mass_in_litter_on_grass_tiles", + 867, + "carbon_mass_in_litter_on_shrub_tiles", + 80, + "carbon_mass_in_litter_on_tree_tiles", + 867, + "carbon_mass_in_litter_pool", + 16129, + "carbon_mass_in_medium_soil_pool", + 1657, + "carbon_mass_in_model_soil_pool", + 13919, + "carbon_mass_in_other_living_compartments_on_land", + 684, + "carbon_mass_in_products_of_land-use_change", + 2800, + "carbon_mass_in_products_of_land_use_change", + 1243, + "carbon_mass_in_roots", + 5209, + "carbon_mass_in_slow_soil_pool", + 1591, + "carbon_mass_in_soil_on_grass_tiles", + 868, + "carbon_mass_in_soil_on_shrub_tiles", + 80, + "carbon_mass_in_soil_on_tree_tiles", + 867, + "carbon_mass_in_soil_pool", + 1395, + "carbon_mass_in_soil_pool_above_1m_depth", + 237, + "carbon_mass_in_stem", + 5668, + "carbon_mass_in_vegetation_components_other_than_leaves,_stems_and_roots", + 923, + "carbon_mass_in_wood", + 4557, + "carbon_transferred_directly_to_atmosphere_due_to_any_land-use_or_land-cover_change_activities", + 35, + "carbon_transferred_directly_to_atmosphere_due_to_any_land-use_or_land-cover_change_activities_[kgc_m-2_s-1]", + 55, + "carbon_transferred_directly_to_atmosphere_due_to_any_land-use_or_land-cover_change_activities_including_deforestation_or_agricultural_fire", + 149, + "carbon_transferred_to_soil_or_litter_pools_due_to_land-use_or_land-cover_change_processes_on_tile", + 252, + "carbonate_ion_concentration_for_sea_water_in_equilibrium_with_pure_calcite", + 409, + "cell_area", + 58642, + "cell_thickness", + 10146, + "ch3coch3_volume_mixing_ratio", + 400, + "change_in_groundwater", + 7, + "change_in_interception_storage", + 7, + "change_in_river_storage", + 7, + "change_in_snow/ice_cold_content", + 7, + "change_in_snow_water_equivalent", + 7, + "change_in_soil_moisture", + 7, + "change_in_surface_heat_storage", + 7, + "change_in_surface_water_storage", + 7, + "change_over_time_in_amount_of_ice_and_snow_on_land", + 10, + "change_over_time_in_canopy_water_amount", + 10, + "change_over_time_in_groundwater_amount", + 10, + "change_over_time_in_land_water_amount", + 10, + "change_over_time_in_mass_content_of_water_in_soil", + 10, + "change_over_time_in_river_water_amount", + 10, + "change_over_time_in_thermal_energy_content_of_ice_and_snow_on_land", + 10, + "change_over_time_in_thermal_energy_content_of_vegetation_and_litter_and_soil", + 10, + "chemical_production_of_dry_aerosol_secondary_organic_matter", + 512, + "clear-sky_surface_longwave_radiative_flux_due_to_dust", + 24, + "clear-sky_surface_shortwave_radiative_flux_due_to_dust", + 20, + "cloud-top_effective_droplet_radius", + 2, + "cloud-top_effective_droplet_radius_in_convective_cloud", + 4, + "cloud-top_effective_droplet_radius_in_stratiform_cloud", + 134, + "cloud_albedo", + 7946, + "cloud_area_fraction", + 94546, + "cloud_area_fraction_in_atmosphere_layer", + 44909, + "cloud_droplet_number_concentration_of_convective_cloud_tops", + 4, + "cloud_droplet_number_concentration_of_stratiform_cloud_tops", + 134, + "cloud_ice_mixing_ratio", + 68, + "cloud_liquid_water_mixing_ratio", + 68, + "compressive_strength_of_sea_ice", + 4119, + "concentration_of_dust", + 372, + "conductive_heat_flux_at_sea_ice_surface", + 519, + "convection_time_fraction", + 11219, + "convective_cloud_area_fraction", + 1821, + "convective_cloud_area_fraction_in_atmosphere_layer", + 733, + "convective_ice_water_path", + 78, + "convective_precipitation_flux", + 40145, + "convective_rainfall_flux", + 91, + "convective_snowfall_flux", + 70, + "coriolis_force_term_in_force_balance_(x-component)", + 1292, + "coriolis_force_term_in_force_balance_(y-component)", + 1292, + "covariance_over_longitude_of_northward_wind_and_air_temperature", + 295, + "decomposition_out_of_product_pools_to_co2_in_atmos", + 1549, + "decomposition_out_of_product_pools_to_co2_in_atmosphere", + 255, + "decomposition_out_of_product_pools_to_co2_in_atmosphere_as_carbon_mass_flux_[kgc_m-2_s-1]", + 117, + "deforested_biomass_into_product_pool_due_to_anthorpogenic_land_use_change", + 2, + "deforested_biomass_that_goes_into_product_pool_as_a_result_of_anthropogenic_land-use_change", + 3819, + "deforested_biomass_that_goes_into_product_pool_as_a_result_of_anthropogenic_land_use_change", + 1152, + "deforested_or_harvested_biomass_as_a_result_of_anthropogenic_land-use_or_change", + 350, + "depth_at_shallowest_isotherm_defined_by_soil_temperature", + 38, + "depth_at_shallowest_local_minimum_in_vertical_profile_of_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", + 11643, + "depth_below_geoid", + 1123, + "depth_integral_of_product_of_sea_water_density_and_conservative_temperature", + 7, + "depth_integral_of_product_of_sea_water_density_and_prognostic_salinity", + 3030, + "depth_of_frozen_soil", + 4, + "depth_of_isosurface_of_sea_water_potential_temperature", + 8919, + "depth_to_soil_thaw", + 14, + "dew_point_temperature", + 10204, + "dissolved_organic_carbon_content", + 494, + "dissolved_oxygen_concentration_at_saturation", + 239, + "divergence_of_sea_ice_velocity", + 7050, + "downward_heat_flux_at_ground_level_in_snow", + 10, + "downward_inorganic_carbon_flux_at_ocean_bottom", + 1383, + "downward_liquid_water_mass_flux_into_groundwater", + 45, + "downward_organic_carbon_flux_at_ocean_bottom", + 1117, + "downward_sea_ice_basal_salt_flux", + 11941, + "downward_x_stress_at_sea_water_surface", + 2521, + "downward_x_stress_correction_at_sea_water_surface", + 2, + "downward_y_stress_at_sea_water_surface", + 2514, + "downward_y_stress_correction_at_sea_water_surface", + 2, + "downwelling_longwave_flux_in_air", + 5061, + "downwelling_longwave_flux_in_air_assuming_clear_sky", + 5039, + "downwelling_shortwave_flux_in_air", + 5143, + "downwelling_shortwave_flux_in_air_assuming_clear_sky", + 4789, + "downwelling_shortwave_flux_in_sea_water", + 4536, + "downwelling_shortwave_flux_in_sea_water_at_sea_ice_base", + 618, + "downwelling_shortwave_flux_under_sea_ice", + 589, + "dry_and_wet_deposition_of_reactive_nitrogen_onto_land", + 687, + "dry_deposition_rate_of_black_carbon_aerosol_mass", + 5139, + "dry_deposition_rate_of_dry_aerosol_total_organic_matter", + 1359, + "dry_deposition_rate_of_dust", + 5222, + "dry_deposition_rate_of_nh3", + 134, + "dry_deposition_rate_of_nh4", + 477, + "dry_deposition_rate_of_noy", + 677, + "dry_deposition_rate_of_o3", + 395, + "dry_deposition_rate_of_sea-salt_aerosol", + 644, + "dry_deposition_rate_of_seasalt", + 890, + "dry_deposition_rate_of_so2", + 4905, + "dry_deposition_rate_of_so4", + 5263, + "dust_aerosol_mass_mixing_ratio", + 1571, + "dust_aod@550nm", + 1384, + "dust_optical_depth_at_865nm", + 52, + "dust_optical_thickness_at_550nm", + 4370, + "eastward_atmosphere_dry_static_energy_transport_across_unit_distance", + 4509, + "eastward_atmosphere_water_transport_across_unit_distance", + 5668, + "eastward_humidity_transport", + 35, + "eastward_surface_stress_from_planetary_boundary_layer_scheme", + 197, + "eastward_wind", + 198459, + "effective_radius_of_cloud_liquid_water_particle_at_liquid_water_cloud_top", + 2815, + "effective_radius_of_cloud_liquid_water_particles_at_liquid_water_cloud_top", + 247, + "effective_radius_of_convective_cloud_ice_particle", + 548, + "effective_radius_of_convective_cloud_liquid_water_particle", + 548, + "effective_radius_of_convective_cloud_liquid_water_particle_at_convective_liquid_water_cloud_top", + 49, + "effective_radius_of_stratiform_cloud_ice_particle", + 672, + "effective_radius_of_stratiform_cloud_ice_particles", + 4, + "effective_radius_of_stratiform_cloud_liquid_water_particle", + 840, + "effective_radius_of_stratiform_cloud_liquid_water_particle_at_stratiform_liquid_water_cloud_top", + 62, + "effective_radius_of_stratiform_cloud_liquid_water_particles", + 9, + "effective_radius_of_stratiform_cloud_liquid_water_particles_at_stratiform_liquid_water_cloud_top", + 1, + "elemental_carbon_mass_mixing_ratio", + 1844, + "emission_rate_of_black_carbon_aerosol_mass", + 508, + "energy_of_sublimation", + 14, + "epfy", + 201, + "epfz", + 202, + "equivalent_thickness_at_stp_of_atmosphere_ozone_content", + 4296, + "evaporation", + 315, + "evaporation_including_sublimation_and_transpiration", + 24532, + "evaporation_including_sublimation_and_transpiration_", + 18, + "evs", + 16, + "fast_soil_pool_carbon_content", + 431, + "fast_soil_pool_mass_content_of_carbon", + 6105, + "field_capacity", + 2, + "fire_CO2_emissions_from_all_sources", + 1, + "fire_CO2_emissions_from_vegetation_carbon", + 1, + "fire_CO2_emissions_from_wildfire", + 1, + "floating_ice_shelf_area_percentage", + 2, + "flux_from_wood_and_agricultural_product_pools_on_land_use_tile_into_atmosphere", + 153, + "flux_of_inorganic_carbon_into_ocean_surface_by_runoff", + 362, + "flux_of_organic_carbon_into_ocean_surface_by_runoff", + 352, + "fraction_of_land_use_tile_tile_that_is_non-woody_vegetation_(_e.g._herbaceous_crops)", + 35, + "fraction_of_rainfall_on_snow.", + 6, + "fraction_of_snowfall_on_snow.", + 6, + "fraction_of_time_steps_with_sea_ice", + 14351, + "fraction_of_time_with_sea_ice_area_fraction_above_threshold", + 6697, + "frequency_of_lightning_flashes_per_unit_area", + 22, + "freshwater_flux_from_ice_surface", + 29, + "freshwater_flux_from_sea-ice_surface", + 1196, + "freshwater_flux_from_sea_ice", + 310, + "frozen_moisture_content_of_soil_layer", + 4, + "frozen_soil_depth", + 6, + "frozen_water_content_of_soil_layer", + 14421, + "frozen_water_in_soil", + 7, + "gas-phase_production_rate_of_so4", + 844, + "geopotential_height", + 136329, + "geothermal_heat_flux_beneath_land_ice", + 129, + "global_average_sea_water_conservative_temperature", + 1474, + "global_average_thermosteric_sea_level_change", + 13639, + "grid_averaged_methane_consumption_(methanotrophy)_from_wetlands", + 161, + "grid_averaged_methane_emissions_from_wetlands", + 275, + "grid_averaged_methane_production_(methanogenesis)_from_wetlands", + 3624, + "gross_primary_production_on_grass_tiles", + 1347, + "gross_primary_production_on_grass_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 70, + "gross_primary_production_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 62, + "gross_primary_production_on_shrub_tiles", + 196, + "gross_primary_production_on_shrub_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 70, + "gross_primary_production_on_tree_tiles", + 1347, + "gross_primary_production_on_tree_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 70, + "gross_primary_productivity_of_biomass_expressed_as_13C", + 12, + "gross_primary_productivity_of_biomass_expressed_as_14C", + 11, + "gross_primary_productivity_of_biomass_expressed_as_carbon", + 18180, + "gross_primary_productivity_on_land-use_tile", + 151, + "gross_primary_productivity_on_land_use_tile", + 546, + "grounded_ice_sheet_area_fraction", + 10013, + "grounded_ice_sheet_area_percentage", + 37, + "groundwater intake", + 40, + "groundwater_intake", + 41, + "groundwater_recharge_from_soil_layer", + 11, + "growth_limitation_of_calcareous_phytoplankton_due_to_solar_irradiance", + 7, + "growth_limitation_of_diatoms_due_to_solar_irradiance", + 777, + "growth_limitation_of_diazotrophs_due_to_solar_irradiance", + 29, + "growth_limitation_of_miscellaneous_phytoplankton_due_to_solar_irradiance", + 936, + "growth_limitation_of_picophytoplankton_due_to_solar_irradiance", + 22, + "harvested_biomass_into_product_pool", + 1, + "harvested_biomass_that_goes_into_product_pool", + 1011, + "heat_content_of_ocean_layer", + 23, + "heat_content_of_upper_300_meters", + 545, + "heat_flux_correction", + 1448, + "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", + 3758, + "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", + 1262, + "heat_flux_into_sea_water_due_to_snow_thermodynamics", + 376, + "height_above_reference_ellipsoid", + 5102, + "heterotrophic_respiration_carbon_flux", + 1334, + "heterotrophic_respiration_carbon_flux_from_litter", + 1, + "heterotrophic_respiration_carbon_flux_from_soil", + 1, + "heterotrophic_respiration_on_grass_tiles", + 867, + "heterotrophic_respiration_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 67, + "heterotrophic_respiration_on_shrub_tiles", + 80, + "heterotrophic_respiration_on_tree_tiles", + 867, + "histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid", + 39, + "histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid", + 32, + "hydrometeor_effective_radius_of_stratiform_cloud_ice", + 4, + "ice_cloud_area_fraction", + 1098, + "ice_cloud_area_fraction_in_atmosphere_layer", + 16, + "ice_sheet_mass", + 2, + "ice_sheet_mass_that_does_not_displace_sea_water", + 2, + "ice_sheet_surface_ice_melt_flux", + 123, + "ice_sheet_surface_mass_balance_flux", + 1007, + "ice_sheet_surface_snow_and_ice_sublimation_flux", + 125, + "ice_sheet_temperature_at_top_of_ice_sheet_model", + 125, + "incoming_water_volume_transport_along_river_channel", + 4, + "integral_of_product_of_eastward_wind_and_specific_humidity_wrt_height", + 2, + "integral_of_product_of_northward_wind_and_specific_humidity_wrt_height", + 2, + "integral_of_sea_ice_temperature_wrt_depth_expressed_as_heat_content", + 1755, + "integral_with_respect_to_depth_of_product_of_sea_water_density_and_potential_temperature", + 2940, + "integral_wrt_depth_of_product_of_potential_temperature_and_sea_water_density", + 95, + "integral_wrt_depth_of_product_of_salinity_and_sea_water_density", + 95, + "integral_wrt_depth_of_product_of_sea_water_density_and_conservative_temperature", + 5, + "integral_wrt_depth_of_product_of_sea_water_density_and_potential_temperature", + 846, + "integral_wrt_depth_of_product_of_sea_water_density_and_prognostic_temperature", + 37, + "integral_wrt_depth_of_product_of_sea_water_density_and_salinity", + 1043, + "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent", + 649, + "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", + 2083, + "integral_wrt_height_of_product_of_eastward_wind_and_specific_humidity", + 22, + "integral_wrt_height_of_product_of_northward_wind_and_specific_humidity", + 22, + "integrated_eastward_wind_times_humidity", + 102, + "integrated_northward_wind_times_humidity", + 103, + "internal_ice_heat_content", + 9, + "internal_stress_term_in_force_balance_(x-component)", + 1261, + "internal_stress_term_in_force_balance_(y-component)", + 1258, + "iron_growth_limitation_of_calcareous_phytoplankton", + 7, + "iron_growth_limitation_of_diatoms", + 788, + "iron_growth_limitation_of_diazotrophs", + 264, + "iron_growth_limitation_of_miscellaneous_phytoplankton", + 856, + "iron_growth_limitation_of_picophytoplankton", + 22, + "iron_limitation_of_calcareous_phytoplankton", + 32, + "iron_limitation_of_diatoms", + 1506, + "iron_limitation_of_diazotrophs", + 415, + "iron_limitation_of_other_phytoplankton", + 3466, + "iron_limitation_of_picophytoplankton", + 286, + "iron_loss_to_sediments", + 947, + "irradiance_limitation_of_calcareous_phytoplankton", + 32, + "irradiance_limitation_of_diatoms", + 1461, + "irradiance_limitation_of_diazotrophs", + 318, + "irradiance_limitation_of_other_phytoplankton", + 3289, + "irradiance_limitation_of_picophytoplankton", + 290, + "irrigation_flux_including_any_irrigation_for_crops,_trees,_pasture,_or_urban_lawns", + 98, + "lagrangian_tendency_of_air_pressure", + 84163, + "land_area_fraction", + 27503, + "land_ice_area_fraction", + 19042, + "land_ice_basal_drag", + 2, + "land_ice_basal_x_velocity", + 2, + "land_ice_basal_y_velocity", + 2, + "land_ice_calving_flux", + 2, + "land_ice_runoff_flux", + 262, + "land_ice_surface_melt_flux", + 30, + "land_ice_surface_specific_mass_balance_flux", + 520, + "land_ice_thickness", + 137, + "land_ice_vertical_mean_x_velocity", + 2, + "land_ice_vertical_mean_y_velocity", + 2, + "land_surface_liquid_water_amount", + 11, + "land_water_amount", + 4740, + "large_scale_rainfall_flux", + 2, + "large_scale_snowfall_flux", + 2, + "lateral_sea_ice_melt_rate", + 1443, + "lateral_transfer_of_carbon_out_of_grid_cell_that_eventually_goes_into_ocean", + 201, + "lateral_transfer_of_nitrogen_out_of_grid_cell_that_eventually_goes_into_ocean", + 5, + "latitude", + 1, + "leaf_area_index", + 33002, + "leaf_area_index_on_land_use_tile", + 34, + "leaf_carbon_content", + 496, + "leaf_mass_content_of_carbon", + 6194, + "leaf_mass_content_of_nitrogen", + 1556, + "lightning_flash_rate", + 623, + "liquid_cloud_area_fraction_in_atmosphere_layer", + 2, + "liquid_moisture_content_of_soil_layer", + 4, + "liquid_water_cloud_area_fraction", + 1101, + "liquid_water_cloud_area_fraction_in_atmosphere_layer", + 14, + "liquid_water_content_of_permafrost_layer", + 16, + "liquid_water_content_of_snow_layer", + 450, + "liquid_water_content_of_soil_layer", + 24297, + "liquid_water_content_of_surface_snow", + 20392, + "litter_carbon_content", + 1225, + "litter_carbon_flux", + 430, + "litter_mass_content_of_13C", + 9, + "litter_mass_content_of_14C", + 9, + "litter_mass_content_of_carbon", + 14865, + "litter_mass_content_of_nitrogen", + 2769, + "load_of_black_carbon_aerosol", + 375, + "load_of_dry_aerosol_organic_matter", + 321, + "load_of_dry_aerosol_primary_organic_matter", + 196, + "load_of_dry_aerosol_secondary_organic_matter", + 122, + "load_of_dust", + 1231, + "load_of_no3", + 74, + "load_of_sea-salt_aerosol", + 4139, + "load_of_seasalt", + 570, + "load_of_so4", + 1410, + "longitude", + 1, + "longwave_flux_due_to_volcanic_aerosols_at_the_surface", + 57, + "longwave_flux_due_to_volcanic_aerosols_at_toa_under_clear_sky", + 85, + "lwe_thickness_of_surface_snow_amount", + 322, + "magnitude_of_surface_downward_stress", + 16, + "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", + 78, + "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", + 13002, + "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", + 10019, + "mass_concentration_of_dust_dry_aerosol_in_air", + 907, + "mass_concentration_of_dust_dry_aerosol_particles_in_air", + 2993, + "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", + 4053, + "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", + 38047, + "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", + 8963, + "mass_concentration_of_sea_salt_dry_aerosol_particles_in_air", + 2730, + "mass_concentration_of_seasalt_dry_aerosol_in_air", + 904, + "mass_concentration_of_sulfate_dry_aerosol_in_air", + 904, + "mass_concentration_of_sulfate_dry_aerosol_particles_in_air", + 2714, + "mass_content_of_13C_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 9, + "mass_content_of_14C_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 9, + "mass_content_of_carbon_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 6661, + "mass_content_of_nitrogen_in_vegetation_and_litter_and_soil_and_forestry_and_agricultural_products", + 2819, + "mass_content_of_water_in_soil", + 17979, + "mass_content_of_water_in_soil_layer", + 29544, + "mass_content_of_water_in_soil_layer_defined_by_root_depth", + 308, + "mass_flux_of_13c_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land", + 31, + "mass_flux_of_13c_into_atmosphere_due_to_heterotrophic_respiration_on_land", + 31, + "mass_flux_of_13c_out_of_atmosphere_due_to_gross_primary_production_on_land", + 74, + "mass_flux_of_14c_into_atmosphere_due_to_autotrophic_(plant)_respiration_on_land", + 31, + "mass_flux_of_14c_into_atmosphere_due_to_heterotrophic_respiration_on_land", + 31, + "mass_flux_of_14c_out_of_atmosphere_due_to_gross_primary_production_on_land", + 75, + "mass_flux_of_carbon_into_forestry_and_agricultural_products_due_to_crop_harvesting", + 4296, + "mass_flux_of_carbon_into_litter_from_vegetation", + 5848, + "mass_flux_of_carbon_into_litter_from_vegetation_due_to_mortality", + 163, + "mass_flux_of_carbon_into_litter_from_vegetation_due_to_senescence", + 1827, + "mass_flux_of_carbon_into_sea_water_from_rivers", + 139, + "mass_flux_of_carbon_out_of_soil_due_to_leaching_and_runoff", + 2482, + "mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_into_sea_from_rivers", + 138, + "mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_out_of_litter_and_soil_due_to_immobilisation_and_remineralization", + 2817, + "mass_fraction_of_ammonium_dry_aerosol_particles_in_air", + 269, + "mass_fraction_of_carbon_dioxide_tracer_in_air", + 96, + "mass_fraction_of_cloud_ice_in_air", + 13402, + "mass_fraction_of_cloud_liquid_water_in_air", + 13403, + "mass_fraction_of_convective_cloud_ice_in_air", + 332, + "mass_fraction_of_convective_cloud_liquid_water_in_air", + 339, + "mass_fraction_of_dust_dry_aerosol_particles_in_air", + 2349, + "mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air", + 2544, + "mass_fraction_of_frozen_water_in_soil_moisture", + 40, + "mass_fraction_of_liquid_precipitation_in_air", + 2, + "mass_fraction_of_nitrate_dry_aerosol_particles_in_air", + 470, + "mass_fraction_of_particulate_organic_matter_dry_aerosol_particles_in_air", + 2309, + "mass_fraction_of_pm10_ambient_aerosol_particles_in_air", + 411, + "mass_fraction_of_pm1_dry_aerosol_particles_in_air", + 470, + "mass_fraction_of_pm2p5_dry_aerosol_particles_in_air", + 791, + "mass_fraction_of_rain_in_air", + 50, + "mass_fraction_of_rainfall_falling_onto_surface_snow", + 4, + "mass_fraction_of_sea_salt_dry_aerosol_particles_in_air", + 2153, + "mass_fraction_of_seasalt_dry_aerosol_particles_in_air", + 399, + "mass_fraction_of_secondary_particulate_organic_matter_dry_aerosol_particles_in_air", + 1550, + "mass_fraction_of_snow_in_air", + 72, + "mass_fraction_of_solid_precipitation_falling_onto_surface_snow", + 4, + "mass_fraction_of_stratiform_cloud_ice_in_air", + 313, + "mass_fraction_of_stratiform_cloud_liquid_water_in_air", + 320, + "mass_fraction_of_sulfate_dry_aerosol_in_air", + 543, + "mass_fraction_of_sulfate_dry_aerosol_particles_in_air", + 2345, + "mass_fraction_of_unfrozen_water_in_soil_moisture", + 40, + "mass_fraction_of_water_in_air", + 1621, + "mass_fraction_of_water_in_ambient_aerosol_particles_in_air", + 672, + "mass_of_13c_in_all_terrestrial_carbon_pools", + 82, + "mass_of_13c_in_litter_pool", + 82, + "mass_of_13c_in_soil_pool", + 82, + "mass_of_13c_in_vegetation", + 127, + "mass_of_14c_in_all_terrestrial_carbon_pools", + 82, + "mass_of_14c_in_litter_pool", + 84, + "mass_of_14c_in_soil_pool", + 82, + "mass_of_14c_in_vegetation", + 125, + "mass_of_salt_in_sea_ice_per_area", + 6233, + "maximum_over_coordinate_rotation_of_sea_ice_horizontal_shear_strain_rate", + 275, + "maximum_over_coordinate_rotation_of_sea_ice_horizontal_shear_stress", + 147, + "maximum_shear_of_sea-ice_velocity_field", + 5815, + "maximum_shear_stress_in_sea_ice", + 1125, + "medium_soil_pool_carbon_content", + 430, + "medium_soil_pool_mass_content_of_carbon", + 5926, + "meltpond_mass_per_unit_area", + 886, + "meridional_overturning_circulation_at_34s", + 1, + "meridional_streamfunction_transformed_eulerian_mean", + 21, + "mineral_ammonium_in_the_soil", + 160, + "mineral_nitrate_in_the_soil", + 157, + "mineral_nitrogen_in_the_soil", + 757, + "minimum_depth_of_aragonite_undersaturation_in_sea_water", + 742, + "minimum_depth_of_calcite_undersaturation_in_sea_water", + 1170, + "minus_tendency_of_atmosphere_mass_content_of_ammonia_due_to_dry_deposition", + 72, + "minus_tendency_of_atmosphere_mass_content_of_ammonia_due_to_wet_deposition", + 71, + "minus_tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_dry_deposition", + 72, + "minus_tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_wet_deposition", + 74, + "minus_tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_deposition", + 374, + "minus_tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_dry_deposition", + 1104, + "minus_tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_wet_deposition", + 1088, + "minus_tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_dry_deposition", + 1146, + "minus_tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_wet_deposition", + 999, + "minus_tendency_of_atmosphere_mass_content_of_insoluble_dust_dry_aerosol_particles_due_to_deposition", + 2, + "minus_tendency_of_atmosphere_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_deposition", + 2468, + "minus_tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_dry_deposition", + 224, + "minus_tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_wet_deposition", + 222, + "minus_tendency_of_atmosphere_mass_content_of_ozone_due_to_dry_deposition", + 279, + "minus_tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_dry_deposition", + 830, + "minus_tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_wet_deposition", + 759, + "minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_dry_deposition", + 837, + "minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_wet_deposition", + 764, + "minus_tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_dry_deposition", + 1150, + "minus_tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_wet_deposition", + 1088, + "minus_tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_dry_deposition", + 2382, + "minus_tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_wet_deposition", + 2354, + "minus_tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_denitrification_and_sedimentation", + 1227, + "minus_tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", + 1285, + "minus_tendency_of_ocean_mole_content_of_iron_due_to_sedimentation", + 1225, + "minus_tendency_of_ocean_mole_content_of_organic_carbon_due_to_sedimentation", + 1342, + "miscellaneous_living_matter_carbon_content", + 111, + "miscellaneous_living_matter_mass_content_of_carbon", + 6149, + "miscellaneous_living_matter_mass_content_of_nitrogen", + 85, + "modis_ice_cloud_area_percentage", + 24, + "modis_liquid_cloud_fraction", + 10, + "modis_liquid_cloud_percentage", + 38, + "moisture_content_of_soil_layer", + 3753, + "moisture_in_upper_portion_of_soil_column", + 24125, + "moisture_in_upper_portion_of_soil_column_of_land-use_tile", + 103, + "moisture_in_upper_portion_of_soil_column_of_land_use_tile", + 75, + "mole_concentration_of_ammonium_in_sea_water", + 11782, + "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", + 739, + "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", + 134, + "mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", + 78, + "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", + 4210, + "mole_concentration_of_carbonate_abiotic_analogue_expressed_as_carbon_in_sea_water", + 19, + "mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_aragonite_in_sea_water", + 1051, + "mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_calcite_in_sea_water", + 1960, + "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water", + 5024, + "mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_aragonite_in_sea_water", + 741, + "mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_calcite_in_sea_water", + 1595, + "mole_concentration_of_carbonate_natural_analogue_expressed_as_carbon_in_sea_water", + 734, + "mole_concentration_of_cfc-11_in_sea_water", + 4, + "mole_concentration_of_cfc-12_in_sea_water", + 4, + "mole_concentration_of_cfc11_in_sea_water", + 985, + "mole_concentration_of_cfc12_in_sea_water", + 1031, + "mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", + 3888, + "mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", + 1393, + "mole_concentration_of_dimethyl_sulfide_in_sea_water", + 666, + "mole_concentration_of_dissolved_inorganic_14C_in_sea_water", + 103, + "mole_concentration_of_dissolved_inorganic_carbon_abiotic_analogue_in_sea_water", + 432, + "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", + 27862, + "mole_concentration_of_dissolved_inorganic_carbon_natural_analogue_in_sea_water", + 1832, + "mole_concentration_of_dissolved_inorganic_phosphorous_in_sea_water", + 760, + "mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water", + 7199, + "mole_concentration_of_dissolved_inorganic_silicon_in_sea_water", + 5327, + "mole_concentration_of_dissolved_iron_in_sea_water", + 26971, + "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", + 38836, + "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", + 1731, + "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_shallowest_local_minimum_in_vertical_profile", + 10619, + "mole_concentration_of_dissolved_organic_carbon_in_sea_water", + 5835, + "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", + 2848, + "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", + 2873, + "mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", + 3239, + "mole_concentration_of_nitrate_in_sea_water", + 39500, + "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", + 13312, + "mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", + 3529, + "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", + 5534, + "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", + 6772, + "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", + 1784, + "mole_concentration_of_particulate_organic_matter_expressed_as_silicon_in_sea_water", + 1211, + "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", + 39211, + "mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", + 14189, + "mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", + 15944, + "mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", + 1812, + "mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", + 12730, + "mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", + 9002, + "mole_concentration_of_sf6_in_sea_water", + 902, + "mole_concentration_of_sulfur_hexafluoride_in_sea_water", + 609, + "mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", + 26244, + "mole_fraction_of_acetone_in_air", + 316, + "mole_fraction_of_artificial_tracer_with_fixed_lifetime_in_air", + 6, + "mole_fraction_of_carbon_dioxide_in_air", + 10410, + "mole_fraction_of_carbon_monoxide_in_air", + 1323, + "mole_fraction_of_cfc113_in_air", + 58, + "mole_fraction_of_cfc11_in_air", + 2428, + "mole_fraction_of_cfc12_in_air", + 2430, + "mole_fraction_of_dimethyl_sulfide_in_air", + 3654, + "mole_fraction_of_ethane_in_air", + 720, + "mole_fraction_of_ethyne_in_air", + 59, + "mole_fraction_of_formaldehyde_in_air", + 1319, + "mole_fraction_of_hcfc22_in_air", + 55, + "mole_fraction_of_hydrogen_chloride_in_air", + 1937, + "mole_fraction_of_hydroperoxyl_radical_in_air", + 823, + "mole_fraction_of_hydroxyl_radical_in_air", + 3640, + "mole_fraction_of_inorganic_bromine_in_air", + 710, + "mole_fraction_of_inorganic_chlorine_in_air", + 710, + "mole_fraction_of_isoprene_in_air", + 3089, + "mole_fraction_of_methane_in_air", + 8432, + "mole_fraction_of_nitric_acid_in_air", + 2106, + "mole_fraction_of_nitrogen_dioxide_in_air", + 1398, + "mole_fraction_of_nitrogen_monoxide_in_air", + 1333, + "mole_fraction_of_nitrous_oxide_in_air", + 8353, + "mole_fraction_of_noy_expressed_as_nitrogen_in_air", + 828, + "mole_fraction_of_o_and_o3_and_o1d", + 44, + "mole_fraction_of_odd_oxygen_(o,_o3_and_o1d)", + 63, + "mole_fraction_of_ox_in_air", + 25, + "mole_fraction_of_ozone_in_air", + 14300, + "mole_fraction_of_peroxyacetyl_nitrate_in_air", + 1257, + "mole_fraction_of_propane_in_air", + 720, + "mole_fraction_of_propene_in_air", + 620, + "mole_fraction_of_sulfur_dioxide_in_air", + 3616, + "moles_per_unit_mass_of_cfc-11_in_sea_water", + 2, + "moles_per_unit_mass_of_cfc-12_in_sea_water", + 3, + "moles_per_unit_mass_of_sf6_in_sea_water", + 3, + "monthly_loss_of_atmospheric_carbon_monoxide", + 748, + "monthly_loss_of_atmospheric_methane", + 752, + "monthly_loss_of_atmospheric_nitrous_oxide", + 372, + "natural_carbonate_ion_concentration", + 87, + "natural_delta_co2_partial_pressure_", + 255, + "natural_dissolved_inorganic_carbon_concentration", + 4714, + "natural_ph", + 113, + "natural_surface_aqueous_partial_pressure_of_co2", + 2414, + "natural_total_alkalinity", + 581, + "net_conductive_heat_flux_in_ice_at_the_surface", + 1194, + "net_conductive_heat_fluxes_in_ice_at_the_bottom", + 1460, + "net_downward_radiative_flux_at_top_of_atmosphere_model", + 37711, + "net_downward_shortwave_flux_at_sea_water_surface", + 13442, + "net_mass_flux_of_13c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes", + 21, + "net_mass_flux_of_13c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes_[kgc_m-2_s-1]", + 45, + "net_mass_flux_of_14c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes", + 23, + "net_mass_flux_of_14c_between_atmosphere_and_land_(positive_into_land)_as_a_result_of_all_processes_[kgc_m-2_s-1]", + 45, + "net_nitrogen_release_from_soil_and_litter_as_the_outcome_of_nitrogen_immobilisation_and_gross_mineralisation", + 760, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_calcareous_phytoplankton", + 7, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diatoms", + 818, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diazotrophs", + 272, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_miscellaneous_phytoplankton", + 825, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_phytoplankton", + 4579, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_picophytoplankton", + 30, + "net_primary_mole_productivity_of_biomass_expressed_as_carbon_due_to_nitrate_utilization", + 745, + "net_primary_mole_productivity_of_carbon_by_calcareous_phytoplankton", + 32, + "net_primary_mole_productivity_of_carbon_by_diazotrophs", + 439, + "net_primary_mole_productivity_of_carbon_by_picophytoplankton", + 310, + "net_primary_organic_carbon_production_by_diatoms", + 1529, + "net_primary_organic_carbon_production_by_other_phytoplankton", + 1184, + "net_primary_production_allcoated_to_other_pools_(not_leaves_stem_or_roots)", + 727, + "net_primary_production_allcoated_to_stem", + 727, + "net_primary_production_allocated_to_leaves_as_carbon_mass_flux_[kgc_m-2_s-1]", + 428, + "net_primary_production_allocated_to_other_pools_(not_leaves_stem_or_roots)", + 74, + "net_primary_production_allocated_to_other_pools_(not_leaves_stem_or_roots)_as_carbon_mass_flux_[kgc_m-2_s-1]", + 85, + "net_primary_production_allocated_to_roots_as_carbon_mass_flux_[kgc_m-2_s-1]", + 428, + "net_primary_production_allocated_to_stem", + 3334, + "net_primary_production_allocated_to_stem_as_carbon_mass_flux_[kgc_m-2_s-1]", + 290, + "net_primary_production_allocated_to_wood_as_carbon_mass_flux_[kgc_m-2_s-1]", + 418, + "net_primary_production_on_grass_tiles", + 1372, + "net_primary_production_on_grass_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 79, + "net_primary_production_on_land-use_tile_as_carbon_mass_flux_[kgc_m-2_s-1]", + 68, + "net_primary_production_on_land_as_carbon_mass_flux_[kgc_m-2_s-1]", + 7220, + "net_primary_production_on_shrub_tiles", + 222, + "net_primary_production_on_shrub_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 79, + "net_primary_production_on_tree_tiles", + 1370, + "net_primary_production_on_tree_tiles_as_carbon_mass_flux_[kgc_m-2_s-1]", + 79, + "net_primary_productivity_of_biomass_expressed_as_carbon", + 17977, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_leaves", + 5814, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_miscellaneous_living_matter", + 2354, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_roots", + 5813, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_stems", + 2489, + "net_primary_productivity_of_biomass_expressed_as_carbon_accumulated_in_wood", + 5635, + "net_primary_productivity_of_carbon_accumulated_in_leaves", + 115, + "net_primary_productivity_of_carbon_accumulated_in_roots", + 115, + "net_primary_productivity_of_carbon_accumulated_in_wood", + 113, + "net_primary_productivity_on_land-use_tile", + 150, + "net_primary_productivity_on_land_use_tile", + 548, + "net_rate_of_absorption_of_shortwave_energy_in_ocean_layer", + 3489, + "nh4_mass_mixing_ratio", + 462, + "nitrate_aod@550nm", + 1150, + "nitrogen_growth_limitation_of_calcareous_phytoplankton", + 7, + "nitrogen_growth_limitation_of_diatoms", + 786, + "nitrogen_growth_limitation_of_diazotrophs", + 7, + "nitrogen_growth_limitation_of_miscellaneous_phytoplankton", + 950, + "nitrogen_growth_limitation_of_picophytoplankton", + 22, + "nitrogen_limitation_of_calcareous_phytoplankton", + 32, + "nitrogen_limitation_of_diatoms", + 1508, + "nitrogen_limitation_of_diazotrophs", + 32, + "nitrogen_limitation_of_other_phytoplankton", + 3327, + "nitrogen_limitation_of_picophytoplankton", + 286, + "nitrogen_loss_to_sediments_and_through_denitrification", + 945, + "nitrogen_mass_content_of_forestry_and_agricultural_products", + 1097, + "nitrogen_mass_flux_into_forestry_and_agricultural_products_due_to_anthropogenic_land_use_or_land_cover_change", + 1796, + "nitrogen_mass_flux_into_litter_from_vegetation", + 430, + "nitrogen_mass_flux_into_soil_from_litter", + 503, + "nitrogen_mass_flux_into_soil_from_vegetation_excluding_litter", + 47, + "nitrogen_mass_flux_out_of_land_due_to_any_human_activity", + 147, + "nitrogen_mass_in_coarse_woody_debris", + 160, + "nitrogen_mass_in_leaves", + 203, + "nitrogen_mass_in_litter_pool", + 698, + "nitrogen_mass_in_products_of_land-use_change", + 313, + "nitrogen_mass_in_products_of_land_use_change", + 375, + "nitrogen_mass_in_roots", + 202, + "nitrogen_mass_in_soil_pool", + 766, + "nitrogen_mass_in_stem", + 200, + "nitrogen_mass_in_vegetation", + 763, + "nitrogen_production", + 408, + "no3_aerosol_mass_mixing_ratio", + 743, + "northward_acceleration_due_to_orographic_gravity_wave_drag", + 3141, + "northward_atmosphere_dry_static_energy_transport_across_unit_distance", + 4509, + "northward_atmosphere_water_transport_across_unit_distance", + 5651, + "northward_eddy_temperature_flux", + 366, + "northward_eliassen_palm_flux_in_air", + 21490, + "northward_heat_flux_in_air_due_to_eddy_advection", + 2869, + "northward_humidity_transport", + 35, + "northward_ocean_heat_transport", + 13492, + "northward_ocean_heat_transport_due_to_gyre", + 2656, + "northward_ocean_heat_transport_due_to_overturning", + 2678, + "northward_ocean_heat_transport_due_to_parameterized_eddy_advection", + 1801, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_advection", + 749, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_diffusion", + 462, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_advection", + 1808, + "northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_diffusion", + 1537, + "northward_ocean_heat_transport_due_to_parameterized_submesoscale_advection", + 8, + "northward_ocean_salt_transport", + 1600, + "northward_ocean_salt_transport_due_to_gyre", + 2246, + "northward_ocean_salt_transport_due_to_overturning", + 2246, + "northward_surface_stress_from_planetary_boundary_layer_scheme", + 198, + "northward_transformed_eulerian_mean_air_velocity", + 21525, + "northward_wind", + 174140, + "nudging_increment_in_mass_content_of_water_in_soil", + 12, + "nudging_increment_of_water_in_soil_moisture", + 4, + "number_concentration_coarse_mode_aerosol", + 199, + "number_concentration_of_ambient_aerosol_particles_in_air", + 306, + "number_concentration_of_cloud_condensation_nuclei_at_stp_in_air", + 1395, + "number_concentration_of_cloud_liquid_water_particles_in_air", + 6210, + "number_concentration_of_cloud_liquid_water_particles_in_air_at_liquid_water_cloud_top", + 1192, + "number_concentration_of_coarse_mode_ambient_aerosol_particles_in_air", + 92, + "number_concentration_of_convective_cloud_liquid_water_particle_at_convective_liquid_water_cloud_top", + 46, + "number_concentration_of_ice_crystals_in_air_at_ice_cloud_top", + 1094, + "number_concentration_of_nucleation_mode_aerosol", + 45, + "number_concentration_of_nucleation_mode_ambient_aerosol_particles_in_air", + 37, + "number_concentration_of_stratiform_cloud_liquid_water_particle_at_stratiform_liquid_water_cloud_top", + 62, + "number_concentration_of_stratiform_cloud_liquid_water_particles_at_stratiform_liquid_water_cloud_top", + 1, + "o3_destruction_rate", + 739, + "o3_production_rate", + 746, + "obvfsq", + 1, + "ocean_barotropic_mass_streamfunction", + 11000, + "ocean_drag_coefficient", + 153, + "ocean_heat_x_transport", + 4297, + "ocean_heat_y_transport", + 4293, + "ocean_kinetic_energy_dissipation_per_unit_area_due_to_vertical_friction", + 107, + "ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction", + 327, + "ocean_mass_content_of_dissolved_inorganic_carbon", + 12294, + "ocean_mass_content_of_dissolved_organic_carbon", + 645, + "ocean_mass_content_of_particulate_organic_matter_expressed_as_carbon", + 923, + "ocean_mass_x_transport", + 11682, + "ocean_mass_y_transport", + 11684, + "ocean_meridional_overturning_mass_streamfunction", + 17766, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", + 4795, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", + 1954, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", + 167, + "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_eddy_advection", + 29, + "ocean_mixed_layer_thickness_defined_by_mixing_scheme", + 1175, + "ocean_mixed_layer_thickness_defined_by_sigma_t", + 33194, + "ocean_momentum_xy_biharmonic_diffusivity", + 14, + "ocean_momentum_xy_laplacian_diffusivity", + 219, + "ocean_tracer_bolus_laplacian_diffusivity", + 101, + "ocean_tracer_diffusivity_due_to_parameterized_mesoscale_advection", + 2423, + "ocean_tracer_epineutral_laplacian_diffusivity", + 547, + "ocean_tracer_laplacian_diffusivity_due_to_parameterized_mesoscale_eddy_advection", + 187, + "ocean_tracer_xy_laplacian_diffusivity", + 116, + "ocean_vertical_heat_diffusivity", + 3886, + "ocean_vertical_momentum_diffusivity", + 959, + "ocean_vertical_momentum_diffusivity_due_to_tides", + 110, + "ocean_vertical_salt_diffusivity", + 3234, + "ocean_vertical_tracer_diffusivity_due_to_tides", + 672, + "ocean_volume", + 15173, + "ocean_y_overturning_mass_streamfunction", + 6039, + "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", + 1131, + "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", + 715, + "ocean_y_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", + 1, + "open_water_evaporation", + 7, + "opottempmint", + 1, + "opottemptend", + 32, + "optical_thickness_at_443_nm_dust", + 11, + "optical_thickness_at_443nm_dust", + 52, + "optical_thickness_at_865_nm_dust", + 263, + "other_vegegtation_components_carbon_content", + 28, + "outgoing_water_volume_transport_along_river_channel", + 973, + "particulate_organic_aerosol_optical_depth_at_550nm", + 168, + "particulate_organic_carbon_content", + 662, + "permafrost_layer_thickness", + 111, + "phosphorus_production", + 117, + "photolysis_rate_of_diatomic_molecular_oxygen", + 74, + "photolysis_rate_of_molecular_oxygen", + 12, + "photolysis_rate_of_nitrogen_dioxide", + 516, + "photolysis_rate_of_no2", + 721, + "photolysis_rate_of_o3_to_o1d", + 460, + "photolysis_rate_of_ozone", + 12, + "photolysis_rate_of_ozone_(o3)", + 74, + "photolysis_rate_of_ozone_(o3)_to_excited_atomic_oxygen_(the_singlet_d_state,_o1d)", + 304, + "photolysis_rate_of_ozone_to_1D_oxygen_atom", + 481, + "plant_respiration_carbon_flux", + 2603, + "plant_respiration_on_land-use_tile", + 113, + "plant_respiration_on_land_use_tile", + 514, + "pm1.0_mass_mixing_ratio", + 561, + "pm10_mass_mixing_ratio", + 637, + "pm2.5_mass_mixing_ratio", + 929, + "pm2.5_mass_mixing_ratio_in_lowest_model_layer", + 142, + "precipitation_flux", + 107727, + "precipitation_flux_onto_canopy", + 19586, + "primary_emission_and_chemical_production_of_dry_aerosol_organic_matter", + 901, + "primary_organic_carbon_production_by_all_types_of_phytoplankton", + 7293, + "primary_organic_carbon_production_by_phytoplankton_based_on_nitrate_uptake_alone", + 1424, + "product_of_air_temperature_and_omega", + 3, + "product_of_eastward_wind_and_air_temperature", + 27, + "product_of_eastward_wind_and_northward_wind", + 25, + "product_of_eastward_wind_and_omega", + 20, + "product_of_lagrangian_tendency_of_air_pressure_and_air_temperature", + 3, + "product_of_northward_wind_and_air_temperature", + 26, + "product_of_northward_wind_and_omega", + 20, + "product_of_omega_and_air_temperature", + 65, + "rainfall_flux", + 14938, + "region", + 10679, + "relative_humidity", + 126146, + "remineralization_of_organic_carbon", + 504, + "rendency_of_eastward_wind_due_to_tem_northward_advection_and_coriolis_term", + 5, + "rendency_of_eastward_wind_due_to_tem_upward_advection", + 4, + "river_discharge", + 562, + "river_inflow", + 6, + "root_carbon_content", + 496, + "root_depth", + 5554, + "root_mass_content_of_carbon", + 6373, + "root_mass_content_of_nitrogen", + 1847, + "root_zone_soil_moisture", + 38, + "runoff_flux", + 44405, + "salt_flux_into_sea_water_from_rivers", + 412, + "sand_fraction", + 21, + "saturated_hydraulic_conductivity", + 21, + "sea-ice_area_flux_through_straits", + 248, + "sea-ice_area_fractions_in_thickness_categories", + 294, + "sea-ice_heat_content_per_unit_area", + 1194, + "sea-ice_mass_change_from_dynamics", + 1645, + "sea-ice_mass_change_from_thermodynamics", + 1650, + "sea-ice_mass_change_through_evaporation_and_sublimation", + 1134, + "sea-ice_mass_change_through_growth_in_supercooled_open_water_(aka_frazil)", + 1192, + "sea-ice_mass_change_through_lateral_melting", + 9, + "sea-ice_mass_change_through_snow-to-ice_conversion", + 1239, + "sea-ice_thickness_in_thickness_categories", + 294, + "sea-salt_aerosol_mass_mixing_ratio", + 724, + "sea-salt_aerosol_optical_depth_at_550nm", + 4105, + "sea-surface_tilt_term_in_force_balance_(x-component)", + 1176, + "sea-surface_tilt_term_in_force_balance_(y-component)", + 1180, + "sea_area_fraction", + 18123, + "sea_floor_depth_below_geoid", + 24057, + "sea_ice_amount", + 20158, + "sea_ice_area", + 15643, + "sea_ice_area_flux_through_straits", + 1046, + "sea_ice_area_fraction", + 62520, + "sea_ice_area_transport_across_line", + 786, + "sea_ice_average_normal_horizontal_stress", + 148, + "sea_ice_basal_drag_coefficient_for_momentum_in_sea_water", + 111, + "sea_ice_basal_net_downward_sensible_heat_flux", + 31, + "sea_ice_basal_temperature", + 2005, + "sea_ice_extent", + 16119, + "sea_ice_freeboard", + 3679, + "sea_ice_mass_content_of_salt", + 1174, + "sea_ice_melt_pond_thickness", + 558, + "sea_ice_salinity", + 1114, + "sea_ice_salt_content", + 2, + "sea_ice_salt_mass", + 6, + "sea_ice_speed", + 16890, + "sea_ice_surface_temperature", + 24426, + "sea_ice_temperature_expressed_as_heat_content", + 3054, + "sea_ice_thickness", + 44977, + "sea_ice_time_fraction", + 502, + "sea_ice_transport_across_line", + 2384, + "sea_ice_volume", + 16415, + "sea_ice_x_force_per_unit_area_due_to_coriolis_effect", + 1894, + "sea_ice_x_force_per_unit_area_due_to_sea_surface_tilt", + 1776, + "sea_ice_x_internal_stress", + 1894, + "sea_ice_x_transport", + 5603, + "sea_ice_x_velocity", + 25674, + "sea_ice_y_force_per_unit_area_due_to_coriolis_effect", + 1897, + "sea_ice_y_force_per_unit_area_due_to_sea_surface_tilt", + 1775, + "sea_ice_y_internal_stress", + 1898, + "sea_ice_y_transport", + 5610, + "sea_ice_y_velocity", + 25539, + "sea_level_pressure", + 46450, + "sea_level_pressure_", + 18, + "sea_salt_aod@550nm", + 1006, + "sea_salt_mass_mixing_ratio", + 1182, + "sea_surface_height_above_geoid", + 33123, + "sea_surface_salinity", + 40938, + "sea_surface_temperature", + 51288, + "sea_water_added_conservative_temperature", + 6, + "sea_water_added_potential_temperature", + 19, + "sea_water_additional_potential_temperature", + 34, + "sea_water_age_since_surface_contact", + 6251, + "sea_water_alkalinity_expressed_as_mole_equivalent", + 29679, + "sea_water_alkalinity_natural_analogue_expressed_as_mole_equivalent", + 986, + "sea_water_conservative_temperature", + 3232, + "sea_water_convervative_temperature", + 1419, + "sea_water_mass", + 4771, + "sea_water_mass_per_unit_area", + 7881, + "sea_water_ph_abiotic_analogue_reported_on_total_scale", + 53, + "sea_water_ph_natural_analogue_reported_on_total_scale", + 782, + "sea_water_ph_reported_on_total_scale", + 9474, + "sea_water_potential_temperature", + 66736, + "sea_water_potential_temperature_at_sea_floor", + 6646, + "sea_water_pressure_at_sea_floor", + 8143, + "sea_water_pressure_at_sea_water_surface", + 1872, + "sea_water_redistributed_conservative_temperature", + 6, + "sea_water_redistributed_potential_temperature", + 42, + "sea_water_resdistributed_potential_temperature", + 4, + "sea_water_salinity", + 45879, + "sea_water_salinity_at_sea_floor", + 6349, + "sea_water_surface_downward_x_stress", + 2128, + "sea_water_surface_downward_y_stress", + 2128, + "sea_water_transport_across_line", + 4780, + "sea_water_volume", + 7953, + "sea_water_x_velocity", + 26644, + "sea_water_y_velocity", + 26612, + "secondary_organic_aerosol_mass_mixing_ratio", + 379, + "sedimentation_flux_of_dust_mode_coarse_insoluble", + 12, + "shallow_convection_time_fraction", + 7144, + "shortwave_flux_due_to_volcanic_aerosols_at_toa_under_clear_sky", + 85, + "shortwave_heating_rate_due_to_volcanic_aerosols", + 1, + "sidmassevapsubl", + 16, + "sidmasssi", + 16, + "sidmassth", + 16, + "silt_fraction", + 2, + "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", + 412, + "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", + 12036, + "sinking_mole_flux_of_particulate_iron_in_sea_water", + 4797, + "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", + 22736, + "sinking_mole_flux_of_particulate_organic_nitrogen_in_sea_water", + 5130, + "sinking_mole_flux_of_particulate_organic_phosphorus_in_sea_water", + 1142, + "sinking_mole_flux_of_particulate_silicon_in_sea_water", + 5985, + "sitimefrac", + 25, + "slow_soil_pool_carbon_content", + 430, + "slow_soil_pool_mass_content_of_carbon", + 6060, + "snow_evaporation", + 3, + "snow_mass_flux_through_straits", + 1306, + "snow_mass_rate_of_change_through_advection_by_sea-ice_dynamics", + 219, + "snow_mass_rate_of_change_through_avection_by_sea-ice_dynamics", + 1064, + "snow_mass_rate_of_change_through_evaporation_or_sublimation", + 1228, + "snow_mass_rate_of_change_through_snow-to-ice_conversion", + 1272, + "snow_thickness_in_thickness_categories", + 294, + "snow_thickness_over_categories", + 1, + "snow_transport_across_line_due_to_sea_ice_dynamics", + 788, + "snow_water_equivalent_intercepted_by_the_vegetation", + 15, + "snow_water_equivalent_on_land_use_tile", + 1, + "snowfall_flux", + 69826, + "soa_aod@550nm", + 39, + "sob", + 1, + "soil_carbon_content", + 1419, + "soil_carbon_content_by_pool", + 1, + "soil_carbon_turnover_rate_by_pool", + 1, + "soil_frozen_water_content", + 27628, + "soil_heterotrophic_respiration_on_land-use_tile", + 113, + "soil_heterotrophic_respiration_on_land_use_tile", + 135, + "soil_hydraulic_conductivity_at_saturation", + 127, + "soil_liquid_water_content", + 63, + "soil_mass_content_of_13C", + 9, + "soil_mass_content_of_14C", + 9, + "soil_mass_content_of_carbon", + 16331, + "soil_mass_content_of_inorganic_ammonium_expressed_as_nitrogen", + 1392, + "soil_mass_content_of_inorganic_nitrate_expressed_as_nitrogen", + 1390, + "soil_mass_content_of_inorganic_nitrogen_expressed_as_nitrogen", + 2487, + "soil_mass_content_of_nitrogen", + 2818, + "soil_moisture_content", + 2389, + "soil_moisture_content_at_field_capacity", + 5645, + "soil_pool_carbon_decay_rate", + 22, + "soil_temperature", + 30947, + "solar_zenith_angle", + 31, + "somint", + 1, + "soot_content_of_surface_snow", + 1947, + "sossq", + 1, + "specific_humidity", + 164396, + "square_of_air_temperature", + 26, + "square_of_brunt_vaisala_frequency_in_sea_water", + 4196, + "square_of_eastward_wind", + 78, + "square_of_lagrangian_tendency_of_air_pressure", + 20, + "square_of_northward_wind", + 76, + "square_of_ocean_mixed_layer_thickness_defined_by_sigma_t", + 6387, + "square_of_sea_surface_height_above_geoid", + 17847, + "square_of_sea_surface_salinity", + 5313, + "square_of_sea_surface_temperature", + 7410, + "stem_carbon_content", + 29, + "stem_mass_content_of_carbon", + 10096, + "stem_mass_content_of_nitrogen", + 1845, + "strain_rate_(shear)", + 9, + "strat_aerosol_optical_depth", + 1, + "stratiform_cloud_area_fraction_in_atmosphere_layer", + 721, + "stratiform_cloud_liquid_droplet_effective_radius", + 7, + "stratiform_cloud_longwave_emissivity", + 2, + "stratiform_rainfall_flux", + 4, + "stratiform_snowfall_flux", + 4, + "stratosphere_optical_thickness_due_to_ambient_aerosol_particles", + 40, + "stratosphere_optical_thickness_due_to_volcanic_ambient_aerosol_particles", + 2517, + "stratospheric_optical_depth_at_550_nm_(all_aerosols)_2d-field_(here_we_limit_the_computation_of_od_to_the_stratosphere_only)", + 75, + "stratospheric_optical_depth_at_550nm_(all_aerosols)_2d-field_(stratosphere_only)", + 70, + "sublimation_of_the_snow_free_area", + 14, + "subsurface_litter_carbon_content", + 793, + "subsurface_litter_mass_content_of_carbon", + 5157, + "subsurface_litter_mass_content_of_nitrogen", + 85, + "subsurface_runoff_flux", + 176, + "sulfate_aerosol_optical_depth_at_550nm", + 594, + "sulfate_aod@550nm", + 2062, + "surface_abiotic_carbonate_ion_concentration", + 23, + "surface_abiotic_dissolved_inorganic_carbon-14_concentration", + 142, + "surface_abiotic_dissolved_inorganic_carbon_concentration", + 2350, + "surface_abiotic_ph", + 118, + "surface_air_pressure", + 70971, + "surface_albedo", + 30, + "surface_altitude", + 35395, + "surface_carbon_dioxide_abiotic_analogue_partial_pressure_difference_between_sea_water_and_air", + 166, + "surface_carbon_dioxide_natural_analogue_partial_pressure_difference_between_sea_water_and_air", + 708, + "surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air", + 3453, + "surface_concentration_of_dust", + 1374, + "surface_concentration_of_sea-salt_aerosol", + 297, + "surface_concentration_of_seasalt", + 1067, + "surface_concentration_of_so4", + 1366, + "surface_diffuse_downwelling_shortwave_flux_in_air", + 8658, + "surface_diffuse_downwelling_shortwave_flux_in_air_assuming_clear_sky", + 3902, + "surface_dissolved_oxygen_concentration_at_saturation", + 256, + "surface_downward_cfc11_flux", + 270, + "surface_downward_cfc12_flux", + 875, + "surface_downward_eastward_stress", + 49853, + "surface_downward_eastward_stress_due_to_boundary_layer_mixing", + 164, + "surface_downward_flux_of_abiotic_14co2", + 136, + "surface_downward_flux_of_abiotic_co2", + 4515, + "surface_downward_flux_of_natural_co2", + 4670, + "surface_downward_heat_flux_in_air", + 31, + "surface_downward_heat_flux_in_sea_water", + 29129, + "surface_downward_heat_flux_in_snow", + 5920, + "surface_downward_latent_heat_flux", + 2080, + "surface_downward_mass_flux_of_14C_dioxide_abiotic_analogue_expressed_as_carbon", + 66, + "surface_downward_mass_flux_of_carbon-14_as_abiotic_14co2_[kgc_m-2_s-1]", + 161, + "surface_downward_mass_flux_of_carbon_as_abiotic_co2_[kgc_m-2_s-1]", + 571, + "surface_downward_mass_flux_of_carbon_as_natural_co2_[kgc_m-2_s-1]", + 810, + "surface_downward_mass_flux_of_carbon_dioxide_abiotic_analogue_expressed_as_carbon", + 339, + "surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon", + 26796, + "surface_downward_mass_flux_of_carbon_dioxide_natural_analogue_expressed_as_carbon", + 1231, + "surface_downward_mass_flux_of_methane_due_to_wetland_biological_consumption", + 36, + "surface_downward_mass_flux_of_water_due_to_irrigation", + 118, + "surface_downward_mole_flux_of_cfc11", + 474, + "surface_downward_mole_flux_of_cfc12", + 546, + "surface_downward_mole_flux_of_molecular_oxygen", + 8910, + "surface_downward_mole_flux_of_sulfur_hexafluoride", + 473, + "surface_downward_northward_stress", + 49881, + "surface_downward_northward_stress_due_to_boundary_layer_mixing", + 163, + "surface_downward_sensible_heat_flux", + 5613, + "surface_downward_sf6_flux", + 794, + "surface_downward_x_stress", + 14936, + "surface_downward_x_stress_correction", + 6, + "surface_downward_y_stress", + 14928, + "surface_downward_y_stress_correction", + 6, + "surface_downwelling_longwave_flux_in_air", + 81937, + "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", + 41803, + "surface_downwelling_shortwave_flux_in_air", + 95835, + "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", + 50039, + "surface_drag_coefficient_for_momentum_in_air", + 1529, + "surface_evapotranspiration", + 4, + "surface_ice_melt_flux", + 238, + "surface_litter_carbon_content", + 476, + "surface_litter_mass_content_of_carbon", + 5164, + "surface_litter_mass_content_of_nitrogen", + 85, + "surface_mass_balance_flux", + 244, + "surface_mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_aragonite_in_sea_water", + 327, + "surface_mole_concentration_of_carbonate_ion_in_equilibrium_with_pure_calcite_in_sea_water", + 367, + "surface_mole_concentration_of_particulate_organic_matter_expressed_as_silicon_in_sea_water", + 1256, + "surface_molecular_oxygen_partial_pressure_difference_between_sea_water_and_air", + 2154, + "surface_natural_carbonate_ion_concentration", + 42, + "surface_natural_dissolved_inorganic_carbon_concentration", + 2535, + "surface_natural_ph", + 285, + "surface_natural_total_alkalinity", + 255, + "surface_net_downward_longwave_dust_ambient_aerosol_particles_direct_radiative_effect", + 9, + "surface_net_downward_longwave_dust_ambient_aerosol_particles_direct_radiative_effect_assuming_clear_sky", + 8, + "surface_net_downward_longwave_flux", + 39747, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_13C_due_to_all_land_processes", + 9, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_14C_due_to_all_land_processes", + 9, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes", + 44406, + "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change", + 11594, + "surface_net_downward_shortwave_dust_ambient_aerosol_particles_direct_radiative_effect", + 11, + "surface_net_downward_shortwave_dust_ambient_aerosol_particles_direct_radiative_effect_assuming_clear_sky", + 12, + "surface_net_downward_shortwave_flux", + 37592, + "surface_net_longwave_flux_aerosol_free", + 4, + "surface_net_longwave_flux_aerosol_free_clear_sky", + 4, + "surface_net_shortwave_flux_aerosol_free", + 4, + "surface_net_shortwave_flux_aerosol_free_clear_sky", + 4, + "surface_net_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_anthropogenic_land_use_change", + 14578, + "surface_net_upward_mass_flux_of_methane_due_to_emission_from_wetland_biological_processes", + 1434, + "surface_partial_pressure_of_carbon_dioxide_in_sea_water", + 20061, + "surface_runoff_flux", + 25894, + "surface_snow_amount", + 30213, + "surface_snow_and_ice_melt_flux", + 393, + "surface_snow_and_ice_melt_heat_flux", + 32, + "surface_snow_and_ice_refreezing_flux", + 421, + "surface_snow_and_ice_sublimation_flux", + 12115, + "surface_snow_and_ice_sublimation_flux_", + 9, + "surface_snow_area_fraction", + 52390, + "surface_snow_melt_flux", + 19518, + "surface_snow_sublimation_flux", + 2, + "surface_snow_thickness", + 63859, + "surface_temperature", + 65817, + "surface_total_dissolved_inorganic_phosphorus_concentration", + 354, + "surface_total_dissolved_inorganic_silicon_concentration", + 9102, + "surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_growth", + 180, + "surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_maintenance", + 179, + "surface_upward_heat_flux_due_to_anthropogenic_energy_consumption", + 30, + "surface_upward_latent_heat_flux", + 89420, + "surface_upward_latent_heat_flux_due_to_sublimation", + 16, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_13C_due_to_heterotrophic_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_13C_due_to_plant_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_14C_due_to_heterotrophic_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_14C_due_to_plant_respiration", + 9, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_direct_to_atmosphere_due_to_anthropogenic_land_use_land_cover_change", + 11, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_anthrogpogenic_emission", + 2, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_land_use_or_land_cover_change_excluding_forestry_and_agricultural_products", + 145, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_crop_harvesting", + 10442, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fires", + 198, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fires_excluding_anthropogenic_land_use_change", + 3891, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_grazing", + 473, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_litter_in_fires", + 125, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_fires", + 1791, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", + 650, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_vegetation_in_fires", + 51, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_heterotrophic_respiration", + 15162, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration", + 15523, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_for_biomass_growth", + 5849, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_for_biomass_maintenance", + 5842, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_in_leaves", + 42, + "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_plant_respiration_in_roots", + 44, + "surface_upward_mass_flux_of_carbon_due_to_heterotrophic_respiration_in_litter", + 2368, + "surface_upward_mass_flux_of_carbon_due_to_heterotrophic_respiration_in_soil", + 2625, + "surface_upward_mass_flux_of_methane_due_to_emission_from_wetland_biological_production", + 173, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen", + 2453, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_due_to_all_land_processes_excluding_fires", + 1678, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_due_to_emission_from_fires", + 1947, + "surface_upward_mass_flux_of_nitrogen_compounds_expressed_as_nitrogen_out_of_vegetation_and_litter_and_soil", + 2453, + "surface_upward_mass_flux_of_nitrous_oxide_expressed_as_nitrogen_out_of_vegetation_and_litter_and_soil", + 1961, + "surface_upward_mass_flux_of_nox_expressed_as_nitrogen_out_of_vegetation_and_litter_and_soil", + 1356, + "surface_upward_mole_flux_of_dimethyl_sulfide", + 498, + "surface_upward_sensible_heat_flux", + 90516, + "surface_upwelling_longwave_flux_in_air", + 62927, + "surface_upwelling_shortwave_flux_in_air", + 63340, + "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", + 31623, + "surface_water_evaporation_flux", + 10, + "surface_water_storage", + 10, + "temperature_at_ice-ocean_interface", + 1455, + "temperature_at_top_of_ice_sheet_model", + 272, + "temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water", + 2397, + "temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water", + 1249, + "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", + 601, + "temperature_in_surface_snow", + 4406, + "temperature_tendency_due_to_dissipation_orographic_gravity_wave_drag", + 1, + "temperature_tendency_due_to_non-orographic_gravity_wave_dissipation", + 121, + "temperature_tendency_due_to_orographic_gravity_wave_dissipation", + 197, + "temperature_tendency_nonorographic_gravity_wave_dissipation", + 14, + "temperature_tendency_orographic_gravity_wave_dissipation", + 132, + "tendency_of_air_temperature", + 2975, + "tendency_of_air_temperature_due_to_advection", + 3451, + "tendency_of_air_temperature_due_to_boundary_layer_mixing", + 805, + "tendency_of_air_temperature_due_to_convection", + 5073, + "tendency_of_air_temperature_due_to_diabatic_processes", + 237, + "tendency_of_air_temperature_due_to_diffusion", + 16, + "tendency_of_air_temperature_due_to_dissipation_of_nonorographic_gravity_waves", + 158, + "tendency_of_air_temperature_due_to_dissipation_of_orographic_gravity_waves", + 182, + "tendency_of_air_temperature_due_to_longwave_heating", + 2957, + "tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky", + 1452, + "tendency_of_air_temperature_due_to_model_physics", + 5307, + "tendency_of_air_temperature_due_to_numerical_diffusion", + 32, + "tendency_of_air_temperature_due_to_radiative_heating", + 3303, + "tendency_of_air_temperature_due_to_shortwave_heating", + 2629, + "tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky", + 1450, + "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation", + 799, + "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", + 3229, + "tendency_of_air_temperature_due_to_stratiform_clouds_and_precipitation", + 1311, + "tendency_of_atmosphere_mass_content_of_ammonia_due_to_dry_deposition", + 541, + "tendency_of_atmosphere_mass_content_of_ammonia_due_to_emission", + 696, + "tendency_of_atmosphere_mass_content_of_ammonia_due_to_wet_deposition", + 540, + "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_dry_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_wet_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_biogenic_nmvoc_expressed_as_carbon_due_to_emission", + 1673, + "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", + 3792, + "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_forestry_and_agricultural_products", + 3551, + "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", + 92, + "tendency_of_atmosphere_mass_content_of_carbon_monoxide_due_to_emission", + 1727, + "tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_emission", + 7538, + "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_dry_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_emission", + 2628, + "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_wet_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_dry_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_emission", + 2226, + "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_wet_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_isoprene_due_to_emission", + 2513, + "tendency_of_atmosphere_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_anthropogenic_emission", + 374, + "tendency_of_atmosphere_mass_content_of_nmvoc_due_to_emission", + 1804, + "tendency_of_atmosphere_mass_content_of_nox_expressed_as_nitrogen_due_to_emission", + 1729, + "tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_dry_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_wet_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_ozone_due_to_dry_deposition", + 541, + "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_dry_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_net_chemical_production_and_emission", + 2304, + "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_wet_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_emission", + 2161, + "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_dry_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_emission", + 197, + "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_wet_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_particles_due_to_net_chemical_production", + 378, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_aqueous_phase_net_chemical_production", + 653, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_dry_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_emission", + 2177, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_gaseous_phase_net_chemical_production", + 651, + "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_wet_deposition", + 197, + "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_dry_deposition", + 551, + "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_emission", + 7854, + "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_wet_deposition", + 541, + "tendency_of_atmosphere_mass_content_of_water_vapor_due_to_sublimation_of_surface_ice", + 12, + "tendency_of_atmosphere_mass_content_of_water_vapor_due_to_sublimation_of_surface_snow_and_ice", + 6704, + "tendency_of_atmosphere_mole_concentration_of_carbon_monoxide_due_to_chemical_destruction", + 311, + "tendency_of_atmosphere_mole_concentration_of_methane_due_to_chemical_destruction", + 508, + "tendency_of_atmosphere_mole_concentration_of_nitrous_oxide_due_to_chemical_destruction", + 196, + "tendency_of_atmosphere_mole_concentration_of_ozone_due_to_chemical_destruction", + 524, + "tendency_of_atmosphere_mole_concentration_of_ozone_due_to_chemical_production", + 521, + "tendency_of_atmosphere_moles_of_nox_expressed_as_nitrogen", + 1171, + "tendency_of_atmosphere_of_mole_concentration_of_carbon_monoxide_due_to_chemical_destruction", + 196, + "tendency_of_atmospheric_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_wood_and_agricultural_product_pool", + 11, + "tendency_of_eastward_wind_due_to_advection_by_northward_transformed_eulerian_mean_air_velocity", + 1781, + "tendency_of_eastward_wind_due_to_advection_by_the_northward_transformed_eulerian_mean_air_velocity", + 3, + "tendency_of_eastward_wind_due_to_advection_by_the_upward_transformed_eulerian_mean_air_velocity", + 4, + "tendency_of_eastward_wind_due_to_advection_by_upward_transformed_eulerian_mean_air_velocity", + 1759, + "tendency_of_eastward_wind_due_to_eliassen_palm_flux_divergence", + 21243, + "tendency_of_eastward_wind_due_to_nonorographic_gravity_wave_drag", + 3509, + "tendency_of_eastward_wind_due_to_orographic_gravity_wave_drag", + 11121, + "tendency_of_eastward_wind_due_to_tem_northward_advection_and_coriolis_term", + 3276, + "tendency_of_eastward_wind_due_to_tem_upward_advection", + 3293, + "tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_biological_production", + 14, + "tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_biological_production", + 851, + "tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_dissolution", + 841, + "tendency_of_mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_due_to_biological_processes", + 528, + "tendency_of_mole_concentration_of_dissolved_inorganic_iron_in_sea_water_due_to_biological_processes", + 528, + "tendency_of_mole_concentration_of_dissolved_inorganic_nitrogen_in_sea_water_due_to_biological_processes", + 526, + "tendency_of_mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water_due_to_biological_processes", + 532, + "tendency_of_mole_concentration_of_dissolved_inorganic_silicon_in_sea_water_due_to_biological_processes", + 522, + "tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_dissolution_from_inorganic_particles", + 302, + "tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_scavenging_by_inorganic_particles", + 673, + "tendency_of_mole_concentration_of_iron_in_sea_water_due_to_biological_production", + 852, + "tendency_of_mole_concentration_of_ox_in_air_due_to_chemical_and_photolytic_production", + 17, + "tendency_of_mole_concentration_of_ox_in_air_due_to_chemical_destruction", + 17, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", + 1346, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", + 9010, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diatoms", + 2592, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diazotrophs", + 681, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_miscellaneous_phytoplankton", + 3262, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_picophytoplankton", + 14, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_nitrate_utilization", + 1571, + "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_remineralization", + 345, + "tendency_of_mole_concentration_of_silicon_in_sea_water_due_to_biological_production", + 1221, + "tendency_of_northward_wind_due_to_nonorographic_gravity_wave_drag", + 287, + "tendency_of_northward_wind_due_to_orographic_gravity_wave_drag", + 401, + "tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport", + 101, + "tendency_of_ocean_eddy_kinetic_energy_content_due_to_parameterized_eddy_advection", + 240, + "tendency_of_ocean_mole_content_of_aragonite_expressed_as_carbon_due_to_biological_production", + 14, + "tendency_of_ocean_mole_content_of_calcite_expressed_as_carbon_due_to_biological_production", + 849, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon", + 649, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon_due_to_biological_processes", + 2099, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron", + 633, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron_due_to_biological_processes", + 2100, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen", + 636, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen_due_to_biological_processes", + 2101, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus", + 633, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus_due_to_biological_processes", + 2060, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon", + 633, + "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon_due_to_biological_processes", + 2084, + "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_deposition_and_fixation_and_runoff", + 3630, + "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_fixation", + 6718, + "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_runoff_and_sediment_dissolution", + 282, + "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", + 15, + "tendency_of_ocean_mole_content_of_iron_due_to_biological_production", + 2609, + "tendency_of_ocean_mole_content_of_iron_due_to_deposition_and_runoff_and_sediment_dissolution", + 3698, + "tendency_of_ocean_mole_content_of_nitrogen_due_to_biological_production", + 299, + "tendency_of_ocean_mole_content_of_organic_carbon_due_to_runoff_and_sediment_dissolution", + 276, + "tendency_of_ocean_mole_content_of_phosphorus_due_to_biological_production", + 270, + "tendency_of_ocean_mole_content_of_silicon_due_to_biological_production", + 2253, + "tendency_of_ocean_potential_energy_content", + 1073, + "tendency_of_sea_ice_amount_due_to_basal_melting", + 6542, + "tendency_of_sea_ice_amount_due_to_congelation_ice_accumulation", + 6355, + "tendency_of_sea_ice_amount_due_to_conversion_of_snow_to_sea_ice", + 3553, + "tendency_of_sea_ice_amount_due_to_dynamics", + 8, + "tendency_of_sea_ice_amount_due_to_frazil_ice_accumulation_in_leads", + 4773, + "tendency_of_sea_ice_amount_due_to_freezing_in_open_water", + 490, + "tendency_of_sea_ice_amount_due_to_lateral_melting", + 2532, + "tendency_of_sea_ice_amount_due_to_sea_ice_dynamics", + 2923, + "tendency_of_sea_ice_amount_due_to_sea_ice_thermodynamics", + 2935, + "tendency_of_sea_ice_amount_due_to_snow_conversion", + 1659, + "tendency_of_sea_ice_amount_due_to_surface_melting", + 6528, + "tendency_of_sea_ice_amount_due_to_thermodynamics", + 8, + "tendency_of_sea_ice_area_fraction_due_to_dynamics", + 2642, + "tendency_of_sea_ice_area_fraction_due_to_thermodynamics", + 3914, + "tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", + 532, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content", + 143, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", + 127, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", + 143, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_dianeutral_mixing", + 16, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", + 127, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion", + 16, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", + 14, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection", + 7, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_(sum_of_eulerian_+_parameterized)_advection", + 113, + "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection", + 60, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content", + 3520, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", + 2879, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", + 3331, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_dianeutral_mixing", + 483, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", + 2819, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion", + 539, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", + 211, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection", + 44, + "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_residual_mean_advection", + 3199, + "tendency_of_sea_water_salinity_expressed_as_salt_content", + 3642, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing", + 3007, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection", + 3472, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_dianeutral_mixing", + 487, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_diffusion", + 2953, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion", + 540, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_advection", + 225, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection", + 51, + "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection", + 3527, + "tendency_of_snow_mass_due_to_sea_ice_dynamics", + 4, + "tendency_of_soil_and_vegetation_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_fixation", + 1585, + "tendency_of_soil_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_fertilization", + 646, + "tendency_of_specific_humidity", + 1249, + "tendency_of_specific_humidity_due_to_advection", + 1809, + "tendency_of_specific_humidity_due_to_boundary_layer_mixing", + 808, + "tendency_of_specific_humidity_due_to_convection", + 2296, + "tendency_of_specific_humidity_due_to_diffusion", + 479, + "tendency_of_specific_humidity_due_to_model_physics", + 1707, + "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation", + 433, + "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", + 1590, + "tendency_of_specific_humidity_due_to_stratiform_clouds_and_precipitation", + 367, + "tendency_of_surface_snow_amount_due_to_conversion_of_snow_to_sea_ice", + 730, + "tendency_of_surface_snow_amount_due_to_drifting_into_sea", + 287, + "tendency_of_surface_snow_amount_due_to_sea_ice_dynamics", + 616, + "tendency_of_surface_snow_and_ice_amount_due_to_sublimation", + 30, + "tendency_of_vegetation_mass_content_of_nitrogen_compounds_expressed_as_nitrogen_due_to_fixation", + 1235, + "terrestrial_water_storage", + 224, + "thermal_energy_content_of_surface_snow", + 4208, + "thickness_of_ice_on_sea_ice_melt_pond", + 71, + "thickness_of_soil_layers", + 21, + "toa_bidirectional_reflectance", + 611, + "toa_clear-sky_longwave_radiative_forcing_due_to_dust", + 22, + "toa_incoming_shortwave_flux", + 54914, + "toa_instantaneous_longwave_forcing", + 1340, + "toa_instantaneous_shortwave_forcing", + 64, + "toa_longwave_dust_ambient_aerosol_particles_direct_radiative_effect_assuming_clear_sky", + 10, + "toa_outgoing_clear-sky,_aerosol-free_shortwave_radiation", + 425, + "toa_outgoing_clear-sky_shortwave_radiation", + 181, + "toa_outgoing_longwave_flux", + 82519, + "toa_outgoing_longwave_flux_assuming_clear_sky", + 60696, + "toa_outgoing_longwave_flux_due_to_volcanic_ambient_aerosol_particles_assuming_clear_sky", + 84, + "toa_outgoing_shortwave_flux", + 62428, + "toa_outgoing_shortwave_flux_assuming_clear_sky", + 50651, + "toa_outgoing_shortwave_flux_assuming_clear_sky_and_no_aerosol", + 1332, + "toa_outgoing_shortwave_flux_due_to_volcanic_ambient_aerosol_particles_assuming_clear_sky", + 84, + "tob", + 1, + "top-of-atmosphere_solar_insolation_for_each_band", + 31, + "total_autotrophic_respiration_on_land_as_carbon_mass_flux_[kgc_m-2_s-1]", + 417, + "total_carbon_in_all_terrestrial_carbon_pools", + 14804, + "total_carbon_loss_from_natural_and_managed_fire_on_land-use_tile,_including_deforestation_fires", + 31, + "total_carbon_loss_from_natural_and_managed_fire_on_land-use_tile,_including_deforestation_fires_[kgc_m-2_s-1]", + 67, + "total_carbon_loss_from_natural_and_managed_fire_on_land_use_tile,_including_deforestation_fires", + 58, + "total_carbon_mass_flux_from_vegetation_to_litter", + 5137, + "total_carbon_mass_flux_from_vegetation_to_litter_as_a_result_of_leaf,_branch,_and_root_senescence", + 3624, + "total_carbon_mass_flux_from_vegetation_to_litter_as_a_result_of_mortality", + 153, + "total_deposition_rate_of_dust", + 561, + "total_direct_emission_rate_of_so4", + 1329, + "total_dissolved_inorganic_phosphorus_concentration", + 11707, + "total_dissolved_inorganic_silicon_concentration", + 10465, + "total_emission_of_anthropogenic_organic_aerosol", + 358, + "total_emission_rate_of_anthropogenic_organic_aerosol", + 247, + "total_emission_rate_of_biogenic_nmvoc", + 467, + "total_emission_rate_of_black_carbon_aerosol_mass", + 4299, + "total_emission_rate_of_dust", + 5352, + "total_emission_rate_of_nmvoc", + 584, + "total_emission_rate_of_sea-salt_aerosol", + 685, + "total_emission_rate_of_seasalt", + 894, + "total_evapotranspiration", + 10, + "total_grazing_of_phytoplankton_by_zooplankton", + 2505, + "total_heterotrophic_respiration_on_land_as_carbon_mass_flux_[kgc_m-2_s-1]", + 6415, + "total_land_carbon", + 2, + "total_land_n2o_flux", + 463, + "total_n_added_for_cropland_fertilisation_(artificial_and_manure)", + 375, + "total_n_loss_to_leaching_or_runoff_(sum_of_ammonium,_nitrite_and_nitrate)", + 378, + "total_n_lost_(including_nhx,_nox,_n2o,_n2_and_leaching)", + 376, + "total_net_production_of_anthropogenic_secondary_organic_aerosol", + 40, + "total_nitrogen_added_for_cropland_fertilisation_(artificial_and_manure)", + 256, + "total_nitrogen_in_all_terrestrial_nitrogen_pools", + 763, + "total_nitrogen_loss_to_leaching_or_runoff_(sum_of_ammonium,_nitrite_and_nitrate)", + 379, + "total_nitrogen_lost_(including_nhx,_nox,_n2o,_n2_and_leaching)", + 375, + "total_nitrogen_lost_to_the_atmosphere_(including_nhx,_nox,_n2o,_n2)_from_all_processes_except_fire", + 309, + "total_nitrogen_lost_to_the_atmosphere_(including_nhx,_nox,_n2o,_n2)_from_fire", + 242, + "total_nitrogen_lost_to_the_atmosphere_(sum_of_nhx,_nox,_n2o,_n2)", + 750, + "total_nitrogen_mass_flux_from_litter_to_soil", + 575, + "total_nitrogen_mass_flux_from_vegetation_directly_to_soil", + 67, + "total_nitrogen_mass_flux_from_vegetation_to_litter", + 376, + "total_odd_oxygen_(ox)_loss_rate", + 36, + "total_odd_oxygen_(ox)_production_rate", + 36, + "total_organic_aerosol_aod@550nm", + 1343, + "total_organic_aerosol_mass_mixing_ratio", + 1293, + "total_organic_aerosol_optical_depth_at_550nm", + 571, + "total_ox_loss_rate", + 44, + "total_ox_production_rate", + 44, + "total_plant_nitrogen_uptake_(sum_of_ammonium_and_nitrate),_irrespective_of_the_source_of_nitrogen", + 375, + "total_plant_nitrogen_uptake_(sum_of_ammonium_and_nitrate)_irrespective_of_the_source_of_nitrogen", + 385, + "total_respiration_from_leaves", + 84, + "total_respiration_from_leaves_as_carbon_mass_flux_[kgc_m-2_s-1]", + 85, + "total_respiration_from_roots", + 82, + "total_respiration_from_roots_as_carbon_mass_flux_[kgc_m-2_s-1]", + 85, + "total_soil_moisture", + 229, + "total_soil_moisture_content", + 17916, + "total_soil_moisture_content_", + 16, + "total_water_content_of_soil_layer", + 15108, + "total_water_storage", + 2, + "total_water_storage_in_a_grid_cell", + 1589, + "tracer_age_of_air_northern_hemisphere", + 37, + "tracer_lifetime", + 6, + "transformed_eulerian_mean_mass_stramfunction", + 13, + "transformed_eulerian_mean_mass_streamfunction", + 3280, + "transformed_eulerian_mean_upward_wind", + 12265, + "transpiration", + 4, + "transpiration_flux", + 20818, + "tropopause_air_pressure", + 7174, + "tropopause_air_temperature", + 2286, + "tropopause_altitude", + 6617, + "turnover_rate_of_each_model_soil_carbon_pool", + 526, + "u-tendency_by_vstar_advection", + 17, + "u-tendency_by_wstar_advection", + 17, + "upward_air_velocity", + 998, + "upward_component_of_land-ice_basal_velocity", + 2, + "upward_component_of_land-ice_surface_velocity", + 2, + "upward_eliassen_palm_flux_in_air", + 21422, + "upward_geothermal_heat_flux_at_ground_level_in_land_ice", + 9, + "upward_geothermal_heat_flux_at_sea_floor", + 3826, + "upward_ocean_mass_transport", + 10072, + "upward_sea_ice_basal_heat_flux", + 3898, + "upward_sea_water_velocity", + 15338, + "upward_transformed_eulerian_mean_air_velocity", + 7974, + "upward_x_stress_at_sea_ice_base", + 5392, + "upward_y_stress_at_sea_ice_base", + 5398, + "upwelling_longwave_flux_in_air", + 5084, + "upwelling_longwave_flux_in_air_assuming_clear_sky", + 5003, + "upwelling_shortwave_flux_in_air", + 5141, + "upwelling_shortwave_flux_in_air_assuming_clear_sky", + 5120, + "utendepfd", + 198, + "v-tendency_nonorographic_gravity_wave_drag", + 150, + "v-tendency_orographic_gravity_wave_drag", + 148, + "vegetation_area_fraction", + 316, + "vegetation_carbon_content", + 35961, + "vegetation_mass_content_of_13C", + 12, + "vegetation_mass_content_of_14C", + 12, + "vegetation_mass_content_of_nitrogen", + 2528, + "vertical_integral_eastward_wind_by_dry_static_energy", + 2, + "vertical_integral_eastward_wind_by_total_water", + 2, + "vertical_integral_northward_wind_by_dry_static_energy", + 2, + "vertical_integral_northward_wind_by_total_water", + 2, + "vertically_integrated_eastward_dry_transport_(cp.t_+zg).u_(mass_weighted_vertical_integral_of_the_product_of_northward_wind_by_dry_static_energy_per_mass_unit)", + 377, + "vertically_integrated_eastward_moisture_transport_(mass_weighted_vertical_integral_of_the_product_of_eastward_wind_by_total_water_mass_per_unit_mass)", + 377, + "vertically_integrated_northward_dry_transport_(cp.t_+zg).v_(mass_weighted_vertical_integral_of_the_product_of_northward_wind_by_dry_static_energy_per_mass_unit)", + 376, + "vertically_integrated_northward_moisture_transport_(mass_weighted_vertical_integral_of_the_product_of_northward_wind_by_total_water_mass_per_unit_mass)", + 376, + "virtual_salt_flux_correction", + 17, + "virtual_salt_flux_into_sea_water", + 2648, + "virtual_salt_flux_into_sea_water_due_to_evaporation", + 314, + "virtual_salt_flux_into_sea_water_due_to_rainfall", + 322, + "virtual_salt_flux_into_sea_water_due_to_sea_ice_thermodynamics", + 780, + "virtual_salt_flux_into_sea_water_from_rivers", + 314, + "volume_extinction_coefficient_in_air_due_to_ambient_aerosol_particles", + 433, + "volume_fraction_of_clay_in_soil", + 73, + "volume_fraction_of_condensed_water_in_soil_at_field_capacity", + 856, + "volume_fraction_of_condensed_water_in_soil_at_wilting_point", + 42, + "volume_fraction_of_sand_in_soil", + 48, + "volume_fraction_of_silt_in_soil", + 28, + "water_evaporation_flux", + 5287, + "water_evaporation_flux_from_canopy", + 21453, + "water_evaporation_flux_from_soil", + 22326, + "water_evaporation_flux_where_ice_free_ocean_over_sea", + 3675, + "water_evapotranspiration_flux", + 33438, + "water_flux_correction", + 553, + "water_flux_into_sea_water", + 13324, + "water_flux_into_sea_water_due_to_sea_ice_thermodynamics", + 7908, + "water_flux_into_sea_water_due_to_surface_drainage", + 1705, + "water_flux_into_sea_water_from_icebergs", + 4956, + "water_flux_into_sea_water_from_land_ice", + 1310, + "water_flux_into_sea_water_from_rivers", + 13990, + "water_flux_into_sea_water_from_sea_ice", + 31, + "water_flux_into_sea_water_without_flux_correction", + 1928, + "water_flux_to_downstream", + 1, + "water_potential_evaporation_flux", + 5067, + "water_table_depth", + 1606, + "water_table_depth_from_surface.", + 1442, + "wet_bulb_potential_temperature", + 19, + "wet_deposition_of_noy_incl_aerosol_nitrate", + 343, + "wet_deposition_rate_of_black_carbon_aerosol_mass", + 5124, + "wet_deposition_rate_of_dry_aerosol_total_organic_matter", + 1371, + "wet_deposition_rate_of_dust", + 5225, + "wet_deposition_rate_of_nh3", + 132, + "wet_deposition_rate_of_nh4", + 495, + "wet_deposition_rate_of_noy_including_aerosol_nitrate", + 360, + "wet_deposition_rate_of_sea-salt_aerosol", + 599, + "wet_deposition_rate_of_seasalt", + 893, + "wet_deposition_rate_of_so2", + 4813, + "wet_deposition_rate_of_so4", + 5264, + "wilting_point", + 2, + "wind_speed", + 121219, + "wind_speed_of_gust", + 6, + "wood_and_agricultural_product_pool_carbon_associated_with_land-use_tiles", + 5, + "wood_and_agricultural_product_pool_carbon_associated_with_land_use_tiles;_examples_of_products_include_paper,_cardboard,_timber_for_construction,_and_crop_harvest_for_food_or_fuel.", + 93, + "wood_carbon_content", + 430, + "wood_debris_mass_content_of_carbon", + 3473, + "wood_debris_mass_content_of_nitrogen", + 120, + "x-component_of_land_ice_surface_velocity", + 2, + "y-component_of_land_ice_surface_velocity", + 2 + ] + }, + "facet_ranges": {}, + "facet_intervals": {}, + "facet_heatmaps": {} + } + } +} \ No newline at end of file diff --git a/tests/fixtures/minimal_response.json b/tests/fixtures/minimal_response.json new file mode 100644 index 0000000..e387c72 --- /dev/null +++ b/tests/fixtures/minimal_response.json @@ -0,0 +1,66 @@ +{ + "request": "format=application%2Fsolr%2Bjson&type=Dataset", + "globus_query": { + "q": null, + "advanced": true, + "limit": 0, + "offset": 0, + "filters": [ + { + "type": "match_any", + "field_name": "type", + "values": [ + "Dataset" + ] + } + ], + "facets": null + }, + "globus_response": { + "gmeta": [], + "facet_results": null, + "offset": 0, + "count": 0, + "total": 9130715, + "has_next_page": true + }, + "esg_search_response": { + "responseHeader": { + "status": 0, + "QTime": 2, + "params": { + "df": "text", + "q.alt": "*:*", + "indent": "true", + "echoParams": "all", + "fl": "*,score", + "start": "0", + "fq": "type:Dataset", + "rows": "0", + "q": "*:*", + "shards": "esgf-data-node-solr-query:8983/solr/datasets", + "tie": "0.01", + "facet.limit": "-1", + "qf": "text", + "facet.method": "enum", + "facet.mincount": "1", + "facet": "true", + "wt": "json", + "facet.sort": "lex" + } + }, + "response": { + "numFound": 9130715, + "start": 0, + "docs": [], + "maxScore": null + }, + "facet_counts": { + "facet_queries": {}, + "facet_fields": {}, + "facet_ranges": {}, + "facet_intervals": {}, + "facet_heatmaps": {} + } + } +} \ No newline at end of file diff --git a/tests/test_esgsearch_parity.py b/tests/test_esgsearch_parity.py new file mode 100644 index 0000000..a8c5c7d --- /dev/null +++ b/tests/test_esgsearch_parity.py @@ -0,0 +1,81 @@ +"""Step definitions for Behave/Cucumber style tests.""" + +import json +from pathlib import Path +from typing import TypedDict + +from fastapi.testclient import TestClient +from pytest_bdd import given, scenarios, then, when +from pytest_bdd.parsers import parse +from pytest_mock import MockerFixture + +from esg_fastapi.api.versions.v1.models import ESGSearchResponse, GlobusSearchQuery, GlobusSearchResult + +scenarios("ESGSearch_Parity") + + +class SearchParityFixture(TypedDict): + """Type hint for example request/response fixtures loaded from JSON files.""" + + request: str + globus_query: GlobusSearchQuery + globus_response: GlobusSearchResult + esg_search_response: ESGSearchResponse + + +class ComparisonFixture(SearchParityFixture): + """RequestResponseFixture with fastapi_response populated.""" + + fastapi_response: dict + + +@given(parse("a {query_example}"), target_fixture="json_example") +def load_example(query_example: Path) -> SearchParityFixture: + """Load RequestResponseFixture from JSON file.""" + fixture_path = Path("tests", "fixtures", query_example) + with fixture_path.open() as fixture: + return json.load(fixture) + + +@when("the request is sent to ESG FastAPI", target_fixture="responses") +def send_request(json_example: SearchParityFixture, mocker: MockerFixture) -> ComparisonFixture: + """Send request to ESG FastAPI and add its response to the fixture.""" + from esg_fastapi.api.main import app_factory + + client = TestClient(app_factory()) + mocker.patch( + "esg_fastapi.api.versions.v1.routes.SearchClient.post_search", + return_value=mocker.Mock(data=json_example["globus_response"]), + ) + response = client.get( + url="/", + params=json_example["request"], + ).json() + return { + **json_example, + "fastapi_response": response, + } + + +@then("the ESG Fast API response should be the same as the ESG Search response") +def compare_responses(responses: ComparisonFixture) -> None: + """Compare the ESG Fast API response to the ESG Search response to ensure that the responses are indistinguishable. + + Notes: + - We modify the fixtures during the test so that we don't have to remember for each fixture + """ + for source in ["fastapi_response", "esg_search_response"]: + # Sort the fq and facet_fields lists before comparison + if isinstance(responses[source]["responseHeader"]["params"]["fq"], list): + responses[source]["responseHeader"]["params"]["fq"].sort() + responses[source]["facet_counts"]["facet_fields"] = sorted(responses[source]["facet_counts"]["facet_fields"]) + + # Query time is expected to vary + responses[source]["responseHeader"]["QTime"] = 1 + + # Scoring is expected to vary + responses[source]["response"]["maxScore"] = 1 + for doc in responses[source]["response"]["docs"]: + doc["score"] = 1 + + assert responses["esg_search_response"] == responses["fastapi_response"] diff --git a/tests/test_fixture_generation.py b/tests/test_fixture_generation.py new file mode 100644 index 0000000..2787f16 --- /dev/null +++ b/tests/test_fixture_generation.py @@ -0,0 +1,46 @@ +import json +from pathlib import Path + +import pytest +from pytest_mock import MockerFixture + +from esg_fastapi.api.versions.v1.routes import SearchParityFixture + + +@pytest.fixture() +def json_example() -> SearchParityFixture: + """Loads a JSON fixture file with an example request and Globus response. + + Returns: + SearchParityFixture: A dictionary with the example request and Globus response. + """ + fixture_path = Path("tests", "fixtures", "metagrid_default_request.json") + with fixture_path.open() as fixture: + return json.load(fixture) + + +def test_fixture_generation( + json_example: SearchParityFixture, mocker: MockerFixture, monkeypatch: pytest.MonkeyPatch +) -> None: + """Ensure that generated fixture format is the same given the same query responses.""" + + monkeypatch.setenv("OTEL_SERVICE_NAME", "foo") + from fastapi.testclient import TestClient + + from esg_fastapi.api.main import app_factory + + client = TestClient(app_factory()) + mocker.patch( + "esg_fastapi.api.versions.v1.routes.SearchClient.post_search", + return_value=mocker.Mock(data=json_example["globus_response"]), + ) + mocker.patch( + "esg_fastapi.api.versions.v1.routes.requests.get", + return_value=mocker.Mock(json=mocker.Mock(return_value=json_example["esg_search_response"])), + ) + response = client.get( + url="/make_fixture", + params=json_example["request"], + ).json() + + assert response == json_example diff --git a/tests/test_metrics.py b/tests/test_metrics.py new file mode 100644 index 0000000..56671da --- /dev/null +++ b/tests/test_metrics.py @@ -0,0 +1,75 @@ +from contextlib import nullcontext as does_not_raise +from http import HTTPStatus +from typing import ContextManager +from unittest.mock import AsyncMock, MagicMock + +import pytest +from fastapi.testclient import TestClient +from prometheus_client import CONTENT_TYPE_LATEST, CollectorRegistry, Counter +from starlette.requests import Request + +from esg_fastapi import settings +from esg_fastapi.observability.metrics import FACET_LABELS, GLOBAL_LABELS, track_exceptions + + +@pytest.mark.parametrize( + ("path", "exc_type", "handlers", "expectation"), [ + ("/foo", Exception, {Exception: AsyncMock()}, does_not_raise(),), + ("/bar", KeyError, {KeyError: AsyncMock()}, does_not_raise(),), + ("/baz", Exception, {}, pytest.raises(Exception),), + ("/qux", KeyError, {}, pytest.raises(KeyError),), + ], +) # fmt: skip +@pytest.mark.asyncio() +async def test_track_exceptions( + path: str, + exc_type: Exception, + handlers: dict[Exception, AsyncMock], + expectation: ContextManager, + monkeypatch: pytest.MonkeyPatch, +) -> None: + request = MagicMock(spec=Request) + request.method = "GET" + request.url.path = path + request.app.exception_handlers = handlers + settings.app_id = "app_id" + facet_labels = {field: request.query_params.get(field) for field in FACET_LABELS} + request_labels = { + "method": request.method, + "path": request.url.path, + "exception_type": exc_type, + "app_name": "app_id", + } + registry = CollectorRegistry() + mock_metric = Counter( + name="exception_count", documentation="", labelnames=[*GLOBAL_LABELS, "exception_type"], registry=registry + ) + monkeypatch.setattr("esg_fastapi.observability.metrics.EXCEPTIONS", mock_metric) + with expectation: + await track_exceptions(request, exc_type) + + assert mock_metric.labels(**facet_labels, **request_labels)._value.get() == 1 + if handlers: + request.app.exception_handlers[exc_type].assert_awaited_once_with(request, exc_type) + + +def test_metrics_endpoint(): + # Create an instance of the HTTP client + from esg_fastapi.observability.routes import app + + client = TestClient(app) + + # Send a GET request to the /metrics endpoint + response = client.get("metrics") + + # Check if the response status code is 200 (OK) + assert response.status_code == HTTPStatus.OK + + # Check if the response content type is set correctly + assert response.headers["Content-Type"] == CONTENT_TYPE_LATEST + + # Check if the response content contains the expected metrics data + assert "fastapi_responses_total" in response.text + assert "fastapi_requests_total" in response.text + assert "fastapi_request_processing_time" in response.text + assert "fastapi_requests_in_progress" in response.text diff --git a/tests/test_models.py b/tests/test_models.py new file mode 100644 index 0000000..0da7bb5 --- /dev/null +++ b/tests/test_models.py @@ -0,0 +1,84 @@ +from contextlib import nullcontext as does_not_raise + +import pytest +from pytest import raises + +from esg_fastapi.api.versions.v1.models import ( + NON_QUERIABLE_FIELDS, + ESGFSearchFacetResult, + ESGSearchHeader, + ESGSearchQuery, + ESGSearchResponse, + ESGSearchResult, + ESGSearchResultParams, + GlobusFacet, + GlobusMatchFilter, + GlobusSearchQuery, +) + +test_attrs = ["activity_id", "data_node", "source_id"] +test_values = ["frogblast", "the vent", "cores"] +facet_str = ", ".join(test_attrs) +filter_dict = {attr: value for attr, value in zip(test_attrs, test_values)} +goal_globus_facets = [GlobusFacet(name=attr, field_name=attr) for attr in test_attrs] +goal_globus_filters = [GlobusMatchFilter(field_name=k, values=v) for k, v in zip(test_attrs, test_values)] +goal_fqs = [f'{k}:"{v}"' for k, v in zip(test_attrs, test_values)] + + +@pytest.mark.parametrize( + ("attr", "source", "expectation", "comparison"), [ + # --------------------------------------------------------- + ("filters", filter_dict, does_not_raise(), goal_globus_filters), + ("filters", goal_globus_filters, does_not_raise(), goal_globus_filters), + ("filters", object(), raises(ValueError), goal_globus_filters), + ("facets", facet_str, does_not_raise(), goal_globus_facets), + ("facets", goal_globus_facets, does_not_raise(), goal_globus_facets), + ("facets", object(), raises(ValueError), goal_globus_facets), + ], +) # fmt: skip +def test_GlobusSearchQuery_facet_creation(attr, source, expectation, comparison) -> None: + """Ensure GlobusSearchQuery properly converts supported types and raises for non-supported.""" + with expectation: + query = GlobusSearchQuery(**{attr: source}, limit=0, offset=0) + assert getattr(query, attr) == comparison + + +@pytest.mark.parametrize( + ("attr", "source", "expectation", "comparison"), [ + # ----------------------------------------------------------------------------------------------------------------- + ("fq", 'activity_id:"frogblast"', does_not_raise(), 'activity_id:"frogblast"'), + ("fq", 'activity_id:"frogblast", data_node:"the vent"', does_not_raise(), ['activity_id:"frogblast"', 'data_node:"the vent"']), + ("fq", ['activity_id:"frogblast"', 'data_node:"the vent"'], does_not_raise(), ['activity_id:"frogblast"', 'data_node:"the vent"']), + ("fq", ESGSearchQuery(activity_id="frogblast"), does_not_raise(), ['activity_id:"frogblast"', 'type:Dataset']), + ("fq", ESGSearchQuery(activity_id="frogblast", data_node="the vent"), does_not_raise(), ['activity_id:"frogblast"', 'data_node:"the vent"', 'type:Dataset']), + ], +) # fmt: skip +def test_ESGSearchResult_creation(attr, source, expectation, comparison) -> None: + """Ensure GlobusSearchQuery properly converts supported types and raises for non-supported.""" + with expectation: + query = ESGSearchResultParams(fq=source, start=0, q="") + assert getattr(query, attr) == comparison + + +@pytest.mark.parametrize( + ( 'source', 'output', 'expectation'), [ + #------------------------------------------------------------------------------ + ({'facet_fields': {'a':['b',0,'c',1]}}, {'a':('b',0,'c',1)}, does_not_raise()), + (ESGFSearchFacetResult(), {}, does_not_raise()), + (object(), {}, raises(ValueError)), + ], +) # fmt: skip +def test_ESGSearchResponse_facet_counts_creation(source, output, expectation) -> None: + """Ensure ESGSearchResponse properly converts supported types and raises for non-supported.""" + with expectation: + response = ESGSearchResponse( + response=ESGSearchResult(numFound=0, start=0, docs=[]), + responseHeader=ESGSearchHeader(QTime=1, params=ESGSearchResultParams(start=0, q="", fq="")), + facet_counts=source, + ) + assert response.facet_counts.facet_fields == output + + +def test_queriable_fields() -> None: + """Non-queriable fields should be excluded from the property.""" + assert all(field not in ESGSearchQuery()._queriable_fields for field in NON_QUERIABLE_FIELDS) diff --git a/tests/test_observability.py b/tests/test_observability.py new file mode 100644 index 0000000..8fb5c27 --- /dev/null +++ b/tests/test_observability.py @@ -0,0 +1,46 @@ +"""Step definitions for Behave/Cucumber style tests.""" + +from typing import Literal, TypedDict + +from fastapi.testclient import TestClient +from pytest_bdd import given, scenarios, then, when +from pytest_bdd.parsers import parse + +from esg_fastapi.observability.models import ProbeResponse + +scenarios("Observability") + + +class RequestResponseFixture(TypedDict): + """Type hint for example request/response fixtures loaded from JSON files.""" + + request: dict + globus_response: dict + esgsearch_response: dict + + +class ComparisonFixture(RequestResponseFixture): + """RequestResponseFixture with fastapi_response populated.""" + + fastapi_response: dict + + +@given(parse("a {probe_type}")) +def load_example(probe_type: Literal["ready", "live"]) -> None: + """Handle the type of probe to be tested (Currently unused).""" + + +@when(parse("its {endpoint} is querried"), target_fixture="probe_response") +def send_request(endpoint: str) -> ProbeResponse: + """Send request to ESG FastAPI and return its response as a fixture.""" + from esg_fastapi.api.main import app_factory + + client = TestClient(app_factory()) + + return ProbeResponse.model_validate(client.get(endpoint).json()) + + +@then(parse("it should return a positive {status}")) +def compare_responses(status: Literal["ready", "live"], probe_response: ProbeResponse) -> None: + """Ensure the expected response is returned for the probe.""" + assert status == probe_response.status diff --git a/tests/test_settings.py b/tests/test_settings.py new file mode 100644 index 0000000..9ae4f13 --- /dev/null +++ b/tests/test_settings.py @@ -0,0 +1,122 @@ +"""Ensure that the settings module works as intended.""" + +import logging +import os +from typing import Self + +import pytest +from pytest_mock import MockFixture + + +def test_settings_is_usable() -> None: + """Ensure that the settings module can be imported and provides at least one setting.""" + from esg_fastapi import settings + + assert settings.globus_search_index is not None + + +def test_Gunicorn_bind_takes_precedence() -> None: + """The `bind` setting takes precedence over host and port.""" + from esg_fastapi import settings + + cls = type(settings.gunicorn) + gs = cls(bind="127.0.0.1:9999", host="1.1.1.1", port=1111) + + assert gs.bind == "127.0.0.1:9999" + + +def test_Gunicorn_bind_from_host_and_port() -> None: + """If empty, build `bind` from `host` and `port`.""" + from esg_fastapi import settings + + cls = type(settings.gunicorn) + gs = cls(host="1.1.1.1", port=1111) + + assert gs.bind == "1.1.1.1:1111" + + +def test_Gunicorn_no_bind_host_and_port_required() -> None: + """If `bind` is empty, `host` and `port` are required.""" + from esg_fastapi.configuration.gunicorn import GunicornSettings + + with pytest.raises(ValueError): + GunicornSettings(host=None, port=None) + + +# TODO: move this somewhere sensible +def test_app_factory_instruments_app(mocker: MockFixture) -> None: + """The created app is marked as insturmented by the FastAPIInstrumentor.""" + from esg_fastapi.api.versions.v1.routes import app_factory + + app = app_factory() + assert app._is_instrumented_by_opentelemetry is True + + +def test_OTELSettings_instruments_logger(mocker: MockFixture, monkeypatch: pytest.MonkeyPatch) -> None: + """Logging is intrumented by settings.""" + mock_record_factory = mocker.Mock() + mock_record_factory_setter = mocker.Mock() + fake_service_name = "foo" + monkeypatch.setattr("esg_fastapi.configuration.logging.record_factory", mock_record_factory) + monkeypatch.setattr("esg_fastapi.configuration.logging.logging.setLogRecordFactory", mock_record_factory_setter) + from esg_fastapi.configuration.logging import ESGFLogging + + ESGFLogging(service_name=fake_service_name) + assert mock_record_factory_setter.call_args.args[0].func == mock_record_factory + assert mock_record_factory_setter.call_args.args[0].keywords["service_name"] == fake_service_name + + +@pytest.mark.parametrize( + ("log_level"), + logging.getLevelNamesMapping().values(), + ids=logging.getLevelNamesMapping().keys(), +) +def test_root_logger_has_OTEL_span_id_and_trace_id( + caplog: pytest.LogCaptureFixture, log_level: int, monkeypatch: pytest.MonkeyPatch +) -> None: + """At all log levels, root logger includes OTEL trace and span ids.""" + root_formatter = logging.root.handlers[0].formatter + with caplog.at_level(log_level): + logger = logging.getLogger() + logger.log(log_level, "test") + assert len(caplog.records) or log_level == logging.NOTSET, "No logs produced" + for record in caplog.records: + assert "span_id" in root_formatter.format(record) + assert "trace_id" in root_formatter.format(record) + + +# TODO: extract the entry point mocking into a fixture +def test_OTEL_env_vars_on_generated_model(monkeypatch: pytest.MonkeyPatch) -> None: + """Variables specified by OTEL env var entry point are created as fields on the generated base model.""" + + class FakeEntrypoint: + def load(self: Self) -> type: + return type("FakeModule", (), {"OTEL_TEST_VAR": "preset"}) + + def mock_entry_points(group: str = "ignored") -> list[FakeEntrypoint]: + return [FakeEntrypoint()] + + monkeypatch.setattr("esg_fastapi.configuration.opentelemetry.entry_points", mock_entry_points) + from esg_fastapi.configuration.opentelemetry import GeneratedOTELBase + + ModelClass = GeneratedOTELBase() + assert hasattr(ModelClass(), "otel_test_var") + + +def test_OTELSettings_exports_set_env_vars(monkeypatch: pytest.MonkeyPatch) -> None: + """Generated fields with subsequent values set are exported to the environment.""" + + class FakeEntrypoint: + def load(self: Self) -> type: + return type("FakeModule", (), {"OTEL_TEST_VAR": "preset"}) + + def mock_entry_points(group: str = "ignored") -> list[FakeEntrypoint]: + return [FakeEntrypoint()] + + monkeypatch.setattr("esg_fastapi.configuration.opentelemetry.entry_points", mock_entry_points) + from esg_fastapi.configuration.opentelemetry import GeneratedOTELBase + + class TestClass(GeneratedOTELBase()): ... + + TestClass.model_validate({"otel_test_var": "fizzbang"}) + assert os.environ["OTEL_TEST_VAR"] == "fizzbang" diff --git a/tests/test_types.py b/tests/test_types.py new file mode 100644 index 0000000..bde8aec --- /dev/null +++ b/tests/test_types.py @@ -0,0 +1,24 @@ +import json + +import pytest +from pydantic import BaseModel +from semver import Version + +from esg_fastapi.api.versions.v1.types import SemVer + + +@pytest.mark.parametrize("field_value", ["1.2.3", Version.parse("4.5.6")]) +def test_SemVer_field_serializes_to_str(field_value: SemVer) -> None: + """Test that SemVer serializes to a string and accepts both strings and parsed `Version` objects.""" + + class TestModel(BaseModel): + version: SemVer + + model_schema = TestModel.model_json_schema() + assert model_schema["properties"]["version"]["type"] == "string" + + test_instance = TestModel(version=field_value) + model_json = test_instance.model_dump_json() + loaded_model = json.loads(model_json) + + assert isinstance(loaded_model["version"], str) diff --git a/tests/test_utils.py b/tests/test_utils.py new file mode 100644 index 0000000..b4b9a3c --- /dev/null +++ b/tests/test_utils.py @@ -0,0 +1,61 @@ +"""Test suite for the utils module. + +This module contains various utility functions that do not fit well in other modules. The functions in this module are: + +- `type_of(baseclass: T) -> T`: Inherit from `baseclass` only for type checking purposes. +- `is_list(value: T) -> TypeGuard[list]`: TypeGuard based on whether the value is a list. +- `one_or_list(value: list[T] | T) -> T | list[T]`: Unwrap length 1 lists. +- `ensure_list(value: T) -> T | list[T]`: If value is a list, return as is. Otherwise, wrap it in a list. +""" + + +def test_one_or_list_single_item() -> None: + """Given a list of len() > 1, return the list unchanged.""" + from esg_fastapi.utils import one_or_list + + assert one_or_list([1, 2, 3]) == [1, 2, 3] + + +def test_one_or_list_single_item_in_list() -> None: + """Unwrap a length 1 list[int].""" + from esg_fastapi.utils import one_or_list + + assert one_or_list([1]) == 1 + + +def test_one_or_list_string() -> None: + """Unwrap a length 1 list[int].""" + from esg_fastapi.utils import one_or_list + + assert one_or_list("hello") == "hello" + + +def test_one_or_list_empty_list() -> None: + """Empty list is unchanged. + + TODO: is this the correct behavior? + """ + from esg_fastapi.utils import one_or_list + + assert one_or_list([]) == [] + + +def test_ensure_list_empty_list() -> None: + """Empty list is unchanged.""" + from esg_fastapi.utils import ensure_list + + assert ensure_list([]) == [] + + +def test_ensure_list_empty_str() -> None: + """Empty string is wrapped in a list.""" + from esg_fastapi.utils import ensure_list + + assert ensure_list("") == [""] + + +def test_ensure_list_populated_list() -> None: + """Populated list is unchanged.""" + from esg_fastapi.utils import ensure_list + + assert ensure_list([1, 2, 3, 4]) == [1, 2, 3, 4]