From 09eb02325d01d1b68857446b6c0600f8704cd700 Mon Sep 17 00:00:00 2001 From: joey Date: Tue, 7 Jan 2025 20:00:34 +0800 Subject: [PATCH] fix(controller): support volumeClaimTemplates can be referenced by templateRef Signed-off-by: joey --- api/jsonschema/schema.json | 7 + api/openapi-spec/swagger.json | 7 + docs/executor_swagger.md | 176 ++ docs/fields.md | 1 + .../argoproj.io_clusterworkflowtemplates.yaml | 366 +++++ .../crds/full/argoproj.io_cronworkflows.yaml | 366 +++++ .../base/crds/full/argoproj.io_workflows.yaml | 915 +++++++++++ .../full/argoproj.io_workflowtasksets.yaml | 183 +++ .../full/argoproj.io_workflowtemplates.yaml | 366 +++++ pkg/apis/api-rules/violation_exceptions.list | 1 + .../cluster_workflow_template_types.go | 7 + pkg/apis/workflow/v1alpha1/generated.pb.go | 1462 +++++++++-------- pkg/apis/workflow/v1alpha1/generated.proto | 5 + .../workflow/v1alpha1/openapi_generated.go | 16 +- .../v1alpha1/workflow_template_types.go | 7 + pkg/apis/workflow/v1alpha1/workflow_types.go | 5 + .../v1alpha1/zz_generated.deepcopy.go | 7 + pkg/plugins/executor/swagger.yml | 348 ++++ .../IoArgoprojWorkflowV1alpha1Template.md | 1 + .../io_argoproj_workflow_v1alpha1_template.py | 6 + .../docs/ClusterWorkflowTemplateServiceApi.md | 720 ++++++++ .../client/docs/CronWorkflowServiceApi.md | 720 ++++++++ .../IoArgoprojWorkflowV1alpha1Template.md | 1 + sdks/python/client/docs/WorkflowServiceApi.md | 1200 ++++++++++++++ .../client/docs/WorkflowTemplateServiceApi.md | 720 ++++++++ test/e2e/functional_test.go | 45 + .../volume-claim-workflowtemplate.yaml | 40 + workflow/controller/operator.go | 21 + 28 files changed, 7018 insertions(+), 701 deletions(-) create mode 100644 test/e2e/testdata/workflow-templates/volume-claim-workflowtemplate.yaml diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index 263d55f6e6fe..0a7d5a716073 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -7197,6 +7197,13 @@ "x-kubernetes-patch-merge-key": "key", "x-kubernetes-patch-strategy": "merge" }, + "volumeClaimTemplates": { + "description": "VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" + }, + "type": "array" + }, "volumes": { "description": "Volumes is a list of volumes that can be mounted by containers in a template.", "items": { diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 03c148e002c6..1a1c68efdc9e 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -11222,6 +11222,13 @@ "x-kubernetes-patch-merge-key": "key", "x-kubernetes-patch-strategy": "merge" }, + "volumeClaimTemplates": { + "description": "VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" + } + }, "volumes": { "description": "Volumes is a list of volumes that can be mounted by containers in a template.", "type": "array", diff --git a/docs/executor_swagger.md b/docs/executor_swagger.md index 75bb5f26bf7e..3ea3be7b94f6 100644 --- a/docs/executor_swagger.md +++ b/docs/executor_swagger.md @@ -611,6 +611,23 @@ Cinder volumes support ownership management and SELinux relabeling. +### ClaimResourceStatus + + +> +enum +When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource +that it does not recognizes, then it should ignore that update and let other controllers +handle it. + + + + +| Name | Type | Go type | Default | Description | Example | +|------|------|---------| ------- |-------------|---------| +| ClaimResourceStatus | string| string | | +enum
When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource
that it does not recognizes, then it should ignore that update and let other controllers
handle it. | | + + + ### ClientCertAuth @@ -654,6 +671,17 @@ filesystem. +### ConditionStatus + + + + +| Name | Type | Go type | Default | Description | Example | +|------|------|---------| ------- |-------------|---------| +| ConditionStatus | string| string | | | | + + + ### ConfigMapEnvSource @@ -2149,6 +2177,25 @@ that the fieldset applies to. +### ModifyVolumeStatus + + +> ModifyVolumeStatus represents the status object of ControllerModifyVolume operation + + + + + + +**Properties** + +| Name | Type | Go type | Required | Default | Description | Example | +|------|------|---------|:--------:| ------- |-------------|---------| +| status | [PersistentVolumeClaimModifyVolumeStatus](#persistent-volume-claim-modify-volume-status)| `PersistentVolumeClaimModifyVolumeStatus` | | | | | +| targetVolumeAttributesClassName | string| `string` | | | targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled | | + + + ### MountPropagationMode @@ -2553,6 +2600,112 @@ be cluster-scoped, so there is no namespace field. +### PersistentVolumeClaim + + +> PersistentVolumeClaim is a user's request for and claim to a persistent volume + + + + + + +**Properties** + +| Name | Type | Go type | Required | Default | Description | Example | +|------|------|---------|:--------:| ------- |-------------|---------| +| annotations | map of string| `map[string]string` | | | Annotations is an unstructured key value map stored with a resource that may be
set by external tools to store and retrieve arbitrary metadata. They are not
queryable and should be preserved when modifying objects.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
+optional | | +| apiVersion | string| `string` | | | APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+optional | | +| creationTimestamp | string| `string` | | | CreationTimestamp is a timestamp representing the server time when this object was
created. It is not guaranteed to be set in happens-before order across separate operations.
Clients may not set this value. It is represented in RFC3339 form and is in UTC.

Populated by the system.
Read-only.
Null for lists.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
+optional | | +| deletionGracePeriodSeconds | int64 (formatted integer)| `int64` | | | Number of seconds allowed for this object to gracefully terminate before
it will be removed from the system. Only set when deletionTimestamp is also set.
May only be shortened.
Read-only.
+optional | | +| deletionTimestamp | string| `string` | | | DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This
field is set by the server when a graceful deletion is requested by the user, and is not
directly settable by a client. The resource is expected to be deleted (no longer visible
from resource lists, and not reachable by name) after the time in this field, once the
finalizers list is empty. As long as the finalizers list contains items, deletion is blocked.
Once the deletionTimestamp is set, this value may not be unset or be set further into the
future, although it may be shortened or the resource may be deleted prior to this time.
For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react
by sending a graceful termination signal to the containers in the pod. After that 30 seconds,
the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup,
remove the pod from the API. In the presence of network partitions, this object may still
exist after this timestamp, until an administrator or automated process can determine the
resource is fully terminated.
If not set, graceful deletion of the object has not been requested.

Populated by the system when a graceful deletion is requested.
Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
+optional | | +| finalizers | []string| `[]string` | | | Must be empty before the object is deleted from the registry. Each entry
is an identifier for the responsible component that will remove the entry
from the list. If the deletionTimestamp of the object is non-nil, entries
in this list can only be removed.
Finalizers may be processed and removed in any order. Order is NOT enforced
because it introduces significant risk of stuck finalizers.
finalizers is a shared field, any actor with permission can reorder it.
If the finalizer list is processed in order, then this can lead to a situation
in which the component responsible for the first finalizer in the list is
waiting for a signal (field value, external system, or other) produced by a
component responsible for a finalizer later in the list, resulting in a deadlock.
Without enforced ordering finalizers are free to order amongst themselves and
are not vulnerable to ordering changes in the list.
+optional
+patchStrategy=merge
+listType=set | | +| generateName | string| `string` | | | GenerateName is an optional prefix, used by the server, to generate a unique
name ONLY IF the Name field has not been provided.
If this field is used, the name returned to the client will be different
than the name passed. This value will also be combined with a unique suffix.
The provided value has the same validation rules as the Name field,
and may be truncated by the length of the suffix required to make the value
unique on the server.

If this field is specified and the generated name exists, the server will return a 409.

Applied only if Name is not specified.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency
+optional | | +| generation | int64 (formatted integer)| `int64` | | | A sequence number representing a specific generation of the desired state.
Populated by the system. Read-only.
+optional | | +| kind | string| `string` | | | Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+optional | | +| labels | map of string| `map[string]string` | | | Map of string keys and values that can be used to organize and categorize
(scope and select) objects. May match selectors of replication controllers
and services.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
+optional | | +| managedFields | [][ManagedFieldsEntry](#managed-fields-entry)| `[]*ManagedFieldsEntry` | | | ManagedFields maps workflow-id and version to the set of fields
that are managed by that workflow. This is mostly for internal
housekeeping, and users typically shouldn't need to set or
understand this field. A workflow can be the user's name, a
controller's name, or the name of a specific apply path like
"ci-cd". The set of fields is always in the version that the
workflow used when modifying the object.

+optional
+listType=atomic | | +| name | string| `string` | | | Name must be unique within a namespace. Is required when creating resources, although
some resources may allow a client to request the generation of an appropriate name
automatically. Name is primarily intended for creation idempotence and configuration
definition.
Cannot be updated.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
+optional | | +| namespace | string| `string` | | | Namespace defines the space within which each name must be unique. An empty namespace is
equivalent to the "default" namespace, but "default" is the canonical representation.
Not all objects are required to be scoped to a namespace - the value of this field for
those objects will be empty.

Must be a DNS_LABEL.
Cannot be updated.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces
+optional | | +| ownerReferences | [][OwnerReference](#owner-reference)| `[]*OwnerReference` | | | List of objects depended by this object. If ALL objects in the list have
been deleted, this object will be garbage collected. If this object is managed by a controller,
then an entry in this list will point to this controller, with the controller field set to true.
There cannot be more than one managing controller.
+optional
+patchMergeKey=uid
+patchStrategy=merge
+listType=map
+listMapKey=uid | | +| resourceVersion | string| `string` | | | An opaque value that represents the internal version of this object that can
be used by clients to determine when objects have changed. May be used for optimistic
concurrency, change detection, and the watch operation on a resource or set of resources.
Clients must treat these values as opaque and passed unmodified back to the server.
They may only be valid for a particular resource or set of resources.

Populated by the system.
Read-only.
Value must be treated as opaque by clients and .
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
+optional | | +| selfLink | string| `string` | | | Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.
+optional | | +| spec | [PersistentVolumeClaimSpec](#persistent-volume-claim-spec)| `PersistentVolumeClaimSpec` | | | | | +| status | [PersistentVolumeClaimStatus](#persistent-volume-claim-status)| `PersistentVolumeClaimStatus` | | | | | +| uid | [UID](#uid)| `UID` | | | | | + + + +### PersistentVolumeClaimCondition + + +> PersistentVolumeClaimCondition contains details about state of pvc + + + + + + +**Properties** + +| Name | Type | Go type | Required | Default | Description | Example | +|------|------|---------|:--------:| ------- |-------------|---------| +| lastProbeTime | string| `string` | | | lastProbeTime is the time we probed the condition.
+optional | | +| lastTransitionTime | string| `string` | | | lastTransitionTime is the time the condition transitioned from one status to another.
+optional | | +| message | string| `string` | | | message is the human-readable message indicating details about last transition.
+optional | | +| reason | string| `string` | | | reason is a unique, this should be a short, machine understandable string that gives the reason
for condition's last transition. If it reports "Resizing" that means the underlying
persistent volume is being resized.
+optional | | +| status | [ConditionStatus](#condition-status)| `ConditionStatus` | | | | | +| type | [PersistentVolumeClaimConditionType](#persistent-volume-claim-condition-type)| `PersistentVolumeClaimConditionType` | | | | | + + + +### PersistentVolumeClaimConditionType + + +> If RecoverVolumeExpansionFailure feature gate is enabled, then following additional values can be expected: +"ControllerResizeError", "NodeResizeError" + +If VolumeAttributesClass feature gate is enabled, then following additional values can be expected: +"ModifyVolumeError", "ModifyingVolume" + + + + +| Name | Type | Go type | Default | Description | Example | +|------|------|---------| ------- |-------------|---------| +| PersistentVolumeClaimConditionType | string| string | | If RecoverVolumeExpansionFailure feature gate is enabled, then following additional values can be expected:
"ControllerResizeError", "NodeResizeError"

If VolumeAttributesClass feature gate is enabled, then following additional values can be expected:
"ModifyVolumeError", "ModifyingVolume" | | + + + +### PersistentVolumeClaimModifyVolumeStatus + + +> +enum +New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately + + + + +| Name | Type | Go type | Default | Description | Example | +|------|------|---------| ------- |-------------|---------| +| PersistentVolumeClaimModifyVolumeStatus | string| string | | +enum
New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately | | + + + +### PersistentVolumeClaimPhase + + +> +enum + + + + +| Name | Type | Go type | Default | Description | Example | +|------|------|---------| ------- |-------------|---------| +| PersistentVolumeClaimPhase | string| string | | +enum | | + + + ### PersistentVolumeClaimSpec @@ -2580,6 +2733,28 @@ and allows a Source for provider-specific attributes +### PersistentVolumeClaimStatus + + + + + + +**Properties** + +| Name | Type | Go type | Required | Default | Description | Example | +|------|------|---------|:--------:| ------- |-------------|---------| +| accessModes | [][PersistentVolumeAccessMode](#persistent-volume-access-mode)| `[]PersistentVolumeAccessMode` | | | accessModes contains the actual access modes the volume backing the PVC has.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
+optional
+listType=atomic | | +| allocatedResourceStatuses | map of [ClaimResourceStatus](#claim-resource-status)| `map[string]ClaimResourceStatus` | | | allocatedResourceStatuses stores status of resource being resized for the given PVC.
Key names follow standard Kubernetes label syntax. Valid values are either:
Un-prefixed keys:
storage - the capacity of the volume.
Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
reserved and hence may not be used.

ClaimResourceStatus can be in any of following states:
ControllerResizeInProgress:
State set when resize controller starts resizing the volume in control-plane.
ControllerResizeFailed:
State set when resize has failed in resize controller with a terminal error.
NodeResizePending:
State set when resize controller has finished resizing the volume but further resizing of
volume is needed on the node.
NodeResizeInProgress:
State set when kubelet starts resizing the volume.
NodeResizeFailed:
State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
NodeResizeFailed. | `if expanding a PVC for more capacity - this field can be one of the following states:` | +| allocatedResources | [ResourceList](#resource-list)| `ResourceList` | | | | | +| capacity | [ResourceList](#resource-list)| `ResourceList` | | | | | +| conditions | [][PersistentVolumeClaimCondition](#persistent-volume-claim-condition)| `[]*PersistentVolumeClaimCondition` | | | conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
resized then the Condition will be set to 'Resizing'.
+optional
+patchMergeKey=type
+patchStrategy=merge
+listType=map
+listMapKey=type | | +| currentVolumeAttributesClassName | string| `string` | | | currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
+featureGate=VolumeAttributesClass
+optional | | +| modifyVolumeStatus | [ModifyVolumeStatus](#modify-volume-status)| `ModifyVolumeStatus` | | | | | +| phase | [PersistentVolumeClaimPhase](#persistent-volume-claim-phase)| `PersistentVolumeClaimPhase` | | | | | + + + ### PersistentVolumeClaimTemplate @@ -3843,6 +4018,7 @@ of the first container processes are calculated. | synchronization | [Synchronization](#synchronization)| `Synchronization` | | | | | | timeout | string| `string` | | | Timeout allows to set the total node execution timeout duration counting from the node's start time.
This duration also includes time in which the node spends in Pending state. This duration may not be applied to Step or DAG templates. | | | tolerations | [][Toleration](#toleration)| `[]*Toleration` | | | Tolerations to apply to workflow pods.
+patchStrategy=merge
+patchMergeKey=key | | +| volumeClaimTemplates | [][PersistentVolumeClaim](#persistent-volume-claim)| `[]*PersistentVolumeClaim` | | | VolumeClaimTemplates is a list of claims that containers are allowed to reference.
The Workflow controller will create the claims at the beginning of the workflow
and delete the claims upon completion of the workflow | | | volumes | [][Volume](#volume)| `[]*Volume` | | | Volumes is a list of volumes that can be mounted by containers in a template.
+patchStrategy=merge
+patchMergeKey=name | | diff --git a/docs/fields.md b/docs/fields.md index ae7b1b69f399..6d2c98067670 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -1759,6 +1759,7 @@ Template is a reusable and composable unit of execution in a workflow |`synchronization`|[`Synchronization`](#synchronization)|Synchronization holds synchronization lock configuration for this template| |`timeout`|`string`|Timeout allows to set the total node execution timeout duration counting from the node's start time. This duration also includes time in which the node spends in Pending state. This duration may not be applied to Step or DAG templates.| |`tolerations`|`Array<`[`Toleration`](#toleration)`>`|Tolerations to apply to workflow pods.| +|`volumeClaimTemplates`|`Array<`[`PersistentVolumeClaim`](#persistentvolumeclaim)`>`|VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow| |`volumes`|`Array<`[`Volume`](#volume)`>`|Volumes is a list of volumes that can be mounted by containers in a template.| ## TTLStrategy diff --git a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml index dd96de7c5462..0deba87fcf0b 100644 --- a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml @@ -12041,6 +12041,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: @@ -22715,6 +22898,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: diff --git a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml index d5df056acc4a..8eb11b650bb0 100644 --- a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml +++ b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml @@ -12094,6 +12094,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: @@ -22768,6 +22951,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: diff --git a/manifests/base/crds/full/argoproj.io_workflows.yaml b/manifests/base/crds/full/argoproj.io_workflows.yaml index 45c88c907ea5..72b11a90e1a8 100644 --- a/manifests/base/crds/full/argoproj.io_workflows.yaml +++ b/manifests/base/crds/full/argoproj.io_workflows.yaml @@ -12055,6 +12055,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: @@ -22729,6 +22912,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: @@ -37573,6 +37939,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: @@ -50391,6 +50940,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: @@ -61065,6 +61797,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: diff --git a/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml b/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml index 860d7740eef0..fa87dc2c2a61 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml @@ -9908,6 +9908,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: diff --git a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml index 4fe2fd0cdff8..041cadc81d20 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml @@ -12040,6 +12040,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: @@ -22714,6 +22897,189 @@ spec: type: string type: object type: array + volumeClaimTemplates: + items: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + x-kubernetes-list-type: atomic + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object + phase: + type: string + type: object + type: object + type: array volumes: items: properties: diff --git a/pkg/apis/api-rules/violation_exceptions.list b/pkg/apis/api-rules/violation_exceptions.list index dc3b89a0917c..9003cc123235 100644 --- a/pkg/apis/api-rules/violation_exceptions.list +++ b/pkg/apis/api-rules/violation_exceptions.list @@ -35,6 +35,7 @@ API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/ API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Template,Sidecars API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Template,Steps API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Template,Tolerations +API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Template,VolumeClaimTemplates API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Template,Volumes API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,WorkflowSpec,HostAliases API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,WorkflowSpec,ImagePullSecrets diff --git a/pkg/apis/workflow/v1alpha1/cluster_workflow_template_types.go b/pkg/apis/workflow/v1alpha1/cluster_workflow_template_types.go index 2bb5dc112f9c..f8e3b8d5d45b 100644 --- a/pkg/apis/workflow/v1alpha1/cluster_workflow_template_types.go +++ b/pkg/apis/workflow/v1alpha1/cluster_workflow_template_types.go @@ -46,6 +46,13 @@ var _ TemplateHolder = &ClusterWorkflowTemplate{} func (cwftmpl *ClusterWorkflowTemplate) GetTemplateByName(name string) *Template { for _, t := range cwftmpl.Spec.Templates { if t.Name == name { + for _, v := range t.GetVolumeMounts() { + for _, vp := range cwftmpl.Spec.VolumeClaimTemplates { + if v.Name == vp.Name { + t.VolumeClaimTemplates = append(t.VolumeClaimTemplates, vp) + } + } + } return &t } } diff --git a/pkg/apis/workflow/v1alpha1/generated.pb.go b/pkg/apis/workflow/v1alpha1/generated.pb.go index 5dad0aa3df54..65081d57dd2c 100644 --- a/pkg/apis/workflow/v1alpha1/generated.pb.go +++ b/pkg/apis/workflow/v1alpha1/generated.pb.go @@ -4448,706 +4448,706 @@ func init() { } var fileDescriptor_724696e352c3df5f = []byte{ - // 11177 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0xbd, 0x6b, 0x70, 0x64, 0xc7, - 0x75, 0x18, 0xcc, 0x3b, 0xc0, 0xe0, 0x71, 0xf0, 0x58, 0x6c, 0xef, 0x6b, 0x88, 0x25, 0x17, 0xf4, - 0xa5, 0xc8, 0x8f, 0xb4, 0x28, 0xac, 0xb9, 0x94, 0xbe, 0x30, 0x52, 0x22, 0x09, 0x8f, 0x05, 0x16, - 0x04, 0xb0, 0x00, 0x7b, 0xb0, 0xbb, 0x26, 0x45, 0x4b, 0xba, 0x98, 0x69, 0xcc, 0x5c, 0x62, 0xe6, - 0xde, 0xe1, 0xbd, 0x77, 0xb0, 0x0b, 0x3e, 0x24, 0x85, 0x7a, 0xc7, 0xb2, 0x15, 0xcb, 0x92, 0x2c, - 0x29, 0x49, 0x95, 0xa2, 0x48, 0x09, 0x4b, 0x76, 0x25, 0x65, 0xff, 0x4a, 0xd9, 0xff, 0xf2, 0xc3, - 0xa5, 0x94, 0x53, 0x89, 0x5c, 0x51, 0xca, 0xfa, 0x61, 0x83, 0xd1, 0x3a, 0x51, 0xa5, 0x92, 0xa8, - 0x2a, 0x56, 0xc5, 0x49, 0xbc, 0x79, 0x54, 0xaa, 0x9f, 0xb7, 0xfb, 0xce, 0x1d, 0xec, 0x00, 0xdb, - 0xc0, 0xaa, 0xec, 0x5f, 0xc0, 0x9c, 0x3e, 0x7d, 0x4e, 0x77, 0xdf, 0xee, 0xd3, 0xa7, 0xcf, 0x39, - 0x7d, 0x1a, 0xd6, 0x6b, 0x7e, 0x52, 0x6f, 0x6f, 0x4e, 0x57, 0xc2, 0xe6, 0x45, 0x2f, 0xaa, 0x85, - 0xad, 0x28, 0x7c, 0x99, 0xfd, 0xf3, 0xae, 0x9b, 0x61, 0xb4, 0xbd, 0xd5, 0x08, 0x6f, 0xc6, 0x17, - 0x77, 0x9e, 0xb9, 0xd8, 0xda, 0xae, 0x5d, 0xf4, 0x5a, 0x7e, 0x7c, 0x51, 0x42, 0x2f, 0xee, 0x3c, - 0xed, 0x35, 0x5a, 0x75, 0xef, 0xe9, 0x8b, 0x35, 0x12, 0x90, 0xc8, 0x4b, 0x48, 0x75, 0xba, 0x15, - 0x85, 0x49, 0x88, 0x3e, 0x98, 0x52, 0x9c, 0x96, 0x14, 0xd9, 0x3f, 0x1f, 0x51, 0x14, 0xa7, 0x77, - 0x9e, 0x99, 0x6e, 0x6d, 0xd7, 0xa6, 0x29, 0xc5, 0x69, 0x09, 0x9d, 0x96, 0x14, 0x27, 0xdf, 0xa5, - 0xb5, 0xa9, 0x16, 0xd6, 0xc2, 0x8b, 0x8c, 0xf0, 0x66, 0x7b, 0x8b, 0xfd, 0x62, 0x3f, 0xd8, 0x7f, - 0x9c, 0xe1, 0xa4, 0xbb, 0xfd, 0x6c, 0x3c, 0xed, 0x87, 0xb4, 0x7d, 0x17, 0x2b, 0x61, 0x44, 0x2e, - 0xee, 0x74, 0x34, 0x6a, 0xf2, 0x1d, 0x1a, 0x4e, 0x2b, 0x6c, 0xf8, 0x95, 0xdd, 0x3c, 0xac, 0x77, - 0xa7, 0x58, 0x4d, 0xaf, 0x52, 0xf7, 0x03, 0x12, 0xed, 0xa6, 0x5d, 0x6f, 0x92, 0xc4, 0xcb, 0xab, - 0x75, 0xb1, 0x5b, 0xad, 0xa8, 0x1d, 0x24, 0x7e, 0x93, 0x74, 0x54, 0xf8, 0xff, 0xef, 0x56, 0x21, - 0xae, 0xd4, 0x49, 0xd3, 0xeb, 0xa8, 0xf7, 0x4c, 0xb7, 0x7a, 0xed, 0xc4, 0x6f, 0x5c, 0xf4, 0x83, - 0x24, 0x4e, 0xa2, 0x6c, 0x25, 0xf7, 0x32, 0x0c, 0xcc, 0x34, 0xc3, 0x76, 0x90, 0xa0, 0xf7, 0x41, - 0x71, 0xc7, 0x6b, 0xb4, 0x49, 0xc9, 0x79, 0xc4, 0x79, 0x62, 0x78, 0xf6, 0xb1, 0xef, 0xed, 0x4d, - 0x3d, 0x70, 0x7b, 0x6f, 0xaa, 0x78, 0x9d, 0x02, 0xef, 0xec, 0x4d, 0x9d, 0x26, 0x41, 0x25, 0xac, - 0xfa, 0x41, 0xed, 0xe2, 0xcb, 0x71, 0x18, 0x4c, 0x5f, 0x6d, 0x37, 0x37, 0x49, 0x84, 0x79, 0x1d, - 0xf7, 0xdf, 0x14, 0xe0, 0xc4, 0x4c, 0x54, 0xa9, 0xfb, 0x3b, 0xa4, 0x9c, 0x50, 0xfa, 0xb5, 0x5d, - 0x54, 0x87, 0xbe, 0xc4, 0x8b, 0x18, 0xb9, 0x91, 0x4b, 0xab, 0xd3, 0xf7, 0xfa, 0xdd, 0xa7, 0x37, - 0xbc, 0x48, 0xd2, 0x9e, 0x1d, 0xbc, 0xbd, 0x37, 0xd5, 0xb7, 0xe1, 0x45, 0x98, 0xb2, 0x40, 0x0d, - 0xe8, 0x0f, 0xc2, 0x80, 0x94, 0x0a, 0x8c, 0xd5, 0xd5, 0x7b, 0x67, 0x75, 0x35, 0x0c, 0x54, 0x3f, - 0x66, 0x87, 0x6e, 0xef, 0x4d, 0xf5, 0x53, 0x08, 0x66, 0x5c, 0x68, 0xbf, 0x5e, 0xf5, 0x5b, 0xa5, - 0x3e, 0x5b, 0xfd, 0x7a, 0xd1, 0x6f, 0x99, 0xfd, 0x7a, 0xd1, 0x6f, 0x61, 0xca, 0xc2, 0xfd, 0x7c, - 0x01, 0x86, 0x67, 0xa2, 0x5a, 0xbb, 0x49, 0x82, 0x24, 0x46, 0x1f, 0x07, 0x68, 0x79, 0x91, 0xd7, - 0x24, 0x09, 0x89, 0xe2, 0x92, 0xf3, 0x48, 0xdf, 0x13, 0x23, 0x97, 0x96, 0xef, 0x9d, 0xfd, 0xba, - 0xa4, 0x39, 0x8b, 0xc4, 0x27, 0x07, 0x05, 0x8a, 0xb1, 0xc6, 0x12, 0xbd, 0x06, 0xc3, 0x5e, 0x94, - 0xf8, 0x5b, 0x5e, 0x25, 0x89, 0x4b, 0x05, 0xc6, 0xff, 0xb9, 0x7b, 0xe7, 0x3f, 0x23, 0x48, 0xce, - 0x9e, 0x14, 0xec, 0x87, 0x25, 0x24, 0xc6, 0x29, 0x3f, 0xf7, 0x77, 0xfb, 0x61, 0x64, 0x26, 0x4a, - 0x16, 0xe7, 0xca, 0x89, 0x97, 0xb4, 0x63, 0xf4, 0x07, 0x0e, 0x9c, 0x8a, 0xf9, 0xb0, 0xf9, 0x24, - 0x5e, 0x8f, 0xc2, 0x0a, 0x89, 0x63, 0x52, 0x15, 0xe3, 0xb2, 0x65, 0xa5, 0x5d, 0x92, 0xd9, 0x74, - 0xb9, 0x93, 0xd1, 0xe5, 0x20, 0x89, 0x76, 0x67, 0x9f, 0x16, 0x6d, 0x3e, 0x95, 0x83, 0xf1, 0xe6, - 0xdb, 0x53, 0x48, 0x76, 0x85, 0x52, 0xe2, 0x9f, 0x18, 0xe7, 0xb5, 0x1a, 0x7d, 0xdd, 0x81, 0xd1, - 0x56, 0x58, 0x8d, 0x31, 0xa9, 0x84, 0xed, 0x16, 0xa9, 0x8a, 0xe1, 0xfd, 0x88, 0xdd, 0x6e, 0xac, - 0x6b, 0x1c, 0x78, 0xfb, 0x4f, 0x8b, 0xf6, 0x8f, 0xea, 0x45, 0xd8, 0x68, 0x0a, 0x7a, 0x16, 0x46, - 0x83, 0x30, 0x29, 0xb7, 0x48, 0xc5, 0xdf, 0xf2, 0x49, 0x95, 0x4d, 0xfc, 0xa1, 0xb4, 0xe6, 0x55, - 0xad, 0x0c, 0x1b, 0x98, 0x93, 0x0b, 0x50, 0xea, 0x36, 0x72, 0x68, 0x02, 0xfa, 0xb6, 0xc9, 0x2e, - 0x17, 0x36, 0x98, 0xfe, 0x8b, 0x4e, 0x4b, 0x01, 0x44, 0x97, 0xf1, 0x90, 0x90, 0x2c, 0xef, 0x2d, - 0x3c, 0xeb, 0x4c, 0x7e, 0x00, 0x4e, 0x76, 0x34, 0xfd, 0x20, 0x04, 0xdc, 0xef, 0x0f, 0xc0, 0x90, - 0xfc, 0x14, 0xe8, 0x11, 0xe8, 0x0f, 0xbc, 0xa6, 0x94, 0x73, 0xa3, 0xa2, 0x1f, 0xfd, 0x57, 0xbd, - 0x26, 0x5d, 0xe1, 0x5e, 0x93, 0x50, 0x8c, 0x96, 0x97, 0xd4, 0x19, 0x1d, 0x0d, 0x63, 0xdd, 0x4b, - 0xea, 0x98, 0x95, 0xa0, 0x87, 0xa0, 0xbf, 0x19, 0x56, 0x09, 0x1b, 0x8b, 0x22, 0x97, 0x10, 0xab, - 0x61, 0x95, 0x60, 0x06, 0xa5, 0xf5, 0xb7, 0xa2, 0xb0, 0x59, 0xea, 0x37, 0xeb, 0x2f, 0x44, 0x61, - 0x13, 0xb3, 0x12, 0xf4, 0x35, 0x07, 0x26, 0xe4, 0xdc, 0x5e, 0x09, 0x2b, 0x5e, 0xe2, 0x87, 0x41, - 0xa9, 0xc8, 0x24, 0x0a, 0xb6, 0xb7, 0xa4, 0x24, 0xe5, 0xd9, 0x92, 0x68, 0xc2, 0x44, 0xb6, 0x04, - 0x77, 0xb4, 0x02, 0x5d, 0x02, 0xa8, 0x35, 0xc2, 0x4d, 0xaf, 0x41, 0x07, 0xa4, 0x34, 0xc0, 0xba, - 0xa0, 0x24, 0xc3, 0xa2, 0x2a, 0xc1, 0x1a, 0x16, 0xba, 0x05, 0x83, 0x1e, 0x97, 0xfe, 0xa5, 0x41, - 0xd6, 0x89, 0xe7, 0x6d, 0x74, 0xc2, 0xd8, 0x4e, 0x66, 0x47, 0x6e, 0xef, 0x4d, 0x0d, 0x0a, 0x20, - 0x96, 0xec, 0xd0, 0x53, 0x30, 0x14, 0xb6, 0x68, 0xbb, 0xbd, 0x46, 0x69, 0x88, 0x4d, 0xcc, 0x09, - 0xd1, 0xd6, 0xa1, 0x35, 0x01, 0xc7, 0x0a, 0x03, 0x3d, 0x09, 0x83, 0x71, 0x7b, 0x93, 0x7e, 0xc7, - 0xd2, 0x30, 0xeb, 0xd8, 0x09, 0x81, 0x3c, 0x58, 0xe6, 0x60, 0x2c, 0xcb, 0xd1, 0x7b, 0x60, 0x24, - 0x22, 0x95, 0x76, 0x14, 0x13, 0xfa, 0x61, 0x4b, 0xc0, 0x68, 0x9f, 0x12, 0xe8, 0x23, 0x38, 0x2d, - 0xc2, 0x3a, 0x1e, 0x7a, 0x3f, 0x8c, 0xd3, 0x0f, 0x7c, 0xf9, 0x56, 0x2b, 0x22, 0x71, 0x4c, 0xbf, - 0xea, 0x08, 0x63, 0x74, 0x56, 0xd4, 0x1c, 0x5f, 0x30, 0x4a, 0x71, 0x06, 0x1b, 0xbd, 0x0e, 0xe0, - 0x29, 0x99, 0x51, 0x1a, 0x65, 0x83, 0xb9, 0x62, 0x6f, 0x46, 0x2c, 0xce, 0xcd, 0x8e, 0xd3, 0xef, - 0x98, 0xfe, 0xc6, 0x1a, 0x3f, 0x3a, 0x3e, 0x55, 0xd2, 0x20, 0x09, 0xa9, 0x96, 0xc6, 0x58, 0x87, - 0xd5, 0xf8, 0xcc, 0x73, 0x30, 0x96, 0xe5, 0xee, 0xdf, 0x2d, 0x80, 0x46, 0x05, 0xcd, 0xc2, 0x90, - 0x90, 0x6b, 0x62, 0x49, 0xce, 0x3e, 0x2e, 0xbf, 0x83, 0xfc, 0x82, 0x77, 0xf6, 0x72, 0xe5, 0xa1, - 0xaa, 0x87, 0xde, 0x80, 0x91, 0x56, 0x58, 0x5d, 0x25, 0x89, 0x57, 0xf5, 0x12, 0x4f, 0xec, 0xe6, - 0x16, 0x76, 0x18, 0x49, 0x71, 0xf6, 0x04, 0xfd, 0x74, 0xeb, 0x29, 0x0b, 0xac, 0xf3, 0x43, 0xcf, - 0x01, 0x8a, 0x49, 0xb4, 0xe3, 0x57, 0xc8, 0x4c, 0xa5, 0x42, 0x55, 0x22, 0xb6, 0x00, 0xfa, 0x58, - 0x67, 0x26, 0x45, 0x67, 0x50, 0xb9, 0x03, 0x03, 0xe7, 0xd4, 0x72, 0x7f, 0x50, 0x80, 0x71, 0xad, - 0xaf, 0x2d, 0x52, 0x41, 0x6f, 0x39, 0x70, 0x42, 0x6d, 0x67, 0xb3, 0xbb, 0x57, 0xe9, 0xac, 0xe2, - 0x9b, 0x15, 0xb1, 0xf9, 0x7d, 0x29, 0x2f, 0xf5, 0x53, 0xf0, 0xe1, 0xb2, 0xfe, 0x9c, 0xe8, 0xc3, - 0x89, 0x4c, 0x29, 0xce, 0x36, 0x6b, 0xf2, 0xab, 0x0e, 0x9c, 0xce, 0x23, 0x91, 0x23, 0x73, 0xeb, - 0xba, 0xcc, 0xb5, 0x2a, 0xbc, 0x28, 0x57, 0xda, 0x19, 0x5d, 0x8e, 0xff, 0xdf, 0x02, 0x4c, 0xe8, - 0x53, 0x88, 0x69, 0x02, 0xff, 0xdc, 0x81, 0x33, 0xb2, 0x07, 0x98, 0xc4, 0xed, 0x46, 0x66, 0x78, - 0x9b, 0x56, 0x87, 0x97, 0xef, 0xa4, 0x33, 0x79, 0xfc, 0xf8, 0x30, 0x3f, 0x2c, 0x86, 0xf9, 0x4c, - 0x2e, 0x0e, 0xce, 0x6f, 0xea, 0xe4, 0xb7, 0x1d, 0x98, 0xec, 0x4e, 0x34, 0x67, 0xe0, 0x5b, 0xe6, - 0xc0, 0xbf, 0x68, 0xaf, 0x93, 0x9c, 0x3d, 0x1b, 0x7e, 0xd6, 0x59, 0xfd, 0x03, 0xfc, 0xd6, 0x10, - 0x74, 0xec, 0x21, 0xe8, 0x69, 0x18, 0x11, 0xe2, 0x78, 0x25, 0xac, 0xc5, 0xac, 0x91, 0x43, 0x7c, - 0xad, 0xcd, 0xa4, 0x60, 0xac, 0xe3, 0xa0, 0x2a, 0x14, 0xe2, 0x67, 0x44, 0xd3, 0x2d, 0x88, 0xb7, - 0xf2, 0x33, 0x4a, 0x8b, 0x1c, 0xb8, 0xbd, 0x37, 0x55, 0x28, 0x3f, 0x83, 0x0b, 0xf1, 0x33, 0x54, - 0x53, 0xaf, 0xf9, 0x89, 0x3d, 0x4d, 0x7d, 0xd1, 0x4f, 0x14, 0x1f, 0xa6, 0xa9, 0x2f, 0xfa, 0x09, - 0xa6, 0x2c, 0xe8, 0x09, 0xa4, 0x9e, 0x24, 0x2d, 0xb6, 0xe3, 0x5b, 0x39, 0x81, 0x5c, 0xd9, 0xd8, - 0x58, 0x57, 0xbc, 0x98, 0x7e, 0x41, 0x21, 0x98, 0x71, 0x41, 0x9f, 0x73, 0xe8, 0x88, 0xf3, 0xc2, - 0x30, 0xda, 0x15, 0x8a, 0xc3, 0x35, 0x7b, 0x53, 0x20, 0x8c, 0x76, 0x15, 0x73, 0xf1, 0x21, 0x55, - 0x01, 0xd6, 0x59, 0xb3, 0x8e, 0x57, 0xb7, 0x62, 0xa6, 0x27, 0xd8, 0xe9, 0xf8, 0xfc, 0x42, 0x39, - 0xd3, 0xf1, 0xf9, 0x85, 0x32, 0x66, 0x5c, 0xe8, 0x07, 0x8d, 0xbc, 0x9b, 0x42, 0xc7, 0xb0, 0xf0, - 0x41, 0xb1, 0x77, 0xd3, 0xfc, 0xa0, 0xd8, 0xbb, 0x89, 0x29, 0x0b, 0xca, 0x29, 0x8c, 0x63, 0xa6, - 0x52, 0x58, 0xe1, 0xb4, 0x56, 0x2e, 0x9b, 0x9c, 0xd6, 0xca, 0x65, 0x4c, 0x59, 0xb0, 0x49, 0x5a, - 0x89, 0x99, 0x3e, 0x62, 0x67, 0x92, 0xce, 0x65, 0x38, 0x2d, 0xce, 0x95, 0x31, 0x65, 0x41, 0x45, - 0x86, 0xf7, 0x6a, 0x3b, 0xe2, 0xca, 0xcc, 0xc8, 0xa5, 0x35, 0x0b, 0xf3, 0x85, 0x92, 0x53, 0xdc, - 0x86, 0x6f, 0xef, 0x4d, 0x15, 0x19, 0x08, 0x73, 0x46, 0xee, 0xef, 0xf7, 0xa5, 0xe2, 0x42, 0xca, - 0x73, 0xf4, 0x6b, 0x6c, 0x23, 0x14, 0xb2, 0x40, 0xa8, 0xbe, 0xce, 0x91, 0xa9, 0xbe, 0xa7, 0xf8, - 0x8e, 0x67, 0xb0, 0xc3, 0x59, 0xfe, 0xe8, 0x4b, 0x4e, 0xe7, 0xd9, 0xd6, 0xb3, 0xbf, 0x97, 0xa5, - 0x1b, 0x33, 0xdf, 0x2b, 0xf6, 0x3d, 0xf2, 0x4e, 0x7e, 0xce, 0x49, 0x95, 0x88, 0xb8, 0xdb, 0x3e, - 0xf0, 0x51, 0x73, 0x1f, 0xb0, 0x78, 0x20, 0xd7, 0xe5, 0xfe, 0xe7, 0x1d, 0x18, 0x93, 0x70, 0xaa, - 0x1e, 0xc7, 0xe8, 0x16, 0x0c, 0xc9, 0x96, 0x8a, 0xaf, 0x67, 0xd3, 0x16, 0xa0, 0x94, 0x78, 0xd5, - 0x18, 0xc5, 0xcd, 0x7d, 0x6b, 0x00, 0x50, 0xba, 0x57, 0xb5, 0xc2, 0xd8, 0x67, 0x92, 0xe8, 0x10, - 0xbb, 0x50, 0xa0, 0xed, 0x42, 0xd7, 0x6d, 0xee, 0x42, 0x69, 0xb3, 0x8c, 0xfd, 0xe8, 0x4b, 0x19, - 0xb9, 0xcd, 0x37, 0xa6, 0x8f, 0x1c, 0x89, 0xdc, 0xd6, 0x9a, 0xb0, 0xbf, 0x04, 0xdf, 0x11, 0x12, - 0x9c, 0x6f, 0x5d, 0xbf, 0x68, 0x57, 0x82, 0x6b, 0xad, 0xc8, 0xca, 0xf2, 0x88, 0x4b, 0x58, 0xbe, - 0x77, 0xdd, 0xb0, 0x2a, 0x61, 0x35, 0xae, 0xa6, 0xac, 0x8d, 0xb8, 0xac, 0x1d, 0xb0, 0xc5, 0x53, - 0x93, 0xb5, 0x59, 0x9e, 0x4a, 0xea, 0xbe, 0x2a, 0xa5, 0x2e, 0xdf, 0xb5, 0x5e, 0xb0, 0x2c, 0x75, - 0x35, 0xbe, 0x9d, 0xf2, 0xf7, 0x15, 0x38, 0xd3, 0x89, 0x87, 0xc9, 0x16, 0xba, 0x08, 0xc3, 0x95, - 0x30, 0xd8, 0xf2, 0x6b, 0xab, 0x5e, 0x4b, 0x9c, 0xd7, 0x94, 0x2c, 0x9a, 0x93, 0x05, 0x38, 0xc5, - 0x41, 0x0f, 0x73, 0xc1, 0xc3, 0x2d, 0x22, 0x23, 0x02, 0xb5, 0x6f, 0x99, 0xec, 0x32, 0x29, 0xf4, - 0xde, 0xa1, 0xaf, 0x7d, 0x73, 0xea, 0x81, 0x4f, 0xfc, 0xf1, 0x23, 0x0f, 0xb8, 0x7f, 0xd8, 0x07, - 0xe7, 0x73, 0x79, 0x0a, 0x6d, 0xfd, 0xb7, 0x0c, 0x6d, 0x5d, 0x2b, 0x17, 0x52, 0xe4, 0x86, 0x4d, - 0x45, 0x56, 0x23, 0x9f, 0xa7, 0x97, 0x6b, 0xc5, 0x38, 0xbf, 0x51, 0x74, 0xa0, 0x02, 0xaf, 0x49, - 0xe2, 0x96, 0x57, 0x21, 0xa2, 0xf7, 0x6a, 0xa0, 0xae, 0xca, 0x02, 0x9c, 0xe2, 0xf0, 0x23, 0xf4, - 0x96, 0xd7, 0x6e, 0x24, 0xc2, 0x50, 0xa6, 0x1d, 0xa1, 0x19, 0x18, 0xcb, 0x72, 0xf4, 0xf7, 0x1c, - 0x40, 0x9d, 0x5c, 0xc5, 0x42, 0xdc, 0x38, 0x8a, 0x71, 0x98, 0x3d, 0x7b, 0x5b, 0x3b, 0x84, 0x6b, - 0x3d, 0xcd, 0x69, 0x87, 0xf6, 0x4d, 0x3f, 0x96, 0xee, 0x43, 0xfc, 0x70, 0xd0, 0x83, 0x0d, 0x8d, - 0x99, 0x5a, 0x2a, 0x15, 0x12, 0xc7, 0xdc, 0x1c, 0xa7, 0x9b, 0x5a, 0x18, 0x18, 0xcb, 0x72, 0x34, - 0x05, 0x45, 0x12, 0x45, 0x61, 0x24, 0xce, 0xda, 0x6c, 0x1a, 0x5f, 0xa6, 0x00, 0xcc, 0xe1, 0xee, - 0x8f, 0x0b, 0x50, 0xea, 0x76, 0x3a, 0x41, 0xbf, 0xa3, 0x9d, 0xab, 0xc5, 0xc9, 0x49, 0x1c, 0xfc, - 0xc2, 0xa3, 0x3b, 0x13, 0x65, 0x0f, 0x80, 0x5d, 0x4e, 0xd8, 0xa2, 0x14, 0x67, 0x1b, 0x38, 0xf9, - 0x65, 0xed, 0x84, 0xad, 0x93, 0xc8, 0xd9, 0xe0, 0xb7, 0xcc, 0x0d, 0x7e, 0xdd, 0x76, 0xa7, 0xf4, - 0x6d, 0xfe, 0x4f, 0x8a, 0x70, 0x4a, 0x96, 0x96, 0x09, 0xdd, 0x2a, 0x9f, 0x6f, 0x93, 0x68, 0x17, - 0xfd, 0x91, 0x03, 0xa7, 0xbd, 0xac, 0xe9, 0xc6, 0x27, 0x47, 0x30, 0xd0, 0x1a, 0xd7, 0xe9, 0x99, - 0x1c, 0x8e, 0x7c, 0xa0, 0x2f, 0x89, 0x81, 0x3e, 0x9d, 0x87, 0xd2, 0xc5, 0xee, 0x9e, 0xdb, 0x01, - 0xf4, 0x2c, 0x8c, 0x4a, 0x38, 0x33, 0xf7, 0xf0, 0x25, 0xae, 0x8c, 0xdb, 0x33, 0x5a, 0x19, 0x36, - 0x30, 0x69, 0xcd, 0x84, 0x34, 0x5b, 0x0d, 0x2f, 0x21, 0x9a, 0xa1, 0x48, 0xd5, 0xdc, 0xd0, 0xca, - 0xb0, 0x81, 0x89, 0x1e, 0x87, 0x81, 0x20, 0xac, 0x92, 0xa5, 0xaa, 0x30, 0x10, 0x8f, 0x8b, 0x3a, - 0x03, 0x57, 0x19, 0x14, 0x8b, 0x52, 0xf4, 0x58, 0x6a, 0x8d, 0x2b, 0xb2, 0x25, 0x34, 0x92, 0x67, - 0x89, 0x43, 0xff, 0xc0, 0x81, 0x61, 0x5a, 0x63, 0x63, 0xb7, 0x45, 0xe8, 0xde, 0x46, 0xbf, 0x48, - 0xf5, 0x68, 0xbe, 0xc8, 0x55, 0xc9, 0xc6, 0x34, 0x75, 0x0c, 0x2b, 0xf8, 0x9b, 0x6f, 0x4f, 0x0d, - 0xc9, 0x1f, 0x38, 0x6d, 0xd5, 0xe4, 0x22, 0x3c, 0xd8, 0xf5, 0x6b, 0x1e, 0xc8, 0x15, 0xf0, 0x37, - 0x60, 0xdc, 0x6c, 0xc4, 0x81, 0xfc, 0x00, 0xff, 0x4c, 0x5b, 0x76, 0xbc, 0x5f, 0x42, 0x9e, 0xdd, - 0x37, 0x6d, 0x56, 0x4d, 0x86, 0x79, 0x31, 0xf5, 0xcc, 0xc9, 0x30, 0x2f, 0x26, 0xc3, 0xbc, 0xfb, - 0x07, 0x4e, 0xba, 0x34, 0x35, 0x35, 0x8f, 0x6e, 0xcc, 0xed, 0xa8, 0x21, 0x04, 0xb1, 0xda, 0x98, - 0xaf, 0xe1, 0x15, 0x4c, 0xe1, 0xe8, 0xcb, 0x9a, 0x74, 0xa4, 0xd5, 0xda, 0xc2, 0xad, 0x61, 0xc9, - 0x44, 0x6f, 0x10, 0xee, 0x94, 0x7f, 0xa2, 0x00, 0x67, 0x9b, 0xe0, 0x7e, 0xa9, 0x00, 0x0f, 0xef, - 0xab, 0xb4, 0xe6, 0x36, 0xdc, 0xb9, 0xef, 0x0d, 0xa7, 0xdb, 0x5a, 0x44, 0x5a, 0xe1, 0x35, 0xbc, - 0x22, 0xbe, 0x97, 0xda, 0xd6, 0x30, 0x07, 0x63, 0x59, 0x4e, 0x55, 0x87, 0x6d, 0xb2, 0xbb, 0x10, - 0x46, 0x4d, 0x2f, 0x11, 0xd2, 0x41, 0xa9, 0x0e, 0xcb, 0xb2, 0x00, 0xa7, 0x38, 0xee, 0x1f, 0x39, - 0x90, 0x6d, 0x00, 0xf2, 0x60, 0xbc, 0x1d, 0x93, 0x88, 0x6e, 0xa9, 0x65, 0x52, 0x89, 0x88, 0x9c, - 0x9e, 0x8f, 0x4d, 0x73, 0x6f, 0x3f, 0xed, 0xe1, 0x74, 0x25, 0x8c, 0xc8, 0xf4, 0xce, 0xd3, 0xd3, - 0x1c, 0x63, 0x99, 0xec, 0x96, 0x49, 0x83, 0x50, 0x1a, 0xb3, 0xe8, 0xf6, 0xde, 0xd4, 0xf8, 0x35, - 0x83, 0x00, 0xce, 0x10, 0xa4, 0x2c, 0x5a, 0x5e, 0x1c, 0xdf, 0x0c, 0xa3, 0xaa, 0x60, 0x51, 0x38, - 0x30, 0x8b, 0x75, 0x83, 0x00, 0xce, 0x10, 0x74, 0x7f, 0x40, 0x8f, 0x8f, 0xba, 0xd6, 0x8a, 0xbe, - 0x49, 0x75, 0x1f, 0x0a, 0x99, 0x6d, 0x84, 0x9b, 0x73, 0x61, 0x90, 0x78, 0x7e, 0x40, 0x64, 0xb0, - 0xc0, 0x86, 0x25, 0x1d, 0xd9, 0xa0, 0x9d, 0xda, 0xf0, 0x3b, 0xcb, 0x70, 0x4e, 0x5b, 0xa8, 0x8e, - 0xb3, 0xd9, 0x08, 0x37, 0xb3, 0x5e, 0x40, 0x8a, 0x84, 0x59, 0x89, 0xfb, 0x53, 0x07, 0xce, 0x75, - 0x51, 0xc6, 0xd1, 0x57, 0x1d, 0x18, 0xdb, 0xfc, 0x99, 0xe8, 0x9b, 0xd9, 0x0c, 0xf4, 0x7e, 0x18, - 0xa7, 0x00, 0xba, 0x13, 0x89, 0xb9, 0x59, 0x30, 0x3d, 0x54, 0xb3, 0x46, 0x29, 0xce, 0x60, 0xbb, - 0xbf, 0x5e, 0x80, 0x1c, 0x2e, 0xe8, 0x29, 0x18, 0x22, 0x41, 0xb5, 0x15, 0xfa, 0x41, 0x22, 0x84, - 0x91, 0x92, 0x7a, 0x97, 0x05, 0x1c, 0x2b, 0x0c, 0x71, 0xfe, 0x10, 0x03, 0x53, 0xe8, 0x38, 0x7f, - 0x88, 0x96, 0xa7, 0x38, 0xa8, 0x06, 0x13, 0x1e, 0xf7, 0xaf, 0xb0, 0xb9, 0xc7, 0xa6, 0x69, 0xdf, - 0x41, 0xa6, 0xe9, 0x69, 0xe6, 0xfe, 0xcc, 0x90, 0xc0, 0x1d, 0x44, 0xd1, 0x7b, 0x60, 0xa4, 0x1d, - 0x93, 0xf2, 0xfc, 0xf2, 0x5c, 0x44, 0xaa, 0xfc, 0x54, 0xac, 0xf9, 0xfd, 0xae, 0xa5, 0x45, 0x58, - 0xc7, 0x73, 0xff, 0xd4, 0x81, 0xc1, 0x59, 0xaf, 0xb2, 0x1d, 0x6e, 0x6d, 0xd1, 0xa1, 0xa8, 0xb6, - 0xa3, 0xd4, 0xb0, 0xa5, 0x0d, 0xc5, 0xbc, 0x80, 0x63, 0x85, 0x81, 0x36, 0x60, 0x80, 0x2f, 0x78, - 0xb1, 0xec, 0x7e, 0x41, 0xeb, 0x8f, 0x8a, 0xe3, 0x61, 0xd3, 0xa1, 0x9d, 0xf8, 0x8d, 0x69, 0x1e, - 0xc7, 0x33, 0xbd, 0x14, 0x24, 0x6b, 0x51, 0x39, 0x89, 0xfc, 0xa0, 0x36, 0x0b, 0x74, 0xbb, 0x58, - 0x60, 0x34, 0xb0, 0xa0, 0x45, 0xbb, 0xd1, 0xf4, 0x6e, 0x49, 0x76, 0x42, 0xfc, 0xa8, 0x6e, 0xac, - 0xa6, 0x45, 0x58, 0xc7, 0xa3, 0xbb, 0x49, 0xc5, 0x6b, 0x09, 0xbd, 0x44, 0xed, 0x26, 0x73, 0x5e, - 0x0b, 0x53, 0xb8, 0xfb, 0x87, 0x0e, 0x0c, 0xcf, 0x7a, 0xb1, 0x5f, 0xf9, 0x4b, 0x24, 0x9b, 0x3e, - 0x0c, 0xc5, 0x39, 0xaf, 0x52, 0x27, 0xe8, 0x5a, 0xf6, 0x4c, 0x3c, 0x72, 0xe9, 0x89, 0x3c, 0x36, - 0xea, 0x7c, 0xac, 0x73, 0x1a, 0xeb, 0x76, 0x72, 0x76, 0xdf, 0x76, 0x60, 0x7c, 0xae, 0xe1, 0x93, - 0x20, 0x99, 0x23, 0x51, 0xc2, 0x06, 0xae, 0x06, 0x13, 0x15, 0x05, 0x39, 0xcc, 0xd0, 0xb1, 0xc9, - 0x3c, 0x97, 0x21, 0x81, 0x3b, 0x88, 0xa2, 0x2a, 0x9c, 0xe0, 0xb0, 0x74, 0xd1, 0x1c, 0x68, 0xfc, - 0x98, 0xf1, 0x74, 0xce, 0xa4, 0x80, 0xb3, 0x24, 0xdd, 0x9f, 0x38, 0x70, 0x6e, 0xae, 0xd1, 0x8e, - 0x13, 0x12, 0xdd, 0x10, 0xc2, 0x4a, 0x6a, 0xbf, 0xe8, 0xa3, 0x30, 0xd4, 0x94, 0x0e, 0x5d, 0xe7, - 0x2e, 0xf3, 0x9b, 0x89, 0x3b, 0x8a, 0x4d, 0x1b, 0xb3, 0xb6, 0xf9, 0x32, 0xa9, 0x24, 0xab, 0x24, - 0xf1, 0xd2, 0xe8, 0x83, 0x14, 0x86, 0x15, 0x55, 0xd4, 0x82, 0xfe, 0xb8, 0x45, 0x2a, 0xf6, 0x82, - 0xbf, 0x64, 0x1f, 0xca, 0x2d, 0x52, 0x49, 0xc5, 0x3e, 0x73, 0x45, 0x32, 0x4e, 0xee, 0xff, 0x72, - 0xe0, 0x7c, 0x97, 0xfe, 0xae, 0xf8, 0x71, 0x82, 0x5e, 0xea, 0xe8, 0xf3, 0x74, 0x6f, 0x7d, 0xa6, - 0xb5, 0x59, 0x8f, 0x95, 0xbc, 0x90, 0x10, 0xad, 0xbf, 0x1f, 0x83, 0xa2, 0x9f, 0x90, 0xa6, 0xb4, - 0x52, 0x5b, 0xb0, 0x27, 0x75, 0xe9, 0xcb, 0xec, 0x98, 0x0c, 0x01, 0x5c, 0xa2, 0xfc, 0x30, 0x67, - 0xeb, 0x6e, 0xc3, 0xc0, 0x5c, 0xd8, 0x68, 0x37, 0x83, 0xde, 0x02, 0x69, 0x92, 0xdd, 0x16, 0xc9, - 0x6e, 0xa1, 0xec, 0x74, 0xc0, 0x4a, 0xa4, 0x5d, 0xa9, 0x2f, 0xdf, 0xae, 0xe4, 0xfe, 0x0b, 0x07, - 0xe8, 0xaa, 0xaa, 0xfa, 0xc2, 0xd1, 0xc8, 0xc9, 0x71, 0x86, 0x0f, 0xeb, 0xe4, 0xee, 0xec, 0x4d, - 0x8d, 0x29, 0x44, 0x8d, 0xfe, 0x87, 0x61, 0x20, 0x66, 0x27, 0x76, 0xd1, 0x86, 0x05, 0xa9, 0x5e, - 0xf3, 0x73, 0xfc, 0x9d, 0xbd, 0xa9, 0x9e, 0xa2, 0x3a, 0xa7, 0x15, 0x6d, 0xe1, 0x13, 0x15, 0x54, - 0xa9, 0x3e, 0xd8, 0x24, 0x71, 0xec, 0xd5, 0xe4, 0x01, 0x50, 0xe9, 0x83, 0xab, 0x1c, 0x8c, 0x65, - 0xb9, 0xfb, 0x15, 0x07, 0xc6, 0xd4, 0xde, 0x46, 0xb5, 0x7b, 0x74, 0x55, 0xdf, 0x05, 0xf9, 0x4c, - 0x79, 0xb8, 0x8b, 0xc4, 0x11, 0xfb, 0xfc, 0xfe, 0x9b, 0xe4, 0xbb, 0x61, 0xb4, 0x4a, 0x5a, 0x24, - 0xa8, 0x92, 0xa0, 0x42, 0x4f, 0xe7, 0x74, 0x86, 0x0c, 0xcf, 0x4e, 0xd0, 0xe3, 0xe8, 0xbc, 0x06, - 0xc7, 0x06, 0x96, 0xfb, 0x2d, 0x07, 0x1e, 0x54, 0xe4, 0xca, 0x24, 0xc1, 0x24, 0x89, 0x76, 0x55, - 0x14, 0xe7, 0xc1, 0x36, 0xb3, 0x1b, 0x54, 0x3d, 0x4e, 0x22, 0xce, 0xfc, 0x70, 0xbb, 0xd9, 0x08, - 0x57, 0xa6, 0x19, 0x11, 0x2c, 0xa9, 0xb9, 0xbf, 0xda, 0x07, 0xa7, 0xf5, 0x46, 0x2a, 0x01, 0xf3, - 0x49, 0x07, 0x40, 0x8d, 0x00, 0xdd, 0xaf, 0xfb, 0xec, 0xb8, 0xb6, 0x8c, 0x2f, 0x95, 0x8a, 0x20, - 0x05, 0x8e, 0xb1, 0xc6, 0x16, 0xbd, 0x00, 0xa3, 0x3b, 0x74, 0x51, 0x90, 0x55, 0xaa, 0x4d, 0xc4, - 0xa5, 0x3e, 0xd6, 0x8c, 0xa9, 0xbc, 0x8f, 0x79, 0x3d, 0xc5, 0x4b, 0xad, 0x05, 0x1a, 0x30, 0xc6, - 0x06, 0x29, 0x7a, 0x10, 0x1a, 0x8b, 0xf4, 0x4f, 0x22, 0x4c, 0xe6, 0x1f, 0xb2, 0xd8, 0xc7, 0xec, - 0x57, 0x9f, 0x3d, 0x79, 0x7b, 0x6f, 0x6a, 0xcc, 0x00, 0x61, 0xb3, 0x11, 0xee, 0x0b, 0xc0, 0xc6, - 0xc2, 0x0f, 0xda, 0x64, 0x2d, 0x40, 0x8f, 0x4a, 0x13, 0x1e, 0x77, 0xbb, 0x28, 0xc9, 0xa1, 0x9b, - 0xf1, 0xe8, 0x51, 0x77, 0xcb, 0xf3, 0x1b, 0x2c, 0xba, 0x91, 0x62, 0xa9, 0xa3, 0xee, 0x02, 0x83, - 0x62, 0x51, 0xea, 0x4e, 0xc3, 0xe0, 0x1c, 0xed, 0x3b, 0x89, 0x28, 0x5d, 0x3d, 0x28, 0x79, 0xcc, - 0x08, 0x4a, 0x96, 0xc1, 0xc7, 0x1b, 0x70, 0x66, 0x2e, 0x22, 0x5e, 0x42, 0xca, 0xcf, 0xcc, 0xb6, - 0x2b, 0xdb, 0x24, 0xe1, 0x91, 0x5f, 0x31, 0x7a, 0x1f, 0x8c, 0x85, 0x6c, 0xcb, 0x58, 0x09, 0x2b, - 0xdb, 0x7e, 0x50, 0x13, 0x16, 0xd9, 0x33, 0x82, 0xca, 0xd8, 0x9a, 0x5e, 0x88, 0x4d, 0x5c, 0xf7, - 0xdf, 0x17, 0x60, 0x74, 0x2e, 0x0a, 0x03, 0x29, 0x16, 0x8f, 0x61, 0x2b, 0x4b, 0x8c, 0xad, 0xcc, - 0x82, 0x37, 0x54, 0x6f, 0x7f, 0xb7, 0xed, 0x0c, 0xbd, 0xae, 0x44, 0x64, 0x9f, 0xad, 0x13, 0x8a, - 0xc1, 0x97, 0xd1, 0x4e, 0x3f, 0xb6, 0x29, 0x40, 0xdd, 0xff, 0xe0, 0xc0, 0x84, 0x8e, 0x7e, 0x0c, - 0x3b, 0x68, 0x6c, 0xee, 0xa0, 0x57, 0xed, 0xf6, 0xb7, 0xcb, 0xb6, 0xf9, 0xf6, 0xa0, 0xd9, 0x4f, - 0xe6, 0x0a, 0xff, 0x9a, 0x03, 0xa3, 0x37, 0x35, 0x80, 0xe8, 0xac, 0x6d, 0x25, 0xe6, 0x1d, 0x52, - 0xcc, 0xe8, 0xd0, 0x3b, 0x99, 0xdf, 0xd8, 0x68, 0x09, 0x95, 0xfb, 0x71, 0xa5, 0x4e, 0xaa, 0xed, - 0x86, 0xdc, 0xbe, 0xd5, 0x90, 0x96, 0x05, 0x1c, 0x2b, 0x0c, 0xf4, 0x12, 0x9c, 0xac, 0x84, 0x41, - 0xa5, 0x1d, 0x45, 0x24, 0xa8, 0xec, 0xae, 0xb3, 0x2b, 0x14, 0x62, 0x43, 0x9c, 0x16, 0xd5, 0x4e, - 0xce, 0x65, 0x11, 0xee, 0xe4, 0x01, 0x71, 0x27, 0x21, 0xee, 0x4b, 0x88, 0xe9, 0x96, 0x25, 0xce, - 0x63, 0x9a, 0x2f, 0x81, 0x81, 0xb1, 0x2c, 0x47, 0xd7, 0xe0, 0x5c, 0x9c, 0x78, 0x51, 0xe2, 0x07, - 0xb5, 0x79, 0xe2, 0x55, 0x1b, 0x7e, 0x40, 0x8f, 0x12, 0x61, 0x50, 0xe5, 0x9e, 0xc6, 0xbe, 0xd9, - 0xf3, 0xb7, 0xf7, 0xa6, 0xce, 0x95, 0xf3, 0x51, 0x70, 0xb7, 0xba, 0xe8, 0xc3, 0x30, 0x29, 0xbc, - 0x15, 0x5b, 0xed, 0xc6, 0x73, 0xe1, 0x66, 0x7c, 0xc5, 0x8f, 0xe9, 0x31, 0x7f, 0xc5, 0x6f, 0xfa, - 0x09, 0xf3, 0x27, 0x16, 0x67, 0x2f, 0xdc, 0xde, 0x9b, 0x9a, 0x2c, 0x77, 0xc5, 0xc2, 0xfb, 0x50, - 0x40, 0x18, 0xce, 0x72, 0xe1, 0xd7, 0x41, 0x7b, 0x90, 0xd1, 0x9e, 0xbc, 0xbd, 0x37, 0x75, 0x76, - 0x21, 0x17, 0x03, 0x77, 0xa9, 0x49, 0xbf, 0x60, 0xe2, 0x37, 0xc9, 0xab, 0x61, 0x40, 0x58, 0x1c, - 0x8b, 0xf6, 0x05, 0x37, 0x04, 0x1c, 0x2b, 0x0c, 0xf4, 0x72, 0x3a, 0x13, 0xe9, 0x72, 0x11, 0xf1, - 0x28, 0x07, 0x97, 0x70, 0xec, 0x68, 0x72, 0x43, 0xa3, 0xc4, 0x02, 0x2d, 0x0d, 0xda, 0xe8, 0x53, - 0x0e, 0x8c, 0xc6, 0x49, 0xa8, 0xae, 0x3d, 0x88, 0x80, 0x14, 0x0b, 0xd3, 0xbe, 0xac, 0x51, 0xe5, - 0x8a, 0x8f, 0x0e, 0xc1, 0x06, 0x57, 0xf4, 0x4e, 0x18, 0x96, 0x13, 0x38, 0x2e, 0x8d, 0x30, 0x5d, - 0x89, 0x1d, 0xe3, 0xe4, 0xfc, 0x8e, 0x71, 0x5a, 0x4e, 0x55, 0xd9, 0x9b, 0x75, 0x12, 0xb0, 0x90, - 0x5c, 0x4d, 0x95, 0xbd, 0x51, 0x27, 0x01, 0x66, 0x25, 0xee, 0x8f, 0xfb, 0x00, 0x75, 0x0a, 0x3e, - 0xb4, 0x0c, 0x03, 0x5e, 0x25, 0xf1, 0x77, 0x64, 0x38, 0xe2, 0xa3, 0x79, 0x4a, 0x01, 0x1f, 0x40, - 0x4c, 0xb6, 0x08, 0x9d, 0xf7, 0x24, 0x95, 0x96, 0x33, 0xac, 0x2a, 0x16, 0x24, 0x50, 0x08, 0x27, - 0x1b, 0x5e, 0x9c, 0xc8, 0x16, 0x56, 0xe9, 0x87, 0x14, 0xdb, 0xc5, 0xcf, 0xf7, 0xf6, 0xa9, 0x68, - 0x8d, 0xd9, 0x33, 0x74, 0x3d, 0xae, 0x64, 0x09, 0xe1, 0x4e, 0xda, 0xe8, 0xe3, 0x4c, 0xbb, 0xe2, - 0xaa, 0xaf, 0x54, 0x6b, 0x96, 0xad, 0x68, 0x1e, 0x9c, 0xa6, 0xa1, 0x59, 0x09, 0x36, 0x58, 0x63, - 0x89, 0x2e, 0xc2, 0x30, 0x5b, 0x37, 0xa4, 0x4a, 0xf8, 0xea, 0xef, 0x4b, 0x95, 0xe0, 0xb2, 0x2c, - 0xc0, 0x29, 0x8e, 0xa6, 0x65, 0xf0, 0x05, 0xdf, 0x45, 0xcb, 0x40, 0xcf, 0x42, 0xb1, 0x55, 0xf7, - 0x62, 0x19, 0xe2, 0xee, 0x4a, 0xa9, 0xbd, 0x4e, 0x81, 0x4c, 0x34, 0x69, 0xdf, 0x92, 0x01, 0x31, - 0xaf, 0xe0, 0xfe, 0x4b, 0x80, 0xc1, 0xf9, 0x99, 0xc5, 0x0d, 0x2f, 0xde, 0xee, 0xe1, 0x0c, 0x44, - 0x97, 0xa1, 0x50, 0x56, 0xb3, 0x82, 0x54, 0x2a, 0xb1, 0x58, 0x61, 0xa0, 0x00, 0x06, 0xfc, 0x80, - 0x4a, 0x9e, 0xd2, 0xb8, 0x2d, 0x37, 0x84, 0x3a, 0xcf, 0x31, 0x3b, 0xd1, 0x12, 0xa3, 0x8e, 0x05, - 0x17, 0xf4, 0x3a, 0x0c, 0x7b, 0xf2, 0x86, 0x91, 0xd8, 0xff, 0x97, 0x6d, 0xd8, 0xd7, 0x05, 0x49, - 0x3d, 0xc2, 0x49, 0x80, 0x70, 0xca, 0x10, 0x7d, 0xc2, 0x81, 0x11, 0xd9, 0x75, 0x4c, 0xb6, 0x84, - 0xeb, 0x7b, 0xd5, 0x5e, 0x9f, 0x31, 0xd9, 0xe2, 0xe1, 0x2f, 0x1a, 0x00, 0xeb, 0x2c, 0x3b, 0xce, - 0x4c, 0xc5, 0x5e, 0xce, 0x4c, 0xe8, 0x26, 0x0c, 0xdf, 0xf4, 0x93, 0x3a, 0xdb, 0xe1, 0x85, 0xcb, - 0x6d, 0xe1, 0xde, 0x5b, 0x4d, 0xc9, 0xa5, 0x23, 0x76, 0x43, 0x32, 0xc0, 0x29, 0x2f, 0xba, 0x1c, - 0xe8, 0x0f, 0x76, 0x43, 0x8b, 0xed, 0x0d, 0xc3, 0x66, 0x05, 0x56, 0x80, 0x53, 0x1c, 0x3a, 0xc4, - 0xa3, 0xf4, 0x57, 0x99, 0xbc, 0xd2, 0xa6, 0xa2, 0x45, 0x84, 0x34, 0x5a, 0x98, 0x57, 0x92, 0x22, - 0x1f, 0xac, 0x1b, 0x1a, 0x0f, 0x6c, 0x70, 0x54, 0xa2, 0x73, 0xb8, 0x9b, 0xe8, 0x44, 0xaf, 0xf3, - 0x33, 0x1c, 0x3f, 0x4c, 0x88, 0xdd, 0x60, 0xc5, 0xce, 0xf9, 0x86, 0xd3, 0xe4, 0xb7, 0x1e, 0xd2, - 0xdf, 0x58, 0xe3, 0x47, 0x25, 0x46, 0x18, 0x5c, 0xbe, 0xe5, 0x27, 0xe2, 0xae, 0x86, 0x92, 0x18, - 0x6b, 0x0c, 0x8a, 0x45, 0x29, 0x0f, 0xed, 0xa0, 0x93, 0x20, 0x16, 0xbb, 0x80, 0x16, 0xda, 0xc1, - 0xc0, 0x58, 0x96, 0xa3, 0xbf, 0xef, 0x40, 0xb1, 0x1e, 0x86, 0xdb, 0x71, 0x69, 0x8c, 0x4d, 0x0e, - 0x0b, 0x3a, 0xb5, 0x90, 0x38, 0xd3, 0x57, 0x28, 0x59, 0xf3, 0xf6, 0x59, 0x91, 0xc1, 0xee, 0xec, - 0x4d, 0x8d, 0xaf, 0xf8, 0x5b, 0xa4, 0xb2, 0x5b, 0x69, 0x10, 0x06, 0x79, 0xf3, 0x6d, 0x0d, 0x72, - 0x79, 0x87, 0x04, 0x09, 0xe6, 0xad, 0x9a, 0xfc, 0xbc, 0x03, 0x90, 0x12, 0xca, 0xf1, 0xa1, 0x12, - 0x33, 0xea, 0xc0, 0xc2, 0x81, 0xda, 0x68, 0x9a, 0xee, 0x94, 0xfd, 0xd7, 0x0e, 0x8c, 0xd0, 0xce, - 0x49, 0x11, 0xf8, 0x38, 0x0c, 0x24, 0x5e, 0x54, 0x23, 0xd2, 0x8f, 0xa0, 0x3e, 0xc7, 0x06, 0x83, - 0x62, 0x51, 0x8a, 0x02, 0x28, 0x26, 0x5e, 0xbc, 0x2d, 0xd5, 0xf8, 0x25, 0x6b, 0x43, 0x9c, 0x6a, - 0xf0, 0xf4, 0x57, 0x8c, 0x39, 0x1b, 0xf4, 0x04, 0x0c, 0xd1, 0xad, 0x63, 0xc1, 0x8b, 0x65, 0x68, - 0xcf, 0x28, 0x15, 0xe2, 0x0b, 0x02, 0x86, 0x55, 0xa9, 0xfb, 0xeb, 0x05, 0xe8, 0x9f, 0xe7, 0x07, - 0xba, 0x81, 0x38, 0x6c, 0x47, 0x15, 0x22, 0x14, 0x7b, 0x0b, 0x73, 0x9a, 0xd2, 0x2d, 0x33, 0x9a, - 0xda, 0x91, 0x8a, 0xfd, 0xc6, 0x82, 0x17, 0xfa, 0xb2, 0x03, 0xe3, 0x49, 0xe4, 0x05, 0xf1, 0x16, - 0xf3, 0xd8, 0xf8, 0x61, 0x20, 0x86, 0xc8, 0xc2, 0x2c, 0xdc, 0x30, 0xe8, 0x96, 0x13, 0xd2, 0x4a, - 0x1d, 0x47, 0x66, 0x19, 0xce, 0xb4, 0xc1, 0xfd, 0x0d, 0x07, 0x20, 0x6d, 0x3d, 0xfa, 0x9c, 0x03, - 0x63, 0x9e, 0x1e, 0x52, 0x2a, 0xc6, 0x68, 0xcd, 0x9e, 0x7b, 0x97, 0x91, 0xe5, 0xb6, 0x0c, 0x03, - 0x84, 0x4d, 0xc6, 0xee, 0x7b, 0xa0, 0xc8, 0x56, 0x07, 0x3b, 0xf4, 0x08, 0xdb, 0x77, 0xd6, 0xd8, - 0x25, 0x6d, 0xe2, 0x58, 0x61, 0xb8, 0x2f, 0xc1, 0xf8, 0xe5, 0x5b, 0xa4, 0xd2, 0x4e, 0xc2, 0x88, - 0x5b, 0xfe, 0xbb, 0x5c, 0x21, 0x72, 0x0e, 0x75, 0x85, 0xe8, 0xbb, 0x0e, 0x8c, 0x68, 0xf1, 0x85, - 0x74, 0xa7, 0xae, 0xcd, 0x95, 0xb9, 0x81, 0x43, 0x0c, 0xd5, 0xb2, 0x95, 0x08, 0x46, 0x4e, 0x32, - 0xdd, 0x46, 0x14, 0x08, 0xa7, 0x0c, 0xef, 0x12, 0xff, 0xe7, 0xfe, 0xbe, 0x03, 0x67, 0x72, 0x83, - 0x21, 0xef, 0x73, 0xb3, 0x0d, 0x1f, 0x7c, 0xa1, 0x07, 0x1f, 0xfc, 0x6f, 0x3b, 0x90, 0x52, 0xa2, - 0xa2, 0x68, 0x33, 0x6d, 0xb9, 0x26, 0x8a, 0x04, 0x27, 0x51, 0x8a, 0x5e, 0x87, 0x73, 0xe6, 0x17, - 0x3c, 0xa4, 0xbf, 0x85, 0x1f, 0x4e, 0xf3, 0x29, 0xe1, 0x6e, 0x2c, 0xdc, 0xaf, 0x3b, 0x50, 0x5c, - 0xf4, 0xda, 0x35, 0xd2, 0x93, 0xb9, 0x8c, 0xca, 0xb1, 0x88, 0x78, 0x8d, 0x44, 0x1e, 0x1d, 0x84, - 0x1c, 0xc3, 0x02, 0x86, 0x55, 0x29, 0x9a, 0x81, 0xe1, 0xb0, 0x45, 0x0c, 0x17, 0xe2, 0xa3, 0x72, - 0xf4, 0xd6, 0x64, 0x01, 0xdd, 0x76, 0x18, 0x77, 0x05, 0xc1, 0x69, 0x2d, 0xf7, 0x1b, 0x03, 0x30, - 0xa2, 0x5d, 0x9b, 0xa1, 0xba, 0x40, 0x44, 0x5a, 0x61, 0x56, 0x5f, 0xa6, 0x13, 0x06, 0xb3, 0x12, - 0xba, 0x06, 0x23, 0xb2, 0xe3, 0xc7, 0x5c, 0x6c, 0x19, 0x6b, 0x10, 0x0b, 0x38, 0x56, 0x18, 0x68, - 0x0a, 0x8a, 0x55, 0xd2, 0x4a, 0xea, 0xac, 0x79, 0xfd, 0x3c, 0x76, 0x70, 0x9e, 0x02, 0x30, 0x87, - 0x53, 0x84, 0x2d, 0x92, 0x54, 0xea, 0xcc, 0x32, 0x2c, 0x82, 0x0b, 0x17, 0x28, 0x00, 0x73, 0x78, - 0x8e, 0x17, 0xb3, 0x78, 0xf4, 0x5e, 0xcc, 0x01, 0xcb, 0x5e, 0x4c, 0xd4, 0x82, 0x53, 0x71, 0x5c, - 0x5f, 0x8f, 0xfc, 0x1d, 0x2f, 0x21, 0xe9, 0xec, 0x1b, 0x3c, 0x08, 0x9f, 0x73, 0xec, 0x22, 0x7b, - 0xf9, 0x4a, 0x96, 0x0a, 0xce, 0x23, 0x8d, 0xca, 0x70, 0xc6, 0x0f, 0x62, 0x52, 0x69, 0x47, 0x64, - 0xa9, 0x16, 0x84, 0x11, 0xb9, 0x12, 0xc6, 0x94, 0x9c, 0xb8, 0x86, 0xab, 0xc2, 0x6d, 0x97, 0xf2, - 0x90, 0x70, 0x7e, 0x5d, 0xb4, 0x08, 0x27, 0xab, 0x7e, 0xec, 0x6d, 0x36, 0x48, 0xb9, 0xbd, 0xd9, - 0x0c, 0xf9, 0xd1, 0x7c, 0x98, 0x11, 0x7c, 0x50, 0xda, 0x91, 0xe6, 0xb3, 0x08, 0xb8, 0xb3, 0x0e, - 0x7a, 0x16, 0x46, 0x63, 0x3f, 0xa8, 0x35, 0xc8, 0x6c, 0xe4, 0x05, 0x95, 0xba, 0xb8, 0xbf, 0xab, - 0xec, 0xed, 0x65, 0xad, 0x0c, 0x1b, 0x98, 0x6c, 0xcd, 0xf3, 0x3a, 0x19, 0x6d, 0x50, 0x60, 0x8b, - 0x52, 0x34, 0x03, 0x27, 0x64, 0x1f, 0xca, 0xdb, 0x7e, 0x6b, 0x63, 0xa5, 0xcc, 0xb4, 0xc2, 0xa1, - 0x34, 0x98, 0x68, 0xc9, 0x2c, 0xc6, 0x59, 0x7c, 0xf7, 0x87, 0x0e, 0x8c, 0xea, 0xd1, 0xf2, 0x54, - 0x59, 0x87, 0xfa, 0xfc, 0x42, 0x99, 0x6f, 0x27, 0xf6, 0x94, 0x86, 0x2b, 0x8a, 0x66, 0x7a, 0xde, - 0x4e, 0x61, 0x58, 0xe3, 0xd9, 0xc3, 0xdd, 0xf7, 0x47, 0xa1, 0xb8, 0x15, 0x52, 0x9d, 0xa6, 0xcf, - 0xb4, 0xf5, 0x2f, 0x50, 0x20, 0xe6, 0x65, 0xee, 0x7f, 0x73, 0xe0, 0x6c, 0xfe, 0x45, 0x80, 0x9f, - 0x85, 0x4e, 0x5e, 0x02, 0xa0, 0x5d, 0x31, 0xf6, 0x05, 0x2d, 0xfb, 0x85, 0x2c, 0xc1, 0x1a, 0x56, - 0x6f, 0xdd, 0xfe, 0x57, 0x05, 0xd0, 0x78, 0xa2, 0x2f, 0x38, 0x30, 0x46, 0xd9, 0x2e, 0x47, 0x9b, - 0x46, 0x6f, 0xd7, 0xec, 0xf4, 0x56, 0x91, 0x4d, 0x5d, 0x1a, 0x06, 0x18, 0x9b, 0xcc, 0xd1, 0x3b, - 0x61, 0xd8, 0xab, 0x56, 0x23, 0x12, 0xc7, 0xca, 0x39, 0xc8, 0x0c, 0x5e, 0x33, 0x12, 0x88, 0xd3, - 0x72, 0x2a, 0x87, 0xeb, 0xd5, 0xad, 0x98, 0x8a, 0x36, 0x21, 0xfb, 0x95, 0x1c, 0xa6, 0x4c, 0x28, - 0x1c, 0x2b, 0x0c, 0x74, 0x1d, 0xce, 0x56, 0xbd, 0xc4, 0xe3, 0x2a, 0x20, 0x89, 0xd6, 0xa3, 0x30, - 0x21, 0x15, 0xb6, 0x6f, 0xf0, 0x58, 0x92, 0x0b, 0xa2, 0xee, 0xd9, 0xf9, 0x5c, 0x2c, 0xdc, 0xa5, - 0xb6, 0xfb, 0x2b, 0xfd, 0x60, 0xf6, 0x09, 0x55, 0xe1, 0xc4, 0x76, 0xb4, 0x39, 0xc7, 0x62, 0x36, - 0x0e, 0x13, 0x3b, 0xc1, 0x62, 0x1a, 0x96, 0x4d, 0x0a, 0x38, 0x4b, 0x52, 0x70, 0x59, 0x26, 0xbb, - 0x89, 0xb7, 0x79, 0xe8, 0xc8, 0x89, 0x65, 0x93, 0x02, 0xce, 0x92, 0x44, 0xef, 0x81, 0x91, 0xed, - 0x68, 0x53, 0xee, 0x1e, 0xd9, 0x28, 0x9d, 0xe5, 0xb4, 0x08, 0xeb, 0x78, 0xf4, 0xd3, 0x6c, 0x47, - 0x9b, 0x74, 0xc3, 0x96, 0x39, 0x26, 0xd4, 0xa7, 0x59, 0x16, 0x70, 0xac, 0x30, 0x50, 0x0b, 0xd0, - 0xb6, 0x1c, 0x3d, 0x15, 0xa1, 0x22, 0x36, 0xb9, 0xde, 0x03, 0x5c, 0xd8, 0xcd, 0x81, 0xe5, 0x0e, - 0x3a, 0x38, 0x87, 0x36, 0x7a, 0x01, 0xce, 0x6d, 0x47, 0x9b, 0x42, 0x8f, 0x59, 0x8f, 0xfc, 0xa0, - 0xe2, 0xb7, 0x8c, 0x7c, 0x12, 0x53, 0xa2, 0xb9, 0xe7, 0x96, 0xf3, 0xd1, 0x70, 0xb7, 0xfa, 0xee, - 0xef, 0xf4, 0x03, 0xbb, 0x09, 0x4b, 0xc5, 0x74, 0x93, 0x24, 0xf5, 0xb0, 0x9a, 0x55, 0xcd, 0x56, - 0x19, 0x14, 0x8b, 0x52, 0x19, 0x1f, 0x5b, 0xe8, 0x12, 0x1f, 0x7b, 0x13, 0x06, 0xeb, 0xc4, 0xab, - 0x92, 0x48, 0x1a, 0x37, 0x57, 0xec, 0xdc, 0xdd, 0xbd, 0xc2, 0x88, 0xa6, 0x16, 0x02, 0xfe, 0x3b, - 0xc6, 0x92, 0x1b, 0x7a, 0x2f, 0x8c, 0x53, 0x1d, 0x2b, 0x6c, 0x27, 0xd2, 0x3f, 0xc1, 0x8d, 0x9b, - 0x6c, 0xb3, 0xdf, 0x30, 0x4a, 0x70, 0x06, 0x13, 0xcd, 0xc3, 0x84, 0xf0, 0x25, 0x28, 0xa3, 0xa9, - 0x18, 0x58, 0x95, 0xe8, 0xa3, 0x9c, 0x29, 0xc7, 0x1d, 0x35, 0x58, 0x7c, 0x63, 0x58, 0xe5, 0xee, - 0x64, 0x3d, 0xbe, 0x31, 0xac, 0xee, 0x62, 0x56, 0x82, 0x5e, 0x85, 0x21, 0xfa, 0x77, 0x21, 0x0a, - 0x9b, 0xc2, 0x6c, 0xb4, 0x6e, 0x67, 0x74, 0x28, 0x0f, 0x71, 0x88, 0x65, 0xba, 0xe7, 0xac, 0xe0, - 0x82, 0x15, 0x3f, 0x7a, 0x94, 0xd2, 0xb7, 0xcb, 0xeb, 0x24, 0xf2, 0xb7, 0x76, 0x99, 0x3e, 0x33, - 0x94, 0x1e, 0xa5, 0x96, 0x3a, 0x30, 0x70, 0x4e, 0x2d, 0xf7, 0x0b, 0x05, 0x18, 0xd5, 0x2f, 0x54, - 0xdf, 0x2d, 0x68, 0x3a, 0x4e, 0x27, 0x05, 0x3f, 0x38, 0x5f, 0xb1, 0xd0, 0xed, 0xbb, 0x4d, 0x88, - 0x3a, 0xf4, 0x7b, 0x6d, 0xa1, 0xc8, 0x5a, 0xb1, 0xcf, 0xb1, 0x1e, 0xb7, 0x93, 0x3a, 0xbf, 0x79, - 0xc7, 0xc2, 0x99, 0x19, 0x07, 0xf7, 0xd3, 0x7d, 0x30, 0x24, 0x0b, 0xd1, 0xa7, 0x1c, 0x80, 0x34, - 0x6e, 0x4c, 0x88, 0xd2, 0x75, 0x1b, 0x41, 0x45, 0x7a, 0xc8, 0x9b, 0x66, 0xe6, 0x57, 0x70, 0xac, - 0xf1, 0x45, 0x09, 0x0c, 0x84, 0xb4, 0x71, 0x97, 0xec, 0x25, 0x05, 0x58, 0xa3, 0x8c, 0x2f, 0x31, - 0xee, 0xa9, 0x45, 0x8f, 0xc1, 0xb0, 0xe0, 0x45, 0x0f, 0xa7, 0x9b, 0x32, 0x9c, 0xd1, 0x9e, 0xf5, - 0x5b, 0x45, 0x48, 0xa6, 0x67, 0x4d, 0x05, 0xc2, 0x29, 0x43, 0xf7, 0x69, 0x18, 0x37, 0x17, 0x03, - 0x3d, 0xac, 0x6c, 0xee, 0x26, 0x84, 0x9b, 0x42, 0x46, 0xf9, 0x61, 0x65, 0x96, 0x02, 0x30, 0x87, - 0xbb, 0x3f, 0x70, 0x00, 0x52, 0xf1, 0xd2, 0x83, 0xf7, 0xe1, 0x51, 0xdd, 0x8e, 0xd7, 0xed, 0x44, - 0xf8, 0x71, 0x18, 0x66, 0xff, 0xb0, 0x85, 0xde, 0x67, 0x2b, 0xf8, 0x20, 0x6d, 0xa7, 0x58, 0xea, - 0x4c, 0xd7, 0xb8, 0x2e, 0x19, 0xe1, 0x94, 0xa7, 0x1b, 0xc2, 0x44, 0x16, 0x1b, 0x7d, 0x08, 0x46, - 0x63, 0xb9, 0xad, 0xa6, 0xd7, 0x03, 0x7b, 0xdc, 0x7e, 0xb9, 0xeb, 0x4f, 0xab, 0x8e, 0x0d, 0x62, - 0xee, 0x1a, 0x0c, 0x58, 0x1d, 0x42, 0xf7, 0x3b, 0x0e, 0x0c, 0x33, 0xef, 0x6b, 0x2d, 0xf2, 0x9a, - 0x69, 0x95, 0xbe, 0x7d, 0x46, 0x3d, 0x86, 0x41, 0x6e, 0x3e, 0x90, 0x51, 0x4b, 0x16, 0xa4, 0x0c, - 0xcf, 0xe5, 0x97, 0x4a, 0x19, 0x6e, 0xa7, 0x88, 0xb1, 0xe4, 0xe4, 0x7e, 0xa6, 0x00, 0x03, 0x4b, - 0x41, 0xab, 0xfd, 0x57, 0x3e, 0x9f, 0xdc, 0x2a, 0xf4, 0x2f, 0x25, 0xa4, 0x69, 0xa6, 0x3d, 0x1c, - 0x9d, 0x7d, 0x4c, 0x4f, 0x79, 0x58, 0x32, 0x53, 0x1e, 0x62, 0xef, 0xa6, 0x0c, 0xea, 0x13, 0xe6, - 0xeb, 0xf4, 0x8a, 0xe4, 0x53, 0x30, 0xbc, 0xe2, 0x6d, 0x92, 0xc6, 0x32, 0xd9, 0x65, 0x17, 0x1a, - 0x79, 0x80, 0x89, 0x93, 0xda, 0x1c, 0x8c, 0x60, 0x90, 0x79, 0x18, 0x67, 0xd8, 0x6a, 0x31, 0xd0, - 0x13, 0x09, 0x49, 0x73, 0x46, 0x39, 0xe6, 0x89, 0x44, 0xcb, 0x17, 0xa5, 0x61, 0xb9, 0xd3, 0x30, - 0x92, 0x52, 0xe9, 0x81, 0xeb, 0x4f, 0x0b, 0x30, 0x66, 0x58, 0xe1, 0x0d, 0xdf, 0xa4, 0x73, 0x57, - 0xdf, 0xa4, 0xe1, 0x2b, 0x2c, 0xdc, 0x6f, 0x5f, 0x61, 0xdf, 0xf1, 0xfb, 0x0a, 0xcd, 0x8f, 0xd4, - 0xdf, 0xd3, 0x47, 0x6a, 0x40, 0xff, 0x8a, 0x1f, 0x6c, 0xf7, 0x26, 0x67, 0xe2, 0x4a, 0xd8, 0xea, - 0x90, 0x33, 0x65, 0x0a, 0xc4, 0xbc, 0x4c, 0x6a, 0x2e, 0x7d, 0xf9, 0x9a, 0x8b, 0xfb, 0x29, 0x07, - 0x46, 0x57, 0xbd, 0xc0, 0xdf, 0x22, 0x71, 0xc2, 0xe6, 0x55, 0x72, 0xa4, 0x17, 0xdb, 0x46, 0xbb, - 0xa4, 0x68, 0x78, 0xd3, 0x81, 0x93, 0xab, 0xa4, 0x19, 0xfa, 0xaf, 0x7a, 0x69, 0xcc, 0x2c, 0x6d, - 0x7b, 0xdd, 0x4f, 0x44, 0x88, 0xa0, 0x6a, 0xfb, 0x15, 0x3f, 0xc1, 0x14, 0x7e, 0x17, 0x13, 0x33, - 0xbb, 0x32, 0x42, 0x0f, 0x68, 0xda, 0x65, 0xcb, 0x34, 0x1a, 0x56, 0x16, 0xe0, 0x14, 0xc7, 0xfd, - 0x5d, 0x07, 0x06, 0x79, 0x23, 0x54, 0x98, 0xb1, 0xd3, 0x85, 0x76, 0x1d, 0x8a, 0xac, 0x9e, 0x98, - 0xd5, 0x8b, 0x16, 0xd4, 0x1f, 0x4a, 0x8e, 0xaf, 0x41, 0xf6, 0x2f, 0xe6, 0x0c, 0xd8, 0xb1, 0xc5, - 0xbb, 0x35, 0xa3, 0xc2, 0x85, 0xd3, 0x63, 0x0b, 0x83, 0x62, 0x51, 0xea, 0x7e, 0xa3, 0x0f, 0x86, - 0x54, 0x66, 0x32, 0x96, 0x37, 0x22, 0x08, 0xc2, 0xc4, 0xe3, 0x61, 0x18, 0x5c, 0x56, 0x7f, 0xc8, - 0x5e, 0x66, 0xb4, 0xe9, 0x99, 0x94, 0x3a, 0x77, 0x2d, 0xaa, 0x43, 0xa8, 0x56, 0x82, 0xf5, 0x46, - 0xa0, 0x8f, 0xc1, 0x40, 0x83, 0x4a, 0x1f, 0x29, 0xba, 0xaf, 0x5b, 0x6c, 0x0e, 0x13, 0x6b, 0xa2, - 0x25, 0x6a, 0x84, 0x38, 0x10, 0x0b, 0xae, 0x93, 0xef, 0x87, 0x89, 0x6c, 0xab, 0xef, 0x76, 0x17, - 0x74, 0x58, 0xbf, 0x49, 0xfa, 0xd7, 0x85, 0xf4, 0x3c, 0x78, 0x55, 0xf7, 0x79, 0x18, 0x59, 0x25, - 0x49, 0xe4, 0x57, 0x18, 0x81, 0xbb, 0x4d, 0xae, 0x9e, 0xf4, 0x87, 0xcf, 0xb2, 0xc9, 0x4a, 0x69, - 0xc6, 0xe8, 0x75, 0x80, 0x56, 0x14, 0xd2, 0xf3, 0x2b, 0x69, 0xcb, 0x8f, 0x6d, 0x41, 0x1f, 0x5e, - 0x57, 0x34, 0xb9, 0x37, 0x3c, 0xfd, 0x8d, 0x35, 0x7e, 0xee, 0x8b, 0x50, 0x5c, 0x6d, 0x27, 0xe4, - 0x56, 0x0f, 0x12, 0xeb, 0xa0, 0xc9, 0x11, 0xdc, 0x0f, 0xc1, 0x28, 0xa3, 0x7d, 0x25, 0x6c, 0xd0, - 0x6d, 0x95, 0x0e, 0x4d, 0x93, 0xfe, 0xce, 0xfa, 0x2b, 0x18, 0x12, 0xe6, 0x65, 0x74, 0xc9, 0xd4, - 0xc3, 0x46, 0x55, 0x5d, 0x14, 0x53, 0x13, 0xe2, 0x0a, 0x83, 0x62, 0x51, 0xea, 0x7e, 0xb2, 0x00, - 0x23, 0xac, 0xa2, 0x10, 0x37, 0xbb, 0x30, 0x58, 0xe7, 0x7c, 0xc4, 0x18, 0x5a, 0x88, 0x2f, 0xd3, - 0x5b, 0xaf, 0x9d, 0xe5, 0x38, 0x00, 0x4b, 0x7e, 0x94, 0xf5, 0x4d, 0xcf, 0x4f, 0x28, 0xeb, 0xc2, - 0xd1, 0xb2, 0xbe, 0xc1, 0xd9, 0x60, 0xc9, 0xcf, 0xfd, 0x25, 0x60, 0x17, 0xb0, 0x17, 0x1a, 0x5e, - 0x8d, 0x8f, 0x5c, 0xb8, 0x4d, 0xaa, 0x42, 0xe6, 0x6a, 0x23, 0x47, 0xa1, 0x58, 0x94, 0xf2, 0x4b, - 0xad, 0x49, 0xe4, 0xab, 0xc8, 0x6c, 0xed, 0x52, 0x2b, 0x03, 0xcb, 0x38, 0xfc, 0xaa, 0xfb, 0x95, - 0x02, 0x00, 0xcb, 0x63, 0xc7, 0xef, 0x4d, 0xff, 0x82, 0x0c, 0xa2, 0x32, 0x7d, 0x9c, 0x2a, 0x88, - 0x8a, 0xdd, 0x0c, 0xd7, 0x83, 0xa7, 0xf4, 0x0b, 0x13, 0x85, 0xfd, 0x2f, 0x4c, 0xa0, 0x16, 0x0c, - 0x86, 0xed, 0x84, 0xea, 0xaa, 0x62, 0xb3, 0xb7, 0xe0, 0xe2, 0x5f, 0xe3, 0x04, 0xf9, 0x2d, 0x03, - 0xf1, 0x03, 0x4b, 0x36, 0xe8, 0x59, 0x18, 0x6a, 0x45, 0x61, 0x8d, 0xee, 0xdd, 0x62, 0x7b, 0x7f, - 0x48, 0xea, 0x43, 0xeb, 0x02, 0x7e, 0x47, 0xfb, 0x1f, 0x2b, 0x6c, 0xf7, 0x8f, 0x27, 0xf8, 0xb8, - 0x88, 0xb9, 0x37, 0x09, 0x05, 0x5f, 0x5a, 0xa6, 0x40, 0x90, 0x28, 0x2c, 0xcd, 0xe3, 0x82, 0x5f, - 0x55, 0xeb, 0xaa, 0xd0, 0x75, 0x5d, 0xbd, 0x07, 0x46, 0xaa, 0x7e, 0xdc, 0x6a, 0x78, 0xbb, 0x57, - 0x73, 0xcc, 0x82, 0xf3, 0x69, 0x11, 0xd6, 0xf1, 0xd0, 0x53, 0xe2, 0x7a, 0x4c, 0xbf, 0x61, 0x0a, - 0x92, 0xd7, 0x63, 0xd2, 0x7b, 0xf9, 0xfc, 0x66, 0x4c, 0x36, 0x7f, 0x41, 0xb1, 0xe7, 0xfc, 0x05, - 0x59, 0x4d, 0x6c, 0xe0, 0xf8, 0x35, 0xb1, 0xf7, 0xc1, 0x98, 0xfc, 0xc9, 0xd4, 0xa3, 0xd2, 0x69, - 0xd6, 0x7a, 0x65, 0x06, 0xdf, 0xd0, 0x0b, 0xb1, 0x89, 0x9b, 0x4e, 0xda, 0xc1, 0x5e, 0x27, 0xed, - 0x25, 0x80, 0xcd, 0xb0, 0x1d, 0x54, 0xbd, 0x68, 0x77, 0x69, 0x5e, 0x04, 0xd3, 0x2a, 0xc5, 0x6f, - 0x56, 0x95, 0x60, 0x0d, 0x4b, 0x9f, 0xe8, 0xc3, 0x77, 0x99, 0xe8, 0x1f, 0x82, 0x61, 0x16, 0x78, - 0x4c, 0xaa, 0x33, 0x89, 0x88, 0x7e, 0x3a, 0x48, 0x34, 0x67, 0x1a, 0x0f, 0x29, 0x89, 0xe0, 0x94, - 0x1e, 0xfa, 0x30, 0xc0, 0x96, 0x1f, 0xf8, 0x71, 0x9d, 0x51, 0x1f, 0x39, 0x30, 0x75, 0xd5, 0xcf, - 0x05, 0x45, 0x05, 0x6b, 0x14, 0xd1, 0x4b, 0x70, 0x92, 0xc4, 0x89, 0xdf, 0xf4, 0x12, 0x52, 0x55, - 0xf7, 0x4d, 0x4b, 0xcc, 0x96, 0xa9, 0x42, 0xbf, 0x2f, 0x67, 0x11, 0xee, 0xe4, 0x01, 0x71, 0x27, - 0x21, 0x63, 0x45, 0x4e, 0x1e, 0x64, 0x45, 0xa2, 0xff, 0xe9, 0xc0, 0xc9, 0x88, 0xf0, 0x90, 0x98, - 0x58, 0x35, 0xec, 0x0c, 0x13, 0xc7, 0x15, 0x1b, 0x29, 0xe2, 0x55, 0x2e, 0x18, 0x9c, 0xe5, 0xc2, - 0x15, 0x17, 0x22, 0x7b, 0xdf, 0x51, 0x7e, 0x27, 0x0f, 0xf8, 0xe6, 0xdb, 0x53, 0x53, 0x9d, 0x4f, - 0x15, 0x28, 0xe2, 0x74, 0xe5, 0xfd, 0xed, 0xb7, 0xa7, 0x26, 0xe4, 0xef, 0x74, 0xd0, 0x3a, 0x3a, - 0x49, 0xb7, 0xd5, 0x56, 0x58, 0x5d, 0x5a, 0x17, 0x61, 0x6a, 0x6a, 0x5b, 0x5d, 0xa7, 0x40, 0xcc, - 0xcb, 0xd0, 0x13, 0x30, 0x54, 0xf5, 0x48, 0x33, 0x0c, 0x54, 0xb2, 0x5f, 0xa6, 0xcd, 0xcf, 0x0b, - 0x18, 0x56, 0xa5, 0xf4, 0x0c, 0x11, 0x88, 0x2d, 0xa5, 0x74, 0xde, 0xd6, 0x19, 0x42, 0x6e, 0x52, - 0x9c, 0xab, 0xfc, 0x85, 0x15, 0x27, 0xd4, 0x80, 0x01, 0x9f, 0x19, 0x2a, 0x44, 0x24, 0xac, 0x05, - 0xeb, 0x08, 0x37, 0x7c, 0xc8, 0x38, 0x58, 0x26, 0xfa, 0x05, 0x0f, 0x7d, 0xaf, 0x39, 0x71, 0x3c, - 0x7b, 0xcd, 0x13, 0x30, 0x54, 0xa9, 0xfb, 0x8d, 0x6a, 0x44, 0x82, 0xd2, 0x04, 0x3b, 0xb1, 0xb3, - 0x91, 0x98, 0x13, 0x30, 0xac, 0x4a, 0xd1, 0x5f, 0x83, 0xb1, 0xb0, 0x9d, 0x30, 0xd1, 0x42, 0xc7, - 0x29, 0x2e, 0x9d, 0x64, 0xe8, 0x2c, 0xae, 0x69, 0x4d, 0x2f, 0xc0, 0x26, 0x1e, 0x15, 0xf1, 0xf5, - 0x30, 0x66, 0x69, 0x8b, 0x98, 0x88, 0x3f, 0x6b, 0x8a, 0xf8, 0x2b, 0x5a, 0x19, 0x36, 0x30, 0xd1, - 0xd7, 0x1c, 0x38, 0xd9, 0xcc, 0x1e, 0xe0, 0x4a, 0xe7, 0xd8, 0xc8, 0x94, 0x6d, 0x28, 0xfa, 0x19, - 0xd2, 0x3c, 0x22, 0xbd, 0x03, 0x8c, 0x3b, 0x1b, 0xc1, 0x12, 0x88, 0xc5, 0xbb, 0x41, 0xa5, 0x1e, - 0x85, 0x81, 0xd9, 0xbc, 0x07, 0x6d, 0xdd, 0x8b, 0x63, 0x6b, 0x3b, 0x8f, 0xc5, 0xec, 0x83, 0xb7, - 0xf7, 0xa6, 0xce, 0xe4, 0x16, 0xe1, 0xfc, 0x46, 0x4d, 0xce, 0xc3, 0xd9, 0x7c, 0xf9, 0x70, 0xb7, - 0x13, 0x47, 0x9f, 0x7e, 0xe2, 0x58, 0x80, 0x07, 0xbb, 0x36, 0x8a, 0xee, 0x34, 0x52, 0xdb, 0x74, - 0xcc, 0x9d, 0xa6, 0x43, 0x3b, 0x1c, 0x87, 0x51, 0xfd, 0x6d, 0x0b, 0xf7, 0xff, 0xf4, 0x01, 0xa4, - 0x76, 0x72, 0xe4, 0xc1, 0x38, 0xb7, 0xc9, 0x2f, 0xcd, 0x1f, 0xfa, 0x46, 0xff, 0x9c, 0x41, 0x00, - 0x67, 0x08, 0xa2, 0x26, 0x20, 0x0e, 0xe1, 0xbf, 0x0f, 0xe3, 0x5b, 0x65, 0xae, 0xc8, 0xb9, 0x0e, - 0x22, 0x38, 0x87, 0x30, 0xed, 0x51, 0x12, 0x6e, 0x93, 0xe0, 0x1a, 0x5e, 0x39, 0x4c, 0xd6, 0x08, - 0xee, 0x8d, 0x33, 0x08, 0xe0, 0x0c, 0x41, 0xe4, 0xc2, 0x00, 0xb3, 0xcd, 0xc8, 0xd8, 0x71, 0x26, - 0x5e, 0x98, 0xa6, 0x11, 0x63, 0x51, 0x82, 0xbe, 0xe2, 0xc0, 0xb8, 0x4c, 0x7e, 0xc1, 0xac, 0xa1, - 0x32, 0x6a, 0xfc, 0x9a, 0x2d, 0x3f, 0xc7, 0x65, 0x9d, 0x7a, 0x1a, 0x93, 0x69, 0x80, 0x63, 0x9c, - 0x69, 0x84, 0xfb, 0x02, 0x9c, 0xca, 0xa9, 0x6e, 0xe5, 0x44, 0xfb, 0x5d, 0x07, 0x46, 0xb4, 0x9c, - 0x8c, 0xe8, 0x75, 0x18, 0x0e, 0xcb, 0xd6, 0x03, 0x01, 0xd7, 0xca, 0x1d, 0x81, 0x80, 0x0a, 0x84, - 0x53, 0x86, 0xbd, 0xc4, 0x2f, 0xe6, 0x26, 0x90, 0xbc, 0xcf, 0xcd, 0x3e, 0x70, 0xfc, 0xe2, 0xaf, - 0x14, 0x21, 0xa5, 0x74, 0xc0, 0xa4, 0x2c, 0x69, 0xb4, 0x63, 0x61, 0xdf, 0x68, 0xc7, 0x2a, 0x9c, - 0xf0, 0x98, 0x2f, 0xf9, 0x90, 0xa9, 0x58, 0x78, 0x4a, 0x5e, 0x93, 0x02, 0xce, 0x92, 0xa4, 0x5c, - 0xe2, 0xb4, 0x2a, 0xe3, 0xd2, 0x7f, 0x60, 0x2e, 0x65, 0x93, 0x02, 0xce, 0x92, 0x44, 0x2f, 0x41, - 0xa9, 0xc2, 0xee, 0x0e, 0xf3, 0x3e, 0x2e, 0x6d, 0x5d, 0x0d, 0x93, 0xf5, 0x88, 0xc4, 0x24, 0x48, - 0x44, 0xd2, 0xb5, 0x47, 0xc4, 0x28, 0x94, 0xe6, 0xba, 0xe0, 0xe1, 0xae, 0x14, 0xe8, 0x31, 0x85, - 0x39, 0xa3, 0xfd, 0x64, 0x97, 0x09, 0x11, 0xe1, 0xa5, 0x57, 0xc7, 0x94, 0xb2, 0x5e, 0x88, 0x4d, - 0x5c, 0xf4, 0xcb, 0x0e, 0x8c, 0x35, 0xa4, 0xb9, 0x1e, 0xb7, 0x1b, 0x32, 0x83, 0x28, 0xb6, 0x32, - 0xfd, 0x56, 0x74, 0xca, 0x5c, 0x97, 0x30, 0x40, 0xd8, 0xe4, 0x9d, 0xcd, 0x8b, 0x33, 0xd4, 0x63, - 0x5e, 0x9c, 0x1f, 0x38, 0x30, 0x91, 0xe5, 0x86, 0xb6, 0xe1, 0xe1, 0xa6, 0x17, 0x6d, 0x2f, 0x05, - 0x5b, 0x11, 0xbb, 0x23, 0x92, 0xf0, 0xc9, 0x30, 0xb3, 0x95, 0x90, 0x68, 0xde, 0xdb, 0xe5, 0xee, - 0xcf, 0xa2, 0x7a, 0x82, 0xea, 0xe1, 0xd5, 0xfd, 0x90, 0xf1, 0xfe, 0xb4, 0x50, 0x19, 0xce, 0x50, - 0x04, 0x96, 0x36, 0xcf, 0x0f, 0x83, 0x94, 0x49, 0x81, 0x31, 0x51, 0x71, 0x8a, 0xab, 0x79, 0x48, - 0x38, 0xbf, 0xae, 0x7b, 0x19, 0x06, 0xf8, 0x95, 0xbd, 0x7b, 0xf2, 0x1f, 0xb9, 0xff, 0xb6, 0x00, - 0x52, 0x31, 0xfc, 0xab, 0xed, 0x8e, 0xa3, 0x9b, 0x68, 0xc4, 0x4c, 0x4a, 0xc2, 0xda, 0xc1, 0x36, - 0x51, 0x91, 0xa0, 0x52, 0x94, 0x50, 0x8d, 0x99, 0xdc, 0xf2, 0x93, 0xb9, 0xb0, 0x2a, 0x6d, 0x1c, - 0x4c, 0x63, 0xbe, 0x2c, 0x60, 0x58, 0x95, 0xba, 0x9f, 0x72, 0x60, 0x8c, 0xf6, 0xb2, 0xd1, 0x20, - 0x8d, 0x72, 0x42, 0x5a, 0x31, 0x8a, 0xa1, 0x18, 0xd3, 0x7f, 0xec, 0x99, 0x02, 0xd3, 0x6b, 0x9e, - 0xa4, 0xa5, 0x39, 0x6b, 0x28, 0x13, 0xcc, 0x79, 0xb9, 0x6f, 0xf5, 0xc1, 0xb0, 0x1a, 0xec, 0x1e, - 0xec, 0xa9, 0x97, 0xd2, 0xdc, 0xb1, 0x5c, 0x02, 0x97, 0xb4, 0xbc, 0xb1, 0x77, 0xe8, 0xd0, 0x05, - 0xbb, 0x3c, 0x4b, 0x46, 0x9a, 0x44, 0xf6, 0x29, 0xd3, 0xd5, 0x7c, 0x56, 0x9f, 0x7f, 0x1a, 0xbe, - 0xf0, 0x39, 0xdf, 0xd2, 0x3d, 0xfd, 0xfd, 0xb6, 0x76, 0x33, 0xe5, 0xc6, 0xec, 0xee, 0xe2, 0xcf, - 0x3c, 0x2b, 0x54, 0xec, 0xe9, 0x59, 0xa1, 0x27, 0xa1, 0x9f, 0x04, 0xed, 0x26, 0x53, 0x95, 0x86, - 0xd9, 0x11, 0xa1, 0xff, 0x72, 0xd0, 0x6e, 0x9a, 0x3d, 0x63, 0x28, 0xe8, 0xfd, 0x30, 0x52, 0x25, - 0x71, 0x25, 0xf2, 0x59, 0xea, 0x07, 0x61, 0xd9, 0x79, 0x88, 0x99, 0xcb, 0x52, 0xb0, 0x59, 0x51, - 0xaf, 0xe0, 0xbe, 0x0a, 0x03, 0xeb, 0x8d, 0x76, 0xcd, 0x0f, 0x50, 0x0b, 0x06, 0x78, 0x22, 0x08, - 0xb1, 0xdb, 0x5b, 0x38, 0x77, 0x72, 0x51, 0xa1, 0x45, 0xa1, 0xf0, 0xdb, 0xbe, 0x82, 0x8f, 0xfb, - 0xc9, 0x02, 0xd0, 0xa3, 0xf9, 0xe2, 0x1c, 0xfa, 0x9b, 0x1d, 0xaf, 0xe8, 0xfc, 0x5c, 0xce, 0x2b, - 0x3a, 0x63, 0x0c, 0x39, 0xe7, 0x01, 0x9d, 0x06, 0x8c, 0x31, 0xe7, 0x88, 0xdc, 0x03, 0x85, 0x5a, - 0xfd, 0x4c, 0x8f, 0xb9, 0x13, 0xf4, 0xaa, 0x62, 0x47, 0xd0, 0x41, 0xd8, 0x24, 0x8e, 0x56, 0xe1, - 0x14, 0x4f, 0x41, 0x3a, 0x4f, 0x1a, 0xde, 0x6e, 0x26, 0xd5, 0xd8, 0x79, 0xf9, 0x30, 0xda, 0x7c, - 0x27, 0x0a, 0xce, 0xab, 0xe7, 0xfe, 0x5e, 0x3f, 0x68, 0x2e, 0x89, 0x1e, 0x56, 0xcb, 0x2b, 0x19, - 0x07, 0xd4, 0xaa, 0x15, 0x07, 0x94, 0xf4, 0xea, 0x70, 0x09, 0x64, 0xfa, 0x9c, 0x68, 0xa3, 0xea, - 0xa4, 0xd1, 0x12, 0x7d, 0x54, 0x8d, 0xba, 0x42, 0x1a, 0x2d, 0xcc, 0x4a, 0xd4, 0x5d, 0xc7, 0xfe, - 0xae, 0x77, 0x1d, 0xeb, 0x50, 0xac, 0x79, 0xed, 0x1a, 0x11, 0x11, 0x98, 0x16, 0x7c, 0x8d, 0xec, - 0xf6, 0x05, 0xf7, 0x35, 0xb2, 0x7f, 0x31, 0x67, 0x40, 0x17, 0x7b, 0x5d, 0x86, 0xa4, 0x08, 0x23, - 0xad, 0x85, 0xc5, 0xae, 0xa2, 0x5c, 0xf8, 0x62, 0x57, 0x3f, 0x71, 0xca, 0x0c, 0xb5, 0x60, 0xb0, - 0xc2, 0x33, 0xb8, 0x08, 0x9d, 0x65, 0xc9, 0xc6, 0x65, 0x4e, 0x46, 0x90, 0x5b, 0x53, 0xc4, 0x0f, - 0x2c, 0xd9, 0xb8, 0x17, 0x61, 0x44, 0x7b, 0xcc, 0x83, 0x7e, 0x06, 0x95, 0x3c, 0x44, 0xfb, 0x0c, - 0xf3, 0x5e, 0xe2, 0x61, 0x56, 0xe2, 0x7e, 0xab, 0x1f, 0x94, 0x2d, 0x4d, 0xbf, 0x7a, 0xe8, 0x55, - 0xb4, 0x54, 0x47, 0xc6, 0x35, 0xfc, 0x30, 0xc0, 0xa2, 0x94, 0xea, 0x75, 0x4d, 0x12, 0xd5, 0xd4, - 0x39, 0x5a, 0x88, 0x6b, 0xa5, 0xd7, 0xad, 0xea, 0x85, 0xd8, 0xc4, 0xa5, 0x4a, 0x79, 0x53, 0xb8, - 0xe8, 0xb3, 0x81, 0xd5, 0xd2, 0x75, 0x8f, 0x15, 0x06, 0xcb, 0x95, 0xd0, 0xd4, 0x3c, 0xfa, 0x22, - 0x10, 0xd3, 0x86, 0x43, 0x49, 0xa3, 0xca, 0x03, 0xa6, 0x74, 0x08, 0x36, 0xb8, 0xa2, 0x45, 0x38, - 0x19, 0x93, 0x64, 0xed, 0x66, 0x40, 0x22, 0x95, 0xa5, 0x40, 0x24, 0xe3, 0x50, 0x17, 0x33, 0xca, - 0x59, 0x04, 0xdc, 0x59, 0x27, 0x37, 0x76, 0xb5, 0x78, 0xe0, 0xd8, 0xd5, 0x79, 0x98, 0xd8, 0xf2, - 0xfc, 0x46, 0x3b, 0x22, 0x5d, 0x23, 0x60, 0x17, 0x32, 0xe5, 0xb8, 0xa3, 0x06, 0xbb, 0x1b, 0xd4, - 0xf0, 0x6a, 0x71, 0x69, 0x50, 0xbb, 0x1b, 0x44, 0x01, 0x98, 0xc3, 0xdd, 0xdf, 0x74, 0x80, 0x67, - 0x41, 0x9a, 0xd9, 0xda, 0xf2, 0x03, 0x3f, 0xd9, 0x45, 0x5f, 0x77, 0x60, 0x22, 0x08, 0xab, 0x64, - 0x26, 0x48, 0x7c, 0x09, 0xb4, 0x97, 0xb9, 0x9e, 0xf1, 0xba, 0x9a, 0x21, 0xcf, 0x53, 0x6a, 0x64, - 0xa1, 0xb8, 0xa3, 0x19, 0xee, 0x39, 0x38, 0x93, 0x4b, 0xc0, 0xfd, 0x41, 0x1f, 0x98, 0xc9, 0x9c, - 0xd0, 0xf3, 0x50, 0x6c, 0xb0, 0xf4, 0x22, 0xce, 0x21, 0xb3, 0x74, 0xb1, 0xb1, 0xe2, 0xf9, 0x47, - 0x38, 0x25, 0x34, 0x0f, 0x23, 0x2c, 0x43, 0x94, 0x48, 0xfe, 0x52, 0x30, 0xb2, 0x2a, 0x8c, 0xe0, - 0xb4, 0xe8, 0x8e, 0xf9, 0x13, 0xeb, 0xd5, 0xd0, 0x6b, 0x30, 0xb8, 0xc9, 0xd3, 0x68, 0xda, 0xf3, - 0xf9, 0x89, 0xbc, 0x9c, 0x4c, 0x37, 0x92, 0x49, 0x3a, 0xef, 0xa4, 0xff, 0x62, 0xc9, 0x11, 0xed, - 0xc2, 0x90, 0x27, 0xbf, 0x69, 0xbf, 0xad, 0x8b, 0x1a, 0xc6, 0xfc, 0x11, 0x11, 0x33, 0xf2, 0x1b, - 0x2a, 0x76, 0x99, 0xd0, 0xa2, 0x62, 0x4f, 0xa1, 0x45, 0xdf, 0x71, 0x00, 0xd2, 0x37, 0x47, 0xd0, - 0x2d, 0x18, 0x8a, 0x9f, 0x31, 0x0c, 0x15, 0x36, 0x2e, 0xf9, 0x0b, 0x8a, 0xda, 0x45, 0x58, 0x01, - 0xc1, 0x8a, 0xdb, 0xdd, 0x8c, 0x2b, 0x3f, 0x75, 0xe0, 0x74, 0xde, 0xdb, 0x28, 0xf7, 0xb1, 0xc5, - 0x07, 0xb5, 0xab, 0x88, 0x0a, 0xeb, 0x11, 0xd9, 0xf2, 0x6f, 0xe5, 0x24, 0x73, 0xe6, 0x05, 0x38, - 0xc5, 0x71, 0xff, 0x6c, 0x10, 0x14, 0xe3, 0x23, 0xb2, 0xc3, 0x3c, 0x4e, 0xcf, 0x4c, 0xb5, 0x54, - 0xe7, 0x52, 0x78, 0x98, 0x41, 0xb1, 0x28, 0xa5, 0xe7, 0x26, 0x19, 0x14, 0x2f, 0x44, 0x36, 0x9b, - 0x85, 0x32, 0x78, 0x1e, 0xab, 0xd2, 0x3c, 0xcb, 0x4e, 0xf1, 0x58, 0x2c, 0x3b, 0x03, 0xf6, 0x2d, - 0x3b, 0x4d, 0x40, 0x31, 0x5f, 0x28, 0xcc, 0x9c, 0x22, 0x18, 0x8d, 0x1e, 0xd8, 0xd0, 0x5c, 0xee, - 0x20, 0x82, 0x73, 0x08, 0xb3, 0x18, 0x8a, 0xb0, 0x41, 0x66, 0xf0, 0x55, 0x71, 0xf8, 0x48, 0x63, - 0x28, 0x38, 0x18, 0xcb, 0xf2, 0x43, 0x9a, 0x52, 0xd0, 0x6f, 0x3b, 0xfb, 0xd8, 0xaa, 0x86, 0x6d, - 0x6d, 0x41, 0xb9, 0x99, 0xf4, 0xd8, 0x49, 0xea, 0x30, 0x06, 0xb0, 0x6f, 0x38, 0x70, 0x92, 0x04, - 0x95, 0x68, 0x97, 0xd1, 0x11, 0xd4, 0x84, 0x8b, 0xfb, 0x9a, 0x8d, 0xb5, 0x7e, 0x39, 0x4b, 0x9c, - 0x7b, 0x92, 0x3a, 0xc0, 0xb8, 0xb3, 0x19, 0x68, 0x0d, 0x86, 0x2a, 0x9e, 0x98, 0x17, 0x23, 0x07, - 0x99, 0x17, 0xdc, 0x51, 0x37, 0x23, 0x66, 0x83, 0x22, 0xe2, 0xfe, 0xb8, 0x00, 0xa7, 0x72, 0x9a, - 0xc4, 0xee, 0x6b, 0x35, 0xe9, 0x02, 0x58, 0xaa, 0x66, 0x97, 0xff, 0xb2, 0x80, 0x63, 0x85, 0x81, - 0xd6, 0xe1, 0xf4, 0x76, 0x33, 0x4e, 0xa9, 0xcc, 0x85, 0x41, 0x42, 0x6e, 0x49, 0x61, 0x20, 0xdd, - 0xdf, 0xa7, 0x97, 0x73, 0x70, 0x70, 0x6e, 0x4d, 0xaa, 0x2d, 0x91, 0xc0, 0xdb, 0x6c, 0x90, 0xb4, - 0x48, 0xdc, 0x62, 0x54, 0xda, 0xd2, 0xe5, 0x4c, 0x39, 0xee, 0xa8, 0x81, 0x3e, 0xe7, 0xc0, 0xf9, - 0x98, 0x44, 0x3b, 0x24, 0x2a, 0xfb, 0x55, 0x32, 0xd7, 0x8e, 0x93, 0xb0, 0x49, 0xa2, 0x43, 0x5a, - 0x67, 0xa7, 0x6e, 0xef, 0x4d, 0x9d, 0x2f, 0x77, 0xa7, 0x86, 0xf7, 0x63, 0xe5, 0x7e, 0xce, 0x81, - 0xf1, 0x32, 0x3b, 0xbb, 0x2b, 0xd5, 0xdd, 0x76, 0x2e, 0xd5, 0xc7, 0x55, 0xea, 0x8e, 0x8c, 0x10, - 0x36, 0x93, 0x6d, 0xb8, 0x2f, 0xc3, 0x44, 0x99, 0x34, 0xbd, 0x56, 0x9d, 0xdd, 0x62, 0xe6, 0xe1, - 0x5f, 0x17, 0x61, 0x38, 0x96, 0xb0, 0xec, 0xeb, 0x4a, 0x0a, 0x19, 0xa7, 0x38, 0xe8, 0x31, 0x1e, - 0xaa, 0x26, 0x2f, 0x1c, 0x0d, 0xf3, 0x43, 0x0e, 0x8f, 0x6f, 0x8b, 0xb1, 0x2c, 0x73, 0xdf, 0x72, - 0x60, 0x34, 0xad, 0x4f, 0xb6, 0x50, 0x0d, 0x4e, 0x54, 0xb4, 0xcb, 0x7a, 0xe9, 0x35, 0x89, 0xde, - 0xef, 0xf5, 0xf1, 0x14, 0xcf, 0x26, 0x11, 0x9c, 0xa5, 0x7a, 0xf0, 0x48, 0xbf, 0x2f, 0x16, 0xe0, - 0x84, 0x6a, 0xaa, 0xf0, 0x53, 0xbe, 0x91, 0x0d, 0xc8, 0xc3, 0x36, 0x92, 0x10, 0x99, 0x63, 0xbf, - 0x4f, 0x50, 0xde, 0x1b, 0xd9, 0xa0, 0xbc, 0x23, 0x65, 0xdf, 0xe1, 0x7a, 0xfd, 0x4e, 0x01, 0x86, - 0x54, 0x4a, 0xa4, 0xe7, 0xa1, 0xc8, 0x4e, 0xae, 0xf7, 0xa6, 0x7f, 0xb3, 0x53, 0x30, 0xe6, 0x94, - 0x28, 0x49, 0x16, 0xf4, 0x73, 0xe8, 0xc4, 0xbb, 0xc3, 0xdc, 0x7e, 0xe9, 0x45, 0x09, 0xe6, 0x94, - 0xd0, 0x32, 0xf4, 0x91, 0xa0, 0x2a, 0x14, 0xf1, 0x83, 0x13, 0x64, 0xef, 0xa0, 0x5d, 0x0e, 0xaa, - 0x98, 0x52, 0x61, 0x79, 0xd9, 0xb8, 0xbe, 0x95, 0x79, 0xf5, 0x46, 0x28, 0x5b, 0xa2, 0xd4, 0x9d, - 0x05, 0x23, 0x67, 0xdf, 0xa1, 0x6e, 0x46, 0xfc, 0x72, 0x1f, 0x0c, 0x94, 0xdb, 0x9b, 0xf4, 0x58, - 0xf2, 0x6d, 0x07, 0x4e, 0xdd, 0xcc, 0x64, 0xb6, 0x4e, 0xd7, 0xc9, 0x35, 0x7b, 0x76, 0x60, 0x3d, - 0x78, 0x4d, 0x59, 0xbf, 0x72, 0x0a, 0x71, 0x5e, 0x73, 0x8c, 0xe4, 0xb2, 0x7d, 0x47, 0x92, 0x5c, - 0xf6, 0xd6, 0x11, 0xdf, 0xde, 0x18, 0xeb, 0x76, 0x73, 0xc3, 0xfd, 0xbd, 0x22, 0x00, 0xff, 0x1a, - 0x6b, 0xad, 0xa4, 0x17, 0xcb, 0xde, 0xb3, 0x30, 0x5a, 0x23, 0x01, 0x89, 0x64, 0x68, 0x62, 0xe6, - 0x51, 0xa6, 0x45, 0xad, 0x0c, 0x1b, 0x98, 0x6c, 0xb2, 0x04, 0x49, 0xb4, 0xcb, 0x55, 0xed, 0xec, - 0x0d, 0x0d, 0x55, 0x82, 0x35, 0x2c, 0x34, 0x6d, 0x38, 0x5e, 0xb8, 0x0f, 0x7f, 0x7c, 0x1f, 0x3f, - 0xc9, 0xfb, 0x61, 0xdc, 0xcc, 0xc4, 0x22, 0x14, 0x3e, 0xe5, 0x73, 0x37, 0x13, 0xb8, 0xe0, 0x0c, - 0x36, 0x5d, 0x08, 0xd5, 0x68, 0x17, 0xb7, 0x03, 0xa1, 0xf9, 0xa9, 0x85, 0x30, 0xcf, 0xa0, 0x58, - 0x94, 0xb2, 0x14, 0x16, 0x6c, 0x0f, 0xe4, 0x70, 0x91, 0x06, 0x23, 0x4d, 0x61, 0xa1, 0x95, 0x61, - 0x03, 0x93, 0x72, 0x10, 0x96, 0x51, 0x30, 0x97, 0x5a, 0xc6, 0x9c, 0xd9, 0x82, 0xf1, 0xd0, 0xb4, - 0xe8, 0x70, 0x35, 0xe8, 0xdd, 0x3d, 0x4e, 0x3d, 0xa3, 0x2e, 0x8f, 0x95, 0xc8, 0x18, 0x80, 0x32, - 0xf4, 0xa9, 0xea, 0xab, 0x5f, 0x64, 0x18, 0x35, 0x23, 0x5b, 0xbb, 0xde, 0x35, 0x58, 0x87, 0xd3, - 0xad, 0xb0, 0xba, 0x1e, 0xf9, 0x61, 0xe4, 0x27, 0xbb, 0x73, 0x0d, 0x2f, 0x8e, 0xd9, 0xc4, 0x18, - 0x33, 0x55, 0xa2, 0xf5, 0x1c, 0x1c, 0x9c, 0x5b, 0x93, 0x9e, 0x89, 0x5a, 0x02, 0xc8, 0xe2, 0xcb, - 0x8a, 0x5c, 0xa9, 0x93, 0x88, 0x58, 0x95, 0xba, 0xa7, 0xe0, 0x64, 0xb9, 0xdd, 0x6a, 0x35, 0x7c, - 0x52, 0x55, 0x8e, 0x0d, 0xf7, 0x03, 0x70, 0x42, 0xa4, 0x9e, 0x55, 0x0a, 0xc8, 0x81, 0x12, 0xa5, - 0xbb, 0xff, 0xb1, 0x0f, 0x4e, 0x64, 0xa2, 0x79, 0xd0, 0x6b, 0x59, 0xb5, 0xc1, 0x4e, 0x4a, 0x54, - 0x4d, 0x61, 0x10, 0xf9, 0x4d, 0xf3, 0x54, 0x90, 0xba, 0x0c, 0xc5, 0xb7, 0x76, 0x05, 0x86, 0x05, - 0xac, 0xf3, 0x5d, 0xc5, 0x88, 0xe7, 0xff, 0x18, 0x80, 0x62, 0x2b, 0x6f, 0xdd, 0xdb, 0xee, 0x27, - 0x5b, 0xbf, 0x0a, 0x12, 0x63, 0x8d, 0x23, 0x0a, 0x60, 0x90, 0x35, 0x84, 0xc8, 0x7b, 0x97, 0xd6, - 0xfa, 0xca, 0xb4, 0xb6, 0x55, 0x4e, 0x1b, 0x4b, 0x26, 0xee, 0x67, 0x0b, 0x90, 0x1f, 0x32, 0x86, - 0x3e, 0xd6, 0xf9, 0xc1, 0x9f, 0xb7, 0x38, 0x10, 0x22, 0x66, 0xad, 0xfb, 0x37, 0x0f, 0xcc, 0x6f, - 0xbe, 0x6a, 0x69, 0x1c, 0x04, 0xdf, 0x8e, 0x2f, 0xef, 0xfe, 0x0f, 0x07, 0x46, 0x36, 0x36, 0x56, - 0xd4, 0xd6, 0x8e, 0xe1, 0x6c, 0xcc, 0x53, 0x1a, 0x30, 0xcf, 0xfa, 0x5c, 0xd8, 0x6c, 0x71, 0x47, - 0xbb, 0x08, 0x00, 0x60, 0x59, 0x8f, 0xcb, 0xb9, 0x18, 0xb8, 0x4b, 0x4d, 0xb4, 0x04, 0xa7, 0xf4, - 0x92, 0xb2, 0xf6, 0x06, 0x65, 0x51, 0x64, 0x38, 0xea, 0x2c, 0xc6, 0x79, 0x75, 0xb2, 0xa4, 0x84, - 0x41, 0x99, 0x6d, 0xcf, 0x39, 0xa4, 0x44, 0x31, 0xce, 0xab, 0xe3, 0xae, 0xc1, 0xc8, 0x86, 0x17, - 0xa9, 0x8e, 0x7f, 0x10, 0x26, 0x2a, 0x61, 0x53, 0xaa, 0x2b, 0x2b, 0x64, 0x87, 0x34, 0x44, 0x97, - 0xf9, 0xcb, 0x2e, 0x99, 0x32, 0xdc, 0x81, 0xed, 0xfe, 0xd7, 0x0b, 0xa0, 0xae, 0x68, 0xf6, 0xb0, - 0xa3, 0xb6, 0x54, 0x30, 0x6d, 0xd1, 0x72, 0x30, 0xad, 0xda, 0x5b, 0x32, 0x01, 0xb5, 0x49, 0x1a, - 0x50, 0x3b, 0x60, 0x3b, 0xa0, 0x56, 0x29, 0xd9, 0x1d, 0x41, 0xb5, 0x5f, 0x75, 0x60, 0x34, 0x08, - 0xab, 0x44, 0x79, 0x40, 0x07, 0xd9, 0x0a, 0x7f, 0xc9, 0xde, 0xdd, 0x04, 0x1e, 0x1c, 0x2a, 0xc8, - 0xf3, 0x40, 0x6f, 0xb5, 0x25, 0xeb, 0x45, 0xd8, 0x68, 0x07, 0x5a, 0xd0, 0x4c, 0xcb, 0xdc, 0x83, - 0xf3, 0x50, 0xde, 0x11, 0xed, 0xae, 0x76, 0xe2, 0x5b, 0x9a, 0x9e, 0x38, 0x6c, 0xcb, 0x64, 0x2a, - 0xef, 0xdd, 0x69, 0x8e, 0x28, 0x99, 0xb8, 0x3b, 0xd5, 0x1f, 0x5d, 0x18, 0xe0, 0x11, 0xe1, 0x22, - 0x97, 0x16, 0xf3, 0x8f, 0xf2, 0x68, 0x71, 0x2c, 0x4a, 0x50, 0x22, 0xa3, 0x2c, 0x46, 0x6c, 0x3d, - 0xc3, 0x61, 0x44, 0x71, 0xe4, 0x87, 0x59, 0xa0, 0xe7, 0xf4, 0xa3, 0xff, 0x68, 0x2f, 0x47, 0xff, - 0xb1, 0xae, 0xc7, 0xfe, 0x2f, 0x38, 0x30, 0x5a, 0xd1, 0x9e, 0xc5, 0x28, 0x3d, 0x61, 0xeb, 0x75, - 0xf0, 0xbc, 0xd7, 0x4b, 0xb8, 0xdb, 0xcd, 0x78, 0x86, 0xc3, 0xe0, 0xce, 0x12, 0x88, 0x32, 0x3b, - 0x07, 0x53, 0x75, 0xac, 0x24, 0xe6, 0x30, 0xed, 0x26, 0x32, 0x5a, 0x95, 0xc2, 0xb0, 0xe0, 0x85, - 0x5e, 0x87, 0x21, 0x79, 0xa9, 0x40, 0x04, 0xdf, 0x63, 0x1b, 0x7e, 0x10, 0xd3, 0xd9, 0x2a, 0xb3, - 0x0e, 0x72, 0x28, 0x56, 0x1c, 0x51, 0x1d, 0xfa, 0xaa, 0x5e, 0x4d, 0x84, 0xe1, 0xaf, 0xda, 0xc9, - 0xea, 0x2a, 0x79, 0xb2, 0x23, 0xe9, 0xfc, 0xcc, 0x22, 0xa6, 0x2c, 0xd0, 0xad, 0xf4, 0x5d, 0x81, - 0x09, 0x6b, 0xbb, 0xaf, 0xa9, 0x16, 0x72, 0x9d, 0xa0, 0xe3, 0x99, 0x82, 0xaa, 0xf0, 0x4f, 0xff, - 0x7f, 0x8c, 0xed, 0x82, 0x9d, 0xb4, 0xb0, 0x3c, 0xd1, 0x4b, 0xea, 0xe3, 0xa6, 0x5c, 0xea, 0x49, - 0xd2, 0x2a, 0xfd, 0xbc, 0x2d, 0x2e, 0x2c, 0x5d, 0x09, 0x7f, 0xc8, 0x7d, 0x63, 0x63, 0x1d, 0x33, - 0xea, 0xa8, 0x01, 0x03, 0x2d, 0x16, 0x3a, 0x53, 0x7a, 0xa7, 0xad, 0xbd, 0x85, 0x87, 0xe2, 0xf0, - 0xb9, 0xc9, 0xff, 0xc7, 0x82, 0x07, 0xba, 0x0c, 0x83, 0xfc, 0x79, 0x1c, 0x7e, 0x0d, 0x62, 0xe4, - 0xd2, 0x64, 0xf7, 0x47, 0x76, 0xd2, 0x8d, 0x82, 0xff, 0x8e, 0xb1, 0xac, 0x8b, 0xbe, 0xe8, 0xc0, - 0x38, 0x95, 0xa8, 0xe9, 0x7b, 0x3e, 0x25, 0x64, 0x4b, 0x66, 0x5d, 0x8b, 0xa9, 0x46, 0x22, 0x65, - 0x8d, 0x3a, 0x16, 0x2e, 0x19, 0xec, 0x70, 0x86, 0x3d, 0x7a, 0x03, 0x86, 0x62, 0xbf, 0x4a, 0x2a, - 0x5e, 0x14, 0x97, 0x4e, 0x1d, 0x4d, 0x53, 0x52, 0x8f, 0x98, 0x60, 0x84, 0x15, 0x4b, 0xf4, 0x6b, - 0xec, 0xbd, 0xd5, 0x4a, 0xdd, 0xdf, 0x21, 0x2b, 0x61, 0x85, 0x1f, 0x63, 0x4e, 0xdb, 0x5a, 0xfb, - 0xd2, 0xf7, 0x27, 0x29, 0x0b, 0x47, 0x91, 0xc9, 0x0e, 0x67, 0xf9, 0xa3, 0xbf, 0xe5, 0xc0, 0x19, - 0xfe, 0xf0, 0x41, 0xf6, 0x2d, 0x8f, 0x33, 0x87, 0x34, 0x49, 0xb1, 0xfb, 0x1b, 0x33, 0x79, 0x24, - 0x71, 0x3e, 0x27, 0x96, 0xa6, 0xd8, 0x7c, 0x7e, 0xe9, 0xac, 0x55, 0xcf, 0x70, 0xef, 0x4f, 0x2e, - 0xa1, 0xa7, 0x61, 0xa4, 0x25, 0xb6, 0x43, 0x3f, 0x6e, 0xb2, 0xdb, 0x38, 0x7d, 0xfc, 0x9e, 0xe4, - 0x7a, 0x0a, 0xc6, 0x3a, 0x8e, 0x91, 0xb3, 0xfa, 0xc9, 0xfd, 0x72, 0x56, 0xa3, 0x6b, 0x30, 0x92, - 0x84, 0x0d, 0x91, 0xb6, 0x35, 0x2e, 0x95, 0xd8, 0x0c, 0xbc, 0x90, 0xb7, 0xb6, 0x36, 0x14, 0x5a, - 0x7a, 0x72, 0x4f, 0x61, 0x31, 0xd6, 0xe9, 0xb0, 0x08, 0x68, 0xf1, 0xa0, 0x44, 0xc4, 0x8e, 0xec, - 0x0f, 0x66, 0x22, 0xa0, 0xf5, 0x42, 0x6c, 0xe2, 0xa2, 0x45, 0x38, 0xd9, 0xea, 0x38, 0xf3, 0xf3, - 0x5b, 0x80, 0x2a, 0xe8, 0xa4, 0xf3, 0xc0, 0xdf, 0x59, 0xc7, 0x38, 0xed, 0x9f, 0xdf, 0xef, 0xb4, - 0xdf, 0x25, 0x83, 0xf3, 0x43, 0x87, 0xc9, 0xe0, 0x8c, 0xaa, 0xf0, 0x90, 0xd7, 0x4e, 0x42, 0x96, - 0x92, 0xc7, 0xac, 0xc2, 0x83, 0xc1, 0x1f, 0xe1, 0xf1, 0xe5, 0xb7, 0xf7, 0xa6, 0x1e, 0x9a, 0xd9, - 0x07, 0x0f, 0xef, 0x4b, 0x05, 0xbd, 0x0a, 0x43, 0x44, 0x64, 0xa1, 0x2e, 0xfd, 0x9c, 0x2d, 0x25, - 0xc1, 0xcc, 0x6b, 0x2d, 0xe3, 0x6c, 0x39, 0x0c, 0x2b, 0x7e, 0x68, 0x03, 0x46, 0xea, 0x61, 0x9c, - 0xcc, 0x34, 0x7c, 0x2f, 0x26, 0x71, 0xe9, 0x61, 0x36, 0x69, 0x72, 0x75, 0xaf, 0x2b, 0x12, 0x2d, - 0x9d, 0x33, 0x57, 0xd2, 0x9a, 0x58, 0x27, 0x83, 0x08, 0xf3, 0x0f, 0xb3, 0x48, 0x78, 0xe9, 0xfb, - 0xba, 0xc0, 0x3a, 0xf6, 0x78, 0x1e, 0xe5, 0xf5, 0xb0, 0x5a, 0x36, 0xb1, 0x95, 0x83, 0x58, 0x07, - 0xe2, 0x2c, 0x4d, 0xf4, 0x2c, 0x8c, 0xb6, 0xc2, 0x6a, 0xb9, 0x45, 0x2a, 0xeb, 0x5e, 0x52, 0xa9, - 0x97, 0xa6, 0x4c, 0x2b, 0xe3, 0xba, 0x56, 0x86, 0x0d, 0x4c, 0xd4, 0x82, 0xc1, 0x26, 0xcf, 0xd5, - 0x50, 0x7a, 0xd4, 0xd6, 0xd9, 0x46, 0x24, 0x7f, 0x10, 0x36, 0x04, 0xfe, 0x03, 0x4b, 0x36, 0xe8, - 0x1f, 0x3a, 0x70, 0x22, 0x73, 0xbf, 0xac, 0xf4, 0x0e, 0x6b, 0x2a, 0x8b, 0x49, 0x78, 0xf6, 0x71, - 0x36, 0x7c, 0x26, 0xf0, 0x4e, 0x27, 0x08, 0x67, 0x5b, 0xc4, 0xc7, 0x85, 0x25, 0x5c, 0x29, 0x3d, - 0x66, 0x6f, 0x5c, 0x18, 0x41, 0x39, 0x2e, 0xec, 0x07, 0x96, 0x6c, 0xd0, 0x93, 0x30, 0x28, 0x72, - 0x23, 0x96, 0x1e, 0x37, 0xbd, 0xee, 0x22, 0x85, 0x22, 0x96, 0xe5, 0x93, 0x1f, 0x80, 0x93, 0x1d, - 0x47, 0xb7, 0x03, 0x65, 0xfd, 0xf8, 0x0d, 0x07, 0xf4, 0x0b, 0xe9, 0xd6, 0x9f, 0x7e, 0x79, 0x16, - 0x46, 0x2b, 0xfc, 0x25, 0x4e, 0x7e, 0xa5, 0xbd, 0xdf, 0xb4, 0xf7, 0xce, 0x69, 0x65, 0xd8, 0xc0, - 0x74, 0xaf, 0x00, 0xea, 0xcc, 0xcb, 0x7f, 0x28, 0xc7, 0xc9, 0x3f, 0x76, 0x60, 0xcc, 0xd0, 0x19, - 0xac, 0xfb, 0x55, 0x17, 0x00, 0x35, 0xfd, 0x28, 0x0a, 0x23, 0xfd, 0xc9, 0x43, 0x91, 0x76, 0x82, - 0xc5, 0x5b, 0xac, 0x76, 0x94, 0xe2, 0x9c, 0x1a, 0xee, 0x3f, 0xed, 0x87, 0x34, 0xd0, 0x5c, 0x65, - 0x2d, 0x76, 0xba, 0x66, 0x2d, 0x7e, 0x0a, 0x86, 0x5e, 0x8e, 0xc3, 0x60, 0x3d, 0xcd, 0x6d, 0xac, - 0xbe, 0xc5, 0x73, 0xe5, 0xb5, 0xab, 0x0c, 0x53, 0x61, 0x30, 0xec, 0x57, 0x16, 0xfc, 0x46, 0xd2, - 0x99, 0xfc, 0xf6, 0xb9, 0xe7, 0x39, 0x1c, 0x2b, 0x0c, 0xf6, 0xfa, 0xe1, 0x0e, 0x51, 0x8e, 0x80, - 0xf4, 0xf5, 0x43, 0xfe, 0xe4, 0x06, 0x2b, 0x43, 0x17, 0x61, 0x58, 0x39, 0x11, 0x84, 0x67, 0x42, - 0x8d, 0x94, 0xf2, 0x34, 0xe0, 0x14, 0x87, 0x29, 0x84, 0xc2, 0xf0, 0x2c, 0x4c, 0x28, 0x65, 0x1b, - 0xc7, 0x93, 0x8c, 0x29, 0x9b, 0xcb, 0x76, 0x09, 0xc6, 0x8a, 0x65, 0x9e, 0x6f, 0x79, 0xf8, 0x48, - 0x7c, 0xcb, 0xda, 0xad, 0x87, 0x62, 0xaf, 0xb7, 0x1e, 0xcc, 0xb9, 0x3d, 0xd4, 0xd3, 0xdc, 0xfe, - 0x74, 0x1f, 0x0c, 0x5e, 0x27, 0x11, 0x4b, 0x1b, 0xff, 0x24, 0x0c, 0xee, 0xf0, 0x7f, 0xb3, 0x57, - 0x66, 0x05, 0x06, 0x96, 0xe5, 0xf4, 0xbb, 0x6d, 0xb6, 0xfd, 0x46, 0x75, 0x3e, 0x5d, 0xc5, 0x69, - 0x5a, 0x47, 0x59, 0x80, 0x53, 0x1c, 0x5a, 0xa1, 0x46, 0x35, 0xfb, 0x66, 0xd3, 0xef, 0x78, 0xf7, - 0x7f, 0x51, 0x16, 0xe0, 0x14, 0x07, 0x3d, 0x0e, 0x03, 0x35, 0x3f, 0xd9, 0xf0, 0x6a, 0x59, 0xcf, - 0xe8, 0x22, 0x83, 0x62, 0x51, 0xca, 0xdc, 0x62, 0x7e, 0xb2, 0x11, 0x11, 0x66, 0xd9, 0xed, 0xc8, - 0xd8, 0xb1, 0xa8, 0x95, 0x61, 0x03, 0x93, 0x35, 0x29, 0x14, 0x3d, 0x13, 0x71, 0xb2, 0x69, 0x93, - 0x64, 0x01, 0x4e, 0x71, 0xe8, 0xfc, 0xaf, 0x84, 0xcd, 0x96, 0xdf, 0x10, 0x11, 0xdc, 0xda, 0xfc, - 0x9f, 0x13, 0x70, 0xac, 0x30, 0x28, 0x36, 0x15, 0x61, 0x54, 0xfc, 0x64, 0x5f, 0x9a, 0x5b, 0x17, - 0x70, 0xac, 0x30, 0xdc, 0xeb, 0x30, 0xc6, 0x57, 0xf2, 0x5c, 0xc3, 0xf3, 0x9b, 0x8b, 0x73, 0xe8, - 0x72, 0xc7, 0xad, 0x87, 0x27, 0x73, 0x6e, 0x3d, 0x9c, 0x31, 0x2a, 0x75, 0xde, 0x7e, 0x70, 0x7f, - 0x58, 0x80, 0xa1, 0x63, 0x7c, 0xac, 0xf3, 0xd8, 0xdf, 0x9d, 0x46, 0xb7, 0x32, 0x0f, 0x75, 0xae, - 0xdb, 0xbc, 0xc4, 0xb4, 0xef, 0x23, 0x9d, 0xff, 0xa9, 0x00, 0x67, 0x25, 0xaa, 0x3c, 0xcb, 0x2d, - 0xce, 0xb1, 0x07, 0xd0, 0x8e, 0x7e, 0xa0, 0x23, 0x63, 0xa0, 0xd7, 0xed, 0x9d, 0x46, 0x17, 0xe7, - 0xba, 0x0e, 0xf5, 0xab, 0x99, 0xa1, 0xc6, 0x56, 0xb9, 0xee, 0x3f, 0xd8, 0x7f, 0xe1, 0xc0, 0x64, - 0xfe, 0x60, 0x1f, 0xc3, 0xdb, 0xa8, 0x6f, 0x98, 0x6f, 0xa3, 0xfe, 0xa2, 0xbd, 0x29, 0x66, 0x76, - 0xa5, 0xcb, 0x2b, 0xa9, 0xff, 0xdd, 0x81, 0xd3, 0xb2, 0x02, 0xdb, 0x3d, 0x67, 0xfd, 0x80, 0x05, - 0xef, 0x1c, 0xfd, 0x34, 0x7b, 0xdd, 0x98, 0x66, 0x2f, 0xda, 0xeb, 0xb8, 0xde, 0x8f, 0xae, 0x6f, - 0xca, 0xff, 0xb9, 0x03, 0xa5, 0xbc, 0x0a, 0xc7, 0xf0, 0xc9, 0x5f, 0x33, 0x3f, 0xf9, 0xf5, 0xa3, - 0xe9, 0x79, 0xf7, 0x0f, 0x5e, 0xea, 0x36, 0x50, 0xa8, 0x21, 0xf5, 0x2a, 0xc7, 0x96, 0x4f, 0x9a, - 0xb3, 0xc8, 0x57, 0xd0, 0x1a, 0x30, 0x10, 0xb3, 0x28, 0x15, 0x31, 0x05, 0xae, 0xd8, 0xd0, 0xb6, - 0x28, 0x3d, 0x61, 0x63, 0x67, 0xff, 0x63, 0xc1, 0xc3, 0xfd, 0xcd, 0x02, 0x9c, 0x53, 0x6f, 0x1e, - 0x93, 0x1d, 0xd2, 0x48, 0xd7, 0x07, 0x7b, 0x21, 0xc3, 0x53, 0x3f, 0xed, 0xbd, 0x90, 0x91, 0xb2, - 0x48, 0xd7, 0x42, 0x0a, 0xc3, 0x1a, 0x4f, 0x54, 0x86, 0x33, 0xec, 0x45, 0x8b, 0x05, 0x3f, 0xf0, - 0x1a, 0xfe, 0xab, 0x24, 0xc2, 0xa4, 0x19, 0xee, 0x78, 0x0d, 0xa1, 0xa9, 0xab, 0x5b, 0xd3, 0x0b, - 0x79, 0x48, 0x38, 0xbf, 0x6e, 0xc7, 0x89, 0xbb, 0xaf, 0xd7, 0x13, 0xb7, 0xfb, 0x27, 0x0e, 0x8c, - 0x1e, 0xe3, 0x0b, 0xd1, 0xa1, 0xb9, 0x24, 0x9e, 0xb3, 0xb7, 0x24, 0xba, 0x2c, 0x83, 0xbd, 0x22, - 0x74, 0x3c, 0x9a, 0x8b, 0x3e, 0xe3, 0xa8, 0x38, 0x1e, 0x1e, 0x2f, 0xf9, 0x61, 0x7b, 0xed, 0x38, - 0x48, 0xaa, 0x4d, 0xf4, 0x8d, 0x4c, 0xfe, 0xd1, 0x82, 0xad, 0x24, 0x5a, 0x1d, 0xad, 0x39, 0x44, - 0x1e, 0xd2, 0xaf, 0x3a, 0x00, 0xbc, 0x9d, 0x22, 0x7d, 0x39, 0x6d, 0xdb, 0xe6, 0x91, 0x8d, 0x14, - 0x65, 0xc2, 0x9b, 0xa6, 0x96, 0x50, 0x5a, 0x80, 0xb5, 0x96, 0xdc, 0x43, 0x82, 0xd1, 0x7b, 0xce, - 0x6d, 0xfa, 0x45, 0x07, 0x4e, 0x64, 0x9a, 0x9b, 0x53, 0x7f, 0xcb, 0x7c, 0xe3, 0xd1, 0x82, 0x66, - 0x65, 0x26, 0xb5, 0xd6, 0x8d, 0x27, 0xff, 0xc5, 0x05, 0xe3, 0xb5, 0x71, 0xf4, 0x1a, 0x0c, 0x4b, - 0xcb, 0x87, 0x9c, 0xde, 0x36, 0xdf, 0xba, 0x55, 0xc7, 0x1b, 0x09, 0x89, 0x71, 0xca, 0x2f, 0x13, - 0x26, 0x58, 0xe8, 0x29, 0x4c, 0xf0, 0xfe, 0xbe, 0x94, 0x9b, 0x6f, 0x97, 0xee, 0x3f, 0x12, 0xbb, - 0xf4, 0x43, 0xd6, 0xed, 0xd2, 0x0f, 0x1f, 0xb3, 0x5d, 0x5a, 0x73, 0x12, 0x16, 0xef, 0xc1, 0x49, - 0xf8, 0x1a, 0x9c, 0xde, 0x49, 0x0f, 0x9d, 0x6a, 0x26, 0x89, 0xd4, 0x4d, 0x4f, 0xe6, 0x5a, 0xa3, - 0xe9, 0x01, 0x3a, 0x4e, 0x48, 0x90, 0x68, 0xc7, 0xd5, 0x34, 0x42, 0xf1, 0x7a, 0x0e, 0x39, 0x9c, - 0xcb, 0x24, 0xeb, 0xed, 0x19, 0xec, 0xc1, 0xdb, 0xf3, 0x96, 0x03, 0x67, 0xbc, 0x8e, 0x6b, 0x76, - 0x98, 0x6c, 0x89, 0x90, 0x93, 0x1b, 0xf6, 0x54, 0x08, 0x83, 0xbc, 0x70, 0xab, 0xe5, 0x15, 0xe1, - 0xfc, 0x06, 0xa1, 0xc7, 0x52, 0xd7, 0x3b, 0x8f, 0x6b, 0xcd, 0xf7, 0x93, 0x7f, 0x23, 0x1b, 0xcf, - 0x03, 0x6c, 0xe8, 0x3f, 0x6a, 0xf7, 0xb4, 0x6d, 0x21, 0xa6, 0x67, 0xe4, 0x1e, 0x62, 0x7a, 0x32, - 0xae, 0xb7, 0x51, 0x4b, 0xae, 0xb7, 0x00, 0x26, 0xfc, 0xa6, 0x57, 0x23, 0xeb, 0xed, 0x46, 0x83, - 0xdf, 0x9b, 0x91, 0xaf, 0x11, 0xe7, 0x5a, 0xf0, 0x56, 0xc2, 0x8a, 0xd7, 0xc8, 0xbe, 0x43, 0xaf, - 0xee, 0x07, 0x2d, 0x65, 0x28, 0xe1, 0x0e, 0xda, 0x74, 0xc2, 0xb2, 0x1c, 0x82, 0x24, 0xa1, 0xa3, - 0xcd, 0x02, 0x47, 0x86, 0xf8, 0x84, 0xbd, 0x92, 0x82, 0xb1, 0x8e, 0x83, 0x96, 0x61, 0xb8, 0x1a, - 0xc4, 0xe2, 0xc6, 0xf0, 0x09, 0x26, 0xcc, 0xde, 0x45, 0x45, 0xe0, 0xfc, 0xd5, 0xb2, 0xba, 0x2b, - 0xfc, 0x50, 0x4e, 0x52, 0x4c, 0x55, 0x8e, 0xd3, 0xfa, 0x68, 0x95, 0x11, 0x13, 0xef, 0xac, 0xf1, - 0x78, 0x8e, 0x47, 0xba, 0x38, 0x8c, 0xe6, 0xaf, 0xca, 0x97, 0xe2, 0xc6, 0x04, 0x3b, 0xf1, 0x60, - 0x5a, 0x4a, 0x41, 0x7b, 0x15, 0xfa, 0xe4, 0xbe, 0xaf, 0x42, 0xb3, 0x6c, 0xb8, 0x49, 0x43, 0xb9, - 0x87, 0x2f, 0x58, 0xcb, 0x86, 0x9b, 0x46, 0x4a, 0x8a, 0x6c, 0xb8, 0x29, 0x00, 0xeb, 0x2c, 0xd1, - 0x5a, 0x37, 0x37, 0xf9, 0x29, 0x26, 0x34, 0x0e, 0xee, 0xf4, 0xd6, 0xfd, 0xa5, 0xa7, 0xf7, 0xf5, - 0x97, 0x76, 0xf8, 0x77, 0xcf, 0x1c, 0xc0, 0xbf, 0x5b, 0x67, 0x79, 0x4a, 0x17, 0xe7, 0x84, 0x4b, - 0xdd, 0xc2, 0xf9, 0x8e, 0x65, 0x46, 0xe1, 0x91, 0xa7, 0xec, 0x5f, 0xcc, 0x19, 0x74, 0x0d, 0x20, - 0x3f, 0x77, 0xe8, 0x00, 0x72, 0x2a, 0x9e, 0x53, 0x38, 0x4b, 0x78, 0x5b, 0x14, 0xe2, 0x39, 0x05, - 0x63, 0x1d, 0x27, 0xeb, 0x2d, 0x7d, 0xf0, 0xc8, 0xbc, 0xa5, 0x93, 0xc7, 0xe0, 0x2d, 0x3d, 0xdf, - 0xb3, 0xb7, 0xf4, 0x16, 0x9c, 0x6a, 0x85, 0xd5, 0x79, 0x3f, 0x8e, 0xda, 0xec, 0x22, 0xe1, 0x6c, - 0xbb, 0x5a, 0x23, 0x09, 0x73, 0xb7, 0x8e, 0x5c, 0x7a, 0x97, 0xde, 0xc8, 0x16, 0x5b, 0xc8, 0x72, - 0x8d, 0x66, 0x2a, 0x30, 0xd3, 0x09, 0x8b, 0xba, 0xcd, 0x29, 0xc4, 0x79, 0x2c, 0x74, 0x3f, 0xed, - 0x23, 0xc7, 0xe3, 0xa7, 0xfd, 0x20, 0x0c, 0xc5, 0xf5, 0x76, 0x52, 0x0d, 0x6f, 0x06, 0xcc, 0x19, - 0x3f, 0x3c, 0xfb, 0x0e, 0x65, 0xca, 0x16, 0xf0, 0x3b, 0x7b, 0x53, 0x13, 0xf2, 0x7f, 0xcd, 0x8a, - 0x2d, 0x20, 0xe8, 0x9b, 0x5d, 0xee, 0x2b, 0xb9, 0x47, 0x79, 0x5f, 0xe9, 0xdc, 0x81, 0xee, 0x2a, - 0xe5, 0x39, 0xa3, 0x1f, 0xfd, 0x99, 0x73, 0x46, 0x7f, 0xdd, 0x81, 0xb1, 0x1d, 0xdd, 0x65, 0x20, - 0x1c, 0xe6, 0x16, 0x02, 0x77, 0x0c, 0x4f, 0xc4, 0xac, 0x4b, 0xe5, 0x9c, 0x01, 0xba, 0x93, 0x05, - 0x60, 0xb3, 0x25, 0x39, 0x41, 0x45, 0x8f, 0xdd, 0xaf, 0xa0, 0xa2, 0x37, 0x98, 0x1c, 0x93, 0x87, - 0x5c, 0xe6, 0x45, 0xb7, 0x1b, 0x53, 0x2c, 0x65, 0xa2, 0x0a, 0x29, 0xd6, 0xf9, 0xa1, 0x2f, 0x38, - 0x30, 0x21, 0xcf, 0x65, 0xc2, 0xe5, 0x17, 0x8b, 0xa8, 0x48, 0x9b, 0xc7, 0x41, 0x16, 0x56, 0xbf, - 0x91, 0xe1, 0x83, 0x3b, 0x38, 0x53, 0xa9, 0xae, 0x82, 0xd0, 0x6a, 0x31, 0x0b, 0xfe, 0x15, 0x3a, - 0xcc, 0x4c, 0x0a, 0xc6, 0x3a, 0x0e, 0xfa, 0x96, 0x03, 0xc5, 0x7a, 0x18, 0x6e, 0xc7, 0xa5, 0x27, - 0x99, 0x40, 0x7f, 0xc1, 0xb2, 0x6e, 0x7a, 0x85, 0xd2, 0xe6, 0x4a, 0xe9, 0xd3, 0xd2, 0x76, 0xc4, - 0x60, 0x77, 0xf6, 0xa6, 0xc6, 0x8d, 0xe7, 0x9c, 0xe2, 0x37, 0xdf, 0xd6, 0x20, 0xc2, 0xb6, 0xc9, - 0x9a, 0x86, 0xbe, 0xec, 0xc0, 0xc4, 0xcd, 0x8c, 0x41, 0x43, 0x84, 0x85, 0x62, 0xfb, 0xa6, 0x12, - 0x3e, 0xdc, 0x59, 0x28, 0xee, 0x68, 0x01, 0xfa, 0xbc, 0x69, 0xe8, 0xe4, 0xf1, 0xa3, 0x16, 0x07, - 0x30, 0x63, 0x58, 0xe5, 0xd7, 0x82, 0xf2, 0x2d, 0x9e, 0xf7, 0x1c, 0x1f, 0x32, 0x49, 0x3b, 0x93, - 0x7e, 0xac, 0x9c, 0xaa, 0xc4, 0xb4, 0xb7, 0x58, 0x58, 0xec, 0xc6, 0xe7, 0xd7, 0xcd, 0x2d, 0x5f, - 0x3e, 0x0b, 0xe3, 0xa6, 0x6f, 0x0f, 0xbd, 0xdb, 0x7c, 0xaa, 0xe3, 0x42, 0xf6, 0xd5, 0x83, 0x31, - 0x89, 0x6f, 0xbc, 0x7c, 0x60, 0x3c, 0x4d, 0x50, 0x38, 0xd2, 0xa7, 0x09, 0xfa, 0x8e, 0xe7, 0x69, - 0x82, 0x89, 0xa3, 0x78, 0x9a, 0xe0, 0xe4, 0x81, 0x9e, 0x26, 0xd0, 0x9e, 0x86, 0xe8, 0xbf, 0xcb, - 0xd3, 0x10, 0x33, 0x70, 0x42, 0xde, 0xfd, 0x21, 0x22, 0xfb, 0x3b, 0x77, 0xfb, 0xab, 0x57, 0xc6, - 0xe7, 0xcc, 0x62, 0x9c, 0xc5, 0xa7, 0x8b, 0xac, 0x18, 0xb0, 0x9a, 0x03, 0xb6, 0xde, 0x8d, 0x32, - 0xa7, 0x16, 0x3b, 0x3e, 0x0b, 0x11, 0x25, 0xa3, 0x9d, 0x8b, 0x0c, 0x76, 0x47, 0xfe, 0x83, 0x79, - 0x0b, 0xd0, 0x4b, 0x50, 0x0a, 0xb7, 0xb6, 0x1a, 0xa1, 0x57, 0x4d, 0xdf, 0x4f, 0x90, 0x71, 0x09, - 0xfc, 0xae, 0xaa, 0x4a, 0xb7, 0xbb, 0xd6, 0x05, 0x0f, 0x77, 0xa5, 0x80, 0xde, 0xa2, 0x8a, 0x49, - 0x12, 0x46, 0xa4, 0x9a, 0xda, 0x6a, 0x86, 0x59, 0x9f, 0x89, 0xf5, 0x3e, 0x97, 0x4d, 0x3e, 0xbc, - 0xf7, 0xea, 0xa3, 0x64, 0x4a, 0x71, 0xb6, 0x59, 0x28, 0x82, 0xb3, 0xad, 0x3c, 0x53, 0x51, 0x2c, - 0x6e, 0x2c, 0xed, 0x67, 0xb0, 0x52, 0x6f, 0x69, 0xe7, 0x1a, 0x9b, 0x62, 0xdc, 0x85, 0xb2, 0xfe, - 0xc6, 0xc1, 0xd0, 0xf1, 0xbc, 0x71, 0xf0, 0x71, 0x80, 0x8a, 0xcc, 0xb6, 0x26, 0x8d, 0x0f, 0xcb, - 0x56, 0xae, 0xd2, 0x70, 0x9a, 0xda, 0xb3, 0xb2, 0x8a, 0x0d, 0xd6, 0x58, 0xa2, 0xff, 0x9d, 0xfb, - 0x08, 0x08, 0xb7, 0xb0, 0xd4, 0xac, 0xcf, 0x89, 0x9f, 0xb9, 0x87, 0x40, 0xfe, 0x91, 0x03, 0x93, - 0x7c, 0xe6, 0x65, 0x95, 0x7b, 0xaa, 0x5a, 0x88, 0xbb, 0x3d, 0xb6, 0x43, 0x57, 0x78, 0xd6, 0x24, - 0x83, 0x2b, 0x73, 0x74, 0xef, 0xd3, 0x12, 0xf4, 0xd5, 0x9c, 0x23, 0xc5, 0x09, 0x5b, 0x36, 0xcb, - 0xfc, 0xa7, 0x1c, 0x4e, 0xdd, 0xee, 0xe5, 0x14, 0xf1, 0x4f, 0xba, 0x9a, 0x54, 0x11, 0x6b, 0xde, - 0x2f, 0x1d, 0x91, 0x49, 0x55, 0x7f, 0x6f, 0xe2, 0x40, 0x86, 0xd5, 0x2f, 0x3a, 0x30, 0xe1, 0x65, - 0x42, 0x4d, 0x98, 0x1d, 0xc8, 0x8a, 0x4d, 0x6a, 0x26, 0x4a, 0xe3, 0x57, 0x98, 0x92, 0x97, 0x8d, - 0x6a, 0xc1, 0x1d, 0xcc, 0xd1, 0x0f, 0x1d, 0x38, 0x9f, 0x78, 0xf1, 0x36, 0xcf, 0xe6, 0x1c, 0xa7, - 0x77, 0x75, 0x45, 0xe3, 0x4e, 0xb3, 0xd5, 0xf8, 0x8a, 0xf5, 0xd5, 0xb8, 0xd1, 0x9d, 0x27, 0x5f, - 0x97, 0x8f, 0x8a, 0x75, 0x79, 0x7e, 0x1f, 0x4c, 0xbc, 0x5f, 0xd3, 0x27, 0x3f, 0xe3, 0xf0, 0x57, - 0xbf, 0xba, 0xaa, 0x7c, 0x9b, 0xa6, 0xca, 0xb7, 0x62, 0xf3, 0xdd, 0x21, 0x5d, 0xf7, 0xfc, 0x55, - 0x07, 0x4e, 0xe7, 0xed, 0x48, 0x39, 0x4d, 0xfa, 0xa8, 0xd9, 0x24, 0x8b, 0xa7, 0x2c, 0xbd, 0x41, - 0x56, 0x9e, 0x3d, 0x99, 0xbc, 0x0a, 0x8f, 0xdc, 0xed, 0x2b, 0xde, 0x8d, 0xde, 0x90, 0xae, 0x16, - 0xff, 0xf9, 0xb0, 0xe6, 0x85, 0x4c, 0x48, 0xcb, 0x7a, 0x0c, 0x77, 0x00, 0x03, 0x7e, 0xd0, 0xf0, - 0x03, 0x22, 0xee, 0x6b, 0xda, 0x3c, 0xc3, 0x8a, 0x67, 0x8b, 0x28, 0x75, 0x2c, 0xb8, 0xdc, 0x67, - 0xa7, 0x64, 0xf6, 0x21, 0xb8, 0xfe, 0xe3, 0x7f, 0x08, 0xee, 0x26, 0x0c, 0xdf, 0xf4, 0x93, 0x3a, - 0x0b, 0xa6, 0x10, 0xbe, 0x3e, 0x0b, 0xf7, 0x1c, 0x29, 0xb9, 0xb4, 0xef, 0x37, 0x24, 0x03, 0x9c, - 0xf2, 0x42, 0x17, 0x39, 0x63, 0x16, 0xb9, 0x9d, 0x0d, 0xa9, 0xbd, 0x21, 0x0b, 0x70, 0x8a, 0x43, - 0x07, 0x6b, 0x94, 0xfe, 0x92, 0x39, 0xa0, 0x44, 0x66, 0x64, 0x1b, 0x19, 0x2f, 0x05, 0x45, 0x7e, - 0x9b, 0xf8, 0x86, 0xc6, 0x03, 0x1b, 0x1c, 0x55, 0x72, 0xea, 0xa1, 0xae, 0xc9, 0xa9, 0x5f, 0x67, - 0x0a, 0x5b, 0xe2, 0x07, 0x6d, 0xb2, 0x16, 0x88, 0x78, 0xef, 0x15, 0x3b, 0x77, 0x9f, 0x39, 0x4d, - 0x7e, 0x04, 0x4f, 0x7f, 0x63, 0x8d, 0x9f, 0xe6, 0x72, 0x19, 0xd9, 0xd7, 0xe5, 0x92, 0x9a, 0x5c, - 0x46, 0xad, 0x9b, 0x5c, 0x12, 0xd2, 0xb2, 0x62, 0x72, 0xf9, 0x99, 0x32, 0x07, 0xfc, 0x85, 0x03, - 0x48, 0xe9, 0x5d, 0x4a, 0xa0, 0x1e, 0x43, 0x50, 0xe5, 0x27, 0x1c, 0x80, 0x40, 0x3d, 0x17, 0x6a, - 0x77, 0x17, 0xe4, 0x34, 0xd3, 0x06, 0xa4, 0x30, 0xac, 0xf1, 0x74, 0xff, 0xcc, 0x49, 0x63, 0x97, - 0xd3, 0xbe, 0x1f, 0x43, 0x10, 0xd9, 0xae, 0x19, 0x44, 0xb6, 0x61, 0xd1, 0x74, 0xaf, 0xba, 0xd1, - 0x25, 0x9c, 0xec, 0x27, 0x05, 0x38, 0xa1, 0x23, 0x97, 0xc9, 0x71, 0x7c, 0xec, 0x9b, 0x46, 0x04, - 0xed, 0x35, 0xbb, 0xfd, 0x2d, 0x0b, 0x0f, 0x50, 0x5e, 0xb4, 0xf6, 0xc7, 0x33, 0xd1, 0xda, 0x37, - 0xec, 0xb3, 0xde, 0x3f, 0x64, 0xfb, 0x3f, 0x3b, 0x70, 0x2a, 0x53, 0xe3, 0x18, 0x26, 0xd8, 0x8e, - 0x39, 0xc1, 0x9e, 0xb7, 0xde, 0xeb, 0x2e, 0xb3, 0xeb, 0xdb, 0x85, 0x8e, 0xde, 0xb2, 0x43, 0xdc, - 0xa7, 0x1d, 0x28, 0x52, 0x6d, 0x59, 0xc6, 0x73, 0x7d, 0xf4, 0x48, 0x66, 0x00, 0xd3, 0xeb, 0x85, - 0x74, 0x56, 0xed, 0x63, 0x30, 0xcc, 0xb9, 0x4f, 0x7e, 0xca, 0x01, 0x48, 0x91, 0xee, 0x97, 0x0a, - 0xec, 0x7e, 0xb7, 0x00, 0x67, 0x72, 0xa7, 0x11, 0xfa, 0xac, 0xb2, 0xc8, 0x39, 0xb6, 0xa3, 0x15, - 0x0d, 0x46, 0xba, 0x61, 0x6e, 0xcc, 0x30, 0xcc, 0x09, 0x7b, 0xdc, 0xfd, 0x3a, 0xc0, 0x08, 0x31, - 0xad, 0x0d, 0xd6, 0x8f, 0x9d, 0x34, 0x00, 0x56, 0xe5, 0x35, 0xfa, 0x4b, 0x78, 0x89, 0xc7, 0xfd, - 0x89, 0x76, 0xc3, 0x41, 0x76, 0xf4, 0x18, 0x64, 0xc5, 0x4d, 0x53, 0x56, 0x60, 0xfb, 0x7e, 0xe4, - 0x2e, 0xc2, 0xe2, 0x15, 0xc8, 0x73, 0x2c, 0xf7, 0x96, 0x04, 0xd2, 0xb8, 0x0e, 0x5b, 0xe8, 0xf9, - 0x3a, 0xec, 0x18, 0x8c, 0xbc, 0xe8, 0xab, 0x04, 0xa2, 0xb3, 0xd3, 0xdf, 0xfb, 0xd1, 0x85, 0x07, - 0xbe, 0xff, 0xa3, 0x0b, 0x0f, 0xfc, 0xf0, 0x47, 0x17, 0x1e, 0xf8, 0xc4, 0xed, 0x0b, 0xce, 0xf7, - 0x6e, 0x5f, 0x70, 0xbe, 0x7f, 0xfb, 0x82, 0xf3, 0xc3, 0xdb, 0x17, 0x9c, 0x7f, 0x77, 0xfb, 0x82, - 0xf3, 0x77, 0xfe, 0xf4, 0xc2, 0x03, 0x2f, 0x0e, 0xc9, 0x8e, 0xfd, 0xbf, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xc2, 0xab, 0xa3, 0xd2, 0xf4, 0xd8, 0x00, 0x00, + // 11180 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x5b, 0x70, 0x64, 0xc7, + 0x75, 0x18, 0xef, 0x00, 0x83, 0xc7, 0xc1, 0x63, 0xb1, 0xbd, 0xaf, 0x21, 0x96, 0x5c, 0xd0, 0x97, + 0x22, 0x43, 0x5a, 0x14, 0xd6, 0x5c, 0x4a, 0x09, 0x23, 0x25, 0x92, 0xf0, 0x58, 0x60, 0x41, 0x00, + 0x0b, 0xb0, 0x07, 0xbb, 0x6b, 0x52, 0xb4, 0xa4, 0x8b, 0x99, 0xc6, 0xcc, 0x25, 0x66, 0xee, 0x1d, + 0xde, 0x7b, 0x07, 0xbb, 0xe0, 0x43, 0x52, 0xa8, 0x77, 0x2c, 0x5b, 0xb1, 0x2c, 0xc9, 0x92, 0x92, + 0x54, 0x29, 0x8a, 0x94, 0xb0, 0x64, 0x57, 0x52, 0xf6, 0x57, 0xca, 0xfe, 0xcb, 0x87, 0x4b, 0x29, + 0xa7, 0x12, 0xb9, 0xa2, 0x94, 0xf5, 0x61, 0x83, 0xd1, 0x3a, 0x51, 0xa5, 0x92, 0xe8, 0xc3, 0xaa, + 0x38, 0x89, 0x37, 0x8f, 0x4a, 0xf5, 0xf3, 0x76, 0xdf, 0xb9, 0x83, 0x1d, 0x60, 0x1b, 0x58, 0x95, + 0xfd, 0x05, 0xcc, 0xe9, 0xd3, 0xe7, 0x74, 0xf7, 0xed, 0x3e, 0x7d, 0xfa, 0x9c, 0xd3, 0xa7, 0x61, + 0xbd, 0xe6, 0x27, 0xf5, 0xf6, 0xe6, 0x74, 0x25, 0x6c, 0x5e, 0xf4, 0xa2, 0x5a, 0xd8, 0x8a, 0xc2, + 0x97, 0xd9, 0x3f, 0xef, 0xba, 0x19, 0x46, 0xdb, 0x5b, 0x8d, 0xf0, 0x66, 0x7c, 0x71, 0xe7, 0x99, + 0x8b, 0xad, 0xed, 0xda, 0x45, 0xaf, 0xe5, 0xc7, 0x17, 0x25, 0xf4, 0xe2, 0xce, 0xd3, 0x5e, 0xa3, + 0x55, 0xf7, 0x9e, 0xbe, 0x58, 0x23, 0x01, 0x89, 0xbc, 0x84, 0x54, 0xa7, 0x5b, 0x51, 0x98, 0x84, + 0xe8, 0x83, 0x29, 0xc5, 0x69, 0x49, 0x91, 0xfd, 0xf3, 0x11, 0x45, 0x71, 0x7a, 0xe7, 0x99, 0xe9, + 0xd6, 0x76, 0x6d, 0x9a, 0x52, 0x9c, 0x96, 0xd0, 0x69, 0x49, 0x71, 0xf2, 0x5d, 0x5a, 0x9b, 0x6a, + 0x61, 0x2d, 0xbc, 0xc8, 0x08, 0x6f, 0xb6, 0xb7, 0xd8, 0x2f, 0xf6, 0x83, 0xfd, 0xc7, 0x19, 0x4e, + 0xba, 0xdb, 0xcf, 0xc6, 0xd3, 0x7e, 0x48, 0xdb, 0x77, 0xb1, 0x12, 0x46, 0xe4, 0xe2, 0x4e, 0x47, + 0xa3, 0x26, 0xdf, 0xa1, 0xe1, 0xb4, 0xc2, 0x86, 0x5f, 0xd9, 0xcd, 0xc3, 0x7a, 0x77, 0x8a, 0xd5, + 0xf4, 0x2a, 0x75, 0x3f, 0x20, 0xd1, 0x6e, 0xda, 0xf5, 0x26, 0x49, 0xbc, 0xbc, 0x5a, 0x17, 0xbb, + 0xd5, 0x8a, 0xda, 0x41, 0xe2, 0x37, 0x49, 0x47, 0x85, 0xbf, 0x7e, 0xb7, 0x0a, 0x71, 0xa5, 0x4e, + 0x9a, 0x5e, 0x47, 0xbd, 0x67, 0xba, 0xd5, 0x6b, 0x27, 0x7e, 0xe3, 0xa2, 0x1f, 0x24, 0x71, 0x12, + 0x65, 0x2b, 0xb9, 0x97, 0x61, 0x60, 0xa6, 0x19, 0xb6, 0x83, 0x04, 0xbd, 0x0f, 0x8a, 0x3b, 0x5e, + 0xa3, 0x4d, 0x4a, 0xce, 0x23, 0xce, 0x13, 0xc3, 0xb3, 0x8f, 0x7d, 0x6f, 0x6f, 0xea, 0x81, 0xdb, + 0x7b, 0x53, 0xc5, 0xeb, 0x14, 0x78, 0x67, 0x6f, 0xea, 0x34, 0x09, 0x2a, 0x61, 0xd5, 0x0f, 0x6a, + 0x17, 0x5f, 0x8e, 0xc3, 0x60, 0xfa, 0x6a, 0xbb, 0xb9, 0x49, 0x22, 0xcc, 0xeb, 0xb8, 0xff, 0xae, + 0x00, 0x27, 0x66, 0xa2, 0x4a, 0xdd, 0xdf, 0x21, 0xe5, 0x84, 0xd2, 0xaf, 0xed, 0xa2, 0x3a, 0xf4, + 0x25, 0x5e, 0xc4, 0xc8, 0x8d, 0x5c, 0x5a, 0x9d, 0xbe, 0xd7, 0xef, 0x3e, 0xbd, 0xe1, 0x45, 0x92, + 0xf6, 0xec, 0xe0, 0xed, 0xbd, 0xa9, 0xbe, 0x0d, 0x2f, 0xc2, 0x94, 0x05, 0x6a, 0x40, 0x7f, 0x10, + 0x06, 0xa4, 0x54, 0x60, 0xac, 0xae, 0xde, 0x3b, 0xab, 0xab, 0x61, 0xa0, 0xfa, 0x31, 0x3b, 0x74, + 0x7b, 0x6f, 0xaa, 0x9f, 0x42, 0x30, 0xe3, 0x42, 0xfb, 0xf5, 0xaa, 0xdf, 0x2a, 0xf5, 0xd9, 0xea, + 0xd7, 0x8b, 0x7e, 0xcb, 0xec, 0xd7, 0x8b, 0x7e, 0x0b, 0x53, 0x16, 0xee, 0xe7, 0x0b, 0x30, 0x3c, + 0x13, 0xd5, 0xda, 0x4d, 0x12, 0x24, 0x31, 0xfa, 0x38, 0x40, 0xcb, 0x8b, 0xbc, 0x26, 0x49, 0x48, + 0x14, 0x97, 0x9c, 0x47, 0xfa, 0x9e, 0x18, 0xb9, 0xb4, 0x7c, 0xef, 0xec, 0xd7, 0x25, 0xcd, 0x59, + 0x24, 0x3e, 0x39, 0x28, 0x50, 0x8c, 0x35, 0x96, 0xe8, 0x35, 0x18, 0xf6, 0xa2, 0xc4, 0xdf, 0xf2, + 0x2a, 0x49, 0x5c, 0x2a, 0x30, 0xfe, 0xcf, 0xdd, 0x3b, 0xff, 0x19, 0x41, 0x72, 0xf6, 0xa4, 0x60, + 0x3f, 0x2c, 0x21, 0x31, 0x4e, 0xf9, 0xb9, 0xbf, 0xdb, 0x0f, 0x23, 0x33, 0x51, 0xb2, 0x38, 0x57, + 0x4e, 0xbc, 0xa4, 0x1d, 0xa3, 0x3f, 0x70, 0xe0, 0x54, 0xcc, 0x87, 0xcd, 0x27, 0xf1, 0x7a, 0x14, + 0x56, 0x48, 0x1c, 0x93, 0xaa, 0x18, 0x97, 0x2d, 0x2b, 0xed, 0x92, 0xcc, 0xa6, 0xcb, 0x9d, 0x8c, + 0x2e, 0x07, 0x49, 0xb4, 0x3b, 0xfb, 0xb4, 0x68, 0xf3, 0xa9, 0x1c, 0x8c, 0x37, 0xdf, 0x9e, 0x42, + 0xb2, 0x2b, 0x94, 0x12, 0xff, 0xc4, 0x38, 0xaf, 0xd5, 0xe8, 0xeb, 0x0e, 0x8c, 0xb6, 0xc2, 0x6a, + 0x8c, 0x49, 0x25, 0x6c, 0xb7, 0x48, 0x55, 0x0c, 0xef, 0x47, 0xec, 0x76, 0x63, 0x5d, 0xe3, 0xc0, + 0xdb, 0x7f, 0x5a, 0xb4, 0x7f, 0x54, 0x2f, 0xc2, 0x46, 0x53, 0xd0, 0xb3, 0x30, 0x1a, 0x84, 0x49, + 0xb9, 0x45, 0x2a, 0xfe, 0x96, 0x4f, 0xaa, 0x6c, 0xe2, 0x0f, 0xa5, 0x35, 0xaf, 0x6a, 0x65, 0xd8, + 0xc0, 0x9c, 0x5c, 0x80, 0x52, 0xb7, 0x91, 0x43, 0x13, 0xd0, 0xb7, 0x4d, 0x76, 0xb9, 0xb0, 0xc1, + 0xf4, 0x5f, 0x74, 0x5a, 0x0a, 0x20, 0xba, 0x8c, 0x87, 0x84, 0x64, 0x79, 0x6f, 0xe1, 0x59, 0x67, + 0xf2, 0x03, 0x70, 0xb2, 0xa3, 0xe9, 0x07, 0x21, 0xe0, 0x7e, 0x7f, 0x00, 0x86, 0xe4, 0xa7, 0x40, + 0x8f, 0x40, 0x7f, 0xe0, 0x35, 0xa5, 0x9c, 0x1b, 0x15, 0xfd, 0xe8, 0xbf, 0xea, 0x35, 0xe9, 0x0a, + 0xf7, 0x9a, 0x84, 0x62, 0xb4, 0xbc, 0xa4, 0xce, 0xe8, 0x68, 0x18, 0xeb, 0x5e, 0x52, 0xc7, 0xac, + 0x04, 0x3d, 0x04, 0xfd, 0xcd, 0xb0, 0x4a, 0xd8, 0x58, 0x14, 0xb9, 0x84, 0x58, 0x0d, 0xab, 0x04, + 0x33, 0x28, 0xad, 0xbf, 0x15, 0x85, 0xcd, 0x52, 0xbf, 0x59, 0x7f, 0x21, 0x0a, 0x9b, 0x98, 0x95, + 0xa0, 0xaf, 0x39, 0x30, 0x21, 0xe7, 0xf6, 0x4a, 0x58, 0xf1, 0x12, 0x3f, 0x0c, 0x4a, 0x45, 0x26, + 0x51, 0xb0, 0xbd, 0x25, 0x25, 0x29, 0xcf, 0x96, 0x44, 0x13, 0x26, 0xb2, 0x25, 0xb8, 0xa3, 0x15, + 0xe8, 0x12, 0x40, 0xad, 0x11, 0x6e, 0x7a, 0x0d, 0x3a, 0x20, 0xa5, 0x01, 0xd6, 0x05, 0x25, 0x19, + 0x16, 0x55, 0x09, 0xd6, 0xb0, 0xd0, 0x2d, 0x18, 0xf4, 0xb8, 0xf4, 0x2f, 0x0d, 0xb2, 0x4e, 0x3c, + 0x6f, 0xa3, 0x13, 0xc6, 0x76, 0x32, 0x3b, 0x72, 0x7b, 0x6f, 0x6a, 0x50, 0x00, 0xb1, 0x64, 0x87, + 0x9e, 0x82, 0xa1, 0xb0, 0x45, 0xdb, 0xed, 0x35, 0x4a, 0x43, 0x6c, 0x62, 0x4e, 0x88, 0xb6, 0x0e, + 0xad, 0x09, 0x38, 0x56, 0x18, 0xe8, 0x49, 0x18, 0x8c, 0xdb, 0x9b, 0xf4, 0x3b, 0x96, 0x86, 0x59, + 0xc7, 0x4e, 0x08, 0xe4, 0xc1, 0x32, 0x07, 0x63, 0x59, 0x8e, 0xde, 0x03, 0x23, 0x11, 0xa9, 0xb4, + 0xa3, 0x98, 0xd0, 0x0f, 0x5b, 0x02, 0x46, 0xfb, 0x94, 0x40, 0x1f, 0xc1, 0x69, 0x11, 0xd6, 0xf1, + 0xd0, 0xfb, 0x61, 0x9c, 0x7e, 0xe0, 0xcb, 0xb7, 0x5a, 0x11, 0x89, 0x63, 0xfa, 0x55, 0x47, 0x18, + 0xa3, 0xb3, 0xa2, 0xe6, 0xf8, 0x82, 0x51, 0x8a, 0x33, 0xd8, 0xe8, 0x75, 0x00, 0x4f, 0xc9, 0x8c, + 0xd2, 0x28, 0x1b, 0xcc, 0x15, 0x7b, 0x33, 0x62, 0x71, 0x6e, 0x76, 0x9c, 0x7e, 0xc7, 0xf4, 0x37, + 0xd6, 0xf8, 0xd1, 0xf1, 0xa9, 0x92, 0x06, 0x49, 0x48, 0xb5, 0x34, 0xc6, 0x3a, 0xac, 0xc6, 0x67, + 0x9e, 0x83, 0xb1, 0x2c, 0x77, 0xff, 0x7e, 0x01, 0x34, 0x2a, 0x68, 0x16, 0x86, 0x84, 0x5c, 0x13, + 0x4b, 0x72, 0xf6, 0x71, 0xf9, 0x1d, 0xe4, 0x17, 0xbc, 0xb3, 0x97, 0x2b, 0x0f, 0x55, 0x3d, 0xf4, + 0x06, 0x8c, 0xb4, 0xc2, 0xea, 0x2a, 0x49, 0xbc, 0xaa, 0x97, 0x78, 0x62, 0x37, 0xb7, 0xb0, 0xc3, + 0x48, 0x8a, 0xb3, 0x27, 0xe8, 0xa7, 0x5b, 0x4f, 0x59, 0x60, 0x9d, 0x1f, 0x7a, 0x0e, 0x50, 0x4c, + 0xa2, 0x1d, 0xbf, 0x42, 0x66, 0x2a, 0x15, 0xaa, 0x12, 0xb1, 0x05, 0xd0, 0xc7, 0x3a, 0x33, 0x29, + 0x3a, 0x83, 0xca, 0x1d, 0x18, 0x38, 0xa7, 0x96, 0xfb, 0x83, 0x02, 0x8c, 0x6b, 0x7d, 0x6d, 0x91, + 0x0a, 0x7a, 0xcb, 0x81, 0x13, 0x6a, 0x3b, 0x9b, 0xdd, 0xbd, 0x4a, 0x67, 0x15, 0xdf, 0xac, 0x88, + 0xcd, 0xef, 0x4b, 0x79, 0xa9, 0x9f, 0x82, 0x0f, 0x97, 0xf5, 0xe7, 0x44, 0x1f, 0x4e, 0x64, 0x4a, + 0x71, 0xb6, 0x59, 0x93, 0x5f, 0x75, 0xe0, 0x74, 0x1e, 0x89, 0x1c, 0x99, 0x5b, 0xd7, 0x65, 0xae, + 0x55, 0xe1, 0x45, 0xb9, 0xd2, 0xce, 0xe8, 0x72, 0xfc, 0xff, 0x15, 0x60, 0x42, 0x9f, 0x42, 0x4c, + 0x13, 0xf8, 0x97, 0x0e, 0x9c, 0x91, 0x3d, 0xc0, 0x24, 0x6e, 0x37, 0x32, 0xc3, 0xdb, 0xb4, 0x3a, + 0xbc, 0x7c, 0x27, 0x9d, 0xc9, 0xe3, 0xc7, 0x87, 0xf9, 0x61, 0x31, 0xcc, 0x67, 0x72, 0x71, 0x70, + 0x7e, 0x53, 0x27, 0xbf, 0xed, 0xc0, 0x64, 0x77, 0xa2, 0x39, 0x03, 0xdf, 0x32, 0x07, 0xfe, 0x45, + 0x7b, 0x9d, 0xe4, 0xec, 0xd9, 0xf0, 0xb3, 0xce, 0xea, 0x1f, 0xe0, 0xb7, 0x86, 0xa0, 0x63, 0x0f, + 0x41, 0x4f, 0xc3, 0x88, 0x10, 0xc7, 0x2b, 0x61, 0x2d, 0x66, 0x8d, 0x1c, 0xe2, 0x6b, 0x6d, 0x26, + 0x05, 0x63, 0x1d, 0x07, 0x55, 0xa1, 0x10, 0x3f, 0x23, 0x9a, 0x6e, 0x41, 0xbc, 0x95, 0x9f, 0x51, + 0x5a, 0xe4, 0xc0, 0xed, 0xbd, 0xa9, 0x42, 0xf9, 0x19, 0x5c, 0x88, 0x9f, 0xa1, 0x9a, 0x7a, 0xcd, + 0x4f, 0xec, 0x69, 0xea, 0x8b, 0x7e, 0xa2, 0xf8, 0x30, 0x4d, 0x7d, 0xd1, 0x4f, 0x30, 0x65, 0x41, + 0x4f, 0x20, 0xf5, 0x24, 0x69, 0xb1, 0x1d, 0xdf, 0xca, 0x09, 0xe4, 0xca, 0xc6, 0xc6, 0xba, 0xe2, + 0xc5, 0xf4, 0x0b, 0x0a, 0xc1, 0x8c, 0x0b, 0xfa, 0x9c, 0x43, 0x47, 0x9c, 0x17, 0x86, 0xd1, 0xae, + 0x50, 0x1c, 0xae, 0xd9, 0x9b, 0x02, 0x61, 0xb4, 0xab, 0x98, 0x8b, 0x0f, 0xa9, 0x0a, 0xb0, 0xce, + 0x9a, 0x75, 0xbc, 0xba, 0x15, 0x33, 0x3d, 0xc1, 0x4e, 0xc7, 0xe7, 0x17, 0xca, 0x99, 0x8e, 0xcf, + 0x2f, 0x94, 0x31, 0xe3, 0x42, 0x3f, 0x68, 0xe4, 0xdd, 0x14, 0x3a, 0x86, 0x85, 0x0f, 0x8a, 0xbd, + 0x9b, 0xe6, 0x07, 0xc5, 0xde, 0x4d, 0x4c, 0x59, 0x50, 0x4e, 0x61, 0x1c, 0x33, 0x95, 0xc2, 0x0a, + 0xa7, 0xb5, 0x72, 0xd9, 0xe4, 0xb4, 0x56, 0x2e, 0x63, 0xca, 0x82, 0x4d, 0xd2, 0x4a, 0xcc, 0xf4, + 0x11, 0x3b, 0x93, 0x74, 0x2e, 0xc3, 0x69, 0x71, 0xae, 0x8c, 0x29, 0x0b, 0x2a, 0x32, 0xbc, 0x57, + 0xdb, 0x11, 0x57, 0x66, 0x46, 0x2e, 0xad, 0x59, 0x98, 0x2f, 0x94, 0x9c, 0xe2, 0x36, 0x7c, 0x7b, + 0x6f, 0xaa, 0xc8, 0x40, 0x98, 0x33, 0x72, 0x7f, 0xbf, 0x2f, 0x15, 0x17, 0x52, 0x9e, 0xa3, 0x5f, + 0x63, 0x1b, 0xa1, 0x90, 0x05, 0x42, 0xf5, 0x75, 0x8e, 0x4c, 0xf5, 0x3d, 0xc5, 0x77, 0x3c, 0x83, + 0x1d, 0xce, 0xf2, 0x47, 0x5f, 0x72, 0x3a, 0xcf, 0xb6, 0x9e, 0xfd, 0xbd, 0x2c, 0xdd, 0x98, 0xf9, + 0x5e, 0xb1, 0xef, 0x91, 0x77, 0xf2, 0x73, 0x4e, 0xaa, 0x44, 0xc4, 0xdd, 0xf6, 0x81, 0x8f, 0x9a, + 0xfb, 0x80, 0xc5, 0x03, 0xb9, 0x2e, 0xf7, 0x3f, 0xef, 0xc0, 0x98, 0x84, 0x53, 0xf5, 0x38, 0x46, + 0xb7, 0x60, 0x48, 0xb6, 0x54, 0x7c, 0x3d, 0x9b, 0xb6, 0x00, 0xa5, 0xc4, 0xab, 0xc6, 0x28, 0x6e, + 0xee, 0x5b, 0x03, 0x80, 0xd2, 0xbd, 0xaa, 0x15, 0xc6, 0x3e, 0x93, 0x44, 0x87, 0xd8, 0x85, 0x02, + 0x6d, 0x17, 0xba, 0x6e, 0x73, 0x17, 0x4a, 0x9b, 0x65, 0xec, 0x47, 0x5f, 0xca, 0xc8, 0x6d, 0xbe, + 0x31, 0x7d, 0xe4, 0x48, 0xe4, 0xb6, 0xd6, 0x84, 0xfd, 0x25, 0xf8, 0x8e, 0x90, 0xe0, 0x7c, 0xeb, + 0xfa, 0x45, 0xbb, 0x12, 0x5c, 0x6b, 0x45, 0x56, 0x96, 0x47, 0x5c, 0xc2, 0xf2, 0xbd, 0xeb, 0x86, + 0x55, 0x09, 0xab, 0x71, 0x35, 0x65, 0x6d, 0xc4, 0x65, 0xed, 0x80, 0x2d, 0x9e, 0x9a, 0xac, 0xcd, + 0xf2, 0x54, 0x52, 0xf7, 0x55, 0x29, 0x75, 0xf9, 0xae, 0xf5, 0x82, 0x65, 0xa9, 0xab, 0xf1, 0xed, + 0x94, 0xbf, 0xaf, 0xc0, 0x99, 0x4e, 0x3c, 0x4c, 0xb6, 0xd0, 0x45, 0x18, 0xae, 0x84, 0xc1, 0x96, + 0x5f, 0x5b, 0xf5, 0x5a, 0xe2, 0xbc, 0xa6, 0x64, 0xd1, 0x9c, 0x2c, 0xc0, 0x29, 0x0e, 0x7a, 0x98, + 0x0b, 0x1e, 0x6e, 0x11, 0x19, 0x11, 0xa8, 0x7d, 0xcb, 0x64, 0x97, 0x49, 0xa1, 0xf7, 0x0e, 0x7d, + 0xed, 0x9b, 0x53, 0x0f, 0x7c, 0xe2, 0x8f, 0x1f, 0x79, 0xc0, 0xfd, 0xc3, 0x3e, 0x38, 0x9f, 0xcb, + 0x53, 0x68, 0xeb, 0xbf, 0x65, 0x68, 0xeb, 0x5a, 0xb9, 0x90, 0x22, 0x37, 0x6c, 0x2a, 0xb2, 0x1a, + 0xf9, 0x3c, 0xbd, 0x5c, 0x2b, 0xc6, 0xf9, 0x8d, 0xa2, 0x03, 0x15, 0x78, 0x4d, 0x12, 0xb7, 0xbc, + 0x0a, 0x11, 0xbd, 0x57, 0x03, 0x75, 0x55, 0x16, 0xe0, 0x14, 0x87, 0x1f, 0xa1, 0xb7, 0xbc, 0x76, + 0x23, 0x11, 0x86, 0x32, 0xed, 0x08, 0xcd, 0xc0, 0x58, 0x96, 0xa3, 0x7f, 0xe0, 0x00, 0xea, 0xe4, + 0x2a, 0x16, 0xe2, 0xc6, 0x51, 0x8c, 0xc3, 0xec, 0xd9, 0xdb, 0xda, 0x21, 0x5c, 0xeb, 0x69, 0x4e, + 0x3b, 0xb4, 0x6f, 0xfa, 0xb1, 0x74, 0x1f, 0xe2, 0x87, 0x83, 0x1e, 0x6c, 0x68, 0xcc, 0xd4, 0x52, + 0xa9, 0x90, 0x38, 0xe6, 0xe6, 0x38, 0xdd, 0xd4, 0xc2, 0xc0, 0x58, 0x96, 0xa3, 0x29, 0x28, 0x92, + 0x28, 0x0a, 0x23, 0x71, 0xd6, 0x66, 0xd3, 0xf8, 0x32, 0x05, 0x60, 0x0e, 0x77, 0x7f, 0x5c, 0x80, + 0x52, 0xb7, 0xd3, 0x09, 0xfa, 0x1d, 0xed, 0x5c, 0x2d, 0x4e, 0x4e, 0xe2, 0xe0, 0x17, 0x1e, 0xdd, + 0x99, 0x28, 0x7b, 0x00, 0xec, 0x72, 0xc2, 0x16, 0xa5, 0x38, 0xdb, 0xc0, 0xc9, 0x2f, 0x6b, 0x27, + 0x6c, 0x9d, 0x44, 0xce, 0x06, 0xbf, 0x65, 0x6e, 0xf0, 0xeb, 0xb6, 0x3b, 0xa5, 0x6f, 0xf3, 0x7f, + 0x52, 0x84, 0x53, 0xb2, 0xb4, 0x4c, 0xe8, 0x56, 0xf9, 0x7c, 0x9b, 0x44, 0xbb, 0xe8, 0x8f, 0x1c, + 0x38, 0xed, 0x65, 0x4d, 0x37, 0x3e, 0x39, 0x82, 0x81, 0xd6, 0xb8, 0x4e, 0xcf, 0xe4, 0x70, 0xe4, + 0x03, 0x7d, 0x49, 0x0c, 0xf4, 0xe9, 0x3c, 0x94, 0x2e, 0x76, 0xf7, 0xdc, 0x0e, 0xa0, 0x67, 0x61, + 0x54, 0xc2, 0x99, 0xb9, 0x87, 0x2f, 0x71, 0x65, 0xdc, 0x9e, 0xd1, 0xca, 0xb0, 0x81, 0x49, 0x6b, + 0x26, 0xa4, 0xd9, 0x6a, 0x78, 0x09, 0xd1, 0x0c, 0x45, 0xaa, 0xe6, 0x86, 0x56, 0x86, 0x0d, 0x4c, + 0xf4, 0x38, 0x0c, 0x04, 0x61, 0x95, 0x2c, 0x55, 0x85, 0x81, 0x78, 0x5c, 0xd4, 0x19, 0xb8, 0xca, + 0xa0, 0x58, 0x94, 0xa2, 0xc7, 0x52, 0x6b, 0x5c, 0x91, 0x2d, 0xa1, 0x91, 0x3c, 0x4b, 0x1c, 0xfa, + 0x47, 0x0e, 0x0c, 0xd3, 0x1a, 0x1b, 0xbb, 0x2d, 0x42, 0xf7, 0x36, 0xfa, 0x45, 0xaa, 0x47, 0xf3, + 0x45, 0xae, 0x4a, 0x36, 0xa6, 0xa9, 0x63, 0x58, 0xc1, 0xdf, 0x7c, 0x7b, 0x6a, 0x48, 0xfe, 0xc0, + 0x69, 0xab, 0x26, 0x17, 0xe1, 0xc1, 0xae, 0x5f, 0xf3, 0x40, 0xae, 0x80, 0xbf, 0x05, 0xe3, 0x66, + 0x23, 0x0e, 0xe4, 0x07, 0xf8, 0x17, 0xda, 0xb2, 0xe3, 0xfd, 0x12, 0xf2, 0xec, 0xbe, 0x69, 0xb3, + 0x6a, 0x32, 0xcc, 0x8b, 0xa9, 0x67, 0x4e, 0x86, 0x79, 0x31, 0x19, 0xe6, 0xdd, 0x3f, 0x70, 0xd2, + 0xa5, 0xa9, 0xa9, 0x79, 0x74, 0x63, 0x6e, 0x47, 0x0d, 0x21, 0x88, 0xd5, 0xc6, 0x7c, 0x0d, 0xaf, + 0x60, 0x0a, 0x47, 0x5f, 0xd6, 0xa4, 0x23, 0xad, 0xd6, 0x16, 0x6e, 0x0d, 0x4b, 0x26, 0x7a, 0x83, + 0x70, 0xa7, 0xfc, 0x13, 0x05, 0x38, 0xdb, 0x04, 0xf7, 0x4b, 0x05, 0x78, 0x78, 0x5f, 0xa5, 0x35, + 0xb7, 0xe1, 0xce, 0x7d, 0x6f, 0x38, 0xdd, 0xd6, 0x22, 0xd2, 0x0a, 0xaf, 0xe1, 0x15, 0xf1, 0xbd, + 0xd4, 0xb6, 0x86, 0x39, 0x18, 0xcb, 0x72, 0xaa, 0x3a, 0x6c, 0x93, 0xdd, 0x85, 0x30, 0x6a, 0x7a, + 0x89, 0x90, 0x0e, 0x4a, 0x75, 0x58, 0x96, 0x05, 0x38, 0xc5, 0x71, 0xff, 0xc8, 0x81, 0x6c, 0x03, + 0x90, 0x07, 0xe3, 0xed, 0x98, 0x44, 0x74, 0x4b, 0x2d, 0x93, 0x4a, 0x44, 0xe4, 0xf4, 0x7c, 0x6c, + 0x9a, 0x7b, 0xfb, 0x69, 0x0f, 0xa7, 0x2b, 0x61, 0x44, 0xa6, 0x77, 0x9e, 0x9e, 0xe6, 0x18, 0xcb, + 0x64, 0xb7, 0x4c, 0x1a, 0x84, 0xd2, 0x98, 0x45, 0xb7, 0xf7, 0xa6, 0xc6, 0xaf, 0x19, 0x04, 0x70, + 0x86, 0x20, 0x65, 0xd1, 0xf2, 0xe2, 0xf8, 0x66, 0x18, 0x55, 0x05, 0x8b, 0xc2, 0x81, 0x59, 0xac, + 0x1b, 0x04, 0x70, 0x86, 0xa0, 0xfb, 0x03, 0x7a, 0x7c, 0xd4, 0xb5, 0x56, 0xf4, 0x4d, 0xaa, 0xfb, + 0x50, 0xc8, 0x6c, 0x23, 0xdc, 0x9c, 0x0b, 0x83, 0xc4, 0xf3, 0x03, 0x22, 0x83, 0x05, 0x36, 0x2c, + 0xe9, 0xc8, 0x06, 0xed, 0xd4, 0x86, 0xdf, 0x59, 0x86, 0x73, 0xda, 0x42, 0x75, 0x9c, 0xcd, 0x46, + 0xb8, 0x99, 0xf5, 0x02, 0x52, 0x24, 0xcc, 0x4a, 0xdc, 0x9f, 0x3a, 0x70, 0xae, 0x8b, 0x32, 0x8e, + 0xbe, 0xea, 0xc0, 0xd8, 0xe6, 0xcf, 0x44, 0xdf, 0xcc, 0x66, 0xa0, 0xf7, 0xc3, 0x38, 0x05, 0xd0, + 0x9d, 0x48, 0xcc, 0xcd, 0x82, 0xe9, 0xa1, 0x9a, 0x35, 0x4a, 0x71, 0x06, 0xdb, 0xfd, 0xf5, 0x02, + 0xe4, 0x70, 0x41, 0x4f, 0xc1, 0x10, 0x09, 0xaa, 0xad, 0xd0, 0x0f, 0x12, 0x21, 0x8c, 0x94, 0xd4, + 0xbb, 0x2c, 0xe0, 0x58, 0x61, 0x88, 0xf3, 0x87, 0x18, 0x98, 0x42, 0xc7, 0xf9, 0x43, 0xb4, 0x3c, + 0xc5, 0x41, 0x35, 0x98, 0xf0, 0xb8, 0x7f, 0x85, 0xcd, 0x3d, 0x36, 0x4d, 0xfb, 0x0e, 0x32, 0x4d, + 0x4f, 0x33, 0xf7, 0x67, 0x86, 0x04, 0xee, 0x20, 0x8a, 0xde, 0x03, 0x23, 0xed, 0x98, 0x94, 0xe7, + 0x97, 0xe7, 0x22, 0x52, 0xe5, 0xa7, 0x62, 0xcd, 0xef, 0x77, 0x2d, 0x2d, 0xc2, 0x3a, 0x9e, 0xfb, + 0xa7, 0x0e, 0x0c, 0xce, 0x7a, 0x95, 0xed, 0x70, 0x6b, 0x8b, 0x0e, 0x45, 0xb5, 0x1d, 0xa5, 0x86, + 0x2d, 0x6d, 0x28, 0xe6, 0x05, 0x1c, 0x2b, 0x0c, 0xb4, 0x01, 0x03, 0x7c, 0xc1, 0x8b, 0x65, 0xf7, + 0x0b, 0x5a, 0x7f, 0x54, 0x1c, 0x0f, 0x9b, 0x0e, 0xed, 0xc4, 0x6f, 0x4c, 0xf3, 0x38, 0x9e, 0xe9, + 0xa5, 0x20, 0x59, 0x8b, 0xca, 0x49, 0xe4, 0x07, 0xb5, 0x59, 0xa0, 0xdb, 0xc5, 0x02, 0xa3, 0x81, + 0x05, 0x2d, 0xda, 0x8d, 0xa6, 0x77, 0x4b, 0xb2, 0x13, 0xe2, 0x47, 0x75, 0x63, 0x35, 0x2d, 0xc2, + 0x3a, 0x1e, 0xdd, 0x4d, 0x2a, 0x5e, 0x4b, 0xe8, 0x25, 0x6a, 0x37, 0x99, 0xf3, 0x5a, 0x98, 0xc2, + 0xdd, 0x3f, 0x74, 0x60, 0x78, 0xd6, 0x8b, 0xfd, 0xca, 0x5f, 0x22, 0xd9, 0xf4, 0x61, 0x28, 0xce, + 0x79, 0x95, 0x3a, 0x41, 0xd7, 0xb2, 0x67, 0xe2, 0x91, 0x4b, 0x4f, 0xe4, 0xb1, 0x51, 0xe7, 0x63, + 0x9d, 0xd3, 0x58, 0xb7, 0x93, 0xb3, 0xfb, 0xb6, 0x03, 0xe3, 0x73, 0x0d, 0x9f, 0x04, 0xc9, 0x1c, + 0x89, 0x12, 0x36, 0x70, 0x35, 0x98, 0xa8, 0x28, 0xc8, 0x61, 0x86, 0x8e, 0x4d, 0xe6, 0xb9, 0x0c, + 0x09, 0xdc, 0x41, 0x14, 0x55, 0xe1, 0x04, 0x87, 0xa5, 0x8b, 0xe6, 0x40, 0xe3, 0xc7, 0x8c, 0xa7, + 0x73, 0x26, 0x05, 0x9c, 0x25, 0xe9, 0xfe, 0xc4, 0x81, 0x73, 0x73, 0x8d, 0x76, 0x9c, 0x90, 0xe8, + 0x86, 0x10, 0x56, 0x52, 0xfb, 0x45, 0x1f, 0x85, 0xa1, 0xa6, 0x74, 0xe8, 0x3a, 0x77, 0x99, 0xdf, + 0x4c, 0xdc, 0x51, 0x6c, 0xda, 0x98, 0xb5, 0xcd, 0x97, 0x49, 0x25, 0x59, 0x25, 0x89, 0x97, 0x46, + 0x1f, 0xa4, 0x30, 0xac, 0xa8, 0xa2, 0x16, 0xf4, 0xc7, 0x2d, 0x52, 0xb1, 0x17, 0xfc, 0x25, 0xfb, + 0x50, 0x6e, 0x91, 0x4a, 0x2a, 0xf6, 0x99, 0x2b, 0x92, 0x71, 0x72, 0xff, 0xb7, 0x03, 0xe7, 0xbb, + 0xf4, 0x77, 0xc5, 0x8f, 0x13, 0xf4, 0x52, 0x47, 0x9f, 0xa7, 0x7b, 0xeb, 0x33, 0xad, 0xcd, 0x7a, + 0xac, 0xe4, 0x85, 0x84, 0x68, 0xfd, 0xfd, 0x18, 0x14, 0xfd, 0x84, 0x34, 0xa5, 0x95, 0xda, 0x82, + 0x3d, 0xa9, 0x4b, 0x5f, 0x66, 0xc7, 0x64, 0x08, 0xe0, 0x12, 0xe5, 0x87, 0x39, 0x5b, 0x77, 0x1b, + 0x06, 0xe6, 0xc2, 0x46, 0xbb, 0x19, 0xf4, 0x16, 0x48, 0x93, 0xec, 0xb6, 0x48, 0x76, 0x0b, 0x65, + 0xa7, 0x03, 0x56, 0x22, 0xed, 0x4a, 0x7d, 0xf9, 0x76, 0x25, 0xf7, 0x5f, 0x39, 0x40, 0x57, 0x55, + 0xd5, 0x17, 0x8e, 0x46, 0x4e, 0x8e, 0x33, 0x7c, 0x58, 0x27, 0x77, 0x67, 0x6f, 0x6a, 0x4c, 0x21, + 0x6a, 0xf4, 0x3f, 0x0c, 0x03, 0x31, 0x3b, 0xb1, 0x8b, 0x36, 0x2c, 0x48, 0xf5, 0x9a, 0x9f, 0xe3, + 0xef, 0xec, 0x4d, 0xf5, 0x14, 0xd5, 0x39, 0xad, 0x68, 0x0b, 0x9f, 0xa8, 0xa0, 0x4a, 0xf5, 0xc1, + 0x26, 0x89, 0x63, 0xaf, 0x26, 0x0f, 0x80, 0x4a, 0x1f, 0x5c, 0xe5, 0x60, 0x2c, 0xcb, 0xdd, 0xaf, + 0x38, 0x30, 0xa6, 0xf6, 0x36, 0xaa, 0xdd, 0xa3, 0xab, 0xfa, 0x2e, 0xc8, 0x67, 0xca, 0xc3, 0x5d, + 0x24, 0x8e, 0xd8, 0xe7, 0xf7, 0xdf, 0x24, 0xdf, 0x0d, 0xa3, 0x55, 0xd2, 0x22, 0x41, 0x95, 0x04, + 0x15, 0x7a, 0x3a, 0xa7, 0x33, 0x64, 0x78, 0x76, 0x82, 0x1e, 0x47, 0xe7, 0x35, 0x38, 0x36, 0xb0, + 0xdc, 0x6f, 0x39, 0xf0, 0xa0, 0x22, 0x57, 0x26, 0x09, 0x26, 0x49, 0xb4, 0xab, 0xa2, 0x38, 0x0f, + 0xb6, 0x99, 0xdd, 0xa0, 0xea, 0x71, 0x12, 0x71, 0xe6, 0x87, 0xdb, 0xcd, 0x46, 0xb8, 0x32, 0xcd, + 0x88, 0x60, 0x49, 0xcd, 0xfd, 0xd5, 0x3e, 0x38, 0xad, 0x37, 0x52, 0x09, 0x98, 0x4f, 0x3a, 0x00, + 0x6a, 0x04, 0xe8, 0x7e, 0xdd, 0x67, 0xc7, 0xb5, 0x65, 0x7c, 0xa9, 0x54, 0x04, 0x29, 0x70, 0x8c, + 0x35, 0xb6, 0xe8, 0x05, 0x18, 0xdd, 0xa1, 0x8b, 0x82, 0xac, 0x52, 0x6d, 0x22, 0x2e, 0xf5, 0xb1, + 0x66, 0x4c, 0xe5, 0x7d, 0xcc, 0xeb, 0x29, 0x5e, 0x6a, 0x2d, 0xd0, 0x80, 0x31, 0x36, 0x48, 0xd1, + 0x83, 0xd0, 0x58, 0xa4, 0x7f, 0x12, 0x61, 0x32, 0xff, 0x90, 0xc5, 0x3e, 0x66, 0xbf, 0xfa, 0xec, + 0xc9, 0xdb, 0x7b, 0x53, 0x63, 0x06, 0x08, 0x9b, 0x8d, 0x70, 0x5f, 0x00, 0x36, 0x16, 0x7e, 0xd0, + 0x26, 0x6b, 0x01, 0x7a, 0x54, 0x9a, 0xf0, 0xb8, 0xdb, 0x45, 0x49, 0x0e, 0xdd, 0x8c, 0x47, 0x8f, + 0xba, 0x5b, 0x9e, 0xdf, 0x60, 0xd1, 0x8d, 0x14, 0x4b, 0x1d, 0x75, 0x17, 0x18, 0x14, 0x8b, 0x52, + 0x77, 0x1a, 0x06, 0xe7, 0x68, 0xdf, 0x49, 0x44, 0xe9, 0xea, 0x41, 0xc9, 0x63, 0x46, 0x50, 0xb2, + 0x0c, 0x3e, 0xde, 0x80, 0x33, 0x73, 0x11, 0xf1, 0x12, 0x52, 0x7e, 0x66, 0xb6, 0x5d, 0xd9, 0x26, + 0x09, 0x8f, 0xfc, 0x8a, 0xd1, 0xfb, 0x60, 0x2c, 0x64, 0x5b, 0xc6, 0x4a, 0x58, 0xd9, 0xf6, 0x83, + 0x9a, 0xb0, 0xc8, 0x9e, 0x11, 0x54, 0xc6, 0xd6, 0xf4, 0x42, 0x6c, 0xe2, 0xba, 0xff, 0xb1, 0x00, + 0xa3, 0x73, 0x51, 0x18, 0x48, 0xb1, 0x78, 0x0c, 0x5b, 0x59, 0x62, 0x6c, 0x65, 0x16, 0xbc, 0xa1, + 0x7a, 0xfb, 0xbb, 0x6d, 0x67, 0xe8, 0x75, 0x25, 0x22, 0xfb, 0x6c, 0x9d, 0x50, 0x0c, 0xbe, 0x8c, + 0x76, 0xfa, 0xb1, 0x4d, 0x01, 0xea, 0xfe, 0x27, 0x07, 0x26, 0x74, 0xf4, 0x63, 0xd8, 0x41, 0x63, + 0x73, 0x07, 0xbd, 0x6a, 0xb7, 0xbf, 0x5d, 0xb6, 0xcd, 0xb7, 0x07, 0xcd, 0x7e, 0x32, 0x57, 0xf8, + 0xd7, 0x1c, 0x18, 0xbd, 0xa9, 0x01, 0x44, 0x67, 0x6d, 0x2b, 0x31, 0xef, 0x90, 0x62, 0x46, 0x87, + 0xde, 0xc9, 0xfc, 0xc6, 0x46, 0x4b, 0xa8, 0xdc, 0x8f, 0x2b, 0x75, 0x52, 0x6d, 0x37, 0xe4, 0xf6, + 0xad, 0x86, 0xb4, 0x2c, 0xe0, 0x58, 0x61, 0xa0, 0x97, 0xe0, 0x64, 0x25, 0x0c, 0x2a, 0xed, 0x28, + 0x22, 0x41, 0x65, 0x77, 0x9d, 0x5d, 0xa1, 0x10, 0x1b, 0xe2, 0xb4, 0xa8, 0x76, 0x72, 0x2e, 0x8b, + 0x70, 0x27, 0x0f, 0x88, 0x3b, 0x09, 0x71, 0x5f, 0x42, 0x4c, 0xb7, 0x2c, 0x71, 0x1e, 0xd3, 0x7c, + 0x09, 0x0c, 0x8c, 0x65, 0x39, 0xba, 0x06, 0xe7, 0xe2, 0xc4, 0x8b, 0x12, 0x3f, 0xa8, 0xcd, 0x13, + 0xaf, 0xda, 0xf0, 0x03, 0x7a, 0x94, 0x08, 0x83, 0x2a, 0xf7, 0x34, 0xf6, 0xcd, 0x9e, 0xbf, 0xbd, + 0x37, 0x75, 0xae, 0x9c, 0x8f, 0x82, 0xbb, 0xd5, 0x45, 0x1f, 0x86, 0x49, 0xe1, 0xad, 0xd8, 0x6a, + 0x37, 0x9e, 0x0b, 0x37, 0xe3, 0x2b, 0x7e, 0x4c, 0x8f, 0xf9, 0x2b, 0x7e, 0xd3, 0x4f, 0x98, 0x3f, + 0xb1, 0x38, 0x7b, 0xe1, 0xf6, 0xde, 0xd4, 0x64, 0xb9, 0x2b, 0x16, 0xde, 0x87, 0x02, 0xc2, 0x70, + 0x96, 0x0b, 0xbf, 0x0e, 0xda, 0x83, 0x8c, 0xf6, 0xe4, 0xed, 0xbd, 0xa9, 0xb3, 0x0b, 0xb9, 0x18, + 0xb8, 0x4b, 0x4d, 0xfa, 0x05, 0x13, 0xbf, 0x49, 0x5e, 0x0d, 0x03, 0xc2, 0xe2, 0x58, 0xb4, 0x2f, + 0xb8, 0x21, 0xe0, 0x58, 0x61, 0xa0, 0x97, 0xd3, 0x99, 0x48, 0x97, 0x8b, 0x88, 0x47, 0x39, 0xb8, + 0x84, 0x63, 0x47, 0x93, 0x1b, 0x1a, 0x25, 0x16, 0x68, 0x69, 0xd0, 0x46, 0x9f, 0x72, 0x60, 0x34, + 0x4e, 0x42, 0x75, 0xed, 0x41, 0x04, 0xa4, 0x58, 0x98, 0xf6, 0x65, 0x8d, 0x2a, 0x57, 0x7c, 0x74, + 0x08, 0x36, 0xb8, 0xa2, 0x77, 0xc2, 0xb0, 0x9c, 0xc0, 0x71, 0x69, 0x84, 0xe9, 0x4a, 0xec, 0x18, + 0x27, 0xe7, 0x77, 0x8c, 0xd3, 0x72, 0xaa, 0xca, 0xde, 0xac, 0x93, 0x80, 0x85, 0xe4, 0x6a, 0xaa, + 0xec, 0x8d, 0x3a, 0x09, 0x30, 0x2b, 0x71, 0x7f, 0xdc, 0x07, 0xa8, 0x53, 0xf0, 0xa1, 0x65, 0x18, + 0xf0, 0x2a, 0x89, 0xbf, 0x23, 0xc3, 0x11, 0x1f, 0xcd, 0x53, 0x0a, 0xf8, 0x00, 0x62, 0xb2, 0x45, + 0xe8, 0xbc, 0x27, 0xa9, 0xb4, 0x9c, 0x61, 0x55, 0xb1, 0x20, 0x81, 0x42, 0x38, 0xd9, 0xf0, 0xe2, + 0x44, 0xb6, 0xb0, 0x4a, 0x3f, 0xa4, 0xd8, 0x2e, 0x7e, 0xbe, 0xb7, 0x4f, 0x45, 0x6b, 0xcc, 0x9e, + 0xa1, 0xeb, 0x71, 0x25, 0x4b, 0x08, 0x77, 0xd2, 0x46, 0x1f, 0x67, 0xda, 0x15, 0x57, 0x7d, 0xa5, + 0x5a, 0xb3, 0x6c, 0x45, 0xf3, 0xe0, 0x34, 0x0d, 0xcd, 0x4a, 0xb0, 0xc1, 0x1a, 0x4b, 0x74, 0x11, + 0x86, 0xd9, 0xba, 0x21, 0x55, 0xc2, 0x57, 0x7f, 0x5f, 0xaa, 0x04, 0x97, 0x65, 0x01, 0x4e, 0x71, + 0x34, 0x2d, 0x83, 0x2f, 0xf8, 0x2e, 0x5a, 0x06, 0x7a, 0x16, 0x8a, 0xad, 0xba, 0x17, 0xcb, 0x10, + 0x77, 0x57, 0x4a, 0xed, 0x75, 0x0a, 0x64, 0xa2, 0x49, 0xfb, 0x96, 0x0c, 0x88, 0x79, 0x05, 0xf7, + 0x5f, 0x03, 0x0c, 0xce, 0xcf, 0x2c, 0x6e, 0x78, 0xf1, 0x76, 0x0f, 0x67, 0x20, 0xba, 0x0c, 0x85, + 0xb2, 0x9a, 0x15, 0xa4, 0x52, 0x89, 0xc5, 0x0a, 0x03, 0x05, 0x30, 0xe0, 0x07, 0x54, 0xf2, 0x94, + 0xc6, 0x6d, 0xb9, 0x21, 0xd4, 0x79, 0x8e, 0xd9, 0x89, 0x96, 0x18, 0x75, 0x2c, 0xb8, 0xa0, 0xd7, + 0x61, 0xd8, 0x93, 0x37, 0x8c, 0xc4, 0xfe, 0xbf, 0x6c, 0xc3, 0xbe, 0x2e, 0x48, 0xea, 0x11, 0x4e, + 0x02, 0x84, 0x53, 0x86, 0xe8, 0x13, 0x0e, 0x8c, 0xc8, 0xae, 0x63, 0xb2, 0x25, 0x5c, 0xdf, 0xab, + 0xf6, 0xfa, 0x8c, 0xc9, 0x16, 0x0f, 0x7f, 0xd1, 0x00, 0x58, 0x67, 0xd9, 0x71, 0x66, 0x2a, 0xf6, + 0x72, 0x66, 0x42, 0x37, 0x61, 0xf8, 0xa6, 0x9f, 0xd4, 0xd9, 0x0e, 0x2f, 0x5c, 0x6e, 0x0b, 0xf7, + 0xde, 0x6a, 0x4a, 0x2e, 0x1d, 0xb1, 0x1b, 0x92, 0x01, 0x4e, 0x79, 0xd1, 0xe5, 0x40, 0x7f, 0xb0, + 0x1b, 0x5a, 0x6c, 0x6f, 0x18, 0x36, 0x2b, 0xb0, 0x02, 0x9c, 0xe2, 0xd0, 0x21, 0x1e, 0xa5, 0xbf, + 0xca, 0xe4, 0x95, 0x36, 0x15, 0x2d, 0x22, 0xa4, 0xd1, 0xc2, 0xbc, 0x92, 0x14, 0xf9, 0x60, 0xdd, + 0xd0, 0x78, 0x60, 0x83, 0xa3, 0x12, 0x9d, 0xc3, 0xdd, 0x44, 0x27, 0x7a, 0x9d, 0x9f, 0xe1, 0xf8, + 0x61, 0x42, 0xec, 0x06, 0x2b, 0x76, 0xce, 0x37, 0x9c, 0x26, 0xbf, 0xf5, 0x90, 0xfe, 0xc6, 0x1a, + 0x3f, 0x2a, 0x31, 0xc2, 0xe0, 0xf2, 0x2d, 0x3f, 0x11, 0x77, 0x35, 0x94, 0xc4, 0x58, 0x63, 0x50, + 0x2c, 0x4a, 0x79, 0x68, 0x07, 0x9d, 0x04, 0xb1, 0xd8, 0x05, 0xb4, 0xd0, 0x0e, 0x06, 0xc6, 0xb2, + 0x1c, 0xfd, 0x43, 0x07, 0x8a, 0xf5, 0x30, 0xdc, 0x8e, 0x4b, 0x63, 0x6c, 0x72, 0x58, 0xd0, 0xa9, + 0x85, 0xc4, 0x99, 0xbe, 0x42, 0xc9, 0x9a, 0xb7, 0xcf, 0x8a, 0x0c, 0x76, 0x67, 0x6f, 0x6a, 0x7c, + 0xc5, 0xdf, 0x22, 0x95, 0xdd, 0x4a, 0x83, 0x30, 0xc8, 0x9b, 0x6f, 0x6b, 0x90, 0xcb, 0x3b, 0x24, + 0x48, 0x30, 0x6f, 0xd5, 0xe4, 0xe7, 0x1d, 0x80, 0x94, 0x50, 0x8e, 0x0f, 0x95, 0x98, 0x51, 0x07, + 0x16, 0x0e, 0xd4, 0x46, 0xd3, 0x74, 0xa7, 0xec, 0xbf, 0x75, 0x60, 0x84, 0x76, 0x4e, 0x8a, 0xc0, + 0xc7, 0x61, 0x20, 0xf1, 0xa2, 0x1a, 0x91, 0x7e, 0x04, 0xf5, 0x39, 0x36, 0x18, 0x14, 0x8b, 0x52, + 0x14, 0x40, 0x31, 0xf1, 0xe2, 0x6d, 0xa9, 0xc6, 0x2f, 0x59, 0x1b, 0xe2, 0x54, 0x83, 0xa7, 0xbf, + 0x62, 0xcc, 0xd9, 0xa0, 0x27, 0x60, 0x88, 0x6e, 0x1d, 0x0b, 0x5e, 0x2c, 0x43, 0x7b, 0x46, 0xa9, + 0x10, 0x5f, 0x10, 0x30, 0xac, 0x4a, 0xdd, 0x5f, 0x2f, 0x40, 0xff, 0x3c, 0x3f, 0xd0, 0x0d, 0xc4, + 0x61, 0x3b, 0xaa, 0x10, 0xa1, 0xd8, 0x5b, 0x98, 0xd3, 0x94, 0x6e, 0x99, 0xd1, 0xd4, 0x8e, 0x54, + 0xec, 0x37, 0x16, 0xbc, 0xd0, 0x97, 0x1d, 0x18, 0x4f, 0x22, 0x2f, 0x88, 0xb7, 0x98, 0xc7, 0xc6, + 0x0f, 0x03, 0x31, 0x44, 0x16, 0x66, 0xe1, 0x86, 0x41, 0xb7, 0x9c, 0x90, 0x56, 0xea, 0x38, 0x32, + 0xcb, 0x70, 0xa6, 0x0d, 0xee, 0x6f, 0x38, 0x00, 0x69, 0xeb, 0xd1, 0xe7, 0x1c, 0x18, 0xf3, 0xf4, + 0x90, 0x52, 0x31, 0x46, 0x6b, 0xf6, 0xdc, 0xbb, 0x8c, 0x2c, 0xb7, 0x65, 0x18, 0x20, 0x6c, 0x32, + 0x76, 0xdf, 0x03, 0x45, 0xb6, 0x3a, 0xd8, 0xa1, 0x47, 0xd8, 0xbe, 0xb3, 0xc6, 0x2e, 0x69, 0x13, + 0xc7, 0x0a, 0xc3, 0x7d, 0x09, 0xc6, 0x2f, 0xdf, 0x22, 0x95, 0x76, 0x12, 0x46, 0xdc, 0xf2, 0xdf, + 0xe5, 0x0a, 0x91, 0x73, 0xa8, 0x2b, 0x44, 0xdf, 0x75, 0x60, 0x44, 0x8b, 0x2f, 0xa4, 0x3b, 0x75, + 0x6d, 0xae, 0xcc, 0x0d, 0x1c, 0x62, 0xa8, 0x96, 0xad, 0x44, 0x30, 0x72, 0x92, 0xe9, 0x36, 0xa2, + 0x40, 0x38, 0x65, 0x78, 0x97, 0xf8, 0x3f, 0xf7, 0xf7, 0x1d, 0x38, 0x93, 0x1b, 0x0c, 0x79, 0x9f, + 0x9b, 0x6d, 0xf8, 0xe0, 0x0b, 0x3d, 0xf8, 0xe0, 0x7f, 0xdb, 0x81, 0x94, 0x12, 0x15, 0x45, 0x9b, + 0x69, 0xcb, 0x35, 0x51, 0x24, 0x38, 0x89, 0x52, 0xf4, 0x3a, 0x9c, 0x33, 0xbf, 0xe0, 0x21, 0xfd, + 0x2d, 0xfc, 0x70, 0x9a, 0x4f, 0x09, 0x77, 0x63, 0xe1, 0x7e, 0xdd, 0x81, 0xe2, 0xa2, 0xd7, 0xae, + 0x91, 0x9e, 0xcc, 0x65, 0x54, 0x8e, 0x45, 0xc4, 0x6b, 0x24, 0xf2, 0xe8, 0x20, 0xe4, 0x18, 0x16, + 0x30, 0xac, 0x4a, 0xd1, 0x0c, 0x0c, 0x87, 0x2d, 0x62, 0xb8, 0x10, 0x1f, 0x95, 0xa3, 0xb7, 0x26, + 0x0b, 0xe8, 0xb6, 0xc3, 0xb8, 0x2b, 0x08, 0x4e, 0x6b, 0xb9, 0xdf, 0x18, 0x80, 0x11, 0xed, 0xda, + 0x0c, 0xd5, 0x05, 0x22, 0xd2, 0x0a, 0xb3, 0xfa, 0x32, 0x9d, 0x30, 0x98, 0x95, 0xd0, 0x35, 0x18, + 0x91, 0x1d, 0x3f, 0xe6, 0x62, 0xcb, 0x58, 0x83, 0x58, 0xc0, 0xb1, 0xc2, 0x40, 0x53, 0x50, 0xac, + 0x92, 0x56, 0x52, 0x67, 0xcd, 0xeb, 0xe7, 0xb1, 0x83, 0xf3, 0x14, 0x80, 0x39, 0x9c, 0x22, 0x6c, + 0x91, 0xa4, 0x52, 0x67, 0x96, 0x61, 0x11, 0x5c, 0xb8, 0x40, 0x01, 0x98, 0xc3, 0x73, 0xbc, 0x98, + 0xc5, 0xa3, 0xf7, 0x62, 0x0e, 0x58, 0xf6, 0x62, 0xa2, 0x16, 0x9c, 0x8a, 0xe3, 0xfa, 0x7a, 0xe4, + 0xef, 0x78, 0x09, 0x49, 0x67, 0xdf, 0xe0, 0x41, 0xf8, 0x9c, 0x63, 0x17, 0xd9, 0xcb, 0x57, 0xb2, + 0x54, 0x70, 0x1e, 0x69, 0x54, 0x86, 0x33, 0x7e, 0x10, 0x93, 0x4a, 0x3b, 0x22, 0x4b, 0xb5, 0x20, + 0x8c, 0xc8, 0x95, 0x30, 0xa6, 0xe4, 0xc4, 0x35, 0x5c, 0x15, 0x6e, 0xbb, 0x94, 0x87, 0x84, 0xf3, + 0xeb, 0xa2, 0x45, 0x38, 0x59, 0xf5, 0x63, 0x6f, 0xb3, 0x41, 0xca, 0xed, 0xcd, 0x66, 0xc8, 0x8f, + 0xe6, 0xc3, 0x8c, 0xe0, 0x83, 0xd2, 0x8e, 0x34, 0x9f, 0x45, 0xc0, 0x9d, 0x75, 0xd0, 0xb3, 0x30, + 0x1a, 0xfb, 0x41, 0xad, 0x41, 0x66, 0x23, 0x2f, 0xa8, 0xd4, 0xc5, 0xfd, 0x5d, 0x65, 0x6f, 0x2f, + 0x6b, 0x65, 0xd8, 0xc0, 0x64, 0x6b, 0x9e, 0xd7, 0xc9, 0x68, 0x83, 0x02, 0x5b, 0x94, 0xa2, 0x19, + 0x38, 0x21, 0xfb, 0x50, 0xde, 0xf6, 0x5b, 0x1b, 0x2b, 0x65, 0xa6, 0x15, 0x0e, 0xa5, 0xc1, 0x44, + 0x4b, 0x66, 0x31, 0xce, 0xe2, 0xbb, 0x3f, 0x74, 0x60, 0x54, 0x8f, 0x96, 0xa7, 0xca, 0x3a, 0xd4, + 0xe7, 0x17, 0xca, 0x7c, 0x3b, 0xb1, 0xa7, 0x34, 0x5c, 0x51, 0x34, 0xd3, 0xf3, 0x76, 0x0a, 0xc3, + 0x1a, 0xcf, 0x1e, 0xee, 0xbe, 0x3f, 0x0a, 0xc5, 0xad, 0x90, 0xea, 0x34, 0x7d, 0xa6, 0xad, 0x7f, + 0x81, 0x02, 0x31, 0x2f, 0x73, 0xff, 0xbb, 0x03, 0x67, 0xf3, 0x2f, 0x02, 0xfc, 0x2c, 0x74, 0xf2, + 0x12, 0x00, 0xed, 0x8a, 0xb1, 0x2f, 0x68, 0xd9, 0x2f, 0x64, 0x09, 0xd6, 0xb0, 0x7a, 0xeb, 0xf6, + 0xbf, 0x29, 0x80, 0xc6, 0x13, 0x7d, 0xc1, 0x81, 0x31, 0xca, 0x76, 0x39, 0xda, 0x34, 0x7a, 0xbb, + 0x66, 0xa7, 0xb7, 0x8a, 0x6c, 0xea, 0xd2, 0x30, 0xc0, 0xd8, 0x64, 0x8e, 0xde, 0x09, 0xc3, 0x5e, + 0xb5, 0x1a, 0x91, 0x38, 0x56, 0xce, 0x41, 0x66, 0xf0, 0x9a, 0x91, 0x40, 0x9c, 0x96, 0x53, 0x39, + 0x5c, 0xaf, 0x6e, 0xc5, 0x54, 0xb4, 0x09, 0xd9, 0xaf, 0xe4, 0x30, 0x65, 0x42, 0xe1, 0x58, 0x61, + 0xa0, 0xeb, 0x70, 0xb6, 0xea, 0x25, 0x1e, 0x57, 0x01, 0x49, 0xb4, 0x1e, 0x85, 0x09, 0xa9, 0xb0, + 0x7d, 0x83, 0xc7, 0x92, 0x5c, 0x10, 0x75, 0xcf, 0xce, 0xe7, 0x62, 0xe1, 0x2e, 0xb5, 0xdd, 0x5f, + 0xe9, 0x07, 0xb3, 0x4f, 0xa8, 0x0a, 0x27, 0xb6, 0xa3, 0xcd, 0x39, 0x16, 0xb3, 0x71, 0x98, 0xd8, + 0x09, 0x16, 0xd3, 0xb0, 0x6c, 0x52, 0xc0, 0x59, 0x92, 0x82, 0xcb, 0x32, 0xd9, 0x4d, 0xbc, 0xcd, + 0x43, 0x47, 0x4e, 0x2c, 0x9b, 0x14, 0x70, 0x96, 0x24, 0x7a, 0x0f, 0x8c, 0x6c, 0x47, 0x9b, 0x72, + 0xf7, 0xc8, 0x46, 0xe9, 0x2c, 0xa7, 0x45, 0x58, 0xc7, 0xa3, 0x9f, 0x66, 0x3b, 0xda, 0xa4, 0x1b, + 0xb6, 0xcc, 0x31, 0xa1, 0x3e, 0xcd, 0xb2, 0x80, 0x63, 0x85, 0x81, 0x5a, 0x80, 0xb6, 0xe5, 0xe8, + 0xa9, 0x08, 0x15, 0xb1, 0xc9, 0xf5, 0x1e, 0xe0, 0xc2, 0x6e, 0x0e, 0x2c, 0x77, 0xd0, 0xc1, 0x39, + 0xb4, 0xd1, 0x0b, 0x70, 0x6e, 0x3b, 0xda, 0x14, 0x7a, 0xcc, 0x7a, 0xe4, 0x07, 0x15, 0xbf, 0x65, + 0xe4, 0x93, 0x98, 0x12, 0xcd, 0x3d, 0xb7, 0x9c, 0x8f, 0x86, 0xbb, 0xd5, 0x77, 0x7f, 0xa7, 0x1f, + 0xd8, 0x4d, 0x58, 0x2a, 0xa6, 0x9b, 0x24, 0xa9, 0x87, 0xd5, 0xac, 0x6a, 0xb6, 0xca, 0xa0, 0x58, + 0x94, 0xca, 0xf8, 0xd8, 0x42, 0x97, 0xf8, 0xd8, 0x9b, 0x30, 0x58, 0x27, 0x5e, 0x95, 0x44, 0xd2, + 0xb8, 0xb9, 0x62, 0xe7, 0xee, 0xee, 0x15, 0x46, 0x34, 0xb5, 0x10, 0xf0, 0xdf, 0x31, 0x96, 0xdc, + 0xd0, 0x7b, 0x61, 0x9c, 0xea, 0x58, 0x61, 0x3b, 0x91, 0xfe, 0x09, 0x6e, 0xdc, 0x64, 0x9b, 0xfd, + 0x86, 0x51, 0x82, 0x33, 0x98, 0x68, 0x1e, 0x26, 0x84, 0x2f, 0x41, 0x19, 0x4d, 0xc5, 0xc0, 0xaa, + 0x44, 0x1f, 0xe5, 0x4c, 0x39, 0xee, 0xa8, 0xc1, 0xe2, 0x1b, 0xc3, 0x2a, 0x77, 0x27, 0xeb, 0xf1, + 0x8d, 0x61, 0x75, 0x17, 0xb3, 0x12, 0xf4, 0x2a, 0x0c, 0xd1, 0xbf, 0x0b, 0x51, 0xd8, 0x14, 0x66, + 0xa3, 0x75, 0x3b, 0xa3, 0x43, 0x79, 0x88, 0x43, 0x2c, 0xd3, 0x3d, 0x67, 0x05, 0x17, 0xac, 0xf8, + 0xd1, 0xa3, 0x94, 0xbe, 0x5d, 0x5e, 0x27, 0x91, 0xbf, 0xb5, 0xcb, 0xf4, 0x99, 0xa1, 0xf4, 0x28, + 0xb5, 0xd4, 0x81, 0x81, 0x73, 0x6a, 0xb9, 0x5f, 0x28, 0xc0, 0xa8, 0x7e, 0xa1, 0xfa, 0x6e, 0x41, + 0xd3, 0x71, 0x3a, 0x29, 0xf8, 0xc1, 0xf9, 0x8a, 0x85, 0x6e, 0xdf, 0x6d, 0x42, 0xd4, 0xa1, 0xdf, + 0x6b, 0x0b, 0x45, 0xd6, 0x8a, 0x7d, 0x8e, 0xf5, 0xb8, 0x9d, 0xd4, 0xf9, 0xcd, 0x3b, 0x16, 0xce, + 0xcc, 0x38, 0xb8, 0x9f, 0xee, 0x83, 0x21, 0x59, 0x88, 0x3e, 0xe5, 0x00, 0xa4, 0x71, 0x63, 0x42, + 0x94, 0xae, 0xdb, 0x08, 0x2a, 0xd2, 0x43, 0xde, 0x34, 0x33, 0xbf, 0x82, 0x63, 0x8d, 0x2f, 0x4a, + 0x60, 0x20, 0xa4, 0x8d, 0xbb, 0x64, 0x2f, 0x29, 0xc0, 0x1a, 0x65, 0x7c, 0x89, 0x71, 0x4f, 0x2d, + 0x7a, 0x0c, 0x86, 0x05, 0x2f, 0x7a, 0x38, 0xdd, 0x94, 0xe1, 0x8c, 0xf6, 0xac, 0xdf, 0x2a, 0x42, + 0x32, 0x3d, 0x6b, 0x2a, 0x10, 0x4e, 0x19, 0xba, 0x4f, 0xc3, 0xb8, 0xb9, 0x18, 0xe8, 0x61, 0x65, + 0x73, 0x37, 0x21, 0xdc, 0x14, 0x32, 0xca, 0x0f, 0x2b, 0xb3, 0x14, 0x80, 0x39, 0xdc, 0xfd, 0x81, + 0x03, 0x90, 0x8a, 0x97, 0x1e, 0xbc, 0x0f, 0x8f, 0xea, 0x76, 0xbc, 0x6e, 0x27, 0xc2, 0x8f, 0xc3, + 0x30, 0xfb, 0x87, 0x2d, 0xf4, 0x3e, 0x5b, 0xc1, 0x07, 0x69, 0x3b, 0xc5, 0x52, 0x67, 0xba, 0xc6, + 0x75, 0xc9, 0x08, 0xa7, 0x3c, 0xdd, 0x10, 0x26, 0xb2, 0xd8, 0xe8, 0x43, 0x30, 0x1a, 0xcb, 0x6d, + 0x35, 0xbd, 0x1e, 0xd8, 0xe3, 0xf6, 0xcb, 0x5d, 0x7f, 0x5a, 0x75, 0x6c, 0x10, 0x73, 0xd7, 0x60, + 0xc0, 0xea, 0x10, 0xba, 0xdf, 0x71, 0x60, 0x98, 0x79, 0x5f, 0x6b, 0x91, 0xd7, 0x4c, 0xab, 0xf4, + 0xed, 0x33, 0xea, 0x31, 0x0c, 0x72, 0xf3, 0x81, 0x8c, 0x5a, 0xb2, 0x20, 0x65, 0x78, 0x2e, 0xbf, + 0x54, 0xca, 0x70, 0x3b, 0x45, 0x8c, 0x25, 0x27, 0xf7, 0x33, 0x05, 0x18, 0x58, 0x0a, 0x5a, 0xed, + 0xbf, 0xf2, 0xf9, 0xe4, 0x56, 0xa1, 0x7f, 0x29, 0x21, 0x4d, 0x33, 0xed, 0xe1, 0xe8, 0xec, 0x63, + 0x7a, 0xca, 0xc3, 0x92, 0x99, 0xf2, 0x10, 0x7b, 0x37, 0x65, 0x50, 0x9f, 0x30, 0x5f, 0xa7, 0x57, + 0x24, 0x9f, 0x82, 0xe1, 0x15, 0x6f, 0x93, 0x34, 0x96, 0xc9, 0x2e, 0xbb, 0xd0, 0xc8, 0x03, 0x4c, + 0x9c, 0xd4, 0xe6, 0x60, 0x04, 0x83, 0xcc, 0xc3, 0x38, 0xc3, 0x56, 0x8b, 0x81, 0x9e, 0x48, 0x48, + 0x9a, 0x33, 0xca, 0x31, 0x4f, 0x24, 0x5a, 0xbe, 0x28, 0x0d, 0xcb, 0x9d, 0x86, 0x91, 0x94, 0x4a, + 0x0f, 0x5c, 0x7f, 0x5a, 0x80, 0x31, 0xc3, 0x0a, 0x6f, 0xf8, 0x26, 0x9d, 0xbb, 0xfa, 0x26, 0x0d, + 0x5f, 0x61, 0xe1, 0x7e, 0xfb, 0x0a, 0xfb, 0x8e, 0xdf, 0x57, 0x68, 0x7e, 0xa4, 0xfe, 0x9e, 0x3e, + 0x52, 0x03, 0xfa, 0x57, 0xfc, 0x60, 0xbb, 0x37, 0x39, 0x13, 0x57, 0xc2, 0x56, 0x87, 0x9c, 0x29, + 0x53, 0x20, 0xe6, 0x65, 0x52, 0x73, 0xe9, 0xcb, 0xd7, 0x5c, 0xdc, 0x4f, 0x39, 0x30, 0xba, 0xea, + 0x05, 0xfe, 0x16, 0x89, 0x13, 0x36, 0xaf, 0x92, 0x23, 0xbd, 0xd8, 0x36, 0xda, 0x25, 0x45, 0xc3, + 0x9b, 0x0e, 0x9c, 0x5c, 0x25, 0xcd, 0xd0, 0x7f, 0xd5, 0x4b, 0x63, 0x66, 0x69, 0xdb, 0xeb, 0x7e, + 0x22, 0x42, 0x04, 0x55, 0xdb, 0xaf, 0xf8, 0x09, 0xa6, 0xf0, 0xbb, 0x98, 0x98, 0xd9, 0x95, 0x11, + 0x7a, 0x40, 0xd3, 0x2e, 0x5b, 0xa6, 0xd1, 0xb0, 0xb2, 0x00, 0xa7, 0x38, 0xee, 0xef, 0x3a, 0x30, + 0xc8, 0x1b, 0xa1, 0xc2, 0x8c, 0x9d, 0x2e, 0xb4, 0xeb, 0x50, 0x64, 0xf5, 0xc4, 0xac, 0x5e, 0xb4, + 0xa0, 0xfe, 0x50, 0x72, 0x7c, 0x0d, 0xb2, 0x7f, 0x31, 0x67, 0xc0, 0x8e, 0x2d, 0xde, 0xad, 0x19, + 0x15, 0x2e, 0x9c, 0x1e, 0x5b, 0x18, 0x14, 0x8b, 0x52, 0xf7, 0x1b, 0x7d, 0x30, 0xa4, 0x32, 0x93, + 0xb1, 0xbc, 0x11, 0x41, 0x10, 0x26, 0x1e, 0x0f, 0xc3, 0xe0, 0xb2, 0xfa, 0x43, 0xf6, 0x32, 0xa3, + 0x4d, 0xcf, 0xa4, 0xd4, 0xb9, 0x6b, 0x51, 0x1d, 0x42, 0xb5, 0x12, 0xac, 0x37, 0x02, 0x7d, 0x0c, + 0x06, 0x1a, 0x54, 0xfa, 0x48, 0xd1, 0x7d, 0xdd, 0x62, 0x73, 0x98, 0x58, 0x13, 0x2d, 0x51, 0x23, + 0xc4, 0x81, 0x58, 0x70, 0x9d, 0x7c, 0x3f, 0x4c, 0x64, 0x5b, 0x7d, 0xb7, 0xbb, 0xa0, 0xc3, 0xfa, + 0x4d, 0xd2, 0xbf, 0x29, 0xa4, 0xe7, 0xc1, 0xab, 0xba, 0xcf, 0xc3, 0xc8, 0x2a, 0x49, 0x22, 0xbf, + 0xc2, 0x08, 0xdc, 0x6d, 0x72, 0xf5, 0xa4, 0x3f, 0x7c, 0x96, 0x4d, 0x56, 0x4a, 0x33, 0x46, 0xaf, + 0x03, 0xb4, 0xa2, 0x90, 0x9e, 0x5f, 0x49, 0x5b, 0x7e, 0x6c, 0x0b, 0xfa, 0xf0, 0xba, 0xa2, 0xc9, + 0xbd, 0xe1, 0xe9, 0x6f, 0xac, 0xf1, 0x73, 0x5f, 0x84, 0xe2, 0x6a, 0x3b, 0x21, 0xb7, 0x7a, 0x90, + 0x58, 0x07, 0x4d, 0x8e, 0xe0, 0x7e, 0x08, 0x46, 0x19, 0xed, 0x2b, 0x61, 0x83, 0x6e, 0xab, 0x74, + 0x68, 0x9a, 0xf4, 0x77, 0xd6, 0x5f, 0xc1, 0x90, 0x30, 0x2f, 0xa3, 0x4b, 0xa6, 0x1e, 0x36, 0xaa, + 0xea, 0xa2, 0x98, 0x9a, 0x10, 0x57, 0x18, 0x14, 0x8b, 0x52, 0xf7, 0x93, 0x05, 0x18, 0x61, 0x15, + 0x85, 0xb8, 0xd9, 0x85, 0xc1, 0x3a, 0xe7, 0x23, 0xc6, 0xd0, 0x42, 0x7c, 0x99, 0xde, 0x7a, 0xed, + 0x2c, 0xc7, 0x01, 0x58, 0xf2, 0xa3, 0xac, 0x6f, 0x7a, 0x7e, 0x42, 0x59, 0x17, 0x8e, 0x96, 0xf5, + 0x0d, 0xce, 0x06, 0x4b, 0x7e, 0xee, 0x2f, 0x01, 0xbb, 0x80, 0xbd, 0xd0, 0xf0, 0x6a, 0x7c, 0xe4, + 0xc2, 0x6d, 0x52, 0x15, 0x32, 0x57, 0x1b, 0x39, 0x0a, 0xc5, 0xa2, 0x94, 0x5f, 0x6a, 0x4d, 0x22, + 0x5f, 0x45, 0x66, 0x6b, 0x97, 0x5a, 0x19, 0x58, 0xc6, 0xe1, 0x57, 0xdd, 0xaf, 0x14, 0x00, 0x58, + 0x1e, 0x3b, 0x7e, 0x6f, 0xfa, 0x17, 0x64, 0x10, 0x95, 0xe9, 0xe3, 0x54, 0x41, 0x54, 0xec, 0x66, + 0xb8, 0x1e, 0x3c, 0xa5, 0x5f, 0x98, 0x28, 0xec, 0x7f, 0x61, 0x02, 0xb5, 0x60, 0x30, 0x6c, 0x27, + 0x54, 0x57, 0x15, 0x9b, 0xbd, 0x05, 0x17, 0xff, 0x1a, 0x27, 0xc8, 0x6f, 0x19, 0x88, 0x1f, 0x58, + 0xb2, 0x41, 0xcf, 0xc2, 0x50, 0x2b, 0x0a, 0x6b, 0x74, 0xef, 0x16, 0xdb, 0xfb, 0x43, 0x52, 0x1f, + 0x5a, 0x17, 0xf0, 0x3b, 0xda, 0xff, 0x58, 0x61, 0xbb, 0x7f, 0x3c, 0xc1, 0xc7, 0x45, 0xcc, 0xbd, + 0x49, 0x28, 0xf8, 0xd2, 0x32, 0x05, 0x82, 0x44, 0x61, 0x69, 0x1e, 0x17, 0xfc, 0xaa, 0x5a, 0x57, + 0x85, 0xae, 0xeb, 0xea, 0x3d, 0x30, 0x52, 0xf5, 0xe3, 0x56, 0xc3, 0xdb, 0xbd, 0x9a, 0x63, 0x16, + 0x9c, 0x4f, 0x8b, 0xb0, 0x8e, 0x87, 0x9e, 0x12, 0xd7, 0x63, 0xfa, 0x0d, 0x53, 0x90, 0xbc, 0x1e, + 0x93, 0xde, 0xcb, 0xe7, 0x37, 0x63, 0xb2, 0xf9, 0x0b, 0x8a, 0x3d, 0xe7, 0x2f, 0xc8, 0x6a, 0x62, + 0x03, 0xc7, 0xaf, 0x89, 0xbd, 0x0f, 0xc6, 0xe4, 0x4f, 0xa6, 0x1e, 0x95, 0x4e, 0xb3, 0xd6, 0x2b, + 0x33, 0xf8, 0x86, 0x5e, 0x88, 0x4d, 0xdc, 0x74, 0xd2, 0x0e, 0xf6, 0x3a, 0x69, 0x2f, 0x01, 0x6c, + 0x86, 0xed, 0xa0, 0xea, 0x45, 0xbb, 0x4b, 0xf3, 0x22, 0x98, 0x56, 0x29, 0x7e, 0xb3, 0xaa, 0x04, + 0x6b, 0x58, 0xfa, 0x44, 0x1f, 0xbe, 0xcb, 0x44, 0xff, 0x10, 0x0c, 0xb3, 0xc0, 0x63, 0x52, 0x9d, + 0x49, 0x44, 0xf4, 0xd3, 0x41, 0xa2, 0x39, 0xd3, 0x78, 0x48, 0x49, 0x04, 0xa7, 0xf4, 0xd0, 0x87, + 0x01, 0xb6, 0xfc, 0xc0, 0x8f, 0xeb, 0x8c, 0xfa, 0xc8, 0x81, 0xa9, 0xab, 0x7e, 0x2e, 0x28, 0x2a, + 0x58, 0xa3, 0x88, 0x5e, 0x82, 0x93, 0x24, 0x4e, 0xfc, 0xa6, 0x97, 0x90, 0xaa, 0xba, 0x6f, 0x5a, + 0x62, 0xb6, 0x4c, 0x15, 0xfa, 0x7d, 0x39, 0x8b, 0x70, 0x27, 0x0f, 0x88, 0x3b, 0x09, 0x19, 0x2b, + 0x72, 0xf2, 0x20, 0x2b, 0x12, 0xfd, 0x2f, 0x07, 0x4e, 0x46, 0x84, 0x87, 0xc4, 0xc4, 0xaa, 0x61, + 0x67, 0x98, 0x38, 0xae, 0xd8, 0x48, 0x11, 0xaf, 0x72, 0xc1, 0xe0, 0x2c, 0x17, 0xae, 0xb8, 0x10, + 0xd9, 0xfb, 0x8e, 0xf2, 0x3b, 0x79, 0xc0, 0x37, 0xdf, 0x9e, 0x9a, 0xea, 0x7c, 0xaa, 0x40, 0x11, + 0xa7, 0x2b, 0xef, 0xef, 0xbe, 0x3d, 0x35, 0x21, 0x7f, 0xa7, 0x83, 0xd6, 0xd1, 0x49, 0xba, 0xad, + 0xb6, 0xc2, 0xea, 0xd2, 0xba, 0x08, 0x53, 0x53, 0xdb, 0xea, 0x3a, 0x05, 0x62, 0x5e, 0x86, 0x9e, + 0x80, 0xa1, 0xaa, 0x47, 0x9a, 0x61, 0xa0, 0x92, 0xfd, 0x32, 0x6d, 0x7e, 0x5e, 0xc0, 0xb0, 0x2a, + 0xa5, 0x67, 0x88, 0x40, 0x6c, 0x29, 0xa5, 0xf3, 0xb6, 0xce, 0x10, 0x72, 0x93, 0xe2, 0x5c, 0xe5, + 0x2f, 0xac, 0x38, 0xa1, 0x06, 0x0c, 0xf8, 0xcc, 0x50, 0x21, 0x22, 0x61, 0x2d, 0x58, 0x47, 0xb8, + 0xe1, 0x43, 0xc6, 0xc1, 0x32, 0xd1, 0x2f, 0x78, 0xe8, 0x7b, 0xcd, 0x89, 0xe3, 0xd9, 0x6b, 0x9e, + 0x80, 0xa1, 0x4a, 0xdd, 0x6f, 0x54, 0x23, 0x12, 0x94, 0x26, 0xd8, 0x89, 0x9d, 0x8d, 0xc4, 0x9c, + 0x80, 0x61, 0x55, 0x8a, 0xfe, 0x06, 0x8c, 0x85, 0xed, 0x84, 0x89, 0x16, 0x3a, 0x4e, 0x71, 0xe9, + 0x24, 0x43, 0x67, 0x71, 0x4d, 0x6b, 0x7a, 0x01, 0x36, 0xf1, 0xa8, 0x88, 0xaf, 0x87, 0x31, 0x4b, + 0x5b, 0xc4, 0x44, 0xfc, 0x59, 0x53, 0xc4, 0x5f, 0xd1, 0xca, 0xb0, 0x81, 0x89, 0xbe, 0xe6, 0xc0, + 0xc9, 0x66, 0xf6, 0x00, 0x57, 0x3a, 0xc7, 0x46, 0xa6, 0x6c, 0x43, 0xd1, 0xcf, 0x90, 0xe6, 0x11, + 0xe9, 0x1d, 0x60, 0xdc, 0xd9, 0x08, 0x96, 0x40, 0x2c, 0xde, 0x0d, 0x2a, 0xf5, 0x28, 0x0c, 0xcc, + 0xe6, 0x3d, 0x68, 0xeb, 0x5e, 0x1c, 0x5b, 0xdb, 0x79, 0x2c, 0x66, 0x1f, 0xbc, 0xbd, 0x37, 0x75, + 0x26, 0xb7, 0x08, 0xe7, 0x37, 0x6a, 0x72, 0x1e, 0xce, 0xe6, 0xcb, 0x87, 0xbb, 0x9d, 0x38, 0xfa, + 0xf4, 0x13, 0xc7, 0x02, 0x3c, 0xd8, 0xb5, 0x51, 0x74, 0xa7, 0x91, 0xda, 0xa6, 0x63, 0xee, 0x34, + 0x1d, 0xda, 0xe1, 0x38, 0x8c, 0xea, 0x6f, 0x5b, 0xb8, 0xff, 0xb7, 0x0f, 0x20, 0xb5, 0x93, 0x23, + 0x0f, 0xc6, 0xb9, 0x4d, 0x7e, 0x69, 0xfe, 0xd0, 0x37, 0xfa, 0xe7, 0x0c, 0x02, 0x38, 0x43, 0x10, + 0x35, 0x01, 0x71, 0x08, 0xff, 0x7d, 0x18, 0xdf, 0x2a, 0x73, 0x45, 0xce, 0x75, 0x10, 0xc1, 0x39, + 0x84, 0x69, 0x8f, 0x92, 0x70, 0x9b, 0x04, 0xd7, 0xf0, 0xca, 0x61, 0xb2, 0x46, 0x70, 0x6f, 0x9c, + 0x41, 0x00, 0x67, 0x08, 0x22, 0x17, 0x06, 0x98, 0x6d, 0x46, 0xc6, 0x8e, 0x33, 0xf1, 0xc2, 0x34, + 0x8d, 0x18, 0x8b, 0x12, 0xf4, 0x15, 0x07, 0xc6, 0x65, 0xf2, 0x0b, 0x66, 0x0d, 0x95, 0x51, 0xe3, + 0xd7, 0x6c, 0xf9, 0x39, 0x2e, 0xeb, 0xd4, 0xd3, 0x98, 0x4c, 0x03, 0x1c, 0xe3, 0x4c, 0x23, 0xdc, + 0x17, 0xe0, 0x54, 0x4e, 0x75, 0x2b, 0x27, 0xda, 0xef, 0x3a, 0x30, 0xa2, 0xe5, 0x64, 0x44, 0xaf, + 0xc3, 0x70, 0x58, 0xb6, 0x1e, 0x08, 0xb8, 0x56, 0xee, 0x08, 0x04, 0x54, 0x20, 0x9c, 0x32, 0xec, + 0x25, 0x7e, 0x31, 0x37, 0x81, 0xe4, 0x7d, 0x6e, 0xf6, 0x81, 0xe3, 0x17, 0x7f, 0xa5, 0x08, 0x29, + 0xa5, 0x03, 0x26, 0x65, 0x49, 0xa3, 0x1d, 0x0b, 0xfb, 0x46, 0x3b, 0x56, 0xe1, 0x84, 0xc7, 0x7c, + 0xc9, 0x87, 0x4c, 0xc5, 0xc2, 0x53, 0xf2, 0x9a, 0x14, 0x70, 0x96, 0x24, 0xe5, 0x12, 0xa7, 0x55, + 0x19, 0x97, 0xfe, 0x03, 0x73, 0x29, 0x9b, 0x14, 0x70, 0x96, 0x24, 0x7a, 0x09, 0x4a, 0x15, 0x76, + 0x77, 0x98, 0xf7, 0x71, 0x69, 0xeb, 0x6a, 0x98, 0xac, 0x47, 0x24, 0x26, 0x41, 0x22, 0x92, 0xae, + 0x3d, 0x22, 0x46, 0xa1, 0x34, 0xd7, 0x05, 0x0f, 0x77, 0xa5, 0x40, 0x8f, 0x29, 0xcc, 0x19, 0xed, + 0x27, 0xbb, 0x4c, 0x88, 0x08, 0x2f, 0xbd, 0x3a, 0xa6, 0x94, 0xf5, 0x42, 0x6c, 0xe2, 0xa2, 0x5f, + 0x76, 0x60, 0xac, 0x21, 0xcd, 0xf5, 0xb8, 0xdd, 0x90, 0x19, 0x44, 0xb1, 0x95, 0xe9, 0xb7, 0xa2, + 0x53, 0xe6, 0xba, 0x84, 0x01, 0xc2, 0x26, 0xef, 0x6c, 0x5e, 0x9c, 0xa1, 0x1e, 0xf3, 0xe2, 0xfc, + 0xc0, 0x81, 0x89, 0x2c, 0x37, 0xb4, 0x0d, 0x0f, 0x37, 0xbd, 0x68, 0x7b, 0x29, 0xd8, 0x8a, 0xd8, + 0x1d, 0x91, 0x84, 0x4f, 0x86, 0x99, 0xad, 0x84, 0x44, 0xf3, 0xde, 0x2e, 0x77, 0x7f, 0x16, 0xd5, + 0x13, 0x54, 0x0f, 0xaf, 0xee, 0x87, 0x8c, 0xf7, 0xa7, 0x85, 0xca, 0x70, 0x86, 0x22, 0xb0, 0xb4, + 0x79, 0x7e, 0x18, 0xa4, 0x4c, 0x0a, 0x8c, 0x89, 0x8a, 0x53, 0x5c, 0xcd, 0x43, 0xc2, 0xf9, 0x75, + 0xdd, 0xcb, 0x30, 0xc0, 0xaf, 0xec, 0xdd, 0x93, 0xff, 0xc8, 0xfd, 0xf7, 0x05, 0x90, 0x8a, 0xe1, + 0x5f, 0x6d, 0x77, 0x1c, 0xdd, 0x44, 0x23, 0x66, 0x52, 0x12, 0xd6, 0x0e, 0xb6, 0x89, 0x8a, 0x04, + 0x95, 0xa2, 0x84, 0x6a, 0xcc, 0xe4, 0x96, 0x9f, 0xcc, 0x85, 0x55, 0x69, 0xe3, 0x60, 0x1a, 0xf3, + 0x65, 0x01, 0xc3, 0xaa, 0xd4, 0xfd, 0x94, 0x03, 0x63, 0xb4, 0x97, 0x8d, 0x06, 0x69, 0x94, 0x13, + 0xd2, 0x8a, 0x51, 0x0c, 0xc5, 0x98, 0xfe, 0x63, 0xcf, 0x14, 0x98, 0x5e, 0xf3, 0x24, 0x2d, 0xcd, + 0x59, 0x43, 0x99, 0x60, 0xce, 0xcb, 0x7d, 0xab, 0x0f, 0x86, 0xd5, 0x60, 0xf7, 0x60, 0x4f, 0xbd, + 0x94, 0xe6, 0x8e, 0xe5, 0x12, 0xb8, 0xa4, 0xe5, 0x8d, 0xbd, 0x43, 0x87, 0x2e, 0xd8, 0xe5, 0x59, + 0x32, 0xd2, 0x24, 0xb2, 0x4f, 0x99, 0xae, 0xe6, 0xb3, 0xfa, 0xfc, 0xd3, 0xf0, 0x85, 0xcf, 0xf9, + 0x96, 0xee, 0xe9, 0xef, 0xb7, 0xb5, 0x9b, 0x29, 0x37, 0x66, 0x77, 0x17, 0x7f, 0xe6, 0x59, 0xa1, + 0x62, 0x4f, 0xcf, 0x0a, 0x3d, 0x09, 0xfd, 0x24, 0x68, 0x37, 0x99, 0xaa, 0x34, 0xcc, 0x8e, 0x08, + 0xfd, 0x97, 0x83, 0x76, 0xd3, 0xec, 0x19, 0x43, 0x41, 0xef, 0x87, 0x91, 0x2a, 0x89, 0x2b, 0x91, + 0xcf, 0x52, 0x3f, 0x08, 0xcb, 0xce, 0x43, 0xcc, 0x5c, 0x96, 0x82, 0xcd, 0x8a, 0x7a, 0x05, 0xf7, + 0x55, 0x18, 0x58, 0x6f, 0xb4, 0x6b, 0x7e, 0x80, 0x5a, 0x30, 0xc0, 0x13, 0x41, 0x88, 0xdd, 0xde, + 0xc2, 0xb9, 0x93, 0x8b, 0x0a, 0x2d, 0x0a, 0x85, 0xdf, 0xf6, 0x15, 0x7c, 0xdc, 0x4f, 0x16, 0x80, + 0x1e, 0xcd, 0x17, 0xe7, 0xd0, 0xdf, 0xee, 0x78, 0x45, 0xe7, 0xe7, 0x72, 0x5e, 0xd1, 0x19, 0x63, + 0xc8, 0x39, 0x0f, 0xe8, 0x34, 0x60, 0x8c, 0x39, 0x47, 0xe4, 0x1e, 0x28, 0xd4, 0xea, 0x67, 0x7a, + 0xcc, 0x9d, 0xa0, 0x57, 0x15, 0x3b, 0x82, 0x0e, 0xc2, 0x26, 0x71, 0xb4, 0x0a, 0xa7, 0x78, 0x0a, + 0xd2, 0x79, 0xd2, 0xf0, 0x76, 0x33, 0xa9, 0xc6, 0xce, 0xcb, 0x87, 0xd1, 0xe6, 0x3b, 0x51, 0x70, + 0x5e, 0x3d, 0xf7, 0xf7, 0xfa, 0x41, 0x73, 0x49, 0xf4, 0xb0, 0x5a, 0x5e, 0xc9, 0x38, 0xa0, 0x56, + 0xad, 0x38, 0xa0, 0xa4, 0x57, 0x87, 0x4b, 0x20, 0xd3, 0xe7, 0x44, 0x1b, 0x55, 0x27, 0x8d, 0x96, + 0xe8, 0xa3, 0x6a, 0xd4, 0x15, 0xd2, 0x68, 0x61, 0x56, 0xa2, 0xee, 0x3a, 0xf6, 0x77, 0xbd, 0xeb, + 0x58, 0x87, 0x62, 0xcd, 0x6b, 0xd7, 0x88, 0x88, 0xc0, 0xb4, 0xe0, 0x6b, 0x64, 0xb7, 0x2f, 0xb8, + 0xaf, 0x91, 0xfd, 0x8b, 0x39, 0x03, 0xba, 0xd8, 0xeb, 0x32, 0x24, 0x45, 0x18, 0x69, 0x2d, 0x2c, + 0x76, 0x15, 0xe5, 0xc2, 0x17, 0xbb, 0xfa, 0x89, 0x53, 0x66, 0xa8, 0x05, 0x83, 0x15, 0x9e, 0xc1, + 0x45, 0xe8, 0x2c, 0x4b, 0x36, 0x2e, 0x73, 0x32, 0x82, 0xdc, 0x9a, 0x22, 0x7e, 0x60, 0xc9, 0xc6, + 0xbd, 0x08, 0x23, 0xda, 0x63, 0x1e, 0xf4, 0x33, 0xa8, 0xe4, 0x21, 0xda, 0x67, 0x98, 0xf7, 0x12, + 0x0f, 0xb3, 0x12, 0xf7, 0x5b, 0xfd, 0xa0, 0x6c, 0x69, 0xfa, 0xd5, 0x43, 0xaf, 0xa2, 0xa5, 0x3a, + 0x32, 0xae, 0xe1, 0x87, 0x01, 0x16, 0xa5, 0x54, 0xaf, 0x6b, 0x92, 0xa8, 0xa6, 0xce, 0xd1, 0x42, + 0x5c, 0x2b, 0xbd, 0x6e, 0x55, 0x2f, 0xc4, 0x26, 0x2e, 0x55, 0xca, 0x9b, 0xc2, 0x45, 0x9f, 0x0d, + 0xac, 0x96, 0xae, 0x7b, 0xac, 0x30, 0x58, 0xae, 0x84, 0xa6, 0xe6, 0xd1, 0x17, 0x81, 0x98, 0x36, + 0x1c, 0x4a, 0x1a, 0x55, 0x1e, 0x30, 0xa5, 0x43, 0xb0, 0xc1, 0x15, 0x2d, 0xc2, 0xc9, 0x98, 0x24, + 0x6b, 0x37, 0x03, 0x12, 0xa9, 0x2c, 0x05, 0x22, 0x19, 0x87, 0xba, 0x98, 0x51, 0xce, 0x22, 0xe0, + 0xce, 0x3a, 0xb9, 0xb1, 0xab, 0xc5, 0x03, 0xc7, 0xae, 0xce, 0xc3, 0xc4, 0x96, 0xe7, 0x37, 0xda, + 0x11, 0xe9, 0x1a, 0x01, 0xbb, 0x90, 0x29, 0xc7, 0x1d, 0x35, 0xd8, 0xdd, 0xa0, 0x86, 0x57, 0x8b, + 0x4b, 0x83, 0xda, 0xdd, 0x20, 0x0a, 0xc0, 0x1c, 0xee, 0xfe, 0xa6, 0x03, 0x3c, 0x0b, 0xd2, 0xcc, + 0xd6, 0x96, 0x1f, 0xf8, 0xc9, 0x2e, 0xfa, 0xba, 0x03, 0x13, 0x41, 0x58, 0x25, 0x33, 0x41, 0xe2, + 0x4b, 0xa0, 0xbd, 0xcc, 0xf5, 0x8c, 0xd7, 0xd5, 0x0c, 0x79, 0x9e, 0x52, 0x23, 0x0b, 0xc5, 0x1d, + 0xcd, 0x70, 0xcf, 0xc1, 0x99, 0x5c, 0x02, 0xee, 0x0f, 0xfa, 0xc0, 0x4c, 0xe6, 0x84, 0x9e, 0x87, + 0x62, 0x83, 0xa5, 0x17, 0x71, 0x0e, 0x99, 0xa5, 0x8b, 0x8d, 0x15, 0xcf, 0x3f, 0xc2, 0x29, 0xa1, + 0x79, 0x18, 0x61, 0x19, 0xa2, 0x44, 0xf2, 0x97, 0x82, 0x91, 0x55, 0x61, 0x04, 0xa7, 0x45, 0x77, + 0xcc, 0x9f, 0x58, 0xaf, 0x86, 0x5e, 0x83, 0xc1, 0x4d, 0x9e, 0x46, 0xd3, 0x9e, 0xcf, 0x4f, 0xe4, + 0xe5, 0x64, 0xba, 0x91, 0x4c, 0xd2, 0x79, 0x27, 0xfd, 0x17, 0x4b, 0x8e, 0x68, 0x17, 0x86, 0x3c, + 0xf9, 0x4d, 0xfb, 0x6d, 0x5d, 0xd4, 0x30, 0xe6, 0x8f, 0x88, 0x98, 0x91, 0xdf, 0x50, 0xb1, 0xcb, + 0x84, 0x16, 0x15, 0x7b, 0x0a, 0x2d, 0xfa, 0x8e, 0x03, 0x90, 0xbe, 0x39, 0x82, 0x6e, 0xc1, 0x50, + 0xfc, 0x8c, 0x61, 0xa8, 0xb0, 0x71, 0xc9, 0x5f, 0x50, 0xd4, 0x2e, 0xc2, 0x0a, 0x08, 0x56, 0xdc, + 0xee, 0x66, 0x5c, 0xf9, 0xa9, 0x03, 0xa7, 0xf3, 0xde, 0x46, 0xb9, 0x8f, 0x2d, 0x3e, 0xa8, 0x5d, + 0x45, 0x54, 0x58, 0x8f, 0xc8, 0x96, 0x7f, 0x2b, 0x27, 0x99, 0x33, 0x2f, 0xc0, 0x29, 0x8e, 0xfb, + 0x67, 0x83, 0xa0, 0x18, 0x1f, 0x91, 0x1d, 0xe6, 0x71, 0x7a, 0x66, 0xaa, 0xa5, 0x3a, 0x97, 0xc2, + 0xc3, 0x0c, 0x8a, 0x45, 0x29, 0x3d, 0x37, 0xc9, 0xa0, 0x78, 0x21, 0xb2, 0xd9, 0x2c, 0x94, 0xc1, + 0xf3, 0x58, 0x95, 0xe6, 0x59, 0x76, 0x8a, 0xc7, 0x62, 0xd9, 0x19, 0xb0, 0x6f, 0xd9, 0x69, 0x02, + 0x8a, 0xf9, 0x42, 0x61, 0xe6, 0x14, 0xc1, 0x68, 0xf4, 0xc0, 0x86, 0xe6, 0x72, 0x07, 0x11, 0x9c, + 0x43, 0x98, 0xc5, 0x50, 0x84, 0x0d, 0x32, 0x83, 0xaf, 0x8a, 0xc3, 0x47, 0x1a, 0x43, 0xc1, 0xc1, + 0x58, 0x96, 0x1f, 0xd2, 0x94, 0x82, 0x7e, 0xdb, 0xd9, 0xc7, 0x56, 0x35, 0x6c, 0x6b, 0x0b, 0xca, + 0xcd, 0xa4, 0xc7, 0x4e, 0x52, 0x87, 0x31, 0x80, 0x7d, 0xc3, 0x81, 0x93, 0x24, 0xa8, 0x44, 0xbb, + 0x8c, 0x8e, 0xa0, 0x26, 0x5c, 0xdc, 0xd7, 0x6c, 0xac, 0xf5, 0xcb, 0x59, 0xe2, 0xdc, 0x93, 0xd4, + 0x01, 0xc6, 0x9d, 0xcd, 0x40, 0x6b, 0x30, 0x54, 0xf1, 0xc4, 0xbc, 0x18, 0x39, 0xc8, 0xbc, 0xe0, + 0x8e, 0xba, 0x19, 0x31, 0x1b, 0x14, 0x11, 0xf7, 0xc7, 0x05, 0x38, 0x95, 0xd3, 0x24, 0x76, 0x5f, + 0xab, 0x49, 0x17, 0xc0, 0x52, 0x35, 0xbb, 0xfc, 0x97, 0x05, 0x1c, 0x2b, 0x0c, 0xb4, 0x0e, 0xa7, + 0xb7, 0x9b, 0x71, 0x4a, 0x65, 0x2e, 0x0c, 0x12, 0x72, 0x4b, 0x0a, 0x03, 0xe9, 0xfe, 0x3e, 0xbd, + 0x9c, 0x83, 0x83, 0x73, 0x6b, 0x52, 0x6d, 0x89, 0x04, 0xde, 0x66, 0x83, 0xa4, 0x45, 0xe2, 0x16, + 0xa3, 0xd2, 0x96, 0x2e, 0x67, 0xca, 0x71, 0x47, 0x0d, 0xf4, 0x39, 0x07, 0xce, 0xc7, 0x24, 0xda, + 0x21, 0x51, 0xd9, 0xaf, 0x92, 0xb9, 0x76, 0x9c, 0x84, 0x4d, 0x12, 0x1d, 0xd2, 0x3a, 0x3b, 0x75, + 0x7b, 0x6f, 0xea, 0x7c, 0xb9, 0x3b, 0x35, 0xbc, 0x1f, 0x2b, 0xf7, 0x73, 0x0e, 0x8c, 0x97, 0xd9, + 0xd9, 0x5d, 0xa9, 0xee, 0xb6, 0x73, 0xa9, 0x3e, 0xae, 0x52, 0x77, 0x64, 0x84, 0xb0, 0x99, 0x6c, + 0xc3, 0x7d, 0x19, 0x26, 0xca, 0xa4, 0xe9, 0xb5, 0xea, 0xec, 0x16, 0x33, 0x0f, 0xff, 0xba, 0x08, + 0xc3, 0xb1, 0x84, 0x65, 0x5f, 0x57, 0x52, 0xc8, 0x38, 0xc5, 0x41, 0x8f, 0xf1, 0x50, 0x35, 0x79, + 0xe1, 0x68, 0x98, 0x1f, 0x72, 0x78, 0x7c, 0x5b, 0x8c, 0x65, 0x99, 0xfb, 0x96, 0x03, 0xa3, 0x69, + 0x7d, 0xb2, 0x85, 0x6a, 0x70, 0xa2, 0xa2, 0x5d, 0xd6, 0x4b, 0xaf, 0x49, 0xf4, 0x7e, 0xaf, 0x8f, + 0xa7, 0x78, 0x36, 0x89, 0xe0, 0x2c, 0xd5, 0x83, 0x47, 0xfa, 0x7d, 0xb1, 0x00, 0x27, 0x54, 0x53, + 0x85, 0x9f, 0xf2, 0x8d, 0x6c, 0x40, 0x1e, 0xb6, 0x91, 0x84, 0xc8, 0x1c, 0xfb, 0x7d, 0x82, 0xf2, + 0xde, 0xc8, 0x06, 0xe5, 0x1d, 0x29, 0xfb, 0x0e, 0xd7, 0xeb, 0x77, 0x0a, 0x30, 0xa4, 0x52, 0x22, + 0x3d, 0x0f, 0x45, 0x76, 0x72, 0xbd, 0x37, 0xfd, 0x9b, 0x9d, 0x82, 0x31, 0xa7, 0x44, 0x49, 0xb2, + 0xa0, 0x9f, 0x43, 0x27, 0xde, 0x1d, 0xe6, 0xf6, 0x4b, 0x2f, 0x4a, 0x30, 0xa7, 0x84, 0x96, 0xa1, + 0x8f, 0x04, 0x55, 0xa1, 0x88, 0x1f, 0x9c, 0x20, 0x7b, 0x07, 0xed, 0x72, 0x50, 0xc5, 0x94, 0x0a, + 0xcb, 0xcb, 0xc6, 0xf5, 0xad, 0xcc, 0xab, 0x37, 0x42, 0xd9, 0x12, 0xa5, 0xee, 0x2c, 0x18, 0x39, + 0xfb, 0x0e, 0x75, 0x33, 0xe2, 0x97, 0xfb, 0x60, 0xa0, 0xdc, 0xde, 0xa4, 0xc7, 0x92, 0x6f, 0x3b, + 0x70, 0xea, 0x66, 0x26, 0xb3, 0x75, 0xba, 0x4e, 0xae, 0xd9, 0xb3, 0x03, 0xeb, 0xc1, 0x6b, 0xca, + 0xfa, 0x95, 0x53, 0x88, 0xf3, 0x9a, 0x63, 0x24, 0x97, 0xed, 0x3b, 0x92, 0xe4, 0xb2, 0xb7, 0x8e, + 0xf8, 0xf6, 0xc6, 0x58, 0xb7, 0x9b, 0x1b, 0xee, 0xef, 0x15, 0x01, 0xf8, 0xd7, 0x58, 0x6b, 0x25, + 0xbd, 0x58, 0xf6, 0x9e, 0x85, 0xd1, 0x1a, 0x09, 0x48, 0x24, 0x43, 0x13, 0x33, 0x8f, 0x32, 0x2d, + 0x6a, 0x65, 0xd8, 0xc0, 0x64, 0x93, 0x25, 0x48, 0xa2, 0x5d, 0xae, 0x6a, 0x67, 0x6f, 0x68, 0xa8, + 0x12, 0xac, 0x61, 0xa1, 0x69, 0xc3, 0xf1, 0xc2, 0x7d, 0xf8, 0xe3, 0xfb, 0xf8, 0x49, 0xde, 0x0f, + 0xe3, 0x66, 0x26, 0x16, 0xa1, 0xf0, 0x29, 0x9f, 0xbb, 0x99, 0xc0, 0x05, 0x67, 0xb0, 0xe9, 0x42, + 0xa8, 0x46, 0xbb, 0xb8, 0x1d, 0x08, 0xcd, 0x4f, 0x2d, 0x84, 0x79, 0x06, 0xc5, 0xa2, 0x94, 0xa5, + 0xb0, 0x60, 0x7b, 0x20, 0x87, 0x8b, 0x34, 0x18, 0x69, 0x0a, 0x0b, 0xad, 0x0c, 0x1b, 0x98, 0x94, + 0x83, 0xb0, 0x8c, 0x82, 0xb9, 0xd4, 0x32, 0xe6, 0xcc, 0x16, 0x8c, 0x87, 0xa6, 0x45, 0x87, 0xab, + 0x41, 0xef, 0xee, 0x71, 0xea, 0x19, 0x75, 0x79, 0xac, 0x44, 0xc6, 0x00, 0x94, 0xa1, 0x4f, 0x55, + 0x5f, 0xfd, 0x22, 0xc3, 0xa8, 0x19, 0xd9, 0xda, 0xf5, 0xae, 0xc1, 0x3a, 0x9c, 0x6e, 0x85, 0xd5, + 0xf5, 0xc8, 0x0f, 0x23, 0x3f, 0xd9, 0x9d, 0x6b, 0x78, 0x71, 0xcc, 0x26, 0xc6, 0x98, 0xa9, 0x12, + 0xad, 0xe7, 0xe0, 0xe0, 0xdc, 0x9a, 0xf4, 0x4c, 0xd4, 0x12, 0x40, 0x16, 0x5f, 0x56, 0xe4, 0x4a, + 0x9d, 0x44, 0xc4, 0xaa, 0xd4, 0x3d, 0x05, 0x27, 0xcb, 0xed, 0x56, 0xab, 0xe1, 0x93, 0xaa, 0x72, + 0x6c, 0xb8, 0x1f, 0x80, 0x13, 0x22, 0xf5, 0xac, 0x52, 0x40, 0x0e, 0x94, 0x28, 0xdd, 0xfd, 0xcf, + 0x7d, 0x70, 0x22, 0x13, 0xcd, 0x83, 0x5e, 0xcb, 0xaa, 0x0d, 0x76, 0x52, 0xa2, 0x6a, 0x0a, 0x83, + 0xc8, 0x6f, 0x9a, 0xa7, 0x82, 0xd4, 0x65, 0x28, 0xbe, 0xb5, 0x2b, 0x30, 0x2c, 0x60, 0x9d, 0xef, + 0x2a, 0x46, 0x3c, 0xff, 0xc7, 0x00, 0x14, 0x5b, 0x79, 0xeb, 0xde, 0x76, 0x3f, 0xd9, 0xfa, 0x55, + 0x90, 0x18, 0x6b, 0x1c, 0x51, 0x00, 0x83, 0xac, 0x21, 0x44, 0xde, 0xbb, 0xb4, 0xd6, 0x57, 0xa6, + 0xb5, 0xad, 0x72, 0xda, 0x58, 0x32, 0x71, 0x3f, 0x5b, 0x80, 0xfc, 0x90, 0x31, 0xf4, 0xb1, 0xce, + 0x0f, 0xfe, 0xbc, 0xc5, 0x81, 0x10, 0x31, 0x6b, 0xdd, 0xbf, 0x79, 0x60, 0x7e, 0xf3, 0x55, 0x4b, + 0xe3, 0x20, 0xf8, 0x76, 0x7c, 0x79, 0xf7, 0x7f, 0x3a, 0x30, 0xb2, 0xb1, 0xb1, 0xa2, 0xb6, 0x76, + 0x0c, 0x67, 0x63, 0x9e, 0xd2, 0x80, 0x79, 0xd6, 0xe7, 0xc2, 0x66, 0x8b, 0x3b, 0xda, 0x45, 0x00, + 0x00, 0xcb, 0x7a, 0x5c, 0xce, 0xc5, 0xc0, 0x5d, 0x6a, 0xa2, 0x25, 0x38, 0xa5, 0x97, 0x94, 0xb5, + 0x37, 0x28, 0x8b, 0x22, 0xc3, 0x51, 0x67, 0x31, 0xce, 0xab, 0x93, 0x25, 0x25, 0x0c, 0xca, 0x6c, + 0x7b, 0xce, 0x21, 0x25, 0x8a, 0x71, 0x5e, 0x1d, 0x77, 0x0d, 0x46, 0x36, 0xbc, 0x48, 0x75, 0xfc, + 0x83, 0x30, 0x51, 0x09, 0x9b, 0x52, 0x5d, 0x59, 0x21, 0x3b, 0xa4, 0x21, 0xba, 0xcc, 0x5f, 0x76, + 0xc9, 0x94, 0xe1, 0x0e, 0x6c, 0xf7, 0x27, 0x53, 0xa0, 0xae, 0x68, 0xf6, 0xb0, 0xa3, 0xb6, 0x54, + 0x30, 0x6d, 0xd1, 0x72, 0x30, 0xad, 0xda, 0x5b, 0x32, 0x01, 0xb5, 0x49, 0x1a, 0x50, 0x3b, 0x60, + 0x3b, 0xa0, 0x56, 0x29, 0xd9, 0x1d, 0x41, 0xb5, 0x5f, 0x75, 0x60, 0x34, 0x08, 0xab, 0x44, 0x79, + 0x40, 0x07, 0xd9, 0x0a, 0x7f, 0xc9, 0xde, 0xdd, 0x04, 0x1e, 0x1c, 0x2a, 0xc8, 0xf3, 0x40, 0x6f, + 0xb5, 0x25, 0xeb, 0x45, 0xd8, 0x68, 0x07, 0x5a, 0xd0, 0x4c, 0xcb, 0xdc, 0x83, 0xf3, 0x50, 0xde, + 0x11, 0xed, 0xae, 0x76, 0xe2, 0x5b, 0x9a, 0x9e, 0x38, 0x6c, 0xcb, 0x64, 0x2a, 0xef, 0xdd, 0x69, + 0x8e, 0x28, 0x99, 0xb8, 0x3b, 0xd5, 0x1f, 0x5d, 0x18, 0xe0, 0x11, 0xe1, 0x22, 0x97, 0x16, 0xf3, + 0x8f, 0xf2, 0x68, 0x71, 0x2c, 0x4a, 0x50, 0x22, 0xa3, 0x2c, 0x46, 0x6c, 0x3d, 0xc3, 0x61, 0x44, + 0x71, 0xe4, 0x87, 0x59, 0xa0, 0xe7, 0xf4, 0xa3, 0xff, 0x68, 0x2f, 0x47, 0xff, 0xb1, 0xae, 0xc7, + 0xfe, 0x2f, 0x38, 0x30, 0x5a, 0xd1, 0x9e, 0xc5, 0x28, 0x3d, 0x61, 0xeb, 0x75, 0xf0, 0xbc, 0xd7, + 0x4b, 0xb8, 0xdb, 0xcd, 0x78, 0x86, 0xc3, 0xe0, 0xce, 0x12, 0x88, 0x32, 0x3b, 0x07, 0x53, 0x75, + 0xac, 0x24, 0xe6, 0x30, 0xed, 0x26, 0x32, 0x5a, 0x95, 0xc2, 0xb0, 0xe0, 0x85, 0x5e, 0x87, 0x21, + 0x79, 0xa9, 0x40, 0x04, 0xdf, 0x63, 0x1b, 0x7e, 0x10, 0xd3, 0xd9, 0x2a, 0xb3, 0x0e, 0x72, 0x28, + 0x56, 0x1c, 0x51, 0x1d, 0xfa, 0xaa, 0x5e, 0x4d, 0x84, 0xe1, 0xaf, 0xda, 0xc9, 0xea, 0x2a, 0x79, + 0xb2, 0x23, 0xe9, 0xfc, 0xcc, 0x22, 0xa6, 0x2c, 0xd0, 0xad, 0xf4, 0x5d, 0x81, 0x09, 0x6b, 0xbb, + 0xaf, 0xa9, 0x16, 0x72, 0x9d, 0xa0, 0xe3, 0x99, 0x82, 0xaa, 0xf0, 0x4f, 0xff, 0x35, 0xc6, 0x76, + 0xc1, 0x4e, 0x5a, 0x58, 0x9e, 0xe8, 0x25, 0xf5, 0x71, 0x53, 0x2e, 0xf5, 0x24, 0x69, 0x95, 0x7e, + 0xde, 0x16, 0x17, 0x96, 0xae, 0x84, 0x3f, 0xe4, 0xbe, 0xb1, 0xb1, 0x8e, 0x19, 0x75, 0xd4, 0x80, + 0x81, 0x16, 0x0b, 0x9d, 0x29, 0xbd, 0xd3, 0xd6, 0xde, 0xc2, 0x43, 0x71, 0xf8, 0xdc, 0xe4, 0xff, + 0x63, 0xc1, 0x03, 0x5d, 0x86, 0x41, 0xfe, 0x3c, 0x0e, 0xbf, 0x06, 0x31, 0x72, 0x69, 0xb2, 0xfb, + 0x23, 0x3b, 0xe9, 0x46, 0xc1, 0x7f, 0xc7, 0x58, 0xd6, 0x45, 0xaf, 0xc1, 0x69, 0xfe, 0xef, 0x5c, + 0xc3, 0xf3, 0x9b, 0xf2, 0x6b, 0xc5, 0xa5, 0xa7, 0x18, 0xcd, 0x27, 0xf3, 0x68, 0xae, 0x93, 0x28, + 0xf6, 0xe3, 0x84, 0x04, 0xc9, 0xf5, 0xb4, 0x66, 0x7a, 0xf8, 0xb8, 0x9e, 0x43, 0x0e, 0xe7, 0x32, + 0x41, 0x5f, 0x74, 0x60, 0x9c, 0x8a, 0xf3, 0xf4, 0x31, 0xa1, 0x12, 0xb2, 0x25, 0x30, 0xaf, 0xc5, + 0x54, 0x1d, 0x92, 0x82, 0x4e, 0x9d, 0x49, 0x97, 0x0c, 0x76, 0x38, 0xc3, 0x1e, 0xbd, 0x01, 0x43, + 0xb1, 0x5f, 0x25, 0x15, 0x2f, 0x8a, 0x4b, 0xa7, 0x8e, 0xa6, 0x29, 0xa9, 0x3b, 0x4e, 0x30, 0xc2, + 0x8a, 0x25, 0xfa, 0x35, 0xf6, 0xd8, 0x6b, 0xa5, 0xee, 0xef, 0x90, 0x95, 0xb0, 0xc2, 0xcf, 0x50, + 0xa7, 0x6d, 0x09, 0x1e, 0xe9, 0x78, 0x94, 0x94, 0x85, 0x97, 0xca, 0x64, 0x87, 0xb3, 0xfc, 0xd1, + 0xdf, 0x71, 0xe0, 0x0c, 0x7f, 0x75, 0x21, 0xfb, 0x90, 0xc8, 0x99, 0x43, 0xda, 0xc3, 0xd8, 0xe5, + 0x91, 0x99, 0x3c, 0x92, 0x38, 0x9f, 0x13, 0xcb, 0x91, 0x6c, 0xbe, 0xfd, 0x74, 0xd6, 0xaa, 0x5b, + 0xba, 0xf7, 0xf7, 0x9e, 0xd0, 0xd3, 0x30, 0xd2, 0x12, 0x7b, 0xb1, 0x1f, 0x37, 0xd9, 0x55, 0xa0, + 0x3e, 0x7e, 0x49, 0x73, 0x3d, 0x05, 0x63, 0x1d, 0xc7, 0x48, 0x98, 0xfd, 0xe4, 0x7e, 0x09, 0xb3, + 0xd1, 0x35, 0x18, 0x49, 0xc2, 0x86, 0xc8, 0x19, 0x1b, 0x97, 0x4a, 0x6c, 0x06, 0x5e, 0xc8, 0x5b, + 0x84, 0x1b, 0x0a, 0x2d, 0x35, 0x1b, 0xa4, 0xb0, 0x18, 0xeb, 0x74, 0x58, 0xf8, 0xb5, 0x78, 0xcd, + 0x22, 0x62, 0xf6, 0x82, 0x07, 0x33, 0xe1, 0xd7, 0x7a, 0x21, 0x36, 0x71, 0xd1, 0x22, 0x9c, 0x6c, + 0x75, 0x18, 0x1c, 0xf8, 0x15, 0x44, 0x15, 0xf1, 0xd2, 0x69, 0x6d, 0xe8, 0xac, 0x63, 0x98, 0x1a, + 0xce, 0xef, 0x67, 0x6a, 0xe8, 0x92, 0x3e, 0xfa, 0xa1, 0xc3, 0xa4, 0x8f, 0x46, 0x55, 0x78, 0xc8, + 0x6b, 0x27, 0x21, 0xcb, 0x07, 0x64, 0x56, 0xe1, 0x91, 0xe8, 0x8f, 0xf0, 0xe0, 0xf6, 0xdb, 0x7b, + 0x53, 0x0f, 0xcd, 0xec, 0x83, 0x87, 0xf7, 0xa5, 0x82, 0x5e, 0x85, 0x21, 0x22, 0x52, 0x60, 0x97, + 0x7e, 0xce, 0x96, 0x86, 0x62, 0x26, 0xd5, 0x96, 0x41, 0xbe, 0x1c, 0x86, 0x15, 0x3f, 0xb4, 0x01, + 0x23, 0xf5, 0x30, 0x4e, 0x66, 0x1a, 0xbe, 0x17, 0x93, 0xb8, 0xf4, 0x30, 0x9b, 0x34, 0xb9, 0x8a, + 0xdf, 0x15, 0x89, 0x96, 0xce, 0x99, 0x2b, 0x69, 0x4d, 0xac, 0x93, 0x41, 0x84, 0x39, 0xa7, 0x59, + 0x18, 0xbe, 0x74, 0xbc, 0x5d, 0x60, 0x1d, 0x7b, 0x3c, 0x77, 0x4f, 0x08, 0xab, 0x65, 0x13, 0x5b, + 0x79, 0xa7, 0x75, 0x20, 0xce, 0xd2, 0x44, 0xcf, 0xc2, 0x68, 0x2b, 0xac, 0x96, 0x5b, 0xa4, 0xb2, + 0xee, 0x25, 0x95, 0x7a, 0x69, 0xca, 0x34, 0x71, 0xae, 0x6b, 0x65, 0xd8, 0xc0, 0x44, 0x2d, 0x18, + 0x6c, 0xf2, 0x44, 0x11, 0xa5, 0x47, 0x6d, 0x1d, 0xac, 0x44, 0xe6, 0x09, 0x61, 0xc0, 0xe0, 0x3f, + 0xb0, 0x64, 0x83, 0xfe, 0xb1, 0x03, 0x27, 0x32, 0x97, 0xdb, 0x4a, 0xef, 0xb0, 0xa6, 0x2f, 0x99, + 0x84, 0x67, 0x1f, 0x67, 0xc3, 0x67, 0x02, 0xef, 0x74, 0x82, 0x70, 0xb6, 0x45, 0x7c, 0x5c, 0x58, + 0xb6, 0x97, 0xd2, 0x63, 0xf6, 0xc6, 0x85, 0x11, 0x94, 0xe3, 0xc2, 0x7e, 0x60, 0xc9, 0x06, 0x3d, + 0x09, 0x83, 0x22, 0x31, 0x63, 0xe9, 0x71, 0xd3, 0xe5, 0x2f, 0xf2, 0x37, 0x62, 0x59, 0x3e, 0xf9, + 0x01, 0x38, 0xd9, 0x71, 0x6e, 0x3c, 0x50, 0xca, 0x91, 0xdf, 0x70, 0x40, 0xbf, 0x0d, 0x6f, 0xfd, + 0xdd, 0x99, 0x67, 0x61, 0xb4, 0xc2, 0x9f, 0x01, 0xe5, 0xf7, 0xe9, 0xfb, 0x4d, 0x63, 0xf3, 0x9c, + 0x56, 0x86, 0x0d, 0x4c, 0xf7, 0x0a, 0xa0, 0xce, 0x47, 0x01, 0x0e, 0xe5, 0xb5, 0xf9, 0xa7, 0x0e, + 0x8c, 0x19, 0x3a, 0x83, 0x75, 0xa7, 0xee, 0x02, 0xa0, 0xa6, 0x1f, 0x45, 0x61, 0xa4, 0xbf, 0xb7, + 0x28, 0x72, 0x5e, 0xb0, 0x60, 0x8f, 0xd5, 0x8e, 0x52, 0x9c, 0x53, 0xc3, 0xfd, 0xe7, 0xfd, 0x90, + 0x46, 0xb9, 0xab, 0x94, 0xc9, 0x4e, 0xd7, 0x94, 0xc9, 0x4f, 0xc1, 0xd0, 0xcb, 0x71, 0x18, 0xac, + 0xa7, 0x89, 0x95, 0xd5, 0xb7, 0x78, 0xae, 0xbc, 0x76, 0x95, 0x61, 0x2a, 0x0c, 0x86, 0xfd, 0xca, + 0x82, 0xdf, 0x48, 0x3a, 0x33, 0xef, 0x3e, 0xf7, 0x3c, 0x87, 0x63, 0x85, 0xc1, 0x9e, 0x5e, 0xdc, + 0x21, 0xca, 0x0b, 0x91, 0x3e, 0xbd, 0xc8, 0xdf, 0xfb, 0x60, 0x65, 0xe8, 0x22, 0x0c, 0x2b, 0x0f, + 0x86, 0x70, 0x8b, 0xa8, 0x91, 0x52, 0x6e, 0x0e, 0x9c, 0xe2, 0x30, 0x85, 0x50, 0x58, 0xbd, 0x85, + 0xfd, 0xa6, 0x6c, 0xe3, 0x6c, 0x94, 0xb1, 0xa3, 0x73, 0xd9, 0x2e, 0xc1, 0x58, 0xb1, 0xcc, 0x73, + 0x6c, 0x0f, 0x1f, 0x89, 0x63, 0x5b, 0xbb, 0x72, 0x51, 0xec, 0xf5, 0xca, 0x85, 0x39, 0xb7, 0x87, + 0x7a, 0x9a, 0xdb, 0x9f, 0xee, 0x83, 0xc1, 0xeb, 0xf4, 0x00, 0x11, 0x06, 0x54, 0x6e, 0xec, 0xf0, + 0x7f, 0xb3, 0xf7, 0x75, 0x05, 0x06, 0x96, 0xe5, 0xf4, 0xbb, 0x6d, 0xb6, 0xfd, 0x46, 0x75, 0x3e, + 0x5d, 0xc5, 0x69, 0x4e, 0x49, 0x59, 0x80, 0x53, 0x1c, 0x5a, 0xa1, 0x46, 0x35, 0xfb, 0x66, 0xd3, + 0x4f, 0xb2, 0x71, 0x6a, 0x8b, 0xb2, 0x00, 0xa7, 0x38, 0xe8, 0x71, 0x18, 0xa8, 0xf9, 0xc9, 0x86, + 0x57, 0xcb, 0xba, 0x65, 0x17, 0x19, 0x14, 0x8b, 0x52, 0xe6, 0x93, 0xf3, 0x93, 0x8d, 0x88, 0x30, + 0xb3, 0x72, 0x47, 0xba, 0x90, 0x45, 0xad, 0x0c, 0x1b, 0x98, 0xac, 0x49, 0xa1, 0xe8, 0x99, 0x08, + 0xd2, 0x4d, 0x9b, 0x24, 0x0b, 0x70, 0x8a, 0x43, 0xe7, 0x7f, 0x25, 0x6c, 0xb6, 0xfc, 0x86, 0x08, + 0x1f, 0xd7, 0xe6, 0xff, 0x9c, 0x80, 0x63, 0x85, 0x41, 0xb1, 0xa9, 0x08, 0xa3, 0xe2, 0x27, 0xfb, + 0xcc, 0xdd, 0xba, 0x80, 0x63, 0x85, 0xe1, 0x5e, 0x87, 0x31, 0xed, 0xa0, 0xb6, 0x38, 0x87, 0x2e, + 0x77, 0x5c, 0xb9, 0x78, 0x32, 0xe7, 0xca, 0xc5, 0x19, 0xa3, 0x52, 0xe7, 0xd5, 0x0b, 0xf7, 0x87, + 0x05, 0x18, 0x3a, 0xc6, 0x97, 0x42, 0x8f, 0xfd, 0xd1, 0x6b, 0x74, 0x2b, 0xf3, 0x4a, 0xe8, 0xba, + 0xcd, 0x1b, 0x54, 0xfb, 0xbe, 0x10, 0xfa, 0x5f, 0x0a, 0x70, 0x56, 0xa2, 0xca, 0xb3, 0xdc, 0xe2, + 0x1c, 0x7b, 0x7d, 0xed, 0xe8, 0x07, 0x3a, 0x32, 0x06, 0x7a, 0xdd, 0xde, 0x69, 0x74, 0x71, 0xae, + 0xeb, 0x50, 0xbf, 0x9a, 0x19, 0x6a, 0x6c, 0x95, 0xeb, 0xfe, 0x83, 0xfd, 0x17, 0x0e, 0x4c, 0xe6, + 0x0f, 0xf6, 0x31, 0x3c, 0xcc, 0xfa, 0x86, 0xf9, 0x30, 0xeb, 0x2f, 0xda, 0x9b, 0x62, 0x66, 0x57, + 0xba, 0x3c, 0xd1, 0xfa, 0x3f, 0x1c, 0x38, 0x2d, 0x2b, 0xb0, 0xdd, 0x73, 0xd6, 0x0f, 0x58, 0xe4, + 0xd0, 0xd1, 0x4f, 0xb3, 0xd7, 0x8d, 0x69, 0xf6, 0xa2, 0xbd, 0x8e, 0xeb, 0xfd, 0xe8, 0xfa, 0xa0, + 0xfd, 0x9f, 0x3b, 0x50, 0xca, 0xab, 0x70, 0x0c, 0x9f, 0xfc, 0x35, 0xf3, 0x93, 0x5f, 0x3f, 0x9a, + 0x9e, 0x77, 0xff, 0xe0, 0xa5, 0x6e, 0x03, 0x85, 0x1a, 0x52, 0xaf, 0x72, 0x6c, 0x39, 0xc4, 0x39, + 0x8b, 0x7c, 0x05, 0xad, 0x01, 0x03, 0x31, 0x0b, 0x91, 0x11, 0x53, 0xe0, 0x8a, 0x0d, 0x6d, 0x8b, + 0xd2, 0x13, 0x06, 0x7e, 0xf6, 0x3f, 0x16, 0x3c, 0xdc, 0xdf, 0x2c, 0xc0, 0x39, 0xf5, 0xe0, 0x32, + 0xd9, 0x21, 0x8d, 0x74, 0x7d, 0xb0, 0xe7, 0x39, 0x3c, 0xf5, 0xd3, 0xde, 0xf3, 0x1c, 0x29, 0x8b, + 0x74, 0x2d, 0xa4, 0x30, 0xac, 0xf1, 0x44, 0x65, 0x38, 0xc3, 0x9e, 0xd3, 0x58, 0xf0, 0x03, 0xaf, + 0xe1, 0xbf, 0x4a, 0x22, 0x4c, 0x9a, 0xe1, 0x8e, 0xd7, 0x10, 0x9a, 0xba, 0xba, 0xb2, 0xbd, 0x90, + 0x87, 0x84, 0xf3, 0xeb, 0x76, 0x9c, 0xb8, 0xfb, 0x7a, 0x3d, 0x71, 0xbb, 0x7f, 0xe2, 0xc0, 0xe8, + 0x31, 0x3e, 0x4f, 0x1d, 0x9a, 0x4b, 0xe2, 0x39, 0x7b, 0x4b, 0xa2, 0xcb, 0x32, 0xd8, 0x2b, 0x42, + 0xc7, 0x8b, 0xbd, 0xe8, 0x33, 0x8e, 0x0a, 0x22, 0xe2, 0xc1, 0x9a, 0x1f, 0xb6, 0xd7, 0x8e, 0x83, + 0xe4, 0xf9, 0x44, 0xdf, 0xc8, 0x24, 0x3f, 0x2d, 0xd8, 0xca, 0xe0, 0xd5, 0xd1, 0x9a, 0x43, 0x24, + 0x41, 0xfd, 0xaa, 0x03, 0xc0, 0xdb, 0x29, 0x72, 0xa7, 0xd3, 0xb6, 0x6d, 0x1e, 0xd9, 0x48, 0x51, + 0x26, 0xbc, 0x69, 0x6a, 0x09, 0xa5, 0x05, 0x58, 0x6b, 0xc9, 0x3d, 0x64, 0x37, 0xbd, 0xe7, 0xc4, + 0xaa, 0x5f, 0x74, 0xe0, 0x44, 0xa6, 0xb9, 0x39, 0xf5, 0xb7, 0xcc, 0x07, 0x26, 0x2d, 0x68, 0x56, + 0x66, 0x46, 0x6d, 0xdd, 0x78, 0xf2, 0xdf, 0x5c, 0x30, 0x9e, 0x3a, 0x47, 0xaf, 0xc1, 0x70, 0xa2, + 0x5c, 0x3e, 0x8e, 0xad, 0x65, 0xa6, 0x7c, 0x7e, 0xea, 0x78, 0x93, 0x3a, 0x82, 0x52, 0x7e, 0x99, + 0x18, 0xc5, 0x42, 0x4f, 0x31, 0x8a, 0xf7, 0xf7, 0x99, 0xde, 0x7c, 0xbb, 0x74, 0xff, 0x91, 0xd8, + 0xa5, 0x1f, 0xb2, 0x6e, 0x97, 0x7e, 0xf8, 0x98, 0xed, 0xd2, 0x9a, 0x87, 0xb2, 0x78, 0x04, 0x1e, + 0xca, 0x81, 0xe3, 0xf0, 0x50, 0x66, 0xbc, 0x3d, 0x83, 0x3d, 0x78, 0x7b, 0xde, 0x72, 0xe0, 0x8c, + 0xd7, 0x71, 0xc7, 0x0f, 0x93, 0x2d, 0x11, 0xef, 0x72, 0xc3, 0x9e, 0x0a, 0x61, 0x90, 0x17, 0x6e, + 0xb5, 0xbc, 0x22, 0x9c, 0xdf, 0x20, 0xf4, 0x58, 0xea, 0xf7, 0xe7, 0x41, 0xb5, 0xf9, 0x4e, 0xfa, + 0x6f, 0x64, 0x83, 0x89, 0x80, 0x0d, 0xfd, 0x47, 0xed, 0x9e, 0xb6, 0x2d, 0x04, 0x14, 0x8d, 0xdc, + 0x43, 0x40, 0x51, 0xc6, 0xf5, 0x36, 0x6a, 0xc9, 0xf5, 0x16, 0xc0, 0x84, 0xdf, 0xf4, 0x6a, 0x64, + 0xbd, 0xdd, 0x68, 0xf0, 0x4b, 0x3b, 0xf2, 0x29, 0xe4, 0x5c, 0x0b, 0xde, 0x4a, 0x58, 0xf1, 0x1a, + 0xd9, 0x47, 0xf0, 0xd5, 0xe5, 0xa4, 0xa5, 0x0c, 0x25, 0xdc, 0x41, 0x9b, 0x4e, 0x58, 0x96, 0xc0, + 0x90, 0x24, 0x74, 0xb4, 0x59, 0xd4, 0xca, 0x10, 0x9f, 0xb0, 0x57, 0x52, 0x30, 0xd6, 0x71, 0xd0, + 0x32, 0x0c, 0x57, 0x83, 0x58, 0x5c, 0x57, 0x3e, 0xc1, 0x84, 0xd9, 0xbb, 0xa8, 0x08, 0x9c, 0xbf, + 0x5a, 0x56, 0x17, 0x95, 0x1f, 0xca, 0xc9, 0xc8, 0xa9, 0xca, 0x71, 0x5a, 0x1f, 0xad, 0x32, 0x62, + 0xe2, 0x91, 0x37, 0x1e, 0x4c, 0xf2, 0x48, 0x17, 0x87, 0xd1, 0xfc, 0x55, 0xf9, 0x4c, 0xdd, 0x98, + 0x60, 0x27, 0x5e, 0x6b, 0x4b, 0x29, 0x68, 0x4f, 0x52, 0x9f, 0xdc, 0xf7, 0x49, 0x6a, 0x96, 0x8a, + 0x37, 0x69, 0x28, 0xf7, 0xf0, 0x05, 0x6b, 0xa9, 0x78, 0xd3, 0x30, 0x4d, 0x91, 0x8a, 0x37, 0x05, + 0x60, 0x9d, 0x25, 0x5a, 0xeb, 0xe6, 0x26, 0x3f, 0xc5, 0x84, 0xc6, 0xc1, 0x9d, 0xde, 0xba, 0xbf, + 0xf4, 0xf4, 0xbe, 0xfe, 0xd2, 0x0e, 0xff, 0xee, 0x99, 0x03, 0xf8, 0x77, 0xeb, 0x2c, 0x49, 0xea, + 0xe2, 0x9c, 0x70, 0xa9, 0x5b, 0x38, 0xdf, 0xb1, 0xb4, 0x2c, 0x3c, 0xec, 0x95, 0xfd, 0x8b, 0x39, + 0x83, 0xae, 0xd1, 0xeb, 0xe7, 0x0e, 0x1d, 0xbd, 0x4e, 0xc5, 0x73, 0x0a, 0x67, 0xd9, 0x76, 0x8b, + 0x42, 0x3c, 0xa7, 0x60, 0xac, 0xe3, 0x64, 0xbd, 0xa5, 0x0f, 0x1e, 0x99, 0xb7, 0x74, 0xf2, 0x18, + 0xbc, 0xa5, 0xe7, 0x7b, 0xf6, 0x96, 0xde, 0x82, 0x53, 0xad, 0xb0, 0x3a, 0xef, 0xc7, 0x51, 0x9b, + 0xdd, 0x62, 0x9c, 0x6d, 0x57, 0x6b, 0x24, 0x61, 0xee, 0xd6, 0x91, 0x4b, 0xef, 0xd2, 0x1b, 0xd9, + 0x62, 0x0b, 0x59, 0xae, 0xd1, 0x4c, 0x05, 0x66, 0x3a, 0x61, 0x21, 0xbf, 0x39, 0x85, 0x38, 0x8f, + 0x85, 0xee, 0xa7, 0x7d, 0xe4, 0x78, 0xfc, 0xb4, 0x1f, 0x84, 0xa1, 0xb8, 0xde, 0x4e, 0xaa, 0xe1, + 0xcd, 0x80, 0x39, 0xe3, 0x87, 0x67, 0xdf, 0xa1, 0x4c, 0xd9, 0x02, 0x7e, 0x67, 0x6f, 0x6a, 0x42, + 0xfe, 0xaf, 0x59, 0xb1, 0x05, 0x04, 0x7d, 0xb3, 0xcb, 0x65, 0x29, 0xf7, 0x28, 0x2f, 0x4b, 0x9d, + 0x3b, 0xd0, 0x45, 0xa9, 0x3c, 0x67, 0xf4, 0xa3, 0x3f, 0x73, 0xce, 0xe8, 0xaf, 0x3b, 0x30, 0xb6, + 0xa3, 0xbb, 0x0c, 0x84, 0xc3, 0xdc, 0x42, 0xe0, 0x8e, 0xe1, 0x89, 0x98, 0x75, 0xa9, 0x9c, 0x33, + 0x40, 0x77, 0xb2, 0x00, 0x6c, 0xb6, 0x24, 0x27, 0xa8, 0xe8, 0xb1, 0xfb, 0x15, 0x54, 0xf4, 0x06, + 0x93, 0x63, 0xf2, 0x90, 0xcb, 0xbc, 0xe8, 0x76, 0x03, 0x9a, 0xa5, 0x4c, 0x54, 0xf1, 0xcc, 0x3a, + 0x3f, 0xf4, 0x05, 0x07, 0x26, 0xe4, 0xb9, 0x4c, 0xb8, 0xfc, 0x62, 0x11, 0x92, 0x69, 0xf3, 0x38, + 0xc8, 0x62, 0xfa, 0x37, 0x32, 0x7c, 0x70, 0x07, 0x67, 0x2a, 0xd5, 0x55, 0x10, 0x5a, 0x2d, 0x66, + 0x91, 0xc7, 0x42, 0x87, 0x99, 0x49, 0xc1, 0x58, 0xc7, 0x41, 0xdf, 0x72, 0xa0, 0x58, 0x0f, 0xc3, + 0xed, 0xb8, 0xf4, 0x24, 0x13, 0xe8, 0x2f, 0x58, 0xd6, 0x4d, 0xaf, 0x50, 0xda, 0x5c, 0x29, 0x7d, + 0x5a, 0xda, 0x8e, 0x18, 0xec, 0xce, 0xde, 0xd4, 0xb8, 0xf1, 0x96, 0x54, 0xfc, 0xe6, 0xdb, 0x1a, + 0x44, 0xd8, 0x36, 0x59, 0xd3, 0xd0, 0x97, 0x1d, 0x98, 0xb8, 0x99, 0x31, 0x68, 0x88, 0x98, 0x54, + 0x6c, 0xdf, 0x54, 0xc2, 0x87, 0x3b, 0x0b, 0xc5, 0x1d, 0x2d, 0x40, 0x9f, 0x37, 0x0d, 0x9d, 0x3c, + 0x78, 0xd5, 0xe2, 0x00, 0x66, 0x0c, 0xab, 0xfc, 0x4e, 0x52, 0xbe, 0xc5, 0xf3, 0x9e, 0xe3, 0x43, + 0x26, 0x69, 0x67, 0xd2, 0x8f, 0x95, 0x53, 0x95, 0x98, 0xf6, 0x16, 0x0b, 0x8b, 0xdd, 0xf8, 0xfc, + 0xba, 0xb9, 0xe5, 0xcb, 0x67, 0x61, 0xdc, 0xf4, 0xed, 0xa1, 0x77, 0x9b, 0xef, 0x84, 0x5c, 0xc8, + 0x3e, 0xb9, 0x30, 0x26, 0xf1, 0x8d, 0x67, 0x17, 0x8c, 0x77, 0x11, 0x0a, 0x47, 0xfa, 0x2e, 0x42, + 0xdf, 0xf1, 0xbc, 0x8b, 0x30, 0x71, 0x14, 0xef, 0x22, 0x9c, 0x3c, 0xd0, 0xbb, 0x08, 0xda, 0xbb, + 0x14, 0xfd, 0x77, 0x79, 0x97, 0x62, 0x06, 0x4e, 0xc8, 0x8b, 0x47, 0x44, 0xa4, 0x9e, 0xe7, 0x6e, + 0x7f, 0xf5, 0xc4, 0xf9, 0x9c, 0x59, 0x8c, 0xb3, 0xf8, 0x74, 0x91, 0x15, 0x03, 0x56, 0x73, 0xc0, + 0xd6, 0xa3, 0x55, 0xe6, 0xd4, 0x62, 0xc7, 0x67, 0x21, 0xa2, 0x64, 0xb4, 0x73, 0x91, 0xc1, 0xee, + 0xc8, 0x7f, 0x30, 0x6f, 0x01, 0x7a, 0x09, 0x4a, 0xe1, 0xd6, 0x56, 0x23, 0xf4, 0xaa, 0xe9, 0xe3, + 0x0d, 0x32, 0x2e, 0x81, 0x5f, 0x94, 0x55, 0xb9, 0x7e, 0xd7, 0xba, 0xe0, 0xe1, 0xae, 0x14, 0xd0, + 0x5b, 0x54, 0x31, 0x49, 0xc2, 0x88, 0x54, 0x53, 0x5b, 0xcd, 0x30, 0xeb, 0x33, 0xb1, 0xde, 0xe7, + 0xb2, 0xc9, 0x87, 0xf7, 0x5e, 0x7d, 0x94, 0x4c, 0x29, 0xce, 0x36, 0x0b, 0x45, 0x70, 0xb6, 0x95, + 0x67, 0x2a, 0x8a, 0xc5, 0x75, 0xa9, 0xfd, 0x0c, 0x56, 0xea, 0x21, 0xef, 0x5c, 0x63, 0x53, 0x8c, + 0xbb, 0x50, 0xd6, 0x1f, 0x58, 0x18, 0x3a, 0x9e, 0x07, 0x16, 0x3e, 0x0e, 0x50, 0x91, 0xa9, 0xde, + 0xa4, 0xf1, 0x61, 0xd9, 0xca, 0x3d, 0x1e, 0x4e, 0x53, 0x7b, 0xd3, 0x56, 0xb1, 0xc1, 0x1a, 0x4b, + 0xf4, 0x7f, 0x72, 0x5f, 0x20, 0xe1, 0x16, 0x96, 0x9a, 0xf5, 0x39, 0xf1, 0x33, 0xf7, 0x0a, 0xc9, + 0x3f, 0x71, 0x60, 0x92, 0xcf, 0xbc, 0xac, 0x72, 0x4f, 0x55, 0x0b, 0x71, 0xb1, 0xc8, 0x76, 0xe8, + 0x0a, 0x4f, 0xd9, 0x64, 0x70, 0x65, 0x8e, 0xee, 0x7d, 0x5a, 0x82, 0xbe, 0x9a, 0x73, 0xa4, 0x38, + 0x61, 0xcb, 0x66, 0x99, 0xff, 0x8e, 0xc4, 0xa9, 0xdb, 0xbd, 0x9c, 0x22, 0xfe, 0x59, 0x57, 0x93, + 0x2a, 0x62, 0xcd, 0xfb, 0xa5, 0x23, 0x32, 0xa9, 0xea, 0x8f, 0x5d, 0x1c, 0xc8, 0xb0, 0xfa, 0x45, + 0x07, 0x26, 0xbc, 0x4c, 0xa8, 0x09, 0xb3, 0x03, 0x59, 0xb1, 0x49, 0xcd, 0x44, 0x69, 0xfc, 0x0a, + 0x53, 0xf2, 0xb2, 0x51, 0x2d, 0xb8, 0x83, 0x39, 0xfa, 0xa1, 0x03, 0xe7, 0x13, 0x2f, 0xde, 0xe6, + 0xa9, 0xa4, 0xe3, 0xf4, 0xa2, 0xb0, 0x68, 0xdc, 0x69, 0xb6, 0x1a, 0x5f, 0xb1, 0xbe, 0x1a, 0x37, + 0xba, 0xf3, 0xe4, 0xeb, 0xf2, 0x51, 0xb1, 0x2e, 0xcf, 0xef, 0x83, 0x89, 0xf7, 0x6b, 0xfa, 0xe4, + 0x67, 0x1c, 0xfe, 0xe4, 0x58, 0x57, 0x95, 0x6f, 0xd3, 0x54, 0xf9, 0x56, 0x6c, 0x3e, 0x7a, 0xa4, + 0xeb, 0x9e, 0xbf, 0xea, 0xc0, 0xe9, 0xbc, 0x1d, 0x29, 0xa7, 0x49, 0x1f, 0x35, 0x9b, 0x64, 0xf1, + 0x94, 0xa5, 0x37, 0xc8, 0xca, 0x9b, 0x2b, 0x93, 0x57, 0xe1, 0x91, 0xbb, 0x7d, 0xc5, 0xbb, 0xd1, + 0x1b, 0xd2, 0xd5, 0xe2, 0x3f, 0x1f, 0xd6, 0xbc, 0x90, 0x09, 0x69, 0x59, 0x8f, 0xe1, 0x0e, 0x60, + 0xc0, 0x0f, 0x1a, 0x7e, 0x40, 0xc4, 0x65, 0x51, 0x9b, 0x67, 0x58, 0xf1, 0x66, 0x12, 0xa5, 0x8e, + 0x05, 0x97, 0xfb, 0xec, 0x94, 0xcc, 0xbe, 0x42, 0xd7, 0x7f, 0xfc, 0xaf, 0xd0, 0xdd, 0x84, 0xe1, + 0x9b, 0x7e, 0x52, 0x67, 0xc1, 0x14, 0xc2, 0xd7, 0x67, 0xe1, 0x92, 0x25, 0x25, 0x97, 0xf6, 0xfd, + 0x86, 0x64, 0x80, 0x53, 0x5e, 0xe8, 0x22, 0x67, 0xcc, 0x22, 0xb7, 0xb3, 0x21, 0xb5, 0x37, 0x64, + 0x01, 0x4e, 0x71, 0xe8, 0x60, 0x8d, 0xd2, 0x5f, 0x32, 0x01, 0x95, 0x48, 0xcb, 0x6c, 0x23, 0xdd, + 0xa6, 0xa0, 0xc8, 0xaf, 0x32, 0xdf, 0xd0, 0x78, 0x60, 0x83, 0xa3, 0xca, 0x8c, 0x3d, 0xd4, 0x35, + 0x33, 0xf6, 0xeb, 0x4c, 0x61, 0x4b, 0xfc, 0xa0, 0x4d, 0xd6, 0x02, 0x11, 0xef, 0xbd, 0x62, 0xe7, + 0xe2, 0x35, 0xa7, 0xc9, 0x8f, 0xe0, 0xe9, 0x6f, 0xac, 0xf1, 0xd3, 0x5c, 0x2e, 0x23, 0xfb, 0xba, + 0x5c, 0x52, 0x93, 0xcb, 0xa8, 0x75, 0x93, 0x4b, 0x42, 0x5a, 0x56, 0x4c, 0x2e, 0x3f, 0x53, 0xe6, + 0x80, 0xbf, 0x70, 0x00, 0x29, 0xbd, 0x4b, 0x09, 0xd4, 0x63, 0x08, 0xaa, 0xfc, 0x84, 0x03, 0x10, + 0xa8, 0xb7, 0x4a, 0xed, 0xee, 0x82, 0x9c, 0x66, 0xda, 0x80, 0x14, 0x86, 0x35, 0x9e, 0xee, 0x9f, + 0x39, 0x69, 0xec, 0x72, 0xda, 0xf7, 0x63, 0x08, 0x22, 0xdb, 0x35, 0x83, 0xc8, 0x36, 0x2c, 0x9a, + 0xee, 0x55, 0x37, 0xba, 0x84, 0x93, 0xfd, 0xa4, 0x00, 0x27, 0x74, 0xe4, 0x32, 0x39, 0x8e, 0x8f, + 0x7d, 0xd3, 0x88, 0xa0, 0xbd, 0x66, 0xb7, 0xbf, 0x65, 0xe1, 0x01, 0xca, 0x8b, 0xd6, 0xfe, 0x78, + 0x26, 0x5a, 0xfb, 0x86, 0x7d, 0xd6, 0xfb, 0x87, 0x6c, 0xff, 0x57, 0x07, 0x4e, 0x65, 0x6a, 0x1c, + 0xc3, 0x04, 0xdb, 0x31, 0x27, 0xd8, 0xf3, 0xd6, 0x7b, 0xdd, 0x65, 0x76, 0x7d, 0xbb, 0xd0, 0xd1, + 0x5b, 0x76, 0x88, 0xfb, 0xb4, 0x03, 0x45, 0xaa, 0x2d, 0xcb, 0x78, 0xae, 0x8f, 0x1e, 0xc9, 0x0c, + 0x60, 0x7a, 0xbd, 0x90, 0xce, 0xaa, 0x7d, 0x0c, 0x86, 0x39, 0xf7, 0xc9, 0x4f, 0x39, 0x00, 0x29, + 0xd2, 0xfd, 0x52, 0x81, 0xdd, 0xef, 0x16, 0xe0, 0x4c, 0xee, 0x34, 0x42, 0x9f, 0x55, 0x16, 0x39, + 0xc7, 0x76, 0xb4, 0xa2, 0xc1, 0x48, 0x37, 0xcc, 0x8d, 0x19, 0x86, 0x39, 0x61, 0x8f, 0xbb, 0x5f, + 0x07, 0x18, 0x21, 0xa6, 0xb5, 0xc1, 0xfa, 0xb1, 0x93, 0x06, 0xc0, 0xaa, 0xa4, 0x4a, 0x7f, 0x09, + 0x2f, 0xf1, 0xb8, 0x3f, 0xd1, 0x6e, 0x38, 0xc8, 0x8e, 0x1e, 0x83, 0xac, 0xb8, 0x69, 0xca, 0x0a, + 0x6c, 0xdf, 0x8f, 0xdc, 0x45, 0x58, 0xbc, 0x02, 0x79, 0x8e, 0xe5, 0xde, 0x32, 0x50, 0x1a, 0xd7, + 0x61, 0x0b, 0x3d, 0x5f, 0x87, 0x1d, 0x83, 0x91, 0x17, 0x7d, 0x95, 0xbd, 0x74, 0x76, 0xfa, 0x7b, + 0x3f, 0xba, 0xf0, 0xc0, 0xf7, 0x7f, 0x74, 0xe1, 0x81, 0x1f, 0xfe, 0xe8, 0xc2, 0x03, 0x9f, 0xb8, + 0x7d, 0xc1, 0xf9, 0xde, 0xed, 0x0b, 0xce, 0xf7, 0x6f, 0x5f, 0x70, 0x7e, 0x78, 0xfb, 0x82, 0xf3, + 0x1f, 0x6e, 0x5f, 0x70, 0xfe, 0xde, 0x9f, 0x5e, 0x78, 0xe0, 0xc5, 0x21, 0xd9, 0xb1, 0xff, 0x1f, + 0x00, 0x00, 0xff, 0xff, 0x4a, 0x65, 0xfd, 0x82, 0x71, 0xd9, 0x00, 0x00, } func (m *Amount) Marshal() (dAtA []byte, err error) { @@ -11546,6 +11546,22 @@ func (m *Template) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.VolumeClaimTemplates) > 0 { + for iNdEx := len(m.VolumeClaimTemplates) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VolumeClaimTemplates[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2 + i-- + dAtA[i] = 0xe2 + } + } if m.Plugin != nil { { size, err := m.Plugin.MarshalToSizedBuffer(dAtA[:i]) @@ -16693,6 +16709,12 @@ func (m *Template) Size() (n int) { l = m.Plugin.Size() n += 2 + l + sovGenerated(uint64(l)) } + if len(m.VolumeClaimTemplates) > 0 { + for _, e := range m.VolumeClaimTemplates { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } return n } @@ -19188,6 +19210,11 @@ func (this *Template) String() string { repeatedStringForHostAliases += fmt.Sprintf("%v", f) + "," } repeatedStringForHostAliases += "}" + repeatedStringForVolumeClaimTemplates := "[]PersistentVolumeClaim{" + for _, f := range this.VolumeClaimTemplates { + repeatedStringForVolumeClaimTemplates += fmt.Sprintf("%v", f) + "," + } + repeatedStringForVolumeClaimTemplates += "}" keysForNodeSelector := make([]string, 0, len(this.NodeSelector)) for k := range this.NodeSelector { keysForNodeSelector = append(keysForNodeSelector, k) @@ -19238,6 +19265,7 @@ func (this *Template) String() string { `FailFast:` + valueToStringGenerated(this.FailFast) + `,`, `HTTP:` + strings.Replace(this.HTTP.String(), "HTTP", "HTTP", 1) + `,`, `Plugin:` + strings.Replace(this.Plugin.String(), "Plugin", "Plugin", 1) + `,`, + `VolumeClaimTemplates:` + repeatedStringForVolumeClaimTemplates + `,`, `}`, }, "") return s @@ -41039,6 +41067,40 @@ func (m *Template) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 44: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeClaimTemplates", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeClaimTemplates = append(m.VolumeClaimTemplates, v1.PersistentVolumeClaim{}) + if err := m.VolumeClaimTemplates[len(m.VolumeClaimTemplates)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto index 77270ec6ae8d..df1d3648d11b 100644 --- a/pkg/apis/workflow/v1alpha1/generated.proto +++ b/pkg/apis/workflow/v1alpha1/generated.proto @@ -1689,6 +1689,11 @@ message Template { // +patchMergeKey=name repeated k8s.io.api.core.v1.Volume volumes = 17; + // VolumeClaimTemplates is a list of claims that containers are allowed to reference. + // The Workflow controller will create the claims at the beginning of the workflow + // and delete the claims upon completion of the workflow + repeated k8s.io.api.core.v1.PersistentVolumeClaim volumeClaimTemplates = 44; + // InitContainers is a list of containers which run before the main container. // +patchStrategy=merge // +patchMergeKey=name diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go index 7a61234a8a9c..7b70bfb27f4c 100644 --- a/pkg/apis/workflow/v1alpha1/openapi_generated.go +++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go @@ -6462,6 +6462,20 @@ func schema_pkg_apis_workflow_v1alpha1_Template(ref common.ReferenceCallback) co }, }, }, + "volumeClaimTemplates": { + SchemaProps: spec.SchemaProps{ + Description: "VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("k8s.io/api/core/v1.PersistentVolumeClaim"), + }, + }, + }, + }, + }, "initContainers": { VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ @@ -6657,7 +6671,7 @@ func schema_pkg_apis_workflow_v1alpha1_Template(ref common.ReferenceCallback) co }, }, Dependencies: []string{ - "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ArtifactLocation", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ContainerSetTemplate", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.DAGTemplate", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Data", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ExecutorConfig", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.HTTP", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Inputs", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Memoize", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Metadata", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Metrics", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Outputs", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ParallelSteps", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Plugin", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ResourceTemplate", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryStrategy", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ScriptTemplate", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SuspendTemplate", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Synchronization", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.UserContainer", "k8s.io/api/core/v1.Affinity", "k8s.io/api/core/v1.Container", "k8s.io/api/core/v1.HostAlias", "k8s.io/api/core/v1.PodSecurityContext", "k8s.io/api/core/v1.Toleration", "k8s.io/api/core/v1.Volume", "k8s.io/apimachinery/pkg/util/intstr.IntOrString"}, + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ArtifactLocation", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ContainerSetTemplate", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.DAGTemplate", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Data", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ExecutorConfig", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.HTTP", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Inputs", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Memoize", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Metadata", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Metrics", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Outputs", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ParallelSteps", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Plugin", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ResourceTemplate", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryStrategy", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ScriptTemplate", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SuspendTemplate", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Synchronization", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.UserContainer", "k8s.io/api/core/v1.Affinity", "k8s.io/api/core/v1.Container", "k8s.io/api/core/v1.HostAlias", "k8s.io/api/core/v1.PersistentVolumeClaim", "k8s.io/api/core/v1.PodSecurityContext", "k8s.io/api/core/v1.Toleration", "k8s.io/api/core/v1.Volume", "k8s.io/apimachinery/pkg/util/intstr.IntOrString"}, } } diff --git a/pkg/apis/workflow/v1alpha1/workflow_template_types.go b/pkg/apis/workflow/v1alpha1/workflow_template_types.go index 707128f56097..a8fd390ffdb5 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_template_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_template_types.go @@ -45,6 +45,13 @@ var _ TemplateHolder = &WorkflowTemplate{} func (wftmpl *WorkflowTemplate) GetTemplateByName(name string) *Template { for _, t := range wftmpl.Spec.Templates { if t.Name == name { + for _, v := range t.GetVolumeMounts() { + for _, vp := range wftmpl.Spec.VolumeClaimTemplates { + if v.Name == vp.Name { + t.VolumeClaimTemplates = append(t.VolumeClaimTemplates, vp) + } + } + } return &t } } diff --git a/pkg/apis/workflow/v1alpha1/workflow_types.go b/pkg/apis/workflow/v1alpha1/workflow_types.go index 8dd014512b69..0950a6b20bab 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_types.go @@ -676,6 +676,11 @@ type Template struct { // +patchMergeKey=name Volumes []apiv1.Volume `json:"volumes,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,17,opt,name=volumes"` + // VolumeClaimTemplates is a list of claims that containers are allowed to reference. + // The Workflow controller will create the claims at the beginning of the workflow + // and delete the claims upon completion of the workflow + VolumeClaimTemplates []apiv1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" protobuf:"bytes,44,opt,name=volumeClaimTemplates"` + // InitContainers is a list of containers which run before the main container. // +patchStrategy=merge // +patchMergeKey=name diff --git a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go index 7592ca05ced8..a4f80f25425c 100644 --- a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go @@ -3250,6 +3250,13 @@ func (in *Template) DeepCopyInto(out *Template) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]v1.PersistentVolumeClaim, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.InitContainers != nil { in, out := &in.InitContainers, &out.InitContainers *out = make([]UserContainer, len(*in)) diff --git a/pkg/plugins/executor/swagger.yml b/pkg/plugins/executor/swagger.yml index b39d45469a2e..3b19368d3ba4 100644 --- a/pkg/plugins/executor/swagger.yml +++ b/pkg/plugins/executor/swagger.yml @@ -518,6 +518,13 @@ definitions: type: string title: Represents a cinder volume resource in Openstack. type: object + ClaimResourceStatus: + description: |- + +enum + When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource + that it does not recognizes, then it should ignore that update and let other controllers + handle it. + type: string ClientCertAuth: description: ClientCertAuth holds necessary information for client authentication via certificates properties: @@ -560,6 +567,8 @@ definitions: +optional type: string type: object + ConditionStatus: + type: string ConfigMapEnvSource: description: |- The contents of the target ConfigMap's Data field will represent the @@ -2284,6 +2293,15 @@ definitions: $ref: '#/definitions/Prometheus' type: array type: object + ModifyVolumeStatus: + description: ModifyVolumeStatus represents the status object of ControllerModifyVolume operation + properties: + status: + $ref: '#/definitions/PersistentVolumeClaimModifyVolumeStatus' + targetVolumeAttributesClassName: + description: targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled + type: string + type: object MountPropagationMode: description: +enum title: MountPropagationMode describes mount propagation. @@ -2609,6 +2627,260 @@ definitions: PersistentVolumeAccessMode: description: +enum type: string + PersistentVolumeClaim: + description: PersistentVolumeClaim is a user's request for and claim to a persistent volume + properties: + annotations: + additionalProperties: + type: string + description: |- + Annotations is an unstructured key value map stored with a resource that may be + set by external tools to store and retrieve arbitrary metadata. They are not + queryable and should be preserved when modifying objects. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations + +optional + type: object + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + +optional + type: string + creationTimestamp: + description: |- + CreationTimestamp is a timestamp representing the server time when this object was + created. It is not guaranteed to be set in happens-before order across separate operations. + Clients may not set this value. It is represented in RFC3339 form and is in UTC. + + Populated by the system. + Read-only. + Null for lists. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + +optional + type: string + deletionGracePeriodSeconds: + description: |- + Number of seconds allowed for this object to gracefully terminate before + it will be removed from the system. Only set when deletionTimestamp is also set. + May only be shortened. + Read-only. + +optional + format: int64 + type: integer + deletionTimestamp: + description: |- + DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This + field is set by the server when a graceful deletion is requested by the user, and is not + directly settable by a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in this field, once the + finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. + Once the deletionTimestamp is set, this value may not be unset or be set further into the + future, although it may be shortened or the resource may be deleted prior to this time. + For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react + by sending a graceful termination signal to the containers in the pod. After that 30 seconds, + the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, + remove the pod from the API. In the presence of network partitions, this object may still + exist after this timestamp, until an administrator or automated process can determine the + resource is fully terminated. + If not set, graceful deletion of the object has not been requested. + + Populated by the system when a graceful deletion is requested. + Read-only. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + +optional + type: string + finalizers: + description: |- + Must be empty before the object is deleted from the registry. Each entry + is an identifier for the responsible component that will remove the entry + from the list. If the deletionTimestamp of the object is non-nil, entries + in this list can only be removed. + Finalizers may be processed and removed in any order. Order is NOT enforced + because it introduces significant risk of stuck finalizers. + finalizers is a shared field, any actor with permission can reorder it. + If the finalizer list is processed in order, then this can lead to a situation + in which the component responsible for the first finalizer in the list is + waiting for a signal (field value, external system, or other) produced by a + component responsible for a finalizer later in the list, resulting in a deadlock. + Without enforced ordering finalizers are free to order amongst themselves and + are not vulnerable to ordering changes in the list. + +optional + +patchStrategy=merge + +listType=set + items: + type: string + type: array + generateName: + description: |- + GenerateName is an optional prefix, used by the server, to generate a unique + name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique suffix. + The provided value has the same validation rules as the Name field, + and may be truncated by the length of the suffix required to make the value + unique on the server. + + If this field is specified and the generated name exists, the server will return a 409. + + Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency + +optional + type: string + generation: + description: |- + A sequence number representing a specific generation of the desired state. + Populated by the system. Read-only. + +optional + format: int64 + type: integer + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + +optional + type: string + labels: + additionalProperties: + type: string + description: |- + Map of string keys and values that can be used to organize and categorize + (scope and select) objects. May match selectors of replication controllers + and services. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels + +optional + type: object + managedFields: + description: |- + ManagedFields maps workflow-id and version to the set of fields + that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or + understand this field. A workflow can be the user's name, a + controller's name, or the name of a specific apply path like + "ci-cd". The set of fields is always in the version that the + workflow used when modifying the object. + + +optional + +listType=atomic + items: + $ref: '#/definitions/ManagedFieldsEntry' + type: array + name: + description: |- + Name must be unique within a namespace. Is required when creating resources, although + some resources may allow a client to request the generation of an appropriate name + automatically. Name is primarily intended for creation idempotence and configuration + definition. + Cannot be updated. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names + +optional + type: string + namespace: + description: |- + Namespace defines the space within which each name must be unique. An empty namespace is + equivalent to the "default" namespace, but "default" is the canonical representation. + Not all objects are required to be scoped to a namespace - the value of this field for + those objects will be empty. + + Must be a DNS_LABEL. + Cannot be updated. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces + +optional + type: string + ownerReferences: + description: |- + List of objects depended by this object. If ALL objects in the list have + been deleted, this object will be garbage collected. If this object is managed by a controller, + then an entry in this list will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + +optional + +patchMergeKey=uid + +patchStrategy=merge + +listType=map + +listMapKey=uid + items: + $ref: '#/definitions/OwnerReference' + type: array + resourceVersion: + description: |- + An opaque value that represents the internal version of this object that can + be used by clients to determine when objects have changed. May be used for optimistic + concurrency, change detection, and the watch operation on a resource or set of resources. + Clients must treat these values as opaque and passed unmodified back to the server. + They may only be valid for a particular resource or set of resources. + + Populated by the system. + Read-only. + Value must be treated as opaque by clients and . + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + +optional + type: string + selfLink: + description: |- + Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. + +optional + type: string + spec: + $ref: '#/definitions/PersistentVolumeClaimSpec' + status: + $ref: '#/definitions/PersistentVolumeClaimStatus' + uid: + $ref: '#/definitions/UID' + type: object + PersistentVolumeClaimCondition: + description: PersistentVolumeClaimCondition contains details about state of pvc + properties: + lastProbeTime: + description: |- + lastProbeTime is the time we probed the condition. + +optional + type: string + lastTransitionTime: + description: |- + lastTransitionTime is the time the condition transitioned from one status to another. + +optional + type: string + message: + description: |- + message is the human-readable message indicating details about last transition. + +optional + type: string + reason: + description: |- + reason is a unique, this should be a short, machine understandable string that gives the reason + for condition's last transition. If it reports "Resizing" that means the underlying + persistent volume is being resized. + +optional + type: string + status: + $ref: '#/definitions/ConditionStatus' + type: + $ref: '#/definitions/PersistentVolumeClaimConditionType' + type: object + PersistentVolumeClaimConditionType: + description: |- + If RecoverVolumeExpansionFailure feature gate is enabled, then following additional values can be expected: + "ControllerResizeError", "NodeResizeError" + + If VolumeAttributesClass feature gate is enabled, then following additional values can be expected: + "ModifyVolumeError", "ModifyingVolume" + title: |- + PersistentVolumeClaimConditionType defines the condition of PV claim. + Valid values are: + "Resizing", "FileSystemResizePending" + type: string + PersistentVolumeClaimModifyVolumeStatus: + description: |- + +enum + New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately + type: string + PersistentVolumeClaimPhase: + description: +enum + type: string PersistentVolumeClaimSpec: description: |- PersistentVolumeClaimSpec describes the common attributes of storage devices @@ -2662,6 +2934,74 @@ definitions: +optional type: string type: object + PersistentVolumeClaimStatus: + properties: + accessModes: + description: |- + accessModes contains the actual access modes the volume backing the PVC has. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + +optional + +listType=atomic + items: + $ref: '#/definitions/PersistentVolumeAccessMode' + type: array + allocatedResourceStatuses: + additionalProperties: + $ref: '#/definitions/ClaimResourceStatus' + description: |- + allocatedResourceStatuses stores status of resource being resized for the given PVC. + Key names follow standard Kubernetes label syntax. Valid values are either: + Un-prefixed keys: + storage - the capacity of the volume. + Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" + Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered + reserved and hence may not be used. + + ClaimResourceStatus can be in any of following states: + ControllerResizeInProgress: + State set when resize controller starts resizing the volume in control-plane. + ControllerResizeFailed: + State set when resize has failed in resize controller with a terminal error. + NodeResizePending: + State set when resize controller has finished resizing the volume but further resizing of + volume is needed on the node. + NodeResizeInProgress: + State set when kubelet starts resizing the volume. + NodeResizeFailed: + State set when resizing has failed in kubelet with a terminal error. Transient errors don't set + NodeResizeFailed. + example: 'if expanding a PVC for more capacity - this field can be one of the following states:' + type: object + allocatedResources: + $ref: '#/definitions/ResourceList' + capacity: + $ref: '#/definitions/ResourceList' + conditions: + description: |- + conditions is the current Condition of persistent volume claim. If underlying persistent volume is being + resized then the Condition will be set to 'Resizing'. + +optional + +patchMergeKey=type + +patchStrategy=merge + +listType=map + +listMapKey=type + items: + $ref: '#/definitions/PersistentVolumeClaimCondition' + type: array + currentVolumeAttributesClassName: + description: |- + currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using. + When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim + This is a beta field and requires enabling VolumeAttributesClass feature (off by default). + +featureGate=VolumeAttributesClass + +optional + type: string + modifyVolumeStatus: + $ref: '#/definitions/ModifyVolumeStatus' + phase: + $ref: '#/definitions/PersistentVolumeClaimPhase' + title: PersistentVolumeClaimStatus is the current status of a persistent volume claim. + type: object PersistentVolumeClaimTemplate: description: |- PersistentVolumeClaimTemplate is used to produce @@ -4465,6 +4805,14 @@ definitions: items: $ref: '#/definitions/Toleration' type: array + volumeClaimTemplates: + description: |- + VolumeClaimTemplates is a list of claims that containers are allowed to reference. + The Workflow controller will create the claims at the beginning of the workflow + and delete the claims upon completion of the workflow + items: + $ref: '#/definitions/PersistentVolumeClaim' + type: array volumes: description: |- Volumes is a list of volumes that can be mounted by containers in a template. diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1Template.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1Template.md index 96784bb73ddf..4ff9629ee1c1 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1Template.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1Template.md @@ -46,6 +46,7 @@ Name | Type | Description | Notes **synchronization** | [**IoArgoprojWorkflowV1alpha1Synchronization**](IoArgoprojWorkflowV1alpha1Synchronization.md) | | [optional] **timeout** | **String** | Timeout allows to set the total node execution timeout duration counting from the node's start time. This duration also includes time in which the node spends in Pending state. This duration may not be applied to Step or DAG templates. | [optional] **tolerations** | [**List<io.kubernetes.client.openapi.models.V1Toleration>**](io.kubernetes.client.openapi.models.V1Toleration.md) | Tolerations to apply to workflow pods. | [optional] +**volumeClaimTemplates** | [**List<io.kubernetes.client.openapi.models.V1PersistentVolumeClaim>**](io.kubernetes.client.openapi.models.V1PersistentVolumeClaim.md) | VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow | [optional] **volumes** | [**List<io.kubernetes.client.openapi.models.V1Volume>**](io.kubernetes.client.openapi.models.V1Volume.md) | Volumes is a list of volumes that can be mounted by containers in a template. | [optional] diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_template.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_template.py index 13d05724dd34..68f062e861d5 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_template.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_template.py @@ -51,6 +51,7 @@ def lazy_import(): from argo_workflows.model.io_argoproj_workflow_v1alpha1_suspend_template import IoArgoprojWorkflowV1alpha1SuspendTemplate from argo_workflows.model.io_argoproj_workflow_v1alpha1_synchronization import IoArgoprojWorkflowV1alpha1Synchronization from argo_workflows.model.io_argoproj_workflow_v1alpha1_user_container import IoArgoprojWorkflowV1alpha1UserContainer + from argo_workflows.model.persistent_volume_claim import PersistentVolumeClaim from argo_workflows.model.pod_security_context import PodSecurityContext from argo_workflows.model.toleration import Toleration from argo_workflows.model.volume import Volume @@ -75,6 +76,7 @@ def lazy_import(): globals()['IoArgoprojWorkflowV1alpha1SuspendTemplate'] = IoArgoprojWorkflowV1alpha1SuspendTemplate globals()['IoArgoprojWorkflowV1alpha1Synchronization'] = IoArgoprojWorkflowV1alpha1Synchronization globals()['IoArgoprojWorkflowV1alpha1UserContainer'] = IoArgoprojWorkflowV1alpha1UserContainer + globals()['PersistentVolumeClaim'] = PersistentVolumeClaim globals()['PodSecurityContext'] = PodSecurityContext globals()['Toleration'] = Toleration globals()['Volume'] = Volume @@ -171,6 +173,7 @@ def openapi_types(): 'synchronization': (IoArgoprojWorkflowV1alpha1Synchronization,), # noqa: E501 'timeout': (str,), # noqa: E501 'tolerations': ([Toleration],), # noqa: E501 + 'volume_claim_templates': ([PersistentVolumeClaim],), # noqa: E501 'volumes': ([Volume],), # noqa: E501 } @@ -218,6 +221,7 @@ def discriminator(): 'synchronization': 'synchronization', # noqa: E501 'timeout': 'timeout', # noqa: E501 'tolerations': 'tolerations', # noqa: E501 + 'volume_claim_templates': 'volumeClaimTemplates', # noqa: E501 'volumes': 'volumes', # noqa: E501 } @@ -300,6 +304,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 synchronization (IoArgoprojWorkflowV1alpha1Synchronization): [optional] # noqa: E501 timeout (str): Timeout allows to set the total node execution timeout duration counting from the node's start time. This duration also includes time in which the node spends in Pending state. This duration may not be applied to Step or DAG templates.. [optional] # noqa: E501 tolerations ([Toleration]): Tolerations to apply to workflow pods.. [optional] # noqa: E501 + volume_claim_templates ([PersistentVolumeClaim]): VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow. [optional] # noqa: E501 volumes ([Volume]): Volumes is a list of volumes that can be mounted by containers in a template.. [optional] # noqa: E501 """ @@ -420,6 +425,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 synchronization (IoArgoprojWorkflowV1alpha1Synchronization): [optional] # noqa: E501 timeout (str): Timeout allows to set the total node execution timeout duration counting from the node's start time. This duration also includes time in which the node spends in Pending state. This duration may not be applied to Step or DAG templates.. [optional] # noqa: E501 tolerations ([Toleration]): Tolerations to apply to workflow pods.. [optional] # noqa: E501 + volume_claim_templates ([PersistentVolumeClaim]): VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow. [optional] # noqa: E501 volumes ([Volume]): Volumes is a list of volumes that can be mounted by containers in a template.. [optional] # noqa: E501 """ diff --git a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md index 9629a9636698..ac10a02ce86e 100644 --- a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md @@ -5550,6 +5550,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -10372,6 +10492,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -17085,6 +17325,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -21907,6 +22267,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -28526,6 +29006,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -33348,6 +33948,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( diff --git a/sdks/python/client/docs/CronWorkflowServiceApi.md b/sdks/python/client/docs/CronWorkflowServiceApi.md index c0c6694b52b7..f68f52fb7195 100644 --- a/sdks/python/client/docs/CronWorkflowServiceApi.md +++ b/sdks/python/client/docs/CronWorkflowServiceApi.md @@ -5610,6 +5610,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -10432,6 +10552,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -17227,6 +17467,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -22049,6 +22409,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -28931,6 +29411,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -33753,6 +34353,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1Template.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1Template.md index edcf27bef471..32972394b673 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1Template.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1Template.md @@ -43,6 +43,7 @@ Name | Type | Description | Notes **synchronization** | [**IoArgoprojWorkflowV1alpha1Synchronization**](IoArgoprojWorkflowV1alpha1Synchronization.md) | | [optional] **timeout** | **str** | Timeout allows to set the total node execution timeout duration counting from the node's start time. This duration also includes time in which the node spends in Pending state. This duration may not be applied to Step or DAG templates. | [optional] **tolerations** | [**[Toleration]**](Toleration.md) | Tolerations to apply to workflow pods. | [optional] +**volume_claim_templates** | [**[PersistentVolumeClaim]**](PersistentVolumeClaim.md) | VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow | [optional] **volumes** | [**[Volume]**](Volume.md) | Volumes is a list of volumes that can be mounted by containers in a template. | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] diff --git a/sdks/python/client/docs/WorkflowServiceApi.md b/sdks/python/client/docs/WorkflowServiceApi.md index a344eeaf39c7..65676ce0db4a 100644 --- a/sdks/python/client/docs/WorkflowServiceApi.md +++ b/sdks/python/client/docs/WorkflowServiceApi.md @@ -5565,6 +5565,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -10387,6 +10507,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -17207,6 +17447,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -23052,6 +23412,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -27874,6 +28354,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -34629,6 +35229,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -39451,6 +40171,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -46271,6 +47111,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -52116,6 +53076,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -56938,6 +58018,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( diff --git a/sdks/python/client/docs/WorkflowTemplateServiceApi.md b/sdks/python/client/docs/WorkflowTemplateServiceApi.md index 3d4ca135dbd7..cb97a333aac9 100644 --- a/sdks/python/client/docs/WorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/WorkflowTemplateServiceApi.md @@ -5552,6 +5552,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -10374,6 +10494,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -17094,6 +17334,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -21916,6 +22276,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -28549,6 +29029,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( @@ -33371,6 +33971,126 @@ with argo_workflows.ApiClient(configuration) as api_client: value="value_example", ), ], + volume_claim_templates=[ + PersistentVolumeClaim( + api_version="api_version_example", + kind="kind_example", + metadata=ObjectMeta( + annotations={ + "key": "key_example", + }, + creation_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + deletion_grace_period_seconds=1, + deletion_timestamp=dateutil_parser('1970-01-01T00:00:00.00Z'), + finalizers=[ + "finalizers_example", + ], + generate_name="generate_name_example", + generation=1, + labels={ + "key": "key_example", + }, + managed_fields=[ + ManagedFieldsEntry( + api_version="api_version_example", + fields_type="fields_type_example", + fields_v1={}, + manager="manager_example", + operation="operation_example", + subresource="subresource_example", + time=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), + ], + name="name_example", + namespace="namespace_example", + owner_references=[ + OwnerReference( + api_version="api_version_example", + block_owner_deletion=True, + controller=True, + kind="kind_example", + name="name_example", + uid="uid_example", + ), + ], + resource_version="resource_version_example", + self_link="self_link_example", + uid="uid_example", + ), + spec=PersistentVolumeClaimSpec( + access_modes=[ + "access_modes_example", + ], + data_source=TypedLocalObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + ), + data_source_ref=TypedObjectReference( + api_group="api_group_example", + kind="kind_example", + name="name_example", + namespace="namespace_example", + ), + resources=VolumeResourceRequirements( + limits={ + "key": "key_example", + }, + requests={ + "key": "key_example", + }, + ), + selector=LabelSelector( + match_expressions=[ + LabelSelectorRequirement( + key="key_example", + operator="operator_example", + values=[ + "values_example", + ], + ), + ], + match_labels={ + "key": "key_example", + }, + ), + storage_class_name="storage_class_name_example", + volume_attributes_class_name="volume_attributes_class_name_example", + volume_mode="volume_mode_example", + volume_name="volume_name_example", + ), + status=PersistentVolumeClaimStatus( + access_modes=[ + "access_modes_example", + ], + allocated_resource_statuses={ + "key": "key_example", + }, + allocated_resources={ + "key": "key_example", + }, + capacity={ + "key": "key_example", + }, + conditions=[ + PersistentVolumeClaimCondition( + last_probe_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + last_transition_time=dateutil_parser('1970-01-01T00:00:00.00Z'), + message="message_example", + reason="reason_example", + status="status_example", + type="type_example", + ), + ], + current_volume_attributes_class_name="current_volume_attributes_class_name_example", + modify_volume_status=ModifyVolumeStatus( + status="status_example", + target_volume_attributes_class_name="target_volume_attributes_class_name_example", + ), + phase="phase_example", + ), + ), + ], volumes=[ Volume( aws_elastic_block_store=AWSElasticBlockStoreVolumeSource( diff --git a/test/e2e/functional_test.go b/test/e2e/functional_test.go index 6e9e9dd8dfd2..593c776ea978 100644 --- a/test/e2e/functional_test.go +++ b/test/e2e/functional_test.go @@ -310,6 +310,51 @@ func (s *FunctionalSuite) TestVolumeClaimTemplate() { }) } +// TestVolumeClaimTemplateRef tests that a volumeClaimTemplateRef can be used in a workflow +// details see #13977 +func (s *FunctionalSuite) TestVolumeClaimTemplateRef() { + s.Given(). + WorkflowTemplate("@testdata/workflow-templates/volume-claim-workflowtemplate.yaml"). + Workflow(` +metadata: + generateName: volumes-pvc-tmpl-ref- +spec: + entrypoint: main + templates: + - name: main + dag: + tasks: + - name: volume-ref + templateRef: + name: volumes-pvc-wftmpl + template: volumes-pvc-example`). + When(). + CreateWorkflowTemplates(). + SubmitWorkflow(). + WaitForWorkflow(fixtures.ToBeSucceeded). // template ref volume claim template should also be succeeded + Then(). + ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { + // pvc should be deleted after the workflow completes + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + defer cancel() + ticker := time.NewTicker(time.Second) + defer ticker.Stop() + for { + select { + case <-ctx.Done(): + t.Error("timeout waiting for PVC to be deleted") + t.FailNow() + case <-ticker.C: + list, err := s.KubeClient.CoreV1().PersistentVolumeClaims(fixtures.Namespace).List(context.Background(), metav1.ListOptions{}) + require.NoError(t, err) + if len(list.Items) == 0 { + return + } + } + } + }) +} + func (s *FunctionalSuite) TestEventOnNodeFail() { // Test whether an WorkflowFailed event (with appropriate message) is emitted in case of node failure var uid types.UID diff --git a/test/e2e/testdata/workflow-templates/volume-claim-workflowtemplate.yaml b/test/e2e/testdata/workflow-templates/volume-claim-workflowtemplate.yaml new file mode 100644 index 000000000000..ac0717494595 --- /dev/null +++ b/test/e2e/testdata/workflow-templates/volume-claim-workflowtemplate.yaml @@ -0,0 +1,40 @@ +apiVersion: argoproj.io/v1alpha1 +kind: WorkflowTemplate +metadata: + name: volumes-pvc-wftmpl +spec: + entrypoint: volumes-pvc-example + volumeClaimTemplates: + - metadata: + name: workdir + spec: + accessModes: [ "ReadWriteOnce" ] + resources: + requests: + storage: 64Mi + + templates: + - name: volumes-pvc-example + steps: + - - name: generate + template: whalesay + - - name: print + template: print-message + + - name: whalesay + container: + image: busybox + command: [sh, -c] + args: ["echo generating message in volume; cowsay hello world | tee /mnt/vol/hello_world.txt"] + volumeMounts: + - name: workdir + mountPath: /mnt/vol + + - name: print-message + container: + image: busybox + command: [sh, -c] + args: ["echo getting message from volume; find /mnt/vol; cat /mnt/vol/hello_world.txt"] + volumeMounts: + - name: workdir + mountPath: /mnt/vol \ No newline at end of file diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index 46e8c4388e5e..e58f5a17768b 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -1934,6 +1934,27 @@ func (woc *wfOperationCtx) executeTemplate(ctx context.Context, nodeName string, woc.updated = true } + vols := make([]apiv1.PersistentVolumeClaim, 0) + for _, vol := range resolvedTmpl.VolumeClaimTemplates { + existed := false + for _, existedVol := range woc.execWf.Spec.VolumeClaimTemplates { + if existedVol.Name == vol.Name { + existed = true + break + } + } + if !existed { + vols = append(vols, vol) + } + } + if len(vols) > 0 { + woc.execWf.Spec.VolumeClaimTemplates = append(woc.execWf.Spec.VolumeClaimTemplates, vols...) + if woc.createPVCs(ctx) != nil { + return woc.initializeNodeOrMarkError(node, nodeName, templateScope, orgTmpl, opts.boundaryID, opts.nodeFlag, err), err + } + woc.updated = true + } + localParams := make(map[string]string) // Inject the pod name. If the pod has a retry strategy, the pod name will be changed and will be injected when it // is determined