diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json
index 8b1612a05062..e6280eeb72f9 100644
--- a/api/openapi-spec/swagger.json
+++ b/api/openapi-spec/swagger.json
@@ -13,15 +13,10 @@
"io.argoproj.common.Backoff": {
"description": "Backoff for an operation",
"type": "object",
- "required": [
- "duration",
- "factor"
- ],
"properties": {
"duration": {
- "description": "Duration is the duration in nanoseconds",
- "type": "integer",
- "format": "int64"
+ "description": "The initial duration in nanoseconds or strings like \"1s\", \"3m\"",
+ "$ref": "#/definitions/io.argoproj.common.Int64OrString"
},
"factor": {
"description": "Duration is multiplied by factor each iteration",
@@ -82,6 +77,10 @@
}
}
},
+ "io.argoproj.common.Int64OrString": {
+ "type": "string",
+ "format": "int64-or-string"
+ },
"io.argoproj.common.Metadata": {
"description": "Metadata holds the annotations and labels of an event source pod",
"type": "object",
@@ -198,11 +197,6 @@
"io.argoproj.common.TLSConfig": {
"description": "TLSConfig refers to TLS configuration for a client.",
"type": "object",
- "required": [
- "caCertPath",
- "clientCertPath",
- "clientKeyPath"
- ],
"properties": {
"caCertPath": {
"description": "DeprecatedCACertPath refers the file path that contains the CA cert. Deprecated: use CACertSecret instead",
@@ -3085,6 +3079,10 @@
"description": "Policy to configure backoff and execution criteria for the trigger",
"$ref": "#/definitions/io.argoproj.sensor.v1alpha1.TriggerPolicy"
},
+ "retryStrategy": {
+ "description": "Retry strategy, defaults to no retry",
+ "$ref": "#/definitions/io.argoproj.common.Backoff"
+ },
"template": {
"description": "Template describes the trigger specification.",
"$ref": "#/definitions/io.argoproj.sensor.v1alpha1.TriggerTemplate"
diff --git a/api/sensor.html b/api/sensor.html
index 0e20673dd6d7..a0cabcbdfd82 100644
--- a/api/sensor.html
+++ b/api/sensor.html
@@ -2368,9 +2368,22 @@
Trigger
+(Optional)
Policy to configure backoff and execution criteria for the trigger
|
+
+
+retryStrategy
+
+github.com/argoproj/argo-events/pkg/apis/common.Backoff
+
+ |
+
+(Optional)
+ Retry strategy, defaults to no retry
+ |
+
TriggerParameter
diff --git a/api/sensor.md b/api/sensor.md
index 7e1ffff1db3a..3595669f53b4 100644
--- a/api/sensor.md
+++ b/api/sensor.md
@@ -2422,11 +2422,24 @@ definition
TriggerPolicy
+(Optional)
Policy to configure backoff and execution criteria for the trigger
|
+
+
+retryStrategy
+github.com/argoproj/argo-events/pkg/apis/common.Backoff
+ |
+
+(Optional)
+
+Retry strategy, defaults to no retry
+
+ |
+
diff --git a/common/retry.go b/common/retry.go
index c69250d7fbb5..cd1e0f66832e 100644
--- a/common/retry.go
+++ b/common/retry.go
@@ -19,19 +19,25 @@ package common
import (
"time"
+ "github.com/pkg/errors"
apierr "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/util/wait"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
)
-// DefaultRetry is a default retry backoff settings when retrying API calls
-var DefaultRetry = wait.Backoff{
- Steps: 5,
- Duration: 1 * time.Second,
- Factor: 1.0,
- Jitter: 1,
-}
+var (
+ defaultFactor = apicommon.NewAmount("1.0")
+ defaultJitter = apicommon.NewAmount("1")
+ defaultDuration = apicommon.FromString("5s")
+
+ DefaultBackoff = apicommon.Backoff{
+ Steps: 5,
+ Duration: &defaultDuration,
+ Factor: &defaultFactor,
+ Jitter: &defaultJitter,
+ }
+)
// IsRetryableKubeAPIError returns if the error is a retryable kubernetes error
func IsRetryableKubeAPIError(err error) bool {
@@ -42,38 +48,56 @@ func IsRetryableKubeAPIError(err error) bool {
return true
}
-// GetConnectionBackoff returns a connection backoff option
-func GetConnectionBackoff(backoff *apicommon.Backoff) *wait.Backoff {
- result := wait.Backoff{
- Duration: DefaultRetry.Duration,
- Factor: DefaultRetry.Factor,
- Jitter: DefaultRetry.Jitter,
- Steps: DefaultRetry.Steps,
+// Convert2WaitBackoff converts to a wait backoff option
+func Convert2WaitBackoff(backoff *apicommon.Backoff) (*wait.Backoff, error) {
+ result := wait.Backoff{}
+
+ if backoff.Duration != nil {
+ result.Duration = time.Duration(backoff.Duration.Int64Value())
+ } else {
+ result.Duration = time.Duration(defaultDuration.Int64Value())
}
- if backoff == nil {
- return &result
+
+ factor := backoff.Factor
+ if factor == nil {
+ factor = &defaultFactor
+ }
+ f, err := factor.Float64()
+ if err != nil {
+ return nil, errors.Wrap(err, "invalid factor")
+ }
+ result.Factor = f
+
+ jitter := backoff.Jitter
+ if jitter == nil {
+ jitter = &defaultJitter
}
- result.Duration = backoff.Duration
- result.Factor, _ = backoff.Factor.Float64()
- if backoff.Jitter != nil {
- result.Jitter, _ = backoff.Jitter.Float64()
+ j, err := jitter.Float64()
+ if err != nil {
+ return nil, errors.Wrap(err, "invalid jitter")
}
- if backoff.Steps != 0 {
+ result.Jitter = j
+
+ if backoff.Steps > 0 {
result.Steps = backoff.GetSteps()
+ } else {
+ result.Steps = int(DefaultBackoff.Steps)
}
- return &result
+ return &result, nil
}
-// Connect is a general connection helper
-func Connect(backoff *wait.Backoff, conn func() error) error {
+func Connect(backoff *apicommon.Backoff, conn func() error) error {
if backoff == nil {
- backoff = &DefaultRetry
+ backoff = &DefaultBackoff
+ }
+ b, err := Convert2WaitBackoff(backoff)
+ if err != nil {
+ return errors.Wrap(err, "invalid backoff configuration")
}
- err := wait.ExponentialBackoff(*backoff, func() (bool, error) {
+ return wait.ExponentialBackoff(*b, func() (bool, error) {
if err := conn(); err != nil {
return false, nil
}
return true, nil
})
- return err
}
diff --git a/eventbus/driver/nats.go b/eventbus/driver/nats.go
index 2718a4865bd3..ce3e6a932219 100644
--- a/eventbus/driver/nats.go
+++ b/eventbus/driver/nats.go
@@ -271,8 +271,9 @@ func (n *natsStreaming) processEventSourceMsg(m *stan.Msg, msgHolder *eventSourc
msgHolder.msgs[depName] = existingMsg
return
} else if m.Timestamp < existingMsg.timestamp {
- // Redelivered old message, ack and return
+ // Re-delivered old message, ack and return
msgHolder.ackAndCache(m, event.ID())
+ log.Infow("Dropping this message becasue later ones also satisfy", "message", m)
return
}
}
diff --git a/eventsources/eventing.go b/eventsources/eventing.go
index 502bea954f0d..e963aa1c9e76 100644
--- a/eventsources/eventing.go
+++ b/eventsources/eventing.go
@@ -13,7 +13,6 @@ import (
"github.com/google/uuid"
"github.com/pkg/errors"
"go.uber.org/zap"
- "k8s.io/apimachinery/pkg/util/wait"
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
@@ -273,7 +272,7 @@ func (e *EventSourceAdaptor) Start(ctx context.Context) error {
logger.Error("failed to get eventbus driver", zap.Error(err))
return err
}
- if err = common.Connect(&common.DefaultRetry, func() error {
+ if err = common.Connect(&common.DefaultBackoff, func() error {
e.eventBusConn, err = driver.Connect()
return err
}); err != nil {
@@ -333,12 +332,16 @@ func (e *EventSourceAdaptor) Start(ctx context.Context) error {
e.metrics.IncRunningServices(s.GetEventSourceName())
defer e.metrics.DecRunningServices(s.GetEventSourceName())
defer wg.Done()
- if err = common.Connect(&wait.Backoff{
+ duration := apicommon.FromString("1s")
+ factor := apicommon.NewAmount("1")
+ jitter := apicommon.NewAmount("30")
+ backoff := apicommon.Backoff{
Steps: 10,
- Duration: 1 * time.Second,
- Factor: 1,
- Jitter: 30,
- }, func() error {
+ Duration: &duration,
+ Factor: &factor,
+ Jitter: &jitter,
+ }
+ if err = common.Connect(&backoff, func() error {
return s.StartListening(cctx, func(data []byte) error {
event := cloudevents.NewEvent()
event.SetID(fmt.Sprintf("%x", uuid.New()))
@@ -358,13 +361,13 @@ func (e *EventSourceAdaptor) Start(ctx context.Context) error {
return errors.New("failed to publish event, eventbus connection closed")
}
if err = driver.Publish(e.eventBusConn, eventBody); err != nil {
- logger.Error("failed to publish an event", zap.Error(err), zap.Any(logging.LabelEventName,
+ logger.Error("failed to publish an event", zap.Error(err), zap.String(logging.LabelEventName,
s.GetEventName()), zap.Any(logging.LabelEventSourceType, s.GetEventSourceType()))
e.metrics.EventSentFailed(s.GetEventSourceName(), s.GetEventName())
return err
}
- logger.Info("succeeded to publish an event", zap.Error(err), zap.Any(logging.LabelEventName,
- s.GetEventName()), zap.Any(logging.LabelEventSourceType, s.GetEventSourceType()))
+ logger.Info("succeeded to publish an event", zap.Error(err), zap.String(logging.LabelEventName,
+ s.GetEventName()), zap.Any(logging.LabelEventSourceType, s.GetEventSourceType()), zap.String("eventID", event.ID()))
e.metrics.EventSent(s.GetEventSourceName(), s.GetEventName())
return nil
})
diff --git a/eventsources/persist/event_persist.go b/eventsources/persist/event_persist.go
index e89849d89aa2..0d2f6ab5d23a 100644
--- a/eventsources/persist/event_persist.go
+++ b/eventsources/persist/event_persist.go
@@ -76,7 +76,7 @@ func (cmp *ConfigMapPersist) Save(event *Event) error {
return errors.Errorf("event object is nil")
}
//Using Connect util func for backoff retry if K8s API returns error
- err := common.Connect(&common.DefaultRetry, func() error {
+ err := common.Connect(&common.DefaultBackoff, func() error {
cm, err := cmp.kubeClient.CoreV1().ConfigMaps(cmp.namespace).Get(cmp.ctx, cmp.name, metav1.GetOptions{})
if err != nil {
if apierr.IsNotFound(err) && cmp.createIfNotExist {
diff --git a/eventsources/sources/amqp/start.go b/eventsources/sources/amqp/start.go
index ef850b680252..9a53d3bebc30 100644
--- a/eventsources/sources/amqp/start.go
+++ b/eventsources/sources/amqp/start.go
@@ -63,9 +63,8 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
defer sources.Recover(el.GetEventName())
amqpEventSource := &el.AMQPEventSource
- backoff := common.GetConnectionBackoff(amqpEventSource.ConnectionBackoff)
var conn *amqplib.Connection
- if err := common.Connect(backoff, func() error {
+ if err := common.Connect(amqpEventSource.ConnectionBackoff, func() error {
if amqpEventSource.TLS != nil {
tlsConfig, err := common.GetTLSConfig(amqpEventSource.TLS)
if err != nil {
diff --git a/eventsources/sources/emitter/start.go b/eventsources/sources/emitter/start.go
index 7eb84f5a775e..ad0581bd27aa 100644
--- a/eventsources/sources/emitter/start.go
+++ b/eventsources/sources/emitter/start.go
@@ -95,7 +95,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
log.Info("creating a client", zap.Any("channelName", emitterEventSource.ChannelName))
client := emitter.NewClient(options...)
- if err := common.Connect(common.GetConnectionBackoff(emitterEventSource.ConnectionBackoff), func() error {
+ if err := common.Connect(emitterEventSource.ConnectionBackoff, func() error {
if err := client.Connect(); err != nil {
return err
}
diff --git a/eventsources/sources/kafka/start.go b/eventsources/sources/kafka/start.go
index 01f9680f5a6e..49c019817f20 100644
--- a/eventsources/sources/kafka/start.go
+++ b/eventsources/sources/kafka/start.go
@@ -157,7 +157,7 @@ func (el *EventListener) partitionConsumer(ctx context.Context, log *zap.Sugared
var consumer sarama.Consumer
log.Info("connecting to Kafka cluster...")
- if err := common.Connect(common.GetConnectionBackoff(kafkaEventSource.ConnectionBackoff), func() error {
+ if err := common.Connect(kafkaEventSource.ConnectionBackoff, func() error {
var err error
config, err := getSaramaConfig(kafkaEventSource, log)
diff --git a/eventsources/sources/mqtt/start.go b/eventsources/sources/mqtt/start.go
index 138c08a73419..c6b4a28a7463 100644
--- a/eventsources/sources/mqtt/start.go
+++ b/eventsources/sources/mqtt/start.go
@@ -106,7 +106,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
var client mqttlib.Client
log.Info("connecting to mqtt broker...")
- if err := common.Connect(common.GetConnectionBackoff(mqttEventSource.ConnectionBackoff), func() error {
+ if err := common.Connect(mqttEventSource.ConnectionBackoff, func() error {
client = mqttlib.NewClient(opts)
if token := client.Connect(); token.Wait() && token.Error() != nil {
return token.Error()
diff --git a/eventsources/sources/nats/start.go b/eventsources/sources/nats/start.go
index 8850aaca8718..06b0dc41152b 100644
--- a/eventsources/sources/nats/start.go
+++ b/eventsources/sources/nats/start.go
@@ -110,7 +110,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
var conn *natslib.Conn
log.Info("connecting to nats cluster...")
- if err := common.Connect(common.GetConnectionBackoff(natsEventSource.ConnectionBackoff), func() error {
+ if err := common.Connect(natsEventSource.ConnectionBackoff, func() error {
var err error
if conn, err = natslib.Connect(natsEventSource.URL, opt...); err != nil {
return err
diff --git a/eventsources/sources/nsq/start.go b/eventsources/sources/nsq/start.go
index 2d510c4af5e7..eccdeac451a7 100644
--- a/eventsources/sources/nsq/start.go
+++ b/eventsources/sources/nsq/start.go
@@ -84,7 +84,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
config.TlsV1 = true
}
- if err := common.Connect(common.GetConnectionBackoff(nsqEventSource.ConnectionBackoff), func() error {
+ if err := common.Connect(nsqEventSource.ConnectionBackoff, func() error {
var err error
if consumer, err = nsq.NewConsumer(nsqEventSource.Topic, nsqEventSource.Channel, config); err != nil {
return err
@@ -100,8 +100,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
consumer.AddHandler(&messageHandler{dispatch: dispatch, logger: log, isJSON: nsqEventSource.JSONBody, metadata: nsqEventSource.Metadata})
- err := consumer.ConnectToNSQLookupd(nsqEventSource.HostAddress)
- if err != nil {
+ if err := consumer.ConnectToNSQLookupd(nsqEventSource.HostAddress); err != nil {
return errors.Wrapf(err, "lookup failed for host %s for event source %s", nsqEventSource.HostAddress, el.GetEventName())
}
diff --git a/eventsources/sources/pulsar/start.go b/eventsources/sources/pulsar/start.go
index 801ee1bd5e87..2aaff278d961 100644
--- a/eventsources/sources/pulsar/start.go
+++ b/eventsources/sources/pulsar/start.go
@@ -120,7 +120,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
var client pulsar.Client
- if err := common.Connect(common.GetConnectionBackoff(pulsarEventSource.ConnectionBackoff), func() error {
+ if err := common.Connect(pulsarEventSource.ConnectionBackoff, func() error {
var err error
if client, err = pulsar.NewClient(clientOpt); err != nil {
return err
diff --git a/examples/event-sources/amqp.yaml b/examples/event-sources/amqp.yaml
index 9464ea53b9cb..6aadaf19b5c4 100644
--- a/examples/event-sources/amqp.yaml
+++ b/examples/event-sources/amqp.yaml
@@ -19,8 +19,8 @@ spec:
# optional backoff time for connection retries.
# if not provided, default connection backoff time will be used.
connectionBackoff:
- # duration in nanoseconds. following value is 10 seconds
- duration: 10000000000
+ # duration in nanoseconds, or strings like "1s", "1m". following value is 10 seconds
+ duration: 10s
# how many backoffs
steps: 5
# factor to increase on each step.
@@ -71,8 +71,8 @@ spec:
# # optional backoff time for connection retries.
# # if not provided, default connection backoff time will be used.
# connectionBackoff:
-# # duration in nanoseconds. following value is 10 seconds
-# duration: 10000000000
+# # duration in nanoseconds, or strings like "1s". following value is 10 seconds
+# duration: 10s
# # how many backoffs
# steps: 5
# # factor to increase on each step.
diff --git a/examples/event-sources/emitter.yaml b/examples/event-sources/emitter.yaml
index d89ccbf8c3cc..18614321ddfb 100644
--- a/examples/event-sources/emitter.yaml
+++ b/examples/event-sources/emitter.yaml
@@ -17,8 +17,8 @@ spec:
# optional backoff time for connection retries.
# if not provided, default connection backoff time will be used.
connectionBackoff:
- # duration in nanoseconds. following value is 10 seconds.
- duration: 10000000000
+ # duration in nanoseconds, or strings like "4s", "1m". following value is 10 seconds.
+ duration: 10s
# how many times you want to apply backoff.
steps: 5
# factor to increase on each step.
diff --git a/examples/event-sources/kafka.yaml b/examples/event-sources/kafka.yaml
index a9d5f7efb8cd..8508a20a2dcb 100644
--- a/examples/event-sources/kafka.yaml
+++ b/examples/event-sources/kafka.yaml
@@ -17,8 +17,8 @@ spec:
# optional backoff time for connection retries.
# if not provided, default connection backoff time will be used.
connectionBackoff:
- # duration in nanoseconds. following value is 10 seconds
- duration: 10000000000
+ # duration in nanoseconds, or strings like "3s", "2m". following value is 10 seconds
+ duration: 10s
# how many backoffs
steps: 5
# factor to increase on each step.
diff --git a/examples/event-sources/mqtt.yaml b/examples/event-sources/mqtt.yaml
index 8a6fa89e17e9..464f1e5b972c 100644
--- a/examples/event-sources/mqtt.yaml
+++ b/examples/event-sources/mqtt.yaml
@@ -17,8 +17,8 @@ spec:
# optional backoff time for connection retries.
# if not provided, default connection backoff time will be used.
connectionBackoff:
- # duration in nanoseconds. following value is 10 seconds
- duration: 10000000000
+ # duration in nanoseconds, or strings like "2s". following value is 10 seconds
+ duration: 10s
# how many backoffs
steps: 5
# factor to increase on each step.
diff --git a/examples/event-sources/nats.yaml b/examples/event-sources/nats.yaml
index 62efaee02ec5..50ce10ccd92c 100644
--- a/examples/event-sources/nats.yaml
+++ b/examples/event-sources/nats.yaml
@@ -15,8 +15,8 @@ spec:
# optional backoff time for connection retries.
# if not provided, default connection backoff time will be used.
connectionBackoff:
- # duration in nanoseconds. following value is 10 seconds
- duration: 10000000000
+ # duration in nanoseconds, or strings like "4s", "1m". following value is 10 seconds
+ duration: 10s
# how many backoffs
steps: 5
# factor to increase on each step.
diff --git a/examples/event-sources/nsq.yaml b/examples/event-sources/nsq.yaml
index 8e27389e30c6..6442d64ba353 100644
--- a/examples/event-sources/nsq.yaml
+++ b/examples/event-sources/nsq.yaml
@@ -17,8 +17,8 @@ spec:
# optional backoff time for connection retries.
# if not provided, default connection backoff time will be used.
connectionBackoff:
- # duration in nanoseconds. following value is 10 seconds.
- duration: 10000000000
+ # duration in nanoseconds, or strings like "2s", "1m". following value is 10 seconds.
+ duration: 10s
# how many times you want to apply backoff.
steps: 5
# factor to increase on each step.
diff --git a/examples/sensors/calendar.yaml b/examples/sensors/calendar.yaml
index 3abc6eb98c40..f13eaedac494 100644
--- a/examples/sensors/calendar.yaml
+++ b/examples/sensors/calendar.yaml
@@ -43,3 +43,5 @@ spec:
- src:
dependencyName: test-dep
dest: spec.arguments.parameters.0.value
+ retryStrategy:
+ steps: 3
diff --git a/examples/sensors/file.yaml b/examples/sensors/file.yaml
index 7956a22e6893..045f2a6c2bbc 100644
--- a/examples/sensors/file.yaml
+++ b/examples/sensors/file.yaml
@@ -38,3 +38,5 @@ spec:
- src:
dependencyName: test-dep
dest: spec.templates.0.container.args.0
+ retryStrategy:
+ steps: 3
diff --git a/examples/sensors/github.yaml b/examples/sensors/github.yaml
index 60f24018e5f7..a68ba84da6b7 100644
--- a/examples/sensors/github.yaml
+++ b/examples/sensors/github.yaml
@@ -43,3 +43,5 @@ spec:
- src:
dependencyName: test-dep
dest: spec.arguments.parameters.0.value
+ retryStrategy:
+ steps: 3
diff --git a/examples/sensors/http-trigger.yaml b/examples/sensors/http-trigger.yaml
index 0830f2939ffe..797e16e0944a 100644
--- a/examples/sensors/http-trigger.yaml
+++ b/examples/sensors/http-trigger.yaml
@@ -22,3 +22,6 @@ spec:
contextKey: type
dest: type
method: POST
+ retryStrategy:
+ steps: 3
+ duration: 3s
diff --git a/examples/sensors/minio.yaml b/examples/sensors/minio.yaml
index 6ccfd49e6438..bb7c7bf545c6 100644
--- a/examples/sensors/minio.yaml
+++ b/examples/sensors/minio.yaml
@@ -39,3 +39,5 @@ spec:
dependencyName: test-dep
dataKey: notification.0.s3.object.key
dest: spec.templates.0.container.args.0
+ retryStrategy:
+ steps: 3
diff --git a/examples/sensors/resource.yaml b/examples/sensors/resource.yaml
index a85fa20bc92c..e430110716a3 100644
--- a/examples/sensors/resource.yaml
+++ b/examples/sensors/resource.yaml
@@ -45,3 +45,5 @@ spec:
- src:
dependencyName: test-dep
dest: spec.arguments.parameters.0.value
+ retryStrategy:
+ steps: 3
diff --git a/examples/sensors/trigger-with-policy.yaml b/examples/sensors/trigger-with-policy.yaml
index 536856bd60cd..6e648c58b286 100644
--- a/examples/sensors/trigger-with-policy.yaml
+++ b/examples/sensors/trigger-with-policy.yaml
@@ -25,8 +25,8 @@ spec:
k8s:
# Backoff before checking the resource labels
backoff:
- # Duration is the duration in nanoseconds
- duration: 1000000000 # 1 second
+ # Duration is the duration in nanoseconds, or strings like "3s", "2m"
+ duration: 1s # 1 second
# Duration is multiplied by factor each iteration
factor: 2
# The amount of jitter applied each iteration
diff --git a/examples/sensors/url-sensor.yaml b/examples/sensors/url-sensor.yaml
index f32cc8fa396d..47000521c4c3 100644
--- a/examples/sensors/url-sensor.yaml
+++ b/examples/sensors/url-sensor.yaml
@@ -21,3 +21,5 @@ spec:
url:
path: "https://raw.githubusercontent.com/argoproj/argo/master/examples/hello-world.yaml"
verifycert: false
+ retryStrategy:
+ steps: 3
diff --git a/pkg/apis/common/common.go b/pkg/apis/common/common.go
index 448b85e24878..b4f47bc1be96 100644
--- a/pkg/apis/common/common.go
+++ b/pkg/apis/common/common.go
@@ -17,8 +17,6 @@ limitations under the License.
package common
import (
- "time"
-
corev1 "k8s.io/api/core/v1"
)
@@ -103,24 +101,28 @@ type TLSConfig struct {
// DeprecatedCACertPath refers the file path that contains the CA cert.
// Deprecated: use CACertSecret instead
- DeprecatedCACertPath string `json:"caCertPath" protobuf:"bytes,4,opt,name=caCertPath"`
+ DeprecatedCACertPath string `json:"caCertPath,omitempty" protobuf:"bytes,4,opt,name=caCertPath"`
// DeprecatedClientCertPath refers the file path that contains client cert.
// Deprecated: use ClientCertSecret instead
- DeprecatedClientCertPath string `json:"clientCertPath" protobuf:"bytes,5,opt,name=clientCertPath"`
+ DeprecatedClientCertPath string `json:"clientCertPath,omitempty" protobuf:"bytes,5,opt,name=clientCertPath"`
// DeprecatedClientKeyPath refers the file path that contains client key.
// Deprecated: use ClientKeySecret instead
- DeprecatedClientKeyPath string `json:"clientKeyPath" protobuf:"bytes,6,opt,name=clientKeyPath"`
+ DeprecatedClientKeyPath string `json:"clientKeyPath,omitempty" protobuf:"bytes,6,opt,name=clientKeyPath"`
}
// Backoff for an operation
type Backoff struct {
- // Duration is the duration in nanoseconds
- Duration time.Duration `json:"duration" protobuf:"varint,1,opt,name=duration,casttype=time.Duration"`
+ // The initial duration in nanoseconds or strings like "1s", "3m"
+ // +optional
+ Duration *Int64OrString `json:"duration,omitempty" protobuf:"varint,1,opt,name=duration"`
// Duration is multiplied by factor each iteration
- Factor Amount `json:"factor" protobuf:"bytes,2,opt,name=factor"`
+ // +optional
+ Factor *Amount `json:"factor,omitempty" protobuf:"bytes,2,opt,name=factor"`
// The amount of jitter applied each iteration
+ // +optional
Jitter *Amount `json:"jitter,omitempty" protobuf:"bytes,3,opt,name=jitter"`
// Exit with error after this many steps
+ // +optional
Steps int32 `json:"steps,omitempty" protobuf:"varint,4,opt,name=steps"`
}
diff --git a/pkg/apis/common/deepcopy_generated.go b/pkg/apis/common/deepcopy_generated.go
index d5a4fcf74cf6..f6793768999e 100644
--- a/pkg/apis/common/deepcopy_generated.go
+++ b/pkg/apis/common/deepcopy_generated.go
@@ -48,7 +48,16 @@ func (in *Amount) DeepCopy() *Amount {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Backoff) DeepCopyInto(out *Backoff) {
*out = *in
- in.Factor.DeepCopyInto(&out.Factor)
+ if in.Duration != nil {
+ in, out := &in.Duration, &out.Duration
+ *out = new(Int64OrString)
+ **out = **in
+ }
+ if in.Factor != nil {
+ in, out := &in.Factor, &out.Factor
+ *out = new(Amount)
+ (*in).DeepCopyInto(*out)
+ }
if in.Jitter != nil {
in, out := &in.Jitter, &out.Jitter
*out = new(Amount)
@@ -110,6 +119,22 @@ func (in *Condition) DeepCopy() *Condition {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Int64OrString) DeepCopyInto(out *Int64OrString) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Int64OrString.
+func (in *Int64OrString) DeepCopy() *Int64OrString {
+ if in == nil {
+ return nil
+ }
+ out := new(Int64OrString)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Metadata) DeepCopyInto(out *Metadata) {
*out = *in
diff --git a/pkg/apis/common/generated.pb.go b/pkg/apis/common/generated.pb.go
index a5cc3d2eaf6f..8ef9b12f4e8c 100644
--- a/pkg/apis/common/generated.pb.go
+++ b/pkg/apis/common/generated.pb.go
@@ -26,7 +26,6 @@ import (
math_bits "math/bits"
reflect "reflect"
strings "strings"
- time "time"
proto "github.com/gogo/protobuf/proto"
github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
@@ -38,7 +37,6 @@ import (
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
-var _ = time.Kitchen
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
@@ -158,10 +156,38 @@ func (m *Condition) XXX_DiscardUnknown() {
var xxx_messageInfo_Condition proto.InternalMessageInfo
+func (m *Int64OrString) Reset() { *m = Int64OrString{} }
+func (*Int64OrString) ProtoMessage() {}
+func (*Int64OrString) Descriptor() ([]byte, []int) {
+ return fileDescriptor_02aae6165a434fa7, []int{4}
+}
+func (m *Int64OrString) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *Int64OrString) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+}
+func (m *Int64OrString) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Int64OrString.Merge(m, src)
+}
+func (m *Int64OrString) XXX_Size() int {
+ return m.Size()
+}
+func (m *Int64OrString) XXX_DiscardUnknown() {
+ xxx_messageInfo_Int64OrString.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Int64OrString proto.InternalMessageInfo
+
func (m *Metadata) Reset() { *m = Metadata{} }
func (*Metadata) ProtoMessage() {}
func (*Metadata) Descriptor() ([]byte, []int) {
- return fileDescriptor_02aae6165a434fa7, []int{4}
+ return fileDescriptor_02aae6165a434fa7, []int{5}
}
func (m *Metadata) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -189,7 +215,7 @@ var xxx_messageInfo_Metadata proto.InternalMessageInfo
func (m *Resource) Reset() { *m = Resource{} }
func (*Resource) ProtoMessage() {}
func (*Resource) Descriptor() ([]byte, []int) {
- return fileDescriptor_02aae6165a434fa7, []int{5}
+ return fileDescriptor_02aae6165a434fa7, []int{6}
}
func (m *Resource) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -217,7 +243,7 @@ var xxx_messageInfo_Resource proto.InternalMessageInfo
func (m *S3Artifact) Reset() { *m = S3Artifact{} }
func (*S3Artifact) ProtoMessage() {}
func (*S3Artifact) Descriptor() ([]byte, []int) {
- return fileDescriptor_02aae6165a434fa7, []int{6}
+ return fileDescriptor_02aae6165a434fa7, []int{7}
}
func (m *S3Artifact) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -245,7 +271,7 @@ var xxx_messageInfo_S3Artifact proto.InternalMessageInfo
func (m *S3Bucket) Reset() { *m = S3Bucket{} }
func (*S3Bucket) ProtoMessage() {}
func (*S3Bucket) Descriptor() ([]byte, []int) {
- return fileDescriptor_02aae6165a434fa7, []int{7}
+ return fileDescriptor_02aae6165a434fa7, []int{8}
}
func (m *S3Bucket) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -273,7 +299,7 @@ var xxx_messageInfo_S3Bucket proto.InternalMessageInfo
func (m *S3Filter) Reset() { *m = S3Filter{} }
func (*S3Filter) ProtoMessage() {}
func (*S3Filter) Descriptor() ([]byte, []int) {
- return fileDescriptor_02aae6165a434fa7, []int{8}
+ return fileDescriptor_02aae6165a434fa7, []int{9}
}
func (m *S3Filter) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -301,7 +327,7 @@ var xxx_messageInfo_S3Filter proto.InternalMessageInfo
func (m *Status) Reset() { *m = Status{} }
func (*Status) ProtoMessage() {}
func (*Status) Descriptor() ([]byte, []int) {
- return fileDescriptor_02aae6165a434fa7, []int{9}
+ return fileDescriptor_02aae6165a434fa7, []int{10}
}
func (m *Status) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -329,7 +355,7 @@ var xxx_messageInfo_Status proto.InternalMessageInfo
func (m *TLSConfig) Reset() { *m = TLSConfig{} }
func (*TLSConfig) ProtoMessage() {}
func (*TLSConfig) Descriptor() ([]byte, []int) {
- return fileDescriptor_02aae6165a434fa7, []int{10}
+ return fileDescriptor_02aae6165a434fa7, []int{11}
}
func (m *TLSConfig) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -359,6 +385,7 @@ func init() {
proto.RegisterType((*Backoff)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.common.Backoff")
proto.RegisterType((*BasicAuth)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.common.BasicAuth")
proto.RegisterType((*Condition)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.common.Condition")
+ proto.RegisterType((*Int64OrString)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.common.Int64OrString")
proto.RegisterType((*Metadata)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.common.Metadata")
proto.RegisterMapType((map[string]string)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.common.Metadata.AnnotationsEntry")
proto.RegisterMapType((map[string]string)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.common.Metadata.LabelsEntry")
@@ -376,81 +403,84 @@ func init() {
}
var fileDescriptor_02aae6165a434fa7 = []byte{
- // 1174 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x96, 0xdd, 0x6f, 0x1b, 0x45,
- 0x10, 0xc0, 0x73, 0x76, 0x7c, 0xb1, 0xc7, 0x49, 0x63, 0x6d, 0x23, 0x61, 0x59, 0xd4, 0x36, 0x46,
- 0xa0, 0x14, 0xda, 0xb3, 0x92, 0x56, 0xa2, 0x2d, 0x5f, 0xf2, 0xb9, 0xa9, 0x68, 0x93, 0x42, 0xb4,
- 0x0e, 0x3c, 0xb4, 0x42, 0xd5, 0xe6, 0xbc, 0x76, 0xae, 0xf6, 0x7d, 0xe8, 0x76, 0x2f, 0xad, 0xdf,
- 0xe0, 0x85, 0x67, 0xfe, 0x0f, 0xc4, 0xff, 0x91, 0xc7, 0xbc, 0xd1, 0x27, 0x8b, 0x98, 0x7f, 0x02,
- 0xf5, 0x09, 0xed, 0xc7, 0x9d, 0x3f, 0x1a, 0x09, 0x1c, 0xde, 0xd6, 0xb3, 0x33, 0xbf, 0x99, 0x9b,
- 0x99, 0x9d, 0x31, 0x7c, 0xdd, 0x77, 0xf9, 0x49, 0x7c, 0x6c, 0x39, 0x81, 0xd7, 0x24, 0x51, 0x3f,
- 0x08, 0xa3, 0xe0, 0xa5, 0x3c, 0xdc, 0xa6, 0xa7, 0xd4, 0xe7, 0xac, 0x19, 0x0e, 0xfa, 0x4d, 0x12,
- 0xba, 0xac, 0xe9, 0x04, 0x9e, 0x17, 0xf8, 0xcd, 0x3e, 0xf5, 0x69, 0x44, 0x38, 0xed, 0x5a, 0x61,
- 0x14, 0xf0, 0x00, 0x35, 0xa7, 0x00, 0x2b, 0x01, 0xc8, 0xc3, 0x0b, 0x05, 0xb0, 0xc2, 0x41, 0xdf,
- 0x12, 0x00, 0x4b, 0x01, 0x2a, 0xb7, 0x67, 0x3c, 0xf6, 0x83, 0x7e, 0xd0, 0x94, 0x9c, 0xe3, 0xb8,
- 0x27, 0x7f, 0xc9, 0x1f, 0xf2, 0xa4, 0xf8, 0x95, 0xc6, 0xe0, 0x1e, 0xb3, 0xdc, 0x40, 0xc4, 0xd0,
- 0x74, 0x82, 0x88, 0x36, 0x4f, 0x77, 0x16, 0x63, 0xa8, 0xdc, 0x9d, 0xea, 0x78, 0xc4, 0x39, 0x71,
- 0x7d, 0x1a, 0x8d, 0xa6, 0x81, 0x7b, 0x94, 0x93, 0x4b, 0xac, 0x1a, 0x37, 0xc1, 0x6c, 0x79, 0x41,
- 0xec, 0x73, 0x54, 0x83, 0xdc, 0x29, 0x19, 0xc6, 0xb4, 0x6c, 0xd4, 0x8d, 0xed, 0x75, 0xbb, 0x30,
- 0x19, 0xd7, 0x72, 0x3f, 0x08, 0x01, 0x56, 0xf2, 0xc6, 0x6f, 0x19, 0x58, 0xb3, 0x89, 0x33, 0x08,
- 0x7a, 0x3d, 0xf4, 0x25, 0xe4, 0xbb, 0x71, 0x44, 0xb8, 0x1b, 0xf8, 0x52, 0x3f, 0x6b, 0x7f, 0x70,
- 0x36, 0xae, 0xad, 0x4c, 0xc6, 0xb5, 0xfc, 0x43, 0x2d, 0x7f, 0x3b, 0xae, 0x6d, 0x70, 0xd7, 0xa3,
- 0x56, 0x22, 0xc0, 0xa9, 0x09, 0x7a, 0x01, 0x66, 0x8f, 0x38, 0x3c, 0x88, 0xca, 0x99, 0xba, 0xb1,
- 0x5d, 0xdc, 0xfd, 0xcc, 0x5a, 0x32, 0x81, 0x96, 0x0a, 0xda, 0xbe, 0xa6, 0xbd, 0x9a, 0x8f, 0x24,
- 0x0e, 0x6b, 0x2c, 0x7a, 0x0e, 0xe6, 0x4b, 0x97, 0x73, 0x1a, 0x95, 0xb3, 0xff, 0xcf, 0x01, 0x08,
- 0xf8, 0x13, 0x89, 0xc2, 0x1a, 0x89, 0x3e, 0x84, 0x1c, 0xe3, 0x34, 0x64, 0xe5, 0xd5, 0xba, 0xb1,
- 0x9d, 0xb3, 0x37, 0x74, 0x0c, 0xb9, 0x8e, 0x10, 0x62, 0x75, 0xd7, 0xf8, 0xdd, 0x80, 0x82, 0x4d,
- 0x98, 0xeb, 0xb4, 0x62, 0x7e, 0x82, 0xbe, 0x83, 0x7c, 0xcc, 0x68, 0xe4, 0x13, 0x4f, 0xe5, 0xb7,
- 0xb8, 0xfb, 0x91, 0xa5, 0xea, 0x25, 0x9c, 0x5a, 0xa2, 0xa6, 0xd6, 0xe9, 0x8e, 0xd5, 0xa1, 0x4e,
- 0x44, 0xf9, 0x3e, 0x1d, 0x75, 0xe8, 0x90, 0x8a, 0x0f, 0xb1, 0xd7, 0x45, 0x4a, 0xbf, 0xd7, 0xa6,
- 0x38, 0x85, 0x08, 0x60, 0x48, 0x18, 0x7b, 0x15, 0x44, 0x5d, 0x9d, 0xc3, 0x65, 0x80, 0x87, 0xda,
- 0x14, 0xa7, 0x90, 0xc6, 0x1f, 0x19, 0x28, 0xb4, 0x03, 0xbf, 0xeb, 0xca, 0x02, 0xed, 0xc0, 0x2a,
- 0x1f, 0x85, 0x2a, 0xd6, 0x82, 0x7d, 0x43, 0x7f, 0xe1, 0xea, 0xd1, 0x28, 0xa4, 0xa2, 0xae, 0xa9,
- 0xa2, 0x10, 0x60, 0xa9, 0x8a, 0x0e, 0xc0, 0x64, 0x9c, 0xf0, 0x98, 0xc9, 0x78, 0x0a, 0xf6, 0xdd,
- 0xa4, 0x34, 0x1d, 0x29, 0x7d, 0x3b, 0xae, 0x5d, 0xd2, 0xc5, 0x56, 0x4a, 0x52, 0x5a, 0x58, 0x33,
- 0xd0, 0x29, 0xa0, 0x21, 0x61, 0xfc, 0x28, 0x22, 0x3e, 0x53, 0x9e, 0x5c, 0x8f, 0xea, 0x62, 0x7e,
- 0x32, 0xf3, 0xa5, 0x69, 0xab, 0x4f, 0x0b, 0x28, 0x5a, 0x5d, 0x7c, 0xbb, 0xb0, 0xb0, 0x2b, 0x3a,
- 0x0a, 0x74, 0xf0, 0x0e, 0x0d, 0x5f, 0xe2, 0x01, 0x7d, 0x0c, 0x66, 0x44, 0x09, 0x0b, 0x7c, 0x59,
- 0xdc, 0xc2, 0xb4, 0xc1, 0xb0, 0x94, 0x62, 0x7d, 0x8b, 0x6e, 0xc2, 0x9a, 0x47, 0x19, 0x23, 0x7d,
- 0x5a, 0xce, 0x49, 0xc5, 0x4d, 0xad, 0xb8, 0xf6, 0x54, 0x89, 0x71, 0x72, 0xdf, 0xf8, 0x3b, 0x03,
- 0xf9, 0xa7, 0x94, 0x93, 0x2e, 0xe1, 0x04, 0xfd, 0x6c, 0x40, 0x91, 0xf8, 0x7e, 0xc0, 0xe5, 0x43,
- 0x60, 0x65, 0xa3, 0x9e, 0xdd, 0x2e, 0xee, 0x3e, 0x59, 0xba, 0x3d, 0x13, 0xa0, 0xd5, 0x9a, 0xc2,
- 0xf6, 0x7c, 0x1e, 0x8d, 0xec, 0xeb, 0x3a, 0x90, 0xe2, 0xcc, 0x0d, 0x9e, 0xf5, 0x89, 0x3c, 0x30,
- 0x87, 0xe4, 0x98, 0x0e, 0x45, 0xa5, 0x84, 0xf7, 0xbd, 0xab, 0x7b, 0x3f, 0x90, 0x1c, 0xe5, 0x38,
- 0x4d, 0x95, 0x12, 0x62, 0xed, 0xa4, 0xf2, 0x15, 0x94, 0x16, 0x83, 0x44, 0x25, 0xc8, 0x0e, 0xe8,
- 0x48, 0xb5, 0x17, 0x16, 0x47, 0xb4, 0x95, 0x8c, 0x1f, 0xd9, 0x3d, 0x7a, 0xe6, 0x3c, 0xc8, 0xdc,
- 0x33, 0x2a, 0xf7, 0xa1, 0x38, 0xe3, 0x66, 0x19, 0xd3, 0xc6, 0xa7, 0x90, 0xc7, 0x94, 0x05, 0x71,
- 0xe4, 0xd0, 0x7f, 0x9f, 0x6f, 0xe7, 0x39, 0x80, 0xce, 0x9d, 0x56, 0xc4, 0x5d, 0x31, 0x44, 0xd0,
- 0x2d, 0xc8, 0x53, 0xbf, 0x1b, 0x06, 0xae, 0xcf, 0xf5, 0x33, 0x28, 0x25, 0x23, 0x6e, 0x4f, 0xcb,
- 0x71, 0xaa, 0x81, 0x7e, 0x04, 0xf3, 0x38, 0x76, 0x06, 0x94, 0xeb, 0xd7, 0x78, 0x7f, 0xe9, 0x9c,
- 0x76, 0xee, 0xd8, 0x12, 0xa0, 0x46, 0x8e, 0x3a, 0x63, 0x0d, 0x55, 0x6d, 0xd9, 0x17, 0xd3, 0x36,
- 0xbb, 0xd8, 0x96, 0x42, 0x8a, 0xf5, 0xad, 0x08, 0xda, 0xf5, 0x19, 0x75, 0xe2, 0x88, 0xca, 0x06,
- 0xce, 0x4f, 0x83, 0x7e, 0xac, 0xe5, 0x38, 0xd5, 0x40, 0x18, 0x0a, 0xc4, 0x71, 0x28, 0x63, 0xfb,
- 0x74, 0x24, 0xdb, 0xf8, 0x3f, 0x4f, 0x91, 0x8d, 0xc9, 0xb8, 0x56, 0x68, 0x25, 0xb6, 0x78, 0x8a,
- 0x11, 0x4c, 0x96, 0xa8, 0x97, 0xcd, 0xa5, 0x99, 0xa9, 0x18, 0x4f, 0x31, 0xa8, 0x01, 0xa6, 0x4a,
- 0x5a, 0x79, 0xad, 0x9e, 0xdd, 0x2e, 0xa8, 0x0c, 0xed, 0x49, 0x09, 0xd6, 0x37, 0xa2, 0x00, 0x3d,
- 0x77, 0x28, 0x26, 0x7e, 0xfe, 0xca, 0x05, 0x78, 0x24, 0x01, 0x0a, 0xaf, 0xce, 0x58, 0x43, 0xd1,
- 0x2b, 0xc8, 0x7b, 0xba, 0xe9, 0xcb, 0x05, 0xf9, 0x6a, 0x1e, 0x5f, 0xc1, 0x41, 0xd2, 0x5c, 0xe9,
- 0x03, 0x52, 0x2f, 0x27, 0xad, 0x51, 0x22, 0xc6, 0xa9, 0xb3, 0xca, 0xe7, 0xb0, 0x31, 0xa7, 0xbc,
- 0x54, 0xff, 0xef, 0x43, 0x3e, 0x69, 0x2b, 0x74, 0x63, 0xc6, 0xce, 0x2e, 0x6a, 0x8f, 0x59, 0x91,
- 0x69, 0x09, 0xa9, 0xc3, 0xaa, 0xdc, 0x4e, 0x6a, 0x78, 0xaf, 0x27, 0x13, 0xff, 0x5b, 0xb1, 0x76,
- 0xe4, 0x4d, 0xe3, 0x99, 0x80, 0xa9, 0xb4, 0x88, 0x7e, 0x0c, 0x23, 0xda, 0x73, 0x5f, 0x6b, 0x5e,
- 0xda, 0x8f, 0x87, 0x52, 0x8a, 0xf5, 0xad, 0xd0, 0x63, 0x71, 0x4f, 0xe8, 0x65, 0xe6, 0xf5, 0x3a,
- 0x52, 0x8a, 0xf5, 0x6d, 0xe3, 0x35, 0xe8, 0x35, 0x81, 0x7c, 0x00, 0x27, 0xd9, 0x09, 0xc9, 0x78,
- 0x7c, 0xb0, 0x74, 0xaa, 0xd3, 0xb5, 0x62, 0x23, 0xed, 0x11, 0x52, 0x11, 0xc3, 0x33, 0x1e, 0x1a,
- 0xbf, 0xac, 0x42, 0xe1, 0xe8, 0xa0, 0xd3, 0x0e, 0xfc, 0x9e, 0xdb, 0x47, 0xcf, 0x61, 0xdd, 0x21,
- 0x6d, 0x1a, 0x71, 0xd5, 0x87, 0xcb, 0xed, 0xea, 0xd2, 0x64, 0x5c, 0x5b, 0x6f, 0xb7, 0xa6, 0xe6,
- 0x78, 0x0e, 0x86, 0xfa, 0x50, 0x72, 0x86, 0x2e, 0xf5, 0xf9, 0x8c, 0x83, 0xa5, 0x76, 0xf7, 0xd6,
- 0x64, 0x5c, 0x2b, 0xb5, 0x17, 0x10, 0xf8, 0x1d, 0x28, 0xea, 0xc2, 0xa6, 0x92, 0x49, 0x63, 0xe9,
- 0x27, 0xbb, 0x8c, 0x9f, 0xeb, 0x93, 0x71, 0x6d, 0xb3, 0x3d, 0x4f, 0xc0, 0x8b, 0x48, 0xf4, 0x05,
- 0x80, 0xfa, 0xbc, 0x43, 0xc2, 0x4f, 0xf4, 0xba, 0x7c, 0x5f, 0x67, 0x7b, 0xeb, 0x21, 0x0d, 0x23,
- 0xea, 0x88, 0x3f, 0x9a, 0x2a, 0x21, 0x42, 0x07, 0xcf, 0xe8, 0xa3, 0x6f, 0xe0, 0xda, 0x34, 0x6e,
- 0x49, 0x50, 0x7b, 0xb4, 0xae, 0x09, 0xe5, 0x19, 0xc2, 0x9c, 0x1e, 0x5e, 0xb0, 0x43, 0x7b, 0xb0,
- 0x91, 0x86, 0x26, 0x41, 0xa6, 0x04, 0xd5, 0x34, 0xe8, 0xbd, 0x45, 0x90, 0x56, 0xc3, 0xf3, 0x56,
- 0xf6, 0xad, 0xb3, 0x8b, 0xea, 0xca, 0xf9, 0x45, 0x75, 0xe5, 0xcd, 0x45, 0x75, 0xe5, 0xa7, 0x49,
- 0xd5, 0x38, 0x9b, 0x54, 0x8d, 0xf3, 0x49, 0xd5, 0x78, 0x33, 0xa9, 0x1a, 0x7f, 0x4e, 0xaa, 0xc6,
- 0xaf, 0x7f, 0x55, 0x57, 0x9e, 0x99, 0xaa, 0xc1, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x6c,
- 0xf6, 0xcc, 0x33, 0x0c, 0x00, 0x00,
+ // 1224 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4f, 0x8f, 0xd3, 0x46,
+ 0x14, 0xc0, 0xd7, 0x9b, 0x5d, 0x6f, 0x32, 0xd9, 0x40, 0x34, 0xac, 0xd4, 0x28, 0x2a, 0x71, 0xe4,
+ 0xaa, 0xd5, 0xd2, 0x82, 0x23, 0xfe, 0xa8, 0x05, 0x5a, 0x51, 0xc5, 0x61, 0x51, 0x81, 0xa5, 0xa0,
+ 0x09, 0xe5, 0x00, 0xaa, 0xaa, 0x59, 0x67, 0xe2, 0x35, 0x49, 0x6c, 0x6b, 0x66, 0xbc, 0x90, 0x5b,
+ 0x7b, 0xe9, 0xb5, 0xfd, 0x22, 0xfd, 0x1e, 0x1c, 0x51, 0x2f, 0xe5, 0x14, 0x15, 0xf7, 0x4b, 0x54,
+ 0x9c, 0xaa, 0xf9, 0x63, 0xc7, 0x09, 0x48, 0xad, 0x51, 0x6f, 0xce, 0x9b, 0xf7, 0x7e, 0xef, 0xcd,
+ 0x9b, 0xf7, 0x27, 0xe0, 0x6b, 0x3f, 0xe0, 0xc7, 0xc9, 0x91, 0xe3, 0x45, 0xb3, 0x1e, 0xa6, 0x7e,
+ 0x14, 0xd3, 0xe8, 0xa9, 0xfc, 0xb8, 0x40, 0x4e, 0x48, 0xc8, 0x59, 0x2f, 0x9e, 0xf8, 0x3d, 0x1c,
+ 0x07, 0xac, 0xe7, 0x45, 0xb3, 0x59, 0x14, 0xf6, 0x7c, 0x12, 0x12, 0x8a, 0x39, 0x19, 0x39, 0x31,
+ 0x8d, 0x78, 0x04, 0x7b, 0x4b, 0x80, 0x93, 0x01, 0xe4, 0xc7, 0x0f, 0x0a, 0xe0, 0xc4, 0x13, 0xdf,
+ 0x11, 0x00, 0x47, 0x01, 0xda, 0x17, 0x0a, 0x1e, 0xfd, 0xc8, 0x8f, 0x7a, 0x92, 0x73, 0x94, 0x8c,
+ 0xe5, 0x2f, 0xf9, 0x43, 0x7e, 0x29, 0x7e, 0xdb, 0x9e, 0x5c, 0x65, 0x4e, 0x10, 0x89, 0x18, 0x7a,
+ 0x5e, 0x44, 0x49, 0xef, 0xe4, 0xe2, 0x7a, 0x0c, 0xed, 0x2b, 0x4b, 0x9d, 0x19, 0xf6, 0x8e, 0x83,
+ 0x90, 0xd0, 0xf9, 0x32, 0xf0, 0x19, 0xe1, 0xf8, 0x1d, 0x56, 0xf6, 0x39, 0x60, 0xf6, 0x67, 0x51,
+ 0x12, 0x72, 0x68, 0x81, 0xed, 0x13, 0x3c, 0x4d, 0x48, 0xcb, 0xe8, 0x1a, 0xfb, 0xbb, 0x6e, 0x2d,
+ 0x5d, 0x58, 0xdb, 0x8f, 0x84, 0x00, 0x29, 0xb9, 0xfd, 0xfb, 0x26, 0xd8, 0x71, 0xb1, 0x37, 0x89,
+ 0xc6, 0x63, 0x78, 0x0c, 0xaa, 0xa3, 0x84, 0x62, 0x1e, 0x44, 0xa1, 0xd4, 0xaf, 0x5f, 0xba, 0xe1,
+ 0x94, 0xcc, 0x81, 0x73, 0x3b, 0xe4, 0x9f, 0x5f, 0xb9, 0x4f, 0x87, 0x9c, 0x06, 0xa1, 0xef, 0xee,
+ 0xa6, 0x0b, 0xab, 0x7a, 0x53, 0x33, 0x51, 0x4e, 0x87, 0x4f, 0x80, 0x39, 0xc6, 0x1e, 0x8f, 0x68,
+ 0x6b, 0x53, 0xfa, 0xf9, 0xa2, 0xb4, 0x1f, 0x75, 0x3f, 0x17, 0xa4, 0x0b, 0xcb, 0xbc, 0x25, 0x51,
+ 0x48, 0x23, 0x05, 0xfc, 0x69, 0xc0, 0x39, 0xa1, 0xad, 0xca, 0xff, 0x00, 0xbf, 0x23, 0x51, 0x48,
+ 0x23, 0xe1, 0x47, 0x60, 0x9b, 0x71, 0x12, 0xb3, 0xd6, 0x56, 0xd7, 0xd8, 0xdf, 0x76, 0x1b, 0x2f,
+ 0x16, 0xd6, 0x86, 0x48, 0xea, 0x50, 0x08, 0x91, 0x3a, 0xb3, 0x7f, 0x33, 0x40, 0xcd, 0xc5, 0x2c,
+ 0xf0, 0xfa, 0x09, 0x3f, 0x86, 0xf7, 0x41, 0x35, 0x61, 0x84, 0x86, 0x78, 0x46, 0x74, 0x5a, 0x3f,
+ 0x76, 0xd4, 0xb3, 0x0a, 0xa7, 0x8e, 0x78, 0x7a, 0xe7, 0xe4, 0xa2, 0x33, 0x24, 0x1e, 0x25, 0xfc,
+ 0x2e, 0x99, 0x0f, 0xc9, 0x94, 0x88, 0x8b, 0xa8, 0xec, 0x7d, 0xa7, 0x4d, 0x51, 0x0e, 0x11, 0xc0,
+ 0x18, 0x33, 0xf6, 0x2c, 0xa2, 0x23, 0x9d, 0xbf, 0x32, 0xc0, 0x07, 0xda, 0x14, 0xe5, 0x10, 0xfb,
+ 0x8f, 0x4d, 0x50, 0x1b, 0x44, 0xe1, 0x28, 0x90, 0x8f, 0x73, 0x11, 0x6c, 0xf1, 0x79, 0xac, 0x62,
+ 0xad, 0xb9, 0x67, 0xf5, 0x0d, 0xb7, 0x1e, 0xce, 0x63, 0xf2, 0x66, 0x61, 0x35, 0x72, 0x45, 0x21,
+ 0x40, 0x52, 0x15, 0x1e, 0x02, 0x93, 0x71, 0xcc, 0x13, 0x26, 0xe3, 0xa9, 0xb9, 0x57, 0xb4, 0x91,
+ 0x39, 0x94, 0xd2, 0x37, 0x0b, 0xeb, 0x1d, 0xc5, 0xee, 0xe4, 0x24, 0xa5, 0x85, 0x34, 0x03, 0x9e,
+ 0x00, 0x38, 0xc5, 0x8c, 0x3f, 0xa4, 0x38, 0x64, 0xca, 0x53, 0x30, 0x23, 0xfa, 0x31, 0x3f, 0x2d,
+ 0xdc, 0x34, 0xef, 0x88, 0xe5, 0x03, 0x8a, 0x8e, 0x10, 0x77, 0x17, 0x16, 0x6e, 0x5b, 0x47, 0x01,
+ 0x0f, 0xdf, 0xa2, 0xa1, 0x77, 0x78, 0x80, 0x9f, 0x00, 0x93, 0x12, 0xcc, 0xa2, 0x50, 0x3e, 0x6e,
+ 0xcd, 0x3d, 0x95, 0xdd, 0x02, 0x49, 0x29, 0xd2, 0xa7, 0xf0, 0x1c, 0xd8, 0x99, 0x11, 0xc6, 0xb0,
+ 0x4f, 0x5a, 0xdb, 0x52, 0xf1, 0xb4, 0x56, 0xdc, 0xb9, 0xa7, 0xc4, 0x28, 0x3b, 0xb7, 0x7f, 0x31,
+ 0x40, 0x63, 0xa5, 0x25, 0xe0, 0x7e, 0x21, 0xbb, 0x15, 0x77, 0x6f, 0x2d, 0xbb, 0x5b, 0x85, 0xa4,
+ 0x9e, 0x07, 0xd5, 0x40, 0x98, 0x3e, 0xc2, 0x53, 0x99, 0xd6, 0x8a, 0xdb, 0xd4, 0xda, 0xd5, 0xdb,
+ 0x5a, 0x8e, 0x72, 0x0d, 0x11, 0x3c, 0xe3, 0x54, 0xe8, 0x56, 0x56, 0x83, 0x1f, 0x4a, 0x29, 0xd2,
+ 0xa7, 0xf6, 0xdf, 0x9b, 0xa0, 0x7a, 0x8f, 0x70, 0x3c, 0xc2, 0x1c, 0xc3, 0x9f, 0x0c, 0x50, 0xc7,
+ 0x61, 0x18, 0x71, 0xd9, 0x96, 0xac, 0x65, 0x74, 0x2b, 0xfb, 0xf5, 0x4b, 0x77, 0x4a, 0x37, 0x4c,
+ 0x06, 0x74, 0xfa, 0x4b, 0xd8, 0x41, 0xc8, 0xe9, 0xdc, 0x3d, 0xa3, 0xc3, 0xa8, 0x17, 0x4e, 0x50,
+ 0xd1, 0x27, 0x9c, 0x01, 0x73, 0x8a, 0x8f, 0xc8, 0x54, 0xd4, 0x8e, 0xf0, 0x7e, 0xf0, 0xfe, 0xde,
+ 0x0f, 0x25, 0x47, 0x39, 0xce, 0xef, 0xaf, 0x84, 0x48, 0x3b, 0x69, 0xdf, 0x00, 0xcd, 0xf5, 0x20,
+ 0x61, 0x13, 0x54, 0x26, 0x64, 0xae, 0x0a, 0x1e, 0x89, 0x4f, 0xb8, 0x97, 0xcd, 0x4d, 0x59, 0xcf,
+ 0x7a, 0x58, 0x5e, 0xdf, 0xbc, 0x6a, 0xb4, 0xaf, 0x81, 0x7a, 0xc1, 0x4d, 0x19, 0x53, 0xfb, 0x33,
+ 0x50, 0x45, 0x84, 0x45, 0x09, 0xf5, 0xc8, 0xbf, 0x0f, 0xe6, 0x97, 0xdb, 0x00, 0x0c, 0x2f, 0xf7,
+ 0x29, 0x0f, 0xc4, 0x58, 0x13, 0xc5, 0x40, 0xc2, 0x51, 0x1c, 0x05, 0x21, 0xd7, 0x8d, 0x99, 0x17,
+ 0xc3, 0x81, 0x96, 0xa3, 0x5c, 0x03, 0x7e, 0x0f, 0xcc, 0xa3, 0xc4, 0x9b, 0x10, 0xae, 0xe7, 0xc3,
+ 0xb5, 0xd2, 0x39, 0x1d, 0x5e, 0x76, 0x25, 0x40, 0x0d, 0x41, 0xf5, 0x8d, 0x34, 0x54, 0x35, 0x8a,
+ 0x2f, 0xd6, 0x44, 0x65, 0xbd, 0x51, 0x84, 0x14, 0xe9, 0x53, 0x55, 0xc1, 0x8c, 0x78, 0x09, 0x25,
+ 0xb2, 0xa5, 0xaa, 0xc5, 0x0a, 0x56, 0x72, 0x94, 0x6b, 0x40, 0x04, 0x6a, 0xd8, 0xf3, 0x08, 0x63,
+ 0x77, 0xc9, 0x5c, 0x36, 0xd6, 0x7f, 0x9e, 0x6b, 0x8d, 0x74, 0x61, 0xd5, 0xfa, 0x99, 0x2d, 0x5a,
+ 0x62, 0x04, 0x93, 0x65, 0xea, 0x2d, 0xb3, 0x34, 0x33, 0x17, 0xa3, 0x25, 0x06, 0xda, 0xc0, 0x54,
+ 0x49, 0x6b, 0xed, 0x74, 0x2b, 0xfb, 0x35, 0x95, 0xa1, 0x03, 0x29, 0x41, 0xfa, 0x44, 0x3c, 0xc0,
+ 0x38, 0x98, 0x8a, 0x1d, 0x54, 0x7d, 0xef, 0x07, 0xb8, 0x25, 0x01, 0x7a, 0xc5, 0xc9, 0x6f, 0xa4,
+ 0xa1, 0xf0, 0x19, 0xa8, 0xce, 0x74, 0xd1, 0xb7, 0x6a, 0xb2, 0x6b, 0x6e, 0xbf, 0x87, 0x83, 0xac,
+ 0xb8, 0xf2, 0x06, 0x52, 0x9d, 0x93, 0xbf, 0x51, 0x26, 0x46, 0xb9, 0xb3, 0xf6, 0x97, 0xa0, 0xb1,
+ 0xa2, 0x5c, 0xaa, 0xfe, 0xef, 0x82, 0x6a, 0x56, 0x56, 0xf0, 0x6c, 0xc1, 0xce, 0xad, 0x6b, 0x8f,
+ 0x15, 0x91, 0x69, 0x09, 0xe9, 0x82, 0x2d, 0xb9, 0x2f, 0xd5, 0x3a, 0xd9, 0xcd, 0xa6, 0xe4, 0xb7,
+ 0x62, 0x11, 0xca, 0x13, 0xfb, 0xb1, 0x80, 0xa9, 0xb4, 0x88, 0x7a, 0x8c, 0x29, 0x19, 0x07, 0xcf,
+ 0x35, 0x2f, 0xaf, 0xc7, 0x07, 0x52, 0x8a, 0xf4, 0xa9, 0x9c, 0x91, 0xc9, 0x58, 0xe8, 0x6d, 0xae,
+ 0xcd, 0x48, 0x29, 0x45, 0xfa, 0xd4, 0x7e, 0x0e, 0xf4, 0xe2, 0x82, 0x21, 0x00, 0x5e, 0xb6, 0xa5,
+ 0xb2, 0xf1, 0x78, 0xbd, 0x74, 0xaa, 0xf3, 0x45, 0xe7, 0x42, 0xed, 0x11, 0xe4, 0x22, 0x86, 0x0a,
+ 0x1e, 0xec, 0x9f, 0xb7, 0x40, 0xed, 0xe1, 0xe1, 0x70, 0x10, 0x85, 0xe3, 0xc0, 0x87, 0x4f, 0xc0,
+ 0xae, 0x87, 0x07, 0x84, 0x72, 0x55, 0x87, 0xe5, 0xfe, 0x3d, 0x34, 0xd3, 0x85, 0xb5, 0x3b, 0xe8,
+ 0x2f, 0xcd, 0xd1, 0x0a, 0x0c, 0xfa, 0xa0, 0xe9, 0x4d, 0x03, 0x12, 0xf2, 0x82, 0x83, 0x52, 0xff,
+ 0x26, 0xf6, 0xd2, 0x85, 0xd5, 0x1c, 0xac, 0x21, 0xd0, 0x5b, 0x50, 0x38, 0x02, 0xa7, 0x95, 0x4c,
+ 0x1a, 0x4b, 0x3f, 0x95, 0x32, 0x7e, 0xce, 0xa4, 0x0b, 0xeb, 0xf4, 0x60, 0x95, 0x80, 0xd6, 0x91,
+ 0xf0, 0x2b, 0x00, 0xd4, 0xf5, 0x1e, 0x60, 0x7e, 0xac, 0x17, 0xf8, 0x87, 0x3a, 0xdb, 0x7b, 0x37,
+ 0x49, 0x4c, 0x89, 0x27, 0xfe, 0x21, 0xab, 0x84, 0x08, 0x1d, 0x54, 0xd0, 0x87, 0xdf, 0x80, 0x53,
+ 0xcb, 0xb8, 0x25, 0x41, 0x6d, 0xf6, 0xae, 0x26, 0xb4, 0x0a, 0x84, 0x15, 0x3d, 0xb4, 0x66, 0x07,
+ 0x0f, 0x40, 0x23, 0x0f, 0x4d, 0x82, 0x4c, 0x09, 0xb2, 0x34, 0xe8, 0x83, 0x75, 0x90, 0x56, 0x43,
+ 0xab, 0x56, 0xee, 0xf9, 0x17, 0xaf, 0x3b, 0x1b, 0x2f, 0x5f, 0x77, 0x36, 0x5e, 0xbd, 0xee, 0x6c,
+ 0xfc, 0x98, 0x76, 0x8c, 0x17, 0x69, 0xc7, 0x78, 0x99, 0x76, 0x8c, 0x57, 0x69, 0xc7, 0xf8, 0x33,
+ 0xed, 0x18, 0xbf, 0xfe, 0xd5, 0xd9, 0x78, 0x6c, 0xaa, 0x02, 0xfb, 0x27, 0x00, 0x00, 0xff, 0xff,
+ 0x34, 0x4f, 0x76, 0x93, 0xec, 0x0c, 0x00, 0x00,
}
func (m *Amount) Marshal() (dAtA []byte, err error) {
@@ -518,19 +548,30 @@ func (m *Backoff) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x1a
}
- {
- size, err := m.Factor.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
+ if m.Factor != nil {
+ {
+ size, err := m.Factor.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
}
- i -= size
- i = encodeVarintGenerated(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Duration != nil {
+ {
+ size, err := m.Duration.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
}
- i--
- dAtA[i] = 0x12
- i = encodeVarintGenerated(dAtA, i, uint64(m.Duration))
- i--
- dAtA[i] = 0x8
return len(dAtA) - i, nil
}
@@ -634,6 +675,40 @@ func (m *Condition) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
+func (m *Int64OrString) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Int64OrString) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Int64OrString) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ i -= len(m.StrVal)
+ copy(dAtA[i:], m.StrVal)
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.StrVal)))
+ i--
+ dAtA[i] = 0x1a
+ i = encodeVarintGenerated(dAtA, i, uint64(m.Int64Val))
+ i--
+ dAtA[i] = 0x10
+ i = encodeVarintGenerated(dAtA, i, uint64(m.Type))
+ i--
+ dAtA[i] = 0x8
+ return len(dAtA) - i, nil
+}
+
func (m *Metadata) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -1064,9 +1139,14 @@ func (m *Backoff) Size() (n int) {
}
var l int
_ = l
- n += 1 + sovGenerated(uint64(m.Duration))
- l = m.Factor.Size()
- n += 1 + l + sovGenerated(uint64(l))
+ if m.Duration != nil {
+ l = m.Duration.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
+ if m.Factor != nil {
+ l = m.Factor.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
if m.Jitter != nil {
l = m.Jitter.Size()
n += 1 + l + sovGenerated(uint64(l))
@@ -1111,6 +1191,19 @@ func (m *Condition) Size() (n int) {
return n
}
+func (m *Int64OrString) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ n += 1 + sovGenerated(uint64(m.Type))
+ n += 1 + sovGenerated(uint64(m.Int64Val))
+ l = len(m.StrVal)
+ n += 1 + l + sovGenerated(uint64(l))
+ return n
+}
+
func (m *Metadata) Size() (n int) {
if m == nil {
return 0
@@ -1282,8 +1375,8 @@ func (this *Backoff) String() string {
return "nil"
}
s := strings.Join([]string{`&Backoff{`,
- `Duration:` + fmt.Sprintf("%v", this.Duration) + `,`,
- `Factor:` + strings.Replace(strings.Replace(this.Factor.String(), "Amount", "Amount", 1), `&`, ``, 1) + `,`,
+ `Duration:` + strings.Replace(this.Duration.String(), "Int64OrString", "Int64OrString", 1) + `,`,
+ `Factor:` + strings.Replace(this.Factor.String(), "Amount", "Amount", 1) + `,`,
`Jitter:` + strings.Replace(this.Jitter.String(), "Amount", "Amount", 1) + `,`,
`Steps:` + fmt.Sprintf("%v", this.Steps) + `,`,
`}`,
@@ -1315,6 +1408,18 @@ func (this *Condition) String() string {
}, "")
return s
}
+func (this *Int64OrString) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&Int64OrString{`,
+ `Type:` + fmt.Sprintf("%v", this.Type) + `,`,
+ `Int64Val:` + fmt.Sprintf("%v", this.Int64Val) + `,`,
+ `StrVal:` + fmt.Sprintf("%v", this.StrVal) + `,`,
+ `}`,
+ }, "")
+ return s
+}
func (this *Metadata) String() string {
if this == nil {
return "nil"
@@ -1558,10 +1663,10 @@ func (m *Backoff) Unmarshal(dAtA []byte) error {
}
switch fieldNum {
case 1:
- if wireType != 0 {
+ if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Duration", wireType)
}
- m.Duration = 0
+ var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
@@ -1571,11 +1676,28 @@ func (m *Backoff) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- m.Duration |= time.Duration(b&0x7F) << shift
+ 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
+ }
+ if m.Duration == nil {
+ m.Duration = &Int64OrString{}
+ }
+ if err := m.Duration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Factor", wireType)
@@ -1605,6 +1727,9 @@ func (m *Backoff) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
+ if m.Factor == nil {
+ m.Factor = &Amount{}
+ }
if err := m.Factor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
@@ -2018,6 +2143,126 @@ func (m *Condition) Unmarshal(dAtA []byte) error {
}
return nil
}
+func (m *Int64OrString) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Int64OrString: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Int64OrString: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ m.Type = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Type |= Type(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Int64Val", wireType)
+ }
+ m.Int64Val = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Int64Val |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StrVal", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.StrVal = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *Metadata) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
diff --git a/pkg/apis/common/generated.proto b/pkg/apis/common/generated.proto
index 89e114c41944..2a7112f02c38 100644
--- a/pkg/apis/common/generated.proto
+++ b/pkg/apis/common/generated.proto
@@ -33,16 +33,20 @@ message Amount {
// Backoff for an operation
message Backoff {
- // Duration is the duration in nanoseconds
- optional int64 duration = 1;
+ // The initial duration in nanoseconds or strings like "1s", "3m"
+ // +optional
+ optional Int64OrString duration = 1;
// Duration is multiplied by factor each iteration
+ // +optional
optional Amount factor = 2;
// The amount of jitter applied each iteration
+ // +optional
optional Amount jitter = 3;
// Exit with error after this many steps
+ // +optional
optional int32 steps = 4;
}
@@ -79,6 +83,14 @@ message Condition {
optional string message = 5;
}
+message Int64OrString {
+ optional int64 type = 1;
+
+ optional int64 int64Val = 2;
+
+ optional string strVal = 3;
+}
+
// Metadata holds the annotations and labels of an event source pod
message Metadata {
map annotations = 1;
diff --git a/pkg/apis/common/int64str.go b/pkg/apis/common/int64str.go
new file mode 100644
index 000000000000..43f940aa6fdd
--- /dev/null
+++ b/pkg/apis/common/int64str.go
@@ -0,0 +1,84 @@
+package common
+
+import (
+ "encoding/json"
+ "fmt"
+ "strconv"
+)
+
+type Int64OrString struct {
+ Type Type `json:"type" protobuf:"varint,1,opt,name=type,casttype=Type"`
+ Int64Val int64 `json:"int64Val,omitempty" protobuf:"varint,2,opt,name=int64Val"`
+ StrVal string `json:"strVal,omitempty" protobuf:"bytes,3,opt,name=strVal"`
+}
+
+// Type represents the stored type of IntOrString.
+type Type int64
+
+const (
+ Int64 Type = iota // The Int64OrString holds an int64.
+ String // The Int64OrString holds a string.
+)
+
+// FromString creates an Int64OrString object with a string value.
+func FromString(val string) Int64OrString {
+ return Int64OrString{Type: String, StrVal: val}
+}
+
+// FromInt64 creates an Int64OrString object with an int64 value.
+func FromInt64(val int64) Int64OrString {
+ return Int64OrString{Type: Int64, Int64Val: val}
+}
+
+// Parse the given string and try to convert it to an int64 before
+// setting it as a string value.
+func Parse(val string) Int64OrString {
+ i, err := strconv.ParseInt(val, 10, 64)
+ if err != nil {
+ return FromString(val)
+ }
+ return FromInt64(i)
+}
+
+// UnmarshalJSON implements the json.Unmarshaller interface.
+func (int64str *Int64OrString) UnmarshalJSON(value []byte) error {
+ if value[0] == '"' {
+ int64str.Type = String
+ return json.Unmarshal(value, &int64str.StrVal)
+ }
+ int64str.Type = Int64
+ return json.Unmarshal(value, &int64str.Int64Val)
+}
+
+// Int64Value returns the Int64Val if type Int64, or if
+// it is a String, will attempt a conversion to int64,
+// returning 0 if a parsing error occurs.
+func (int64str *Int64OrString) Int64Value() int64 {
+ if int64str.Type == String {
+ i, _ := strconv.ParseInt(int64str.StrVal, 10, 64)
+ return i
+ }
+ return int64str.Int64Val
+}
+
+// MarshalJSON implements the json.Marshaller interface.
+func (int64str Int64OrString) MarshalJSON() ([]byte, error) {
+ switch int64str.Type {
+ case Int64:
+ return json.Marshal(int64str.Int64Val)
+ case String:
+ return json.Marshal(int64str.StrVal)
+ default:
+ return []byte{}, fmt.Errorf("impossible Int64OrString.Type")
+ }
+}
+
+// OpenAPISchemaType is used by the kube-openapi generator when constructing
+// the OpenAPI spec of this type.
+//
+// See: https://github.com/kubernetes/kube-openapi/tree/master/pkg/generators
+func (Int64OrString) OpenAPISchemaType() []string { return []string{"string"} }
+
+// OpenAPISchemaFormat is used by the kube-openapi generator when constructing
+// the OpenAPI spec of this type.
+func (Int64OrString) OpenAPISchemaFormat() string { return "int64-or-string" }
diff --git a/pkg/apis/common/int64str_test.go b/pkg/apis/common/int64str_test.go
new file mode 100644
index 000000000000..42ab6e266da3
--- /dev/null
+++ b/pkg/apis/common/int64str_test.go
@@ -0,0 +1,95 @@
+package common
+
+import (
+ "encoding/json"
+ "reflect"
+ "testing"
+
+ "sigs.k8s.io/yaml"
+)
+
+func TestFromInt64(t *testing.T) {
+ i := FromInt64(93)
+ if i.Type != Int64 || i.Int64Val != 93 {
+ t.Errorf("Expected Int64Val=93, got %+v", i)
+ }
+}
+
+func TestFromString(t *testing.T) {
+ i := FromString("76")
+ if i.Type != String || i.StrVal != "76" {
+ t.Errorf("Expected StrVal=\"76\", got %+v", i)
+ }
+}
+
+type Int64OrStringHolder struct {
+ IOrS Int64OrString `json:"val"`
+}
+
+func TestInt64OrStringUnmarshalJSON(t *testing.T) {
+ cases := []struct {
+ input string
+ result Int64OrString
+ }{
+ {"{\"val\": 123}", FromInt64(123)},
+ {"{\"val\": \"123\"}", FromString("123")},
+ }
+
+ for _, c := range cases {
+ var result Int64OrStringHolder
+ if err := json.Unmarshal([]byte(c.input), &result); err != nil {
+ t.Errorf("Failed to unmarshal input '%v': %v", c.input, err)
+ }
+ if result.IOrS != c.result {
+ t.Errorf("Failed to unmarshal input '%v': expected %+v, got %+v", c.input, c.result, result)
+ }
+ }
+}
+
+func TestInt64OrStringMarshalJSON(t *testing.T) {
+ cases := []struct {
+ input Int64OrString
+ result string
+ }{
+ {FromInt64(123), "{\"val\":123}"},
+ {FromString("123"), "{\"val\":\"123\"}"},
+ }
+
+ for _, c := range cases {
+ input := Int64OrStringHolder{c.input}
+ result, err := json.Marshal(&input)
+ if err != nil {
+ t.Errorf("Failed to marshal input '%v': %v", input, err)
+ }
+ if string(result) != c.result {
+ t.Errorf("Failed to marshal input '%v': expected: %+v, got %q", input, c.result, string(result))
+ }
+ }
+}
+
+func TestInt64OrStringMarshalJSONUnmarshalYAML(t *testing.T) {
+ cases := []struct {
+ input Int64OrString
+ }{
+ {FromInt64(123)},
+ {FromString("123")},
+ }
+
+ for _, c := range cases {
+ input := Int64OrStringHolder{c.input}
+ jsonMarshalled, err := json.Marshal(&input)
+ if err != nil {
+ t.Errorf("1: Failed to marshal input: '%v': %v", input, err)
+ }
+
+ var result Int64OrStringHolder
+ err = yaml.Unmarshal(jsonMarshalled, &result)
+ if err != nil {
+ t.Errorf("2: Failed to unmarshal '%+v': %v", string(jsonMarshalled), err)
+ }
+
+ if !reflect.DeepEqual(input, result) {
+ t.Errorf("3: Failed to marshal input '%+v': got %+v", input, result)
+ }
+ }
+}
diff --git a/pkg/apis/common/openapi_generated.go b/pkg/apis/common/openapi_generated.go
index 1ce78f3dd8a6..bc04dcafec12 100644
--- a/pkg/apis/common/openapi_generated.go
+++ b/pkg/apis/common/openapi_generated.go
@@ -29,17 +29,18 @@ import (
func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition {
return map[string]common.OpenAPIDefinition{
- "github.com/argoproj/argo-events/pkg/apis/common.Amount": schema_argo_events_pkg_apis_common_Amount(ref),
- "github.com/argoproj/argo-events/pkg/apis/common.Backoff": schema_argo_events_pkg_apis_common_Backoff(ref),
- "github.com/argoproj/argo-events/pkg/apis/common.BasicAuth": schema_argo_events_pkg_apis_common_BasicAuth(ref),
- "github.com/argoproj/argo-events/pkg/apis/common.Condition": schema_argo_events_pkg_apis_common_Condition(ref),
- "github.com/argoproj/argo-events/pkg/apis/common.Metadata": schema_argo_events_pkg_apis_common_Metadata(ref),
- "github.com/argoproj/argo-events/pkg/apis/common.Resource": schema_argo_events_pkg_apis_common_Resource(ref),
- "github.com/argoproj/argo-events/pkg/apis/common.S3Artifact": schema_argo_events_pkg_apis_common_S3Artifact(ref),
- "github.com/argoproj/argo-events/pkg/apis/common.S3Bucket": schema_argo_events_pkg_apis_common_S3Bucket(ref),
- "github.com/argoproj/argo-events/pkg/apis/common.S3Filter": schema_argo_events_pkg_apis_common_S3Filter(ref),
- "github.com/argoproj/argo-events/pkg/apis/common.Status": schema_argo_events_pkg_apis_common_Status(ref),
- "github.com/argoproj/argo-events/pkg/apis/common.TLSConfig": schema_argo_events_pkg_apis_common_TLSConfig(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.Amount": schema_argo_events_pkg_apis_common_Amount(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.Backoff": schema_argo_events_pkg_apis_common_Backoff(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.BasicAuth": schema_argo_events_pkg_apis_common_BasicAuth(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.Condition": schema_argo_events_pkg_apis_common_Condition(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.Int64OrString": schema_argo_events_pkg_apis_common_Int64OrString(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.Metadata": schema_argo_events_pkg_apis_common_Metadata(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.Resource": schema_argo_events_pkg_apis_common_Resource(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.S3Artifact": schema_argo_events_pkg_apis_common_S3Artifact(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.S3Bucket": schema_argo_events_pkg_apis_common_S3Bucket(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.S3Filter": schema_argo_events_pkg_apis_common_S3Filter(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.Status": schema_argo_events_pkg_apis_common_Status(ref),
+ "github.com/argoproj/argo-events/pkg/apis/common.TLSConfig": schema_argo_events_pkg_apis_common_TLSConfig(ref),
}
}
@@ -64,9 +65,8 @@ func schema_argo_events_pkg_apis_common_Backoff(ref common.ReferenceCallback) co
Properties: map[string]spec.Schema{
"duration": {
SchemaProps: spec.SchemaProps{
- Description: "Duration is the duration in nanoseconds",
- Type: []string{"integer"},
- Format: "int64",
+ Description: "The initial duration in nanoseconds or strings like \"1s\", \"3m\"",
+ Ref: ref("github.com/argoproj/argo-events/pkg/apis/common.Int64OrString"),
},
},
"factor": {
@@ -89,11 +89,10 @@ func schema_argo_events_pkg_apis_common_Backoff(ref common.ReferenceCallback) co
},
},
},
- Required: []string{"duration", "factor"},
},
},
Dependencies: []string{
- "github.com/argoproj/argo-events/pkg/apis/common.Amount"},
+ "github.com/argoproj/argo-events/pkg/apis/common.Amount", "github.com/argoproj/argo-events/pkg/apis/common.Int64OrString"},
}
}
@@ -174,6 +173,17 @@ func schema_argo_events_pkg_apis_common_Condition(ref common.ReferenceCallback)
}
}
+func schema_argo_events_pkg_apis_common_Int64OrString(ref common.ReferenceCallback) common.OpenAPIDefinition {
+ return common.OpenAPIDefinition{
+ Schema: spec.Schema{
+ SchemaProps: spec.SchemaProps{
+ Type: Int64OrString{}.OpenAPISchemaType(),
+ Format: Int64OrString{}.OpenAPISchemaFormat(),
+ },
+ },
+ }
+}
+
func schema_argo_events_pkg_apis_common_Metadata(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
@@ -441,7 +451,6 @@ func schema_argo_events_pkg_apis_common_TLSConfig(ref common.ReferenceCallback)
},
},
},
- Required: []string{"caCertPath", "clientCertPath", "clientKeyPath"},
},
},
Dependencies: []string{
diff --git a/pkg/apis/sensor/v1alpha1/generated.pb.go b/pkg/apis/sensor/v1alpha1/generated.pb.go
index 98ad070c2349..1457d2d51edb 100644
--- a/pkg/apis/sensor/v1alpha1/generated.pb.go
+++ b/pkg/apis/sensor/v1alpha1/generated.pb.go
@@ -1104,235 +1104,236 @@ func init() {
}
var fileDescriptor_6c4bded897df1f16 = []byte{
- // 3638 bytes of a gzipped FileDescriptorProto
+ // 3657 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x3b, 0x4b, 0x6c, 0x5b, 0xc7,
- 0x76, 0xe6, 0x9f, 0x3c, 0xa2, 0x2d, 0x79, 0x62, 0xa7, 0x8a, 0x9a, 0x48, 0x06, 0x1f, 0xfa, 0xea,
- 0xf7, 0xf0, 0x1e, 0x95, 0xd8, 0xaf, 0x7d, 0x7a, 0x6e, 0xf1, 0x12, 0x52, 0x92, 0x7f, 0xa2, 0x2d,
- 0x65, 0x2e, 0x65, 0x03, 0x6d, 0x81, 0x64, 0x74, 0x39, 0x24, 0x6f, 0x74, 0x79, 0xef, 0xed, 0x9d,
- 0xa1, 0x5c, 0x2e, 0xda, 0x06, 0xc8, 0xaa, 0x40, 0xd1, 0x14, 0xe8, 0xa6, 0xab, 0xb6, 0x9b, 0xee,
- 0xba, 0xe8, 0xbe, 0x40, 0x8b, 0x76, 0x95, 0x65, 0x5a, 0xa0, 0x40, 0x16, 0x85, 0xd0, 0x28, 0x8b,
- 0x2e, 0xba, 0x08, 0x02, 0x74, 0xe5, 0x4d, 0x1f, 0xe6, 0x77, 0x7f, 0xa4, 0x63, 0xc9, 0x14, 0xe4,
- 0x1d, 0xef, 0x39, 0x67, 0xce, 0x99, 0x39, 0x73, 0xe6, 0x7c, 0xe6, 0x0c, 0xe1, 0xfe, 0xc0, 0xe1,
- 0xc3, 0xf1, 0x41, 0xd3, 0xf6, 0x47, 0xeb, 0x24, 0x1c, 0xf8, 0x41, 0xe8, 0x7f, 0x22, 0x7f, 0xfc,
- 0x94, 0x1e, 0x51, 0x8f, 0xb3, 0xf5, 0xe0, 0x70, 0xb0, 0x4e, 0x02, 0x87, 0xad, 0x33, 0xea, 0x31,
- 0x3f, 0x5c, 0x3f, 0x7a, 0x8f, 0xb8, 0xc1, 0x90, 0xbc, 0xb7, 0x3e, 0xa0, 0x1e, 0x0d, 0x09, 0xa7,
- 0xbd, 0x66, 0x10, 0xfa, 0xdc, 0x47, 0x1b, 0x31, 0xa7, 0xa6, 0xe1, 0x24, 0x7f, 0x7c, 0xa4, 0x38,
- 0x35, 0x83, 0xc3, 0x41, 0x53, 0x70, 0x6a, 0x2a, 0x4e, 0x4d, 0xc3, 0x69, 0xe5, 0xfd, 0x53, 0xcf,
- 0xc1, 0xf6, 0x47, 0x23, 0xdf, 0xcb, 0x8a, 0x5e, 0xf9, 0x69, 0x82, 0xc1, 0xc0, 0x1f, 0xf8, 0xeb,
- 0x12, 0x7c, 0x30, 0xee, 0xcb, 0x2f, 0xf9, 0x21, 0x7f, 0x69, 0xf2, 0xc6, 0xe1, 0x06, 0x6b, 0x3a,
- 0xbe, 0x60, 0xb9, 0x6e, 0xfb, 0x21, 0x5d, 0x3f, 0x9a, 0x5a, 0xcd, 0xca, 0xcf, 0x62, 0x9a, 0x11,
- 0xb1, 0x87, 0x8e, 0x47, 0xc3, 0x49, 0x3c, 0x8f, 0x11, 0xe5, 0x64, 0xd6, 0xa8, 0xf5, 0x17, 0x8d,
- 0x0a, 0xc7, 0x1e, 0x77, 0x46, 0x74, 0x6a, 0xc0, 0x6f, 0xbf, 0x6c, 0x00, 0xb3, 0x87, 0x74, 0x44,
- 0xb2, 0xe3, 0x1a, 0x7f, 0x55, 0x84, 0xa5, 0xd6, 0x53, 0xab, 0x43, 0x46, 0x07, 0x3d, 0xd2, 0x0d,
- 0x9d, 0xc1, 0x80, 0x86, 0x68, 0x03, 0xea, 0xfd, 0xb1, 0x67, 0x73, 0xc7, 0xf7, 0x1e, 0x93, 0x11,
- 0x5d, 0xce, 0xdd, 0xc8, 0xdd, 0xac, 0xb5, 0xaf, 0x7d, 0x71, 0xbc, 0x76, 0xe9, 0xe4, 0x78, 0xad,
- 0x7e, 0x37, 0x81, 0xc3, 0x29, 0x4a, 0x84, 0xa1, 0x46, 0x6c, 0x9b, 0x32, 0xb6, 0x43, 0x27, 0xcb,
- 0xf9, 0x1b, 0xb9, 0x9b, 0x0b, 0xb7, 0x7e, 0xa3, 0xa9, 0xa6, 0x26, 0xb6, 0xac, 0x29, 0xb4, 0xd4,
- 0x3c, 0x7a, 0xaf, 0x69, 0x51, 0x3b, 0xa4, 0x7c, 0x87, 0x4e, 0x2c, 0xea, 0x52, 0x9b, 0xfb, 0x61,
- 0xfb, 0xf2, 0xc9, 0xf1, 0x5a, 0xad, 0x65, 0xc6, 0xe2, 0x98, 0x8d, 0xe0, 0xc9, 0x0c, 0xf9, 0x72,
- 0xe1, 0xcc, 0x3c, 0x23, 0x30, 0x8e, 0xd9, 0xa0, 0x1f, 0x42, 0x39, 0xa4, 0x03, 0xc7, 0xf7, 0x96,
- 0x8b, 0x72, 0x6d, 0x57, 0xf4, 0xda, 0xca, 0x58, 0x42, 0xb1, 0xc6, 0xa2, 0x31, 0x54, 0x02, 0x32,
- 0x71, 0x7d, 0xd2, 0x5b, 0x2e, 0xdd, 0x28, 0xdc, 0x5c, 0xb8, 0xf5, 0xb0, 0xf9, 0xaa, 0xd6, 0xd9,
- 0xd4, 0xda, 0xdd, 0x23, 0x21, 0x19, 0x51, 0x4e, 0xc3, 0xf6, 0xa2, 0x16, 0x5a, 0xd9, 0x53, 0x22,
- 0xb0, 0x91, 0x85, 0xfe, 0x04, 0x20, 0x30, 0x64, 0x6c, 0xb9, 0x7c, 0xee, 0x92, 0x91, 0x96, 0x0c,
- 0x11, 0x88, 0xe1, 0x84, 0xc4, 0xc6, 0x71, 0x01, 0xde, 0x68, 0x85, 0x03, 0xff, 0xa9, 0x1f, 0x1e,
- 0xf6, 0x5d, 0xff, 0x99, 0x31, 0x0c, 0x0f, 0xca, 0xcc, 0x1f, 0x87, 0xb6, 0x32, 0x89, 0xb9, 0xe6,
- 0xd4, 0x0a, 0xb9, 0xd3, 0x27, 0x36, 0xef, 0xf8, 0x36, 0x11, 0xe6, 0xd3, 0x06, 0xa1, 0x7e, 0x4b,
- 0x72, 0xc7, 0x5a, 0x0a, 0xba, 0x0f, 0x35, 0x3f, 0x10, 0xf6, 0x2a, 0x76, 0x2a, 0x2f, 0x77, 0xea,
- 0xc7, 0x7a, 0xea, 0xb5, 0x5d, 0x83, 0x78, 0x7e, 0xbc, 0x76, 0x3d, 0x39, 0xd9, 0x08, 0x81, 0xe3,
- 0xc1, 0x19, 0x8d, 0x16, 0x2e, 0x5a, 0xa3, 0xe8, 0xcf, 0x73, 0x70, 0x6d, 0x10, 0xfa, 0xe3, 0xe0,
- 0x09, 0x0d, 0x99, 0x98, 0x1b, 0xd5, 0x8a, 0x2c, 0x4a, 0x45, 0xde, 0x49, 0x18, 0x74, 0x74, 0x7e,
- 0x63, 0xf1, 0xc2, 0x4d, 0x08, 0x13, 0xbf, 0x37, 0x83, 0x43, 0xfb, 0x6d, 0x2d, 0xfa, 0xda, 0x2c,
- 0x2c, 0x9e, 0x29, 0xb5, 0xf1, 0x9d, 0x38, 0xf6, 0x99, 0x1d, 0x40, 0x16, 0xe4, 0xd9, 0x6d, 0xbd,
- 0xb3, 0xbf, 0x73, 0x7a, 0xdd, 0x28, 0x5f, 0xda, 0xb4, 0x6e, 0x1b, 0x86, 0xed, 0xf2, 0xc9, 0xf1,
- 0x5a, 0xde, 0xba, 0x8d, 0xf3, 0xec, 0x36, 0x6a, 0x40, 0xd9, 0xf1, 0x5c, 0xc7, 0xa3, 0x7a, 0xff,
- 0xe4, 0x36, 0x3f, 0x90, 0x10, 0xac, 0x31, 0xa8, 0x07, 0xc5, 0xbe, 0xe3, 0x52, 0x7d, 0xb8, 0xef,
- 0xbe, 0xfa, 0xb6, 0xdc, 0x75, 0x5c, 0x1a, 0xcd, 0xa2, 0x7a, 0x72, 0xbc, 0x56, 0x14, 0x10, 0x2c,
- 0xb9, 0xa3, 0x8f, 0xa1, 0x30, 0x0e, 0x5d, 0xad, 0xf0, 0xed, 0x57, 0x17, 0xb2, 0x8f, 0x3b, 0x91,
- 0x8c, 0xca, 0xc9, 0xf1, 0x5a, 0x61, 0x1f, 0x77, 0xb0, 0x60, 0x8d, 0xf6, 0xa1, 0x66, 0xfb, 0x5e,
- 0xdf, 0x19, 0x8c, 0x48, 0xb0, 0x5c, 0x92, 0x72, 0x6e, 0xce, 0xf2, 0x54, 0x9b, 0x92, 0xe8, 0x11,
- 0x09, 0xa6, 0x9c, 0xd5, 0xa6, 0x19, 0x8e, 0x63, 0x4e, 0x62, 0xe2, 0x03, 0x87, 0x2f, 0x97, 0xe7,
- 0x9d, 0xf8, 0x3d, 0x87, 0xa7, 0x27, 0x7e, 0xcf, 0xe1, 0x58, 0xb0, 0x46, 0x36, 0x54, 0x43, 0x63,
- 0x90, 0x15, 0x29, 0xe6, 0x17, 0x67, 0xde, 0xff, 0xc8, 0x1e, 0xeb, 0x27, 0xc7, 0x6b, 0xd5, 0xc8,
- 0xfe, 0x22, 0xc6, 0x8d, 0xff, 0x2b, 0xc1, 0xe5, 0xcd, 0x31, 0xe3, 0xfe, 0xc8, 0xb8, 0x93, 0x75,
- 0xe1, 0xd9, 0xc3, 0x23, 0x1a, 0xee, 0xe3, 0x8e, 0x0e, 0x32, 0x57, 0xcd, 0xf1, 0xb6, 0x0c, 0x02,
- 0xc7, 0x34, 0xc2, 0x6d, 0x33, 0x6a, 0x8f, 0x43, 0x65, 0x4c, 0xd5, 0xd8, 0x6d, 0x5b, 0x12, 0x8a,
- 0x35, 0x16, 0xed, 0x03, 0xd8, 0x34, 0xe4, 0xca, 0xf5, 0x9f, 0x2d, 0x66, 0x5c, 0x11, 0x87, 0x78,
- 0x33, 0x1a, 0x8c, 0x13, 0x8c, 0xd0, 0x43, 0x40, 0x6a, 0x2e, 0x22, 0xd6, 0xed, 0x1e, 0xd1, 0x30,
- 0x74, 0x7a, 0x54, 0x47, 0x90, 0x15, 0x3d, 0x15, 0x64, 0x4d, 0x51, 0xe0, 0x19, 0xa3, 0x10, 0x83,
- 0x22, 0x0b, 0xa8, 0xad, 0xc3, 0xca, 0x87, 0xaf, 0xbe, 0xab, 0x29, 0x95, 0x36, 0xad, 0x80, 0xda,
- 0xdb, 0x1e, 0x0f, 0x27, 0xed, 0xba, 0x9e, 0x50, 0x51, 0x80, 0xb0, 0x14, 0xf6, 0xba, 0xe3, 0x4a,
- 0x32, 0x9c, 0x56, 0x2e, 0x30, 0x9c, 0xb6, 0xa1, 0x2e, 0x76, 0x51, 0xf8, 0x82, 0x3d, 0xc2, 0x87,
- 0xcb, 0x55, 0xb9, 0x63, 0xab, 0x9a, 0xfe, 0xcd, 0x2d, 0x1a, 0x84, 0xd4, 0x16, 0x49, 0xd1, 0x66,
- 0x82, 0x0a, 0xa7, 0xc6, 0xac, 0xfc, 0x1c, 0x6a, 0x91, 0x6e, 0xd1, 0x12, 0x14, 0x0e, 0xe9, 0x44,
- 0x99, 0x2c, 0x16, 0x3f, 0xd1, 0x35, 0x28, 0x1d, 0x11, 0x77, 0xac, 0xbd, 0x1c, 0x56, 0x1f, 0x77,
- 0xf2, 0x1b, 0xb9, 0xc6, 0xbf, 0xe4, 0x00, 0xb6, 0x08, 0x27, 0x77, 0x1d, 0x97, 0xd3, 0x10, 0xdd,
- 0x80, 0x62, 0x20, 0xe6, 0xa0, 0xcc, 0x3d, 0xda, 0x24, 0x29, 0x51, 0x62, 0xd0, 0x4f, 0xa0, 0xc8,
- 0x27, 0x81, 0xf1, 0x97, 0xcb, 0x86, 0xa2, 0x3b, 0x09, 0xe8, 0xf3, 0xe3, 0xb5, 0xea, 0x43, 0x6b,
- 0xf7, 0xb1, 0xf8, 0x8d, 0x25, 0x15, 0x5a, 0x33, 0x82, 0x45, 0x4c, 0xab, 0xb5, 0x6b, 0x27, 0xc7,
- 0x6b, 0xa5, 0x27, 0x02, 0xa0, 0xe7, 0x80, 0x3e, 0x00, 0xb0, 0xfd, 0x91, 0xd8, 0x04, 0xee, 0x87,
- 0xda, 0x58, 0x6f, 0x98, 0x7d, 0xda, 0x8c, 0x30, 0xcf, 0x53, 0x5f, 0x38, 0x31, 0xa6, 0xe1, 0xc0,
- 0xe2, 0x16, 0x0d, 0xa8, 0xd7, 0xa3, 0x9e, 0x3d, 0x91, 0x41, 0x46, 0xac, 0xc2, 0x8b, 0x33, 0xc3,
- 0x68, 0x15, 0x32, 0x23, 0x94, 0x18, 0xf4, 0x33, 0xa8, 0xf7, 0xcc, 0x20, 0x87, 0xb2, 0xe5, 0xbc,
- 0x9c, 0xde, 0x92, 0xc8, 0x1f, 0xb7, 0x12, 0x70, 0x9c, 0xa2, 0x6a, 0xfc, 0x4d, 0x0e, 0x4a, 0xdb,
- 0x62, 0xe3, 0xd1, 0x08, 0x2a, 0xb6, 0xef, 0x71, 0xfa, 0x47, 0x5c, 0x47, 0xa4, 0x39, 0xc2, 0x82,
- 0xe4, 0xb8, 0xa9, 0xb8, 0xb5, 0x17, 0x84, 0x89, 0xe8, 0x0f, 0x6c, 0x64, 0xa0, 0xb7, 0xa1, 0xd8,
- 0x23, 0x9c, 0x48, 0xa5, 0xd7, 0x55, 0xe8, 0x10, 0x9b, 0x86, 0x25, 0xf4, 0x4e, 0xf5, 0xaf, 0xff,
- 0x6e, 0xed, 0xd2, 0xa7, 0xff, 0x75, 0xe3, 0x52, 0xe3, 0xbb, 0x3c, 0xd4, 0x93, 0xec, 0xd0, 0x0a,
- 0xe4, 0x9d, 0x9e, 0xd6, 0x03, 0x68, 0x3d, 0xe4, 0x1f, 0x6c, 0xe1, 0xbc, 0xd3, 0x93, 0xee, 0x4a,
- 0x39, 0xd5, 0x7c, 0x3a, 0xcb, 0xcc, 0xa4, 0x39, 0xbf, 0x05, 0x0b, 0xe2, 0x78, 0x1e, 0xa9, 0x20,
- 0x2d, 0xfd, 0x55, 0xad, 0xfd, 0x86, 0x26, 0x5e, 0x10, 0x66, 0x67, 0xe2, 0x77, 0x92, 0x4e, 0x6c,
- 0x82, 0x34, 0x94, 0x62, 0x7a, 0x13, 0x12, 0xc6, 0xd1, 0x82, 0x45, 0x31, 0x7f, 0xb9, 0x48, 0x8f,
- 0x4b, 0xe2, 0x92, 0x24, 0xfe, 0x35, 0x4d, 0xbc, 0x28, 0x16, 0xb9, 0xa9, 0xd0, 0x72, 0x5c, 0x96,
- 0x1e, 0xfd, 0x08, 0x2a, 0x6c, 0x7c, 0xf0, 0x09, 0xb5, 0x55, 0x00, 0xaa, 0xc5, 0xc7, 0xcc, 0x52,
- 0x60, 0x6c, 0xf0, 0xa8, 0x03, 0x45, 0x51, 0x6a, 0xe8, 0x08, 0xf2, 0xe3, 0xd3, 0xa5, 0x34, 0x5d,
- 0x67, 0x44, 0x13, 0x73, 0x77, 0x84, 0x01, 0x09, 0x2e, 0x09, 0x9d, 0xff, 0x6d, 0x1e, 0x16, 0xa5,
- 0xce, 0x63, 0x2b, 0x3c, 0x85, 0x01, 0xb6, 0x60, 0x51, 0xda, 0x85, 0xd2, 0xb5, 0xac, 0x63, 0xf2,
- 0xe9, 0xb5, 0x6f, 0xa7, 0xd1, 0x38, 0x4b, 0x2f, 0xe2, 0x93, 0x04, 0xc9, 0xc1, 0x85, 0x74, 0x7c,
- 0xda, 0x36, 0x08, 0x1c, 0xd3, 0xa0, 0x23, 0xa8, 0xf4, 0xe5, 0x31, 0x67, 0x3a, 0xcd, 0xd8, 0x9d,
- 0xd3, 0x68, 0xe3, 0x15, 0x2b, 0xf7, 0xa1, 0xac, 0x57, 0xfd, 0x66, 0xd8, 0x08, 0x6b, 0xfc, 0x47,
- 0x1e, 0xae, 0xcf, 0xa4, 0x47, 0x07, 0x7a, 0x4f, 0xd4, 0x19, 0xda, 0x9a, 0xc3, 0xdd, 0x3a, 0x23,
- 0xaa, 0xe7, 0x50, 0x4d, 0xef, 0x54, 0xf2, 0xa8, 0xe6, 0x2f, 0xe0, 0xa8, 0xf6, 0xf5, 0x51, 0x55,
- 0x49, 0xfc, 0x1c, 0x4b, 0x8a, 0xbd, 0x72, 0x6c, 0x40, 0xf1, 0xa1, 0x6f, 0xbc, 0x0b, 0xf5, 0x64,
- 0x3e, 0xf9, 0x72, 0xcf, 0xdd, 0xf8, 0xb6, 0x08, 0x0b, 0x89, 0x24, 0x0b, 0xbd, 0xa3, 0x32, 0x4e,
- 0x35, 0x60, 0x41, 0x0f, 0x88, 0xd3, 0xc5, 0x5f, 0xc2, 0x15, 0xdb, 0xf5, 0x3d, 0xba, 0xe5, 0x84,
- 0x32, 0xf7, 0x98, 0x68, 0x03, 0x7d, 0x53, 0x53, 0x5e, 0xd9, 0x4c, 0x61, 0x71, 0x86, 0x1a, 0xd9,
- 0x50, 0xb2, 0x43, 0xda, 0x63, 0x3a, 0xc1, 0x69, 0xcf, 0x95, 0x19, 0x6e, 0x0a, 0x4e, 0x2a, 0x7c,
- 0xc8, 0x9f, 0x58, 0xf1, 0x46, 0xbf, 0x0f, 0x75, 0xc6, 0x86, 0x32, 0x43, 0x92, 0xc9, 0x54, 0xf1,
- 0x2c, 0xc9, 0x94, 0x74, 0xf7, 0x96, 0x75, 0x3f, 0x1a, 0x8e, 0x53, 0xcc, 0xd0, 0x4f, 0xa0, 0xda,
- 0x37, 0x41, 0x59, 0x39, 0xa6, 0x25, 0xbd, 0xf6, 0x6a, 0x14, 0x86, 0x23, 0x0a, 0xe1, 0x4e, 0x0f,
- 0x42, 0xe2, 0xd9, 0x43, 0xed, 0x89, 0x22, 0x77, 0xda, 0x96, 0x50, 0xac, 0xb1, 0x42, 0xed, 0x9c,
- 0x0c, 0xa4, 0x1b, 0x4a, 0xa8, 0xbd, 0x4b, 0x06, 0x58, 0xc0, 0x05, 0x3a, 0xa4, 0x7d, 0x9d, 0x04,
- 0x44, 0x68, 0x4c, 0xfb, 0x58, 0xc0, 0xd1, 0x08, 0xca, 0x21, 0x1d, 0xf9, 0x9c, 0x2e, 0xd7, 0xe4,
- 0x52, 0x1f, 0xcc, 0xa5, 0x56, 0x2c, 0x59, 0xa9, 0xb4, 0x5e, 0xd5, 0x3e, 0x0a, 0x82, 0xb5, 0x10,
- 0xf4, 0xbb, 0x00, 0x4a, 0x25, 0x52, 0x09, 0x20, 0x27, 0x15, 0x55, 0x74, 0x71, 0x66, 0xa2, 0x94,
- 0x28, 0x15, 0x92, 0xa0, 0x6f, 0xfc, 0x43, 0x0e, 0xaa, 0x66, 0xf3, 0xd0, 0x2e, 0x54, 0xc7, 0x8c,
- 0x86, 0x91, 0x5f, 0x3c, 0xf5, 0x36, 0xc9, 0x8c, 0x7d, 0x5f, 0x0f, 0xc5, 0x11, 0x13, 0xc1, 0x30,
- 0x20, 0x8c, 0x3d, 0xf3, 0xc3, 0xde, 0xd9, 0x2e, 0x73, 0x24, 0xc3, 0x3d, 0x3d, 0x14, 0x47, 0x4c,
- 0x1a, 0x1f, 0xc2, 0x62, 0x46, 0x27, 0xa7, 0x70, 0xe4, 0x6f, 0x43, 0x71, 0x1c, 0xba, 0x26, 0x83,
- 0x90, 0xce, 0x67, 0x1f, 0x77, 0x2c, 0x2c, 0xa1, 0x8d, 0xef, 0x4a, 0xb0, 0x70, 0xbf, 0xdb, 0xdd,
- 0x33, 0x35, 0xc5, 0x4b, 0xce, 0x5c, 0x22, 0x03, 0xcd, 0x5f, 0x60, 0x06, 0xba, 0x0f, 0x05, 0xee,
- 0x9a, 0x83, 0x7a, 0xe7, 0xcc, 0xb5, 0x55, 0xb7, 0x63, 0x69, 0x13, 0x92, 0x75, 0x5b, 0xb7, 0x63,
- 0x61, 0xc1, 0x4f, 0x9c, 0x88, 0x11, 0xe5, 0x43, 0xbf, 0x97, 0xbd, 0xc6, 0x7a, 0x24, 0xa1, 0x58,
- 0x63, 0x33, 0x79, 0x7f, 0xe9, 0xc2, 0xf3, 0xfe, 0x1f, 0x41, 0x45, 0x44, 0x0a, 0x7f, 0xac, 0x92,
- 0x88, 0x42, 0xac, 0xa9, 0xae, 0x02, 0x63, 0x83, 0x47, 0x03, 0xa8, 0x1d, 0x10, 0xe6, 0xd8, 0xad,
- 0x31, 0x1f, 0xea, 0x4c, 0xe2, 0xec, 0xfa, 0x6a, 0x1b, 0x0e, 0xaa, 0xaa, 0x8e, 0x3e, 0x71, 0xcc,
- 0x1b, 0xfd, 0x31, 0x54, 0x86, 0x94, 0xf4, 0x84, 0x42, 0xaa, 0x52, 0x21, 0xf8, 0xd5, 0x15, 0x92,
- 0x30, 0xc0, 0xe6, 0x7d, 0xc5, 0x54, 0x15, 0x61, 0xd1, 0x3a, 0x35, 0x14, 0x1b, 0x99, 0x2b, 0x77,
- 0xa0, 0x9e, 0xa4, 0x3c, 0x53, 0x49, 0xf1, 0x67, 0x05, 0xb8, 0xba, 0xb3, 0x61, 0x99, 0x1a, 0x7b,
- 0xcf, 0x77, 0x1d, 0x7b, 0x82, 0xfe, 0x14, 0xca, 0x2e, 0x39, 0xa0, 0x2e, 0x5b, 0xce, 0xc9, 0xf5,
- 0x3c, 0x7d, 0xf5, 0xf5, 0x4c, 0x31, 0x6f, 0x76, 0x24, 0x67, 0xb5, 0xa8, 0xc8, 0xca, 0x14, 0x10,
- 0x6b, 0xb1, 0xc8, 0x86, 0xca, 0x01, 0xb1, 0x0f, 0xfd, 0x7e, 0x5f, 0x7b, 0x8b, 0x8d, 0x57, 0xd8,
- 0x38, 0x39, 0x3e, 0xd6, 0x9b, 0x06, 0x60, 0xc3, 0x19, 0x59, 0x70, 0x9d, 0x86, 0xa1, 0x1f, 0xee,
- 0x7a, 0x1a, 0xa5, 0x2d, 0x48, 0x9e, 0xad, 0x6a, 0xfb, 0x1d, 0x3d, 0xf0, 0xfa, 0xf6, 0x2c, 0x22,
- 0x3c, 0x7b, 0xec, 0xca, 0x2f, 0x60, 0x21, 0xb1, 0xc0, 0x33, 0xed, 0xc5, 0xff, 0x94, 0xa0, 0xbe,
- 0x43, 0xfa, 0x87, 0xe4, 0x94, 0x0e, 0xe8, 0x07, 0x50, 0xe2, 0x7e, 0xe0, 0xd8, 0x3a, 0xd6, 0x5f,
- 0xd6, 0x04, 0xa5, 0xae, 0x00, 0x62, 0x85, 0x13, 0x89, 0x67, 0x40, 0x42, 0xee, 0x70, 0x53, 0x0e,
- 0x94, 0xe2, 0xc4, 0x73, 0xcf, 0x20, 0x70, 0x4c, 0x93, 0x39, 0xe0, 0xc5, 0x0b, 0x3f, 0xe0, 0x1b,
- 0x50, 0x0f, 0xe9, 0x1f, 0x8e, 0x9d, 0x90, 0xf6, 0x5a, 0xf6, 0x21, 0x93, 0xc1, 0xbc, 0x14, 0x77,
- 0x0c, 0x70, 0x02, 0x87, 0x53, 0x94, 0x22, 0x05, 0x10, 0xa5, 0x66, 0x48, 0x19, 0x93, 0xbe, 0xa1,
- 0x1a, 0xa7, 0x00, 0x9b, 0x1a, 0x8e, 0x23, 0x0a, 0x91, 0x32, 0xf5, 0xdd, 0x31, 0x1b, 0xde, 0x15,
- 0x3c, 0x44, 0x9a, 0x2b, 0x5d, 0x44, 0x29, 0x4e, 0x99, 0xee, 0xa6, 0xb0, 0x38, 0x43, 0x6d, 0xfc,
- 0x70, 0xf5, 0x9c, 0xfd, 0x70, 0x22, 0xaa, 0xd4, 0x2e, 0x30, 0xaa, 0xb4, 0x60, 0x31, 0x32, 0x01,
- 0xc7, 0x1b, 0xec, 0xd0, 0x89, 0x4e, 0x20, 0xa2, 0x12, 0x67, 0x2f, 0x8d, 0xc6, 0x59, 0x7a, 0xe1,
- 0x99, 0x4d, 0xd9, 0xb9, 0x90, 0x2e, 0xef, 0x4c, 0xc9, 0x69, 0xf0, 0x8d, 0x5d, 0x80, 0x8e, 0x3f,
- 0x30, 0x66, 0xde, 0x82, 0x45, 0xc7, 0xe3, 0x34, 0x3c, 0x22, 0xae, 0x45, 0x6d, 0xdf, 0xeb, 0x31,
- 0x69, 0xf2, 0xc5, 0x58, 0xf6, 0x83, 0x34, 0x1a, 0x67, 0xe9, 0x1b, 0x7f, 0x5f, 0x80, 0x85, 0xc7,
- 0xad, 0xae, 0x75, 0xca, 0x93, 0x93, 0xa8, 0x44, 0xf3, 0x2f, 0xa9, 0x44, 0x13, 0xfb, 0x51, 0x78,
- 0x6d, 0x6d, 0x9b, 0x8b, 0x3f, 0x85, 0xda, 0xba, 0x4b, 0xe7, 0x6b, 0xdd, 0x8d, 0xcf, 0x8b, 0xb0,
- 0xb4, 0x1b, 0x50, 0xef, 0xe9, 0xd0, 0x61, 0x87, 0x66, 0xb3, 0x6e, 0x40, 0x71, 0xe8, 0x33, 0x9e,
- 0xcd, 0xdb, 0xee, 0xfb, 0x8c, 0x63, 0x89, 0x49, 0x9a, 0x56, 0xfe, 0xfb, 0x4d, 0x4b, 0xf8, 0x3b,
- 0x91, 0xea, 0xb1, 0x80, 0xd8, 0x53, 0x85, 0xf6, 0x63, 0x83, 0xc0, 0x31, 0x8d, 0xec, 0x33, 0x8e,
- 0xf9, 0xb0, 0xeb, 0x1f, 0x52, 0xef, 0x6c, 0x25, 0x89, 0xea, 0x33, 0x9a, 0xb1, 0x38, 0x66, 0x83,
- 0x6e, 0x01, 0x90, 0xb8, 0xe7, 0xa9, 0xca, 0x91, 0x48, 0xe3, 0xad, 0xb8, 0xe3, 0x99, 0xa0, 0x4a,
- 0x1a, 0x5a, 0xf9, 0xb5, 0x19, 0x5a, 0xe5, 0xc2, 0xfb, 0x83, 0xff, 0x96, 0x87, 0xb2, 0x25, 0x99,
- 0xa0, 0x8f, 0xa1, 0x3a, 0xa2, 0x9c, 0xc8, 0x8a, 0x5c, 0x15, 0x1d, 0xef, 0x9e, 0xee, 0xe2, 0x67,
- 0x57, 0x1e, 0xd5, 0x47, 0x94, 0x93, 0x58, 0x5c, 0x0c, 0xc3, 0x11, 0x57, 0x51, 0xef, 0xcb, 0x9b,
- 0xf2, 0xfc, 0xbc, 0x57, 0x18, 0x6a, 0xc6, 0x56, 0x40, 0xed, 0x99, 0x97, 0xe3, 0x1e, 0x94, 0x19,
- 0x27, 0x7c, 0xcc, 0xe6, 0xef, 0x43, 0x69, 0x49, 0x92, 0x5b, 0xe2, 0xd6, 0x4f, 0x7e, 0x63, 0x2d,
- 0xa5, 0xf1, 0xef, 0x39, 0x00, 0x45, 0xd8, 0x71, 0x18, 0x47, 0x7f, 0x30, 0xa5, 0xc8, 0xe6, 0xe9,
- 0x14, 0x29, 0x46, 0x4b, 0x35, 0x46, 0x81, 0xd3, 0x40, 0x12, 0x4a, 0xa4, 0x50, 0x72, 0x38, 0x1d,
- 0x31, 0x5d, 0xf5, 0x7c, 0x30, 0xef, 0xda, 0xe2, 0xc4, 0xe5, 0x81, 0x60, 0x8b, 0x15, 0xf7, 0xc6,
- 0x3f, 0x97, 0xcc, 0x9a, 0x84, 0x62, 0xd1, 0x67, 0xb9, 0xcc, 0x2d, 0xb0, 0xca, 0x4c, 0x1f, 0x9c,
- 0xdb, 0xad, 0x58, 0x9c, 0x62, 0xbc, 0xf8, 0x52, 0x19, 0xf9, 0x50, 0xe5, 0xca, 0xc2, 0xcd, 0xf2,
- 0x5b, 0x73, 0x9f, 0x95, 0x58, 0xd9, 0x1a, 0xc0, 0x70, 0x24, 0x04, 0xb9, 0x50, 0xe5, 0x74, 0x14,
- 0xb8, 0x84, 0xd3, 0xf9, 0xef, 0x66, 0xba, 0x9a, 0x93, 0x2a, 0xaa, 0xcd, 0x17, 0x8e, 0x24, 0xa0,
- 0xcf, 0x73, 0xb0, 0xd4, 0x4b, 0xdf, 0xcf, 0x9b, 0xe0, 0x33, 0x87, 0xa2, 0x33, 0x37, 0xfe, 0x51,
- 0x1f, 0x62, 0x29, 0x83, 0x60, 0x78, 0x4a, 0x38, 0x7a, 0x08, 0x48, 0xe7, 0xd9, 0x77, 0x89, 0xe3,
- 0xd2, 0x1e, 0xf6, 0xc7, 0x5e, 0x4f, 0x7a, 0xd4, 0x6a, 0xdc, 0x27, 0xdb, 0x9e, 0xa2, 0xc0, 0x33,
- 0x46, 0x89, 0xcc, 0x52, 0x4e, 0xb5, 0x3d, 0x66, 0xd2, 0x2f, 0x97, 0xd3, 0x6f, 0x51, 0xb6, 0x13,
- 0x38, 0x9c, 0xa2, 0x44, 0xb7, 0xa1, 0x62, 0x3b, 0xa1, 0x3d, 0x76, 0xb8, 0xbe, 0x0a, 0x7a, 0x4b,
- 0x0f, 0xba, 0x9a, 0x68, 0xf8, 0x28, 0x02, 0x6c, 0x28, 0x1b, 0x3e, 0xd4, 0x93, 0x87, 0x17, 0x7d,
- 0x14, 0x39, 0x05, 0x75, 0x26, 0x7f, 0x7e, 0xf6, 0xbe, 0xf8, 0xf7, 0x7b, 0x81, 0x7f, 0xca, 0x43,
- 0xdd, 0x72, 0x89, 0x1d, 0x05, 0xd6, 0xb4, 0x6f, 0xcf, 0xbd, 0x86, 0x24, 0x02, 0x98, 0x9c, 0x8f,
- 0x8c, 0xad, 0xf9, 0x33, 0xf7, 0x4e, 0xad, 0x68, 0x30, 0x4e, 0x30, 0x12, 0xd9, 0x80, 0x3d, 0x24,
- 0x9e, 0x47, 0x5d, 0x1d, 0xe0, 0xa3, 0xe8, 0xb6, 0xa9, 0xc0, 0xd8, 0xe0, 0x05, 0xe9, 0x88, 0x32,
- 0x46, 0x06, 0xa6, 0xb5, 0x11, 0x91, 0x3e, 0x52, 0x60, 0x6c, 0xf0, 0x8d, 0xff, 0x2f, 0x02, 0xb2,
- 0x38, 0xf1, 0x7a, 0x24, 0xec, 0xed, 0x6c, 0x44, 0x99, 0xe4, 0x0b, 0x5f, 0x5b, 0xe4, 0x5e, 0xc7,
- 0x6b, 0x8b, 0xc4, 0xb3, 0x99, 0xfc, 0x85, 0x3c, 0x9b, 0x79, 0x9c, 0x7c, 0x36, 0xa3, 0xb4, 0xfd,
- 0xee, 0xac, 0x67, 0x33, 0xbf, 0xbe, 0x33, 0x3e, 0xa0, 0xa1, 0x47, 0x39, 0x65, 0x66, 0xae, 0xa7,
- 0x78, 0x3c, 0x73, 0xf1, 0x79, 0x6d, 0x1f, 0x2e, 0x07, 0x84, 0xdb, 0x43, 0x8b, 0x87, 0x84, 0xd3,
- 0xc1, 0x44, 0x27, 0x67, 0x1f, 0xe8, 0x61, 0x97, 0xf7, 0x92, 0xc8, 0xe7, 0xc7, 0x6b, 0xbf, 0xf9,
- 0xa2, 0xc7, 0x70, 0x7c, 0x12, 0x50, 0xd6, 0x94, 0xe4, 0xb2, 0xdb, 0x95, 0x66, 0x2b, 0x32, 0x40,
- 0xd7, 0x39, 0xa2, 0xbb, 0x71, 0xbb, 0xab, 0x1a, 0xcf, 0xad, 0x13, 0x61, 0x70, 0x82, 0xaa, 0xb1,
- 0x0e, 0x75, 0x75, 0xa2, 0xf5, 0x2d, 0xcc, 0x1a, 0x94, 0x88, 0xeb, 0xfa, 0xcf, 0xe4, 0xc9, 0x2d,
- 0xa9, 0x0b, 0xf5, 0x96, 0x00, 0x60, 0x05, 0x6f, 0xfc, 0x6b, 0x05, 0x22, 0x2f, 0x8e, 0xec, 0xa9,
- 0xa0, 0x7f, 0xf6, 0x87, 0x17, 0x8f, 0x34, 0x03, 0x15, 0x20, 0xcc, 0x57, 0x22, 0xf6, 0xeb, 0x67,
- 0x0b, 0x8e, 0x4d, 0x5b, 0xb6, 0xed, 0x8f, 0x75, 0x3f, 0x2b, 0x3f, 0xfd, 0x6c, 0x21, 0x4d, 0x81,
- 0x67, 0x8c, 0x42, 0x0f, 0xe5, 0x13, 0x17, 0x4e, 0x84, 0x4e, 0x75, 0x6c, 0x7b, 0xe7, 0x05, 0x4f,
- 0x5c, 0x14, 0x51, 0xf4, 0xae, 0x45, 0x7d, 0xe2, 0x78, 0x38, 0xda, 0x86, 0xca, 0x91, 0xef, 0x8e,
- 0x47, 0xd4, 0xd8, 0xd4, 0xca, 0x2c, 0x4e, 0x4f, 0x24, 0x49, 0xa2, 0x78, 0x50, 0x43, 0xb0, 0x19,
- 0x8b, 0x28, 0x2c, 0xca, 0x67, 0x1f, 0x0e, 0x9f, 0xe8, 0x5e, 0x91, 0xae, 0x80, 0x7e, 0x38, 0x8b,
- 0xdd, 0x9e, 0xdf, 0xb3, 0xd2, 0xd4, 0xed, 0x37, 0x44, 0xb5, 0x9a, 0x01, 0xe2, 0x2c, 0x4f, 0xf4,
- 0x17, 0x39, 0xa8, 0x7b, 0x7e, 0x8f, 0x1a, 0x6f, 0xa7, 0x13, 0xfe, 0xee, 0xfc, 0x91, 0xbd, 0xf9,
- 0x38, 0xc1, 0x56, 0x5d, 0xb1, 0x45, 0xf1, 0x2d, 0x89, 0xc2, 0x29, 0xf9, 0x68, 0x1f, 0x16, 0xb8,
- 0xef, 0xea, 0x33, 0x6a, 0xaa, 0x80, 0xd5, 0x59, 0x6b, 0xee, 0x46, 0x64, 0x71, 0x57, 0x39, 0x86,
- 0x31, 0x9c, 0xe4, 0x83, 0x3c, 0x58, 0x72, 0x46, 0x64, 0x40, 0xf7, 0xc6, 0xae, 0xab, 0x5c, 0xbc,
- 0xb9, 0x20, 0x9d, 0xf9, 0x96, 0x49, 0x38, 0x22, 0x57, 0x9f, 0x0b, 0xda, 0xa7, 0x21, 0xf5, 0x6c,
- 0x1a, 0x27, 0x0b, 0x0f, 0x32, 0x9c, 0xf0, 0x14, 0x6f, 0x74, 0x0f, 0xae, 0x06, 0xa1, 0xe3, 0x4b,
- 0x55, 0xbb, 0x84, 0xa9, 0x28, 0x5f, 0x4b, 0x07, 0xec, 0xbd, 0x2c, 0x01, 0x9e, 0x1e, 0x83, 0x6e,
- 0x42, 0xd5, 0x00, 0xe5, 0x35, 0x48, 0x49, 0xb7, 0x21, 0x34, 0x0c, 0x47, 0xd8, 0x95, 0xf7, 0xe1,
- 0xea, 0x94, 0xca, 0xcf, 0x74, 0xe9, 0x67, 0x01, 0xc4, 0xfd, 0x50, 0xf4, 0x03, 0x28, 0x31, 0x4e,
- 0x42, 0x53, 0x0b, 0x47, 0x99, 0xb1, 0x25, 0x80, 0x58, 0xe1, 0x44, 0xbd, 0xcc, 0xb8, 0x1f, 0xe8,
- 0x63, 0x17, 0xd7, 0x1f, 0xdc, 0x0f, 0xb0, 0xc4, 0x34, 0xfe, 0x37, 0x0f, 0x15, 0x13, 0xc0, 0x58,
- 0x22, 0x83, 0xcc, 0xcd, 0xdb, 0x86, 0xd2, 0x4c, 0x5f, 0x9a, 0x48, 0xa6, 0xdd, 0x7c, 0xfe, 0xc2,
- 0xdd, 0xfc, 0x21, 0x94, 0x03, 0xe9, 0x44, 0xb5, 0x63, 0xb9, 0x37, 0xbf, 0x6c, 0xc9, 0x4e, 0xc5,
- 0x48, 0xf5, 0x1b, 0x6b, 0x11, 0x8d, 0x6f, 0x73, 0xb0, 0x94, 0x9d, 0x21, 0x3a, 0x84, 0x02, 0x0b,
- 0x6d, 0xad, 0xf1, 0xbd, 0xf3, 0x5b, 0xba, 0x8a, 0xcf, 0xea, 0x5a, 0xc5, 0x0a, 0x6d, 0x2c, 0xa4,
- 0x08, 0x8b, 0xe8, 0x51, 0xc6, 0xb3, 0x16, 0xb1, 0x45, 0x19, 0xc7, 0x12, 0x83, 0x3a, 0xd3, 0x71,
- 0xbc, 0x39, 0x2b, 0x8e, 0xbf, 0x95, 0x95, 0x37, 0x2b, 0x8a, 0x37, 0xfe, 0x33, 0x0f, 0x6f, 0xce,
- 0x9e, 0x18, 0xfa, 0x25, 0x5c, 0x89, 0x93, 0xf8, 0xc4, 0x93, 0xef, 0xe8, 0x5a, 0x75, 0x2b, 0x85,
- 0xc5, 0x19, 0x6a, 0x11, 0x38, 0x75, 0x77, 0xde, 0xbc, 0xfb, 0x4e, 0x5c, 0x9d, 0x6c, 0x46, 0x18,
- 0x9c, 0xa0, 0x42, 0x2d, 0x58, 0xd4, 0x5f, 0xdd, 0x64, 0xad, 0x94, 0xb8, 0xbc, 0xdc, 0x4c, 0xa3,
- 0x71, 0x96, 0x5e, 0x24, 0x8a, 0x22, 0xc0, 0x09, 0x99, 0x99, 0x44, 0x71, 0x4b, 0x81, 0xb1, 0xc1,
- 0x8b, 0x32, 0x42, 0xfc, 0x8c, 0x44, 0x95, 0xd2, 0x65, 0xc4, 0x56, 0x02, 0x87, 0x53, 0x94, 0xf1,
- 0x03, 0x2b, 0x55, 0x79, 0x4c, 0x3d, 0xb0, 0x6a, 0x7c, 0x93, 0x83, 0xcb, 0x29, 0x7b, 0x43, 0x7d,
- 0x28, 0x1c, 0x6e, 0x98, 0x8a, 0x61, 0xe7, 0x1c, 0xdb, 0x30, 0xca, 0x82, 0x76, 0x36, 0x18, 0x16,
- 0x02, 0xd0, 0x27, 0x51, 0x71, 0x32, 0xf7, 0xbb, 0x8b, 0x64, 0x0e, 0xa3, 0x73, 0xca, 0x74, 0x9d,
- 0xb2, 0x1d, 0x2d, 0xd2, 0x7a, 0xe6, 0x70, 0x7b, 0x88, 0xde, 0x82, 0x02, 0xf1, 0x26, 0x32, 0xcd,
- 0xa9, 0xa9, 0x79, 0xb5, 0xbc, 0x09, 0x16, 0x30, 0x89, 0x72, 0x5d, 0xdd, 0xb0, 0x55, 0x28, 0xd7,
- 0xc5, 0x02, 0xd6, 0xf8, 0x47, 0x80, 0xc5, 0x8c, 0x3f, 0x3a, 0x45, 0x0b, 0x58, 0xd9, 0x57, 0xcf,
- 0x51, 0x91, 0x6e, 0xda, 0xbe, 0x34, 0x06, 0x27, 0xa8, 0xd0, 0x40, 0x6d, 0x82, 0x72, 0x25, 0x9d,
- 0xb9, 0x34, 0x93, 0x29, 0x2f, 0x32, 0xbb, 0xf0, 0x59, 0x0e, 0xea, 0x24, 0xf1, 0xfe, 0x5c, 0xdf,
- 0x47, 0x3e, 0x9a, 0x27, 0xc9, 0x9f, 0x7a, 0x7a, 0xaf, 0x9e, 0x52, 0x24, 0x11, 0x38, 0x25, 0x14,
- 0xd9, 0x50, 0x1c, 0x72, 0x6e, 0x9e, 0x1d, 0x6f, 0x9f, 0x4b, 0x2f, 0x53, 0x35, 0xdb, 0x05, 0x00,
- 0x4b, 0xe6, 0xe8, 0x19, 0xd4, 0xc8, 0x33, 0xa6, 0xfe, 0x2c, 0xa2, 0xdf, 0x23, 0xcf, 0x53, 0xcb,
- 0x64, 0xfe, 0x77, 0xa2, 0xef, 0x66, 0x0d, 0x14, 0xc7, 0xb2, 0x50, 0x08, 0x65, 0x5b, 0xbe, 0x73,
- 0xd5, 0x2d, 0xe1, 0x7b, 0xe7, 0xf4, 0x5e, 0xb6, 0x7d, 0x55, 0xd4, 0x0f, 0x29, 0x10, 0xd6, 0x92,
- 0xd0, 0x00, 0x4a, 0x87, 0xa4, 0x7f, 0x48, 0x74, 0xb7, 0x68, 0x8e, 0xc3, 0x95, 0xec, 0x0f, 0x2a,
- 0x07, 0x22, 0x21, 0x58, 0xf1, 0x17, 0x5b, 0xe7, 0x11, 0xce, 0xf4, 0x7b, 0x93, 0x39, 0xb6, 0x2e,
- 0xd1, 0x4c, 0x51, 0x5b, 0x27, 0x00, 0x58, 0x32, 0x17, 0xab, 0x91, 0xd5, 0xb8, 0x4c, 0x8d, 0xe6,
- 0x73, 0x15, 0x89, 0xdb, 0x0a, 0xb5, 0x1a, 0x09, 0xc1, 0x8a, 0xbf, 0xb0, 0x11, 0xdf, 0x34, 0x0b,
- 0x64, 0x4f, 0x69, 0x2e, 0x1b, 0xc9, 0xf6, 0x1d, 0x94, 0x8d, 0x44, 0x50, 0x1c, 0xcb, 0x42, 0x1f,
- 0x41, 0xc1, 0xf5, 0x07, 0xcb, 0x97, 0xe7, 0xbd, 0x26, 0x8e, 0x9b, 0x5c, 0xea, 0xa0, 0x77, 0xfc,
- 0x01, 0x16, 0x9c, 0xd1, 0x18, 0xca, 0x4c, 0xfa, 0xbe, 0xe5, 0xfa, 0x39, 0xe5, 0x27, 0xca, 0x95,
- 0xb6, 0xaf, 0xe9, 0x7b, 0x35, 0xf3, 0xd6, 0x47, 0x42, 0xb1, 0x16, 0xd6, 0xb0, 0x61, 0x21, 0xf1,
- 0x97, 0x83, 0x53, 0x3c, 0x20, 0xbe, 0x05, 0x70, 0x44, 0x43, 0xa7, 0x3f, 0xd9, 0xa4, 0x21, 0xd7,
- 0x2f, 0xe5, 0x23, 0x6f, 0xf9, 0x24, 0xc2, 0xe0, 0x04, 0x55, 0xbb, 0xf9, 0xc5, 0xd7, 0xab, 0x97,
- 0xbe, 0xfc, 0x7a, 0xf5, 0xd2, 0x57, 0x5f, 0xaf, 0x5e, 0xfa, 0xf4, 0x64, 0x35, 0xf7, 0xc5, 0xc9,
- 0x6a, 0xee, 0xcb, 0x93, 0xd5, 0xdc, 0x57, 0x27, 0xab, 0xb9, 0xff, 0x3e, 0x59, 0xcd, 0xfd, 0xe5,
- 0x37, 0xab, 0x97, 0x7e, 0xaf, 0x6a, 0x16, 0xf0, 0xab, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0xdb,
- 0x3b, 0xaa, 0xef, 0x37, 0x00, 0x00,
+ 0xb5, 0xe6, 0x9f, 0x3c, 0xa2, 0x2c, 0x79, 0x62, 0xe7, 0x29, 0x7a, 0x89, 0x64, 0x30, 0x78, 0x79,
+ 0x4e, 0x90, 0x50, 0x89, 0x9d, 0xf7, 0xa2, 0xf8, 0x3d, 0x24, 0x21, 0x25, 0xf9, 0x27, 0xda, 0x52,
+ 0xe6, 0x52, 0x36, 0xf0, 0x5e, 0x01, 0xe7, 0xea, 0x72, 0x48, 0xde, 0xe8, 0xf2, 0xde, 0x9b, 0x3b,
+ 0x43, 0xb9, 0x5c, 0xb4, 0x0d, 0x10, 0x74, 0x57, 0x34, 0x05, 0xba, 0xe9, 0xaa, 0xed, 0xa6, 0xbb,
+ 0x2e, 0xba, 0x2f, 0xd0, 0xa2, 0x5d, 0x65, 0x99, 0x16, 0x28, 0x90, 0x45, 0x21, 0x34, 0xca, 0xa2,
+ 0xcb, 0x20, 0x40, 0x57, 0xde, 0xb4, 0x98, 0xdf, 0xfd, 0x91, 0x8e, 0x25, 0x53, 0x90, 0x77, 0xbc,
+ 0xe7, 0x9c, 0x39, 0x67, 0xe6, 0xcc, 0x99, 0xf3, 0x99, 0x33, 0x84, 0x1b, 0x3d, 0x9b, 0xf5, 0x87,
+ 0xbb, 0x75, 0xcb, 0x1b, 0xac, 0x98, 0x41, 0xcf, 0xf3, 0x03, 0xef, 0x43, 0xf1, 0xe3, 0x35, 0xb2,
+ 0x4f, 0x5c, 0x46, 0x57, 0xfc, 0xbd, 0xde, 0x8a, 0xe9, 0xdb, 0x74, 0x85, 0x12, 0x97, 0x7a, 0xc1,
+ 0xca, 0xfe, 0x1b, 0xa6, 0xe3, 0xf7, 0xcd, 0x37, 0x56, 0x7a, 0xc4, 0x25, 0x81, 0xc9, 0x48, 0xa7,
+ 0xee, 0x07, 0x1e, 0xf3, 0xd0, 0x6a, 0xc4, 0xa9, 0xae, 0x39, 0x89, 0x1f, 0xf7, 0x25, 0xa7, 0xba,
+ 0xbf, 0xd7, 0xab, 0x73, 0x4e, 0x75, 0xc9, 0xa9, 0xae, 0x39, 0x2d, 0xbe, 0x7b, 0xe4, 0x39, 0x58,
+ 0xde, 0x60, 0xe0, 0xb9, 0x69, 0xd1, 0x8b, 0xaf, 0xc5, 0x18, 0xf4, 0xbc, 0x9e, 0xb7, 0x22, 0xc0,
+ 0xbb, 0xc3, 0xae, 0xf8, 0x12, 0x1f, 0xe2, 0x97, 0x22, 0xaf, 0xed, 0xad, 0xd2, 0xba, 0xed, 0x71,
+ 0x96, 0x2b, 0x96, 0x17, 0x90, 0x95, 0xfd, 0xb1, 0xd5, 0x2c, 0xbe, 0x19, 0xd1, 0x0c, 0x4c, 0xab,
+ 0x6f, 0xbb, 0x24, 0x18, 0x45, 0xf3, 0x18, 0x10, 0x66, 0x4e, 0x1a, 0xb5, 0xf2, 0xa8, 0x51, 0xc1,
+ 0xd0, 0x65, 0xf6, 0x80, 0x8c, 0x0d, 0xf8, 0xef, 0xc7, 0x0d, 0xa0, 0x56, 0x9f, 0x0c, 0xcc, 0xf4,
+ 0xb8, 0xda, 0x4f, 0xf3, 0x30, 0xdf, 0xb8, 0x67, 0xb4, 0xcc, 0xc1, 0x6e, 0xc7, 0x6c, 0x07, 0x76,
+ 0xaf, 0x47, 0x02, 0xb4, 0x0a, 0xd5, 0xee, 0xd0, 0xb5, 0x98, 0xed, 0xb9, 0x77, 0xcc, 0x01, 0x59,
+ 0xc8, 0x5c, 0xcc, 0x5c, 0xaa, 0x34, 0xcf, 0x7f, 0x76, 0xb0, 0x7c, 0xe6, 0xf0, 0x60, 0xb9, 0x7a,
+ 0x2d, 0x86, 0xc3, 0x09, 0x4a, 0x84, 0xa1, 0x62, 0x5a, 0x16, 0xa1, 0x74, 0x93, 0x8c, 0x16, 0xb2,
+ 0x17, 0x33, 0x97, 0x66, 0x2e, 0xff, 0x47, 0x5d, 0x4e, 0x8d, 0x6f, 0x59, 0x9d, 0x6b, 0xa9, 0xbe,
+ 0xff, 0x46, 0xdd, 0x20, 0x56, 0x40, 0xd8, 0x26, 0x19, 0x19, 0xc4, 0x21, 0x16, 0xf3, 0x82, 0xe6,
+ 0xec, 0xe1, 0xc1, 0x72, 0xa5, 0xa1, 0xc7, 0xe2, 0x88, 0x0d, 0xe7, 0x49, 0x35, 0xf9, 0x42, 0xee,
+ 0xd8, 0x3c, 0x43, 0x30, 0x8e, 0xd8, 0xa0, 0x97, 0xa0, 0x18, 0x90, 0x9e, 0xed, 0xb9, 0x0b, 0x79,
+ 0xb1, 0xb6, 0xb3, 0x6a, 0x6d, 0x45, 0x2c, 0xa0, 0x58, 0x61, 0xd1, 0x10, 0x4a, 0xbe, 0x39, 0x72,
+ 0x3c, 0xb3, 0xb3, 0x50, 0xb8, 0x98, 0xbb, 0x34, 0x73, 0xf9, 0x56, 0xfd, 0x49, 0xad, 0xb3, 0xae,
+ 0xb4, 0xbb, 0x6d, 0x06, 0xe6, 0x80, 0x30, 0x12, 0x34, 0xe7, 0x94, 0xd0, 0xd2, 0xb6, 0x14, 0x81,
+ 0xb5, 0x2c, 0xf4, 0x7d, 0x00, 0x5f, 0x93, 0xd1, 0x85, 0xe2, 0x89, 0x4b, 0x46, 0x4a, 0x32, 0x84,
+ 0x20, 0x8a, 0x63, 0x12, 0x6b, 0x07, 0x39, 0x78, 0xa6, 0x11, 0xf4, 0xbc, 0x7b, 0x5e, 0xb0, 0xd7,
+ 0x75, 0xbc, 0x07, 0xda, 0x30, 0x5c, 0x28, 0x52, 0x6f, 0x18, 0x58, 0xd2, 0x24, 0xa6, 0x9a, 0x53,
+ 0x23, 0x60, 0x76, 0xd7, 0xb4, 0x58, 0xcb, 0xb3, 0x4c, 0x6e, 0x3e, 0x4d, 0xe0, 0xea, 0x37, 0x04,
+ 0x77, 0xac, 0xa4, 0xa0, 0x1b, 0x50, 0xf1, 0x7c, 0x6e, 0xaf, 0x7c, 0xa7, 0xb2, 0x62, 0xa7, 0x5e,
+ 0x51, 0x53, 0xaf, 0x6c, 0x69, 0xc4, 0xc3, 0x83, 0xe5, 0x0b, 0xf1, 0xc9, 0x86, 0x08, 0x1c, 0x0d,
+ 0x4e, 0x69, 0x34, 0x77, 0xda, 0x1a, 0x45, 0x3f, 0xca, 0xc0, 0xf9, 0x5e, 0xe0, 0x0d, 0xfd, 0xbb,
+ 0x24, 0xa0, 0x7c, 0x6e, 0x44, 0x29, 0x32, 0x2f, 0x14, 0x79, 0x35, 0x66, 0xd0, 0xe1, 0xf9, 0x8d,
+ 0xc4, 0x73, 0x37, 0xc1, 0x4d, 0xfc, 0xfa, 0x04, 0x0e, 0xcd, 0xe7, 0x95, 0xe8, 0xf3, 0x93, 0xb0,
+ 0x78, 0xa2, 0xd4, 0xda, 0x37, 0xfc, 0xd8, 0xa7, 0x76, 0x00, 0x19, 0x90, 0xa5, 0x57, 0xd4, 0xce,
+ 0xfe, 0xcf, 0xd1, 0x75, 0x23, 0x7d, 0x69, 0xdd, 0xb8, 0xa2, 0x19, 0x36, 0x8b, 0x87, 0x07, 0xcb,
+ 0x59, 0xe3, 0x0a, 0xce, 0xd2, 0x2b, 0xa8, 0x06, 0x45, 0xdb, 0x75, 0x6c, 0x97, 0xa8, 0xfd, 0x13,
+ 0xdb, 0x7c, 0x53, 0x40, 0xb0, 0xc2, 0xa0, 0x0e, 0xe4, 0xbb, 0xb6, 0x43, 0xd4, 0xe1, 0xbe, 0xf6,
+ 0xe4, 0xdb, 0x72, 0xcd, 0x76, 0x48, 0x38, 0x8b, 0xf2, 0xe1, 0xc1, 0x72, 0x9e, 0x43, 0xb0, 0xe0,
+ 0x8e, 0x3e, 0x80, 0xdc, 0x30, 0x70, 0x94, 0xc2, 0x37, 0x9e, 0x5c, 0xc8, 0x0e, 0x6e, 0x85, 0x32,
+ 0x4a, 0x87, 0x07, 0xcb, 0xb9, 0x1d, 0xdc, 0xc2, 0x9c, 0x35, 0xda, 0x81, 0x8a, 0xe5, 0xb9, 0x5d,
+ 0xbb, 0x37, 0x30, 0xfd, 0x85, 0x82, 0x90, 0x73, 0x69, 0x92, 0xa7, 0x5a, 0x13, 0x44, 0xb7, 0x4d,
+ 0x7f, 0xcc, 0x59, 0xad, 0xe9, 0xe1, 0x38, 0xe2, 0xc4, 0x27, 0xde, 0xb3, 0xd9, 0x42, 0x71, 0xda,
+ 0x89, 0x5f, 0xb7, 0x59, 0x72, 0xe2, 0xd7, 0x6d, 0x86, 0x39, 0x6b, 0x64, 0x41, 0x39, 0xd0, 0x06,
+ 0x59, 0x12, 0x62, 0xde, 0x3e, 0xf6, 0xfe, 0x87, 0xf6, 0x58, 0x3d, 0x3c, 0x58, 0x2e, 0x87, 0xf6,
+ 0x17, 0x32, 0xae, 0xfd, 0xa3, 0x00, 0xb3, 0x6b, 0x43, 0xca, 0xbc, 0x81, 0x76, 0x27, 0x2b, 0xdc,
+ 0xb3, 0x07, 0xfb, 0x24, 0xd8, 0xc1, 0x2d, 0x15, 0x64, 0xce, 0xe9, 0xe3, 0x6d, 0x68, 0x04, 0x8e,
+ 0x68, 0xb8, 0xdb, 0xa6, 0xc4, 0x1a, 0x06, 0xd2, 0x98, 0xca, 0x91, 0xdb, 0x36, 0x04, 0x14, 0x2b,
+ 0x2c, 0xda, 0x01, 0xb0, 0x48, 0xc0, 0xa4, 0xeb, 0x3f, 0x5e, 0xcc, 0x38, 0xcb, 0x0f, 0xf1, 0x5a,
+ 0x38, 0x18, 0xc7, 0x18, 0xa1, 0x5b, 0x80, 0xe4, 0x5c, 0x78, 0xac, 0xdb, 0xda, 0x27, 0x41, 0x60,
+ 0x77, 0x88, 0x8a, 0x20, 0x8b, 0x6a, 0x2a, 0xc8, 0x18, 0xa3, 0xc0, 0x13, 0x46, 0x21, 0x0a, 0x79,
+ 0xea, 0x13, 0x4b, 0x85, 0x95, 0xf7, 0x9f, 0x7c, 0x57, 0x13, 0x2a, 0xad, 0x1b, 0x3e, 0xb1, 0x36,
+ 0x5c, 0x16, 0x8c, 0x9a, 0x55, 0x35, 0xa1, 0x3c, 0x07, 0x61, 0x21, 0xec, 0x69, 0xc7, 0x95, 0x78,
+ 0x38, 0x2d, 0x9d, 0x62, 0x38, 0x6d, 0x42, 0x95, 0xef, 0x22, 0xf7, 0x05, 0xdb, 0x26, 0xeb, 0x2f,
+ 0x94, 0xc5, 0x8e, 0x2d, 0x29, 0xfa, 0x67, 0xd7, 0x89, 0x1f, 0x10, 0x8b, 0x27, 0x45, 0x6b, 0x31,
+ 0x2a, 0x9c, 0x18, 0xb3, 0xf8, 0x16, 0x54, 0x42, 0xdd, 0xa2, 0x79, 0xc8, 0xed, 0x91, 0x91, 0x34,
+ 0x59, 0xcc, 0x7f, 0xa2, 0xf3, 0x50, 0xd8, 0x37, 0x9d, 0xa1, 0xf2, 0x72, 0x58, 0x7e, 0x5c, 0xcd,
+ 0xae, 0x66, 0x6a, 0xbf, 0xcf, 0x00, 0xac, 0x9b, 0xcc, 0xbc, 0x66, 0x3b, 0x8c, 0x04, 0xe8, 0x22,
+ 0xe4, 0x7d, 0x3e, 0x07, 0x69, 0xee, 0xe1, 0x26, 0x09, 0x89, 0x02, 0x83, 0x5e, 0x85, 0x3c, 0x1b,
+ 0xf9, 0xda, 0x5f, 0x2e, 0x68, 0x8a, 0xf6, 0xc8, 0x27, 0x0f, 0x0f, 0x96, 0xcb, 0xb7, 0x8c, 0xad,
+ 0x3b, 0xfc, 0x37, 0x16, 0x54, 0x68, 0x59, 0x0b, 0xe6, 0x31, 0xad, 0xd2, 0xac, 0x1c, 0x1e, 0x2c,
+ 0x17, 0xee, 0x72, 0x80, 0x9a, 0x03, 0x7a, 0x0f, 0xc0, 0xf2, 0x06, 0x7c, 0x13, 0x98, 0x17, 0x28,
+ 0x63, 0xbd, 0xa8, 0xf7, 0x69, 0x2d, 0xc4, 0x3c, 0x4c, 0x7c, 0xe1, 0xd8, 0x98, 0x9a, 0x0d, 0x73,
+ 0xeb, 0xc4, 0x27, 0x6e, 0x87, 0xb8, 0xd6, 0x48, 0x04, 0x19, 0xbe, 0x0a, 0x37, 0xca, 0x0c, 0xc3,
+ 0x55, 0x88, 0x8c, 0x50, 0x60, 0xd0, 0x9b, 0x50, 0xed, 0xe8, 0x41, 0x36, 0xa1, 0x0b, 0x59, 0x31,
+ 0xbd, 0x79, 0x9e, 0x3f, 0xae, 0xc7, 0xe0, 0x38, 0x41, 0x55, 0xfb, 0x79, 0x06, 0x0a, 0x1b, 0x7c,
+ 0xe3, 0xd1, 0x00, 0x4a, 0x96, 0xe7, 0x32, 0xf2, 0x5d, 0xa6, 0x22, 0xd2, 0x14, 0x61, 0x41, 0x70,
+ 0x5c, 0x93, 0xdc, 0x9a, 0x33, 0xdc, 0x44, 0xd4, 0x07, 0xd6, 0x32, 0xd0, 0xf3, 0x90, 0xef, 0x98,
+ 0xcc, 0x14, 0x4a, 0xaf, 0xca, 0xd0, 0xc1, 0x37, 0x0d, 0x0b, 0xe8, 0xd5, 0xf2, 0xcf, 0x7e, 0xb9,
+ 0x7c, 0xe6, 0xe3, 0xbf, 0x5e, 0x3c, 0x53, 0xfb, 0x26, 0x0b, 0xd5, 0x38, 0x3b, 0xb4, 0x08, 0x59,
+ 0xbb, 0xa3, 0xf4, 0x00, 0x4a, 0x0f, 0xd9, 0x9b, 0xeb, 0x38, 0x6b, 0x77, 0x84, 0xbb, 0x92, 0x4e,
+ 0x35, 0x9b, 0xcc, 0x32, 0x53, 0x69, 0xce, 0x7f, 0xc1, 0x0c, 0x3f, 0x9e, 0xfb, 0x32, 0x48, 0x0b,
+ 0x7f, 0x55, 0x69, 0x3e, 0xa3, 0x88, 0x67, 0xb8, 0xd9, 0xe9, 0xf8, 0x1d, 0xa7, 0xe3, 0x9b, 0x20,
+ 0x0c, 0x25, 0x9f, 0xdc, 0x84, 0x98, 0x71, 0x34, 0x60, 0x8e, 0xcf, 0x5f, 0x2c, 0xd2, 0x65, 0x82,
+ 0xb8, 0x20, 0x88, 0xff, 0x4d, 0x11, 0xcf, 0xf1, 0x45, 0xae, 0x49, 0xb4, 0x18, 0x97, 0xa6, 0x47,
+ 0x2f, 0x43, 0x89, 0x0e, 0x77, 0x3f, 0x24, 0x96, 0x0c, 0x40, 0x95, 0xe8, 0x98, 0x19, 0x12, 0x8c,
+ 0x35, 0x1e, 0xb5, 0x20, 0xcf, 0x4b, 0x0d, 0x15, 0x41, 0x5e, 0x39, 0x5a, 0x4a, 0xd3, 0xb6, 0x07,
+ 0x24, 0x36, 0x77, 0x9b, 0x1b, 0x10, 0xe7, 0x12, 0xd3, 0xf9, 0x2f, 0xb2, 0x30, 0x27, 0x74, 0x1e,
+ 0x59, 0xe1, 0x11, 0x0c, 0xb0, 0x01, 0x73, 0xc2, 0x2e, 0xa4, 0xae, 0x45, 0x1d, 0x93, 0x4d, 0xae,
+ 0x7d, 0x23, 0x89, 0xc6, 0x69, 0x7a, 0x1e, 0x9f, 0x04, 0x48, 0x0c, 0xce, 0x25, 0xe3, 0xd3, 0x86,
+ 0x46, 0xe0, 0x88, 0x06, 0xed, 0x43, 0xa9, 0x2b, 0x8e, 0x39, 0x55, 0x69, 0xc6, 0xd6, 0x94, 0x46,
+ 0x1b, 0xad, 0x58, 0xba, 0x0f, 0x69, 0xbd, 0xf2, 0x37, 0xc5, 0x5a, 0x58, 0xed, 0xcf, 0x59, 0xb8,
+ 0x30, 0x91, 0x1e, 0xed, 0xaa, 0x3d, 0x91, 0x67, 0x68, 0x7d, 0x0a, 0x77, 0x6b, 0x0f, 0x88, 0x9a,
+ 0x43, 0x39, 0xb9, 0x53, 0xf1, 0xa3, 0x9a, 0x3d, 0x85, 0xa3, 0xda, 0x55, 0x47, 0x55, 0x26, 0xf1,
+ 0x53, 0x2c, 0x29, 0xf2, 0xca, 0x91, 0x01, 0x45, 0x87, 0xbe, 0xf6, 0x3a, 0x54, 0xe3, 0xf9, 0xe4,
+ 0xe3, 0x3d, 0x77, 0xed, 0xeb, 0x3c, 0xcc, 0xc4, 0x92, 0x2c, 0xf4, 0x82, 0xcc, 0x38, 0xe5, 0x80,
+ 0x19, 0x35, 0x20, 0x4a, 0x17, 0xdf, 0x81, 0xb3, 0x96, 0xe3, 0xb9, 0x64, 0xdd, 0x0e, 0x44, 0xee,
+ 0x31, 0x52, 0x06, 0xfa, 0xac, 0xa2, 0x3c, 0xbb, 0x96, 0xc0, 0xe2, 0x14, 0x35, 0xb2, 0xa0, 0x60,
+ 0x05, 0xa4, 0x43, 0x55, 0x82, 0xd3, 0x9c, 0x2a, 0x33, 0x5c, 0xe3, 0x9c, 0x64, 0xf8, 0x10, 0x3f,
+ 0xb1, 0xe4, 0x8d, 0xfe, 0x1f, 0xaa, 0x94, 0xf6, 0x45, 0x86, 0x24, 0x92, 0xa9, 0xfc, 0x71, 0x92,
+ 0x29, 0xe1, 0xee, 0x0d, 0xe3, 0x46, 0x38, 0x1c, 0x27, 0x98, 0xa1, 0x57, 0xa1, 0xdc, 0xd5, 0x41,
+ 0x59, 0x3a, 0xa6, 0x79, 0xb5, 0xf6, 0x72, 0x18, 0x86, 0x43, 0x0a, 0xee, 0x4e, 0x77, 0x03, 0xd3,
+ 0xb5, 0xfa, 0xca, 0x13, 0x85, 0xee, 0xb4, 0x29, 0xa0, 0x58, 0x61, 0xb9, 0xda, 0x99, 0xd9, 0x13,
+ 0x6e, 0x28, 0xa6, 0xf6, 0xb6, 0xd9, 0xc3, 0x1c, 0xce, 0xd1, 0x01, 0xe9, 0xaa, 0x24, 0x20, 0x44,
+ 0x63, 0xd2, 0xc5, 0x1c, 0x8e, 0x06, 0x50, 0x0c, 0xc8, 0xc0, 0x63, 0x64, 0xa1, 0x22, 0x96, 0x7a,
+ 0x73, 0x2a, 0xb5, 0x62, 0xc1, 0x4a, 0xa6, 0xf5, 0xb2, 0xf6, 0x91, 0x10, 0xac, 0x84, 0xa0, 0xff,
+ 0x05, 0x90, 0x2a, 0x11, 0x4a, 0x00, 0x31, 0xa9, 0xb0, 0xa2, 0x8b, 0x32, 0x13, 0xa9, 0x44, 0xa1,
+ 0x90, 0x18, 0x7d, 0xed, 0xd7, 0x19, 0x28, 0xeb, 0xcd, 0x43, 0x5b, 0x50, 0x1e, 0x52, 0x12, 0x84,
+ 0x7e, 0xf1, 0xc8, 0xdb, 0x24, 0x32, 0xf6, 0x1d, 0x35, 0x14, 0x87, 0x4c, 0x38, 0x43, 0xdf, 0xa4,
+ 0xf4, 0x81, 0x17, 0x74, 0x8e, 0x77, 0x99, 0x23, 0x18, 0x6e, 0xab, 0xa1, 0x38, 0x64, 0x52, 0x7b,
+ 0x1f, 0xe6, 0x52, 0x3a, 0x39, 0x82, 0x23, 0x7f, 0x1e, 0xf2, 0xc3, 0xc0, 0xd1, 0x19, 0x84, 0x70,
+ 0x3e, 0x3b, 0xb8, 0x65, 0x60, 0x01, 0xad, 0x7d, 0x53, 0x80, 0x99, 0x1b, 0xed, 0xf6, 0xb6, 0xae,
+ 0x29, 0x1e, 0x73, 0xe6, 0x62, 0x19, 0x68, 0xf6, 0x14, 0x33, 0xd0, 0x1d, 0xc8, 0x31, 0x47, 0x1f,
+ 0xd4, 0xab, 0xc7, 0xae, 0xad, 0xda, 0x2d, 0x43, 0x99, 0x90, 0xa8, 0xdb, 0xda, 0x2d, 0x03, 0x73,
+ 0x7e, 0xfc, 0x44, 0x0c, 0x08, 0xeb, 0x7b, 0x9d, 0xf4, 0x35, 0xd6, 0x6d, 0x01, 0xc5, 0x0a, 0x9b,
+ 0xca, 0xfb, 0x0b, 0xa7, 0x9e, 0xf7, 0xbf, 0x0c, 0x25, 0x1e, 0x29, 0xbc, 0xa1, 0x4c, 0x22, 0x72,
+ 0x91, 0xa6, 0xda, 0x12, 0x8c, 0x35, 0x1e, 0xf5, 0xa0, 0xb2, 0x6b, 0x52, 0xdb, 0x6a, 0x0c, 0x59,
+ 0x5f, 0x65, 0x12, 0xc7, 0xd7, 0x57, 0x53, 0x73, 0x90, 0x55, 0x75, 0xf8, 0x89, 0x23, 0xde, 0xe8,
+ 0x7b, 0x50, 0xea, 0x13, 0xb3, 0xc3, 0x15, 0x52, 0x16, 0x0a, 0xc1, 0x4f, 0xae, 0x90, 0x98, 0x01,
+ 0xd6, 0x6f, 0x48, 0xa6, 0xb2, 0x08, 0x0b, 0xd7, 0xa9, 0xa0, 0x58, 0xcb, 0x5c, 0xbc, 0x0a, 0xd5,
+ 0x38, 0xe5, 0xb1, 0x4a, 0x8a, 0x1f, 0xe6, 0xe0, 0xdc, 0xe6, 0xaa, 0xa1, 0x6b, 0xec, 0x6d, 0xcf,
+ 0xb1, 0xad, 0x11, 0xfa, 0x01, 0x14, 0x1d, 0x73, 0x97, 0x38, 0x74, 0x21, 0x23, 0xd6, 0x73, 0xef,
+ 0xc9, 0xd7, 0x33, 0xc6, 0xbc, 0xde, 0x12, 0x9c, 0xe5, 0xa2, 0x42, 0x2b, 0x93, 0x40, 0xac, 0xc4,
+ 0xa2, 0xfb, 0x50, 0xda, 0x35, 0xad, 0x3d, 0xaf, 0xdb, 0x55, 0xde, 0x62, 0xf5, 0x09, 0x36, 0x4e,
+ 0x8c, 0x97, 0x91, 0x5f, 0x7d, 0x60, 0xcd, 0x15, 0x19, 0x70, 0x81, 0x04, 0x81, 0x17, 0x6c, 0xb9,
+ 0x0a, 0xa5, 0xac, 0x47, 0x9c, 0xab, 0x72, 0xf3, 0x05, 0x35, 0xaf, 0x0b, 0x1b, 0x93, 0x88, 0xf0,
+ 0xe4, 0xb1, 0x8b, 0x6f, 0xc3, 0x4c, 0x6c, 0x71, 0xc7, 0xda, 0x87, 0xbf, 0x17, 0xa0, 0xba, 0x69,
+ 0x76, 0xf7, 0xcc, 0x23, 0x3a, 0x9f, 0x17, 0xa1, 0xc0, 0x3c, 0xdf, 0xb6, 0x54, 0x9c, 0x9f, 0x55,
+ 0x04, 0x85, 0x36, 0x07, 0x62, 0x89, 0xe3, 0x49, 0xa7, 0x6f, 0x06, 0xcc, 0x66, 0xba, 0x14, 0x28,
+ 0x44, 0x49, 0xe7, 0xb6, 0x46, 0xe0, 0x88, 0x26, 0x75, 0xb8, 0xf3, 0xa7, 0x7e, 0xb8, 0x57, 0xa1,
+ 0x1a, 0x90, 0x8f, 0x86, 0x76, 0x40, 0x3a, 0x0d, 0x6b, 0x8f, 0x8a, 0x40, 0x5e, 0x88, 0xba, 0x05,
+ 0x38, 0x86, 0xc3, 0x09, 0x4a, 0x1e, 0xfe, 0x79, 0x99, 0x19, 0x10, 0x4a, 0x85, 0x5f, 0x28, 0x47,
+ 0xe1, 0x7f, 0x4d, 0xc1, 0x71, 0x48, 0xc1, 0xd3, 0xa5, 0xae, 0x33, 0xa4, 0xfd, 0x6b, 0x9c, 0x07,
+ 0x4f, 0x71, 0x85, 0x7b, 0x28, 0x44, 0xe9, 0xd2, 0xb5, 0x04, 0x16, 0xa7, 0xa8, 0xb5, 0x0f, 0x2e,
+ 0x9f, 0xb0, 0x0f, 0x8e, 0x45, 0x94, 0xca, 0x29, 0x46, 0x94, 0x06, 0xcc, 0x85, 0x26, 0x60, 0xbb,
+ 0xbd, 0x4d, 0x32, 0x52, 0xc9, 0x43, 0x58, 0xde, 0x6c, 0x27, 0xd1, 0x38, 0x4d, 0xcf, 0xbd, 0xb2,
+ 0x2e, 0x39, 0x67, 0x92, 0xa5, 0x9d, 0x2e, 0x37, 0x35, 0xbe, 0xb6, 0x05, 0xd0, 0xf2, 0x7a, 0xda,
+ 0xcc, 0x1b, 0x30, 0x67, 0xbb, 0x8c, 0x04, 0xfb, 0xa6, 0x63, 0x10, 0xcb, 0x73, 0x3b, 0x54, 0x98,
+ 0x7c, 0x3e, 0x92, 0x7d, 0x33, 0x89, 0xc6, 0x69, 0xfa, 0xda, 0xaf, 0x72, 0x30, 0x73, 0xa7, 0xd1,
+ 0x36, 0x8e, 0x78, 0x72, 0x62, 0x55, 0x68, 0xf6, 0x31, 0x55, 0x68, 0x6c, 0x3f, 0x72, 0x4f, 0xad,
+ 0x65, 0x73, 0xfa, 0xa7, 0x50, 0x59, 0x77, 0xe1, 0x64, 0xad, 0xbb, 0xf6, 0x69, 0x1e, 0xe6, 0xb7,
+ 0x7c, 0xe2, 0xde, 0xeb, 0xdb, 0x74, 0x4f, 0x6f, 0xd6, 0x45, 0xc8, 0xf7, 0x3d, 0xca, 0xd2, 0x39,
+ 0xdb, 0x0d, 0x8f, 0x32, 0x2c, 0x30, 0x71, 0xd3, 0xca, 0x7e, 0xbb, 0x69, 0x71, 0x7f, 0xc7, 0xd3,
+ 0x3c, 0xea, 0x9b, 0xd6, 0x58, 0x91, 0x7d, 0x47, 0x23, 0x70, 0x44, 0x23, 0x7a, 0x8c, 0x43, 0xd6,
+ 0x6f, 0x7b, 0x7b, 0xc4, 0x3d, 0x5e, 0x39, 0x22, 0x7b, 0x8c, 0x7a, 0x2c, 0x8e, 0xd8, 0xa0, 0xcb,
+ 0x00, 0x66, 0xd4, 0xef, 0x94, 0xa5, 0x48, 0xa8, 0xf1, 0x46, 0xd4, 0xed, 0x8c, 0x51, 0xc5, 0x0d,
+ 0xad, 0xf8, 0xd4, 0x0c, 0xad, 0x74, 0xea, 0xbd, 0xc1, 0x3f, 0x66, 0xa1, 0x68, 0x08, 0x26, 0xe8,
+ 0x03, 0x28, 0x0f, 0x08, 0x33, 0x45, 0x35, 0x2e, 0x0b, 0x8e, 0xd7, 0x8f, 0x76, 0xe9, 0xb3, 0x25,
+ 0x8e, 0xea, 0x6d, 0xc2, 0xcc, 0x48, 0x5c, 0x04, 0xc3, 0x21, 0x57, 0x5e, 0xeb, 0x8b, 0x5b, 0xf2,
+ 0xec, 0xb4, 0xd7, 0x17, 0x72, 0xc6, 0x86, 0x4f, 0xac, 0x89, 0x17, 0xe3, 0x2e, 0x14, 0x29, 0x33,
+ 0xd9, 0x90, 0x4e, 0xdf, 0x83, 0x52, 0x92, 0x04, 0xb7, 0xd8, 0x8d, 0x9f, 0xf8, 0xc6, 0x4a, 0x4a,
+ 0xed, 0x4f, 0x19, 0x00, 0x49, 0xd8, 0xb2, 0x29, 0x43, 0xdf, 0x19, 0x53, 0x64, 0xfd, 0x68, 0x8a,
+ 0xe4, 0xa3, 0x85, 0x1a, 0xc3, 0xc0, 0xa9, 0x21, 0x31, 0x25, 0x12, 0x28, 0xd8, 0x8c, 0x0c, 0xa8,
+ 0xaa, 0x78, 0xde, 0x9b, 0x76, 0x6d, 0x51, 0xe2, 0x72, 0x93, 0xb3, 0xc5, 0x92, 0x7b, 0xed, 0x77,
+ 0x05, 0xbd, 0x26, 0xae, 0x58, 0xf4, 0x49, 0x26, 0x75, 0x03, 0x2c, 0xb3, 0xd2, 0x9b, 0x27, 0x76,
+ 0x23, 0x16, 0xa5, 0x18, 0x8f, 0xbe, 0x50, 0x46, 0x1e, 0x94, 0x99, 0xb4, 0x70, 0xbd, 0xfc, 0xc6,
+ 0xd4, 0x67, 0x25, 0x52, 0xb6, 0x02, 0x50, 0x1c, 0x0a, 0x41, 0x0e, 0x94, 0x19, 0x19, 0xf8, 0x8e,
+ 0xc9, 0xc8, 0xf4, 0xf7, 0x32, 0x6d, 0xc5, 0x49, 0x16, 0xd4, 0xfa, 0x0b, 0x87, 0x12, 0xd0, 0xa7,
+ 0x19, 0x98, 0xef, 0x24, 0xef, 0xe6, 0x75, 0xf0, 0x99, 0x42, 0xd1, 0xa9, 0xdb, 0xfe, 0xb0, 0x07,
+ 0x31, 0x9f, 0x42, 0x50, 0x3c, 0x26, 0x1c, 0xdd, 0x02, 0xa4, 0xf2, 0xec, 0x6b, 0xa6, 0xed, 0x90,
+ 0x0e, 0xf6, 0x86, 0x6e, 0x47, 0x78, 0xd4, 0x72, 0xd4, 0x23, 0xdb, 0x18, 0xa3, 0xc0, 0x13, 0x46,
+ 0xf1, 0xcc, 0x52, 0x4c, 0xb5, 0x39, 0xa4, 0xc2, 0x2f, 0x17, 0x93, 0xef, 0x50, 0x36, 0x62, 0x38,
+ 0x9c, 0xa0, 0x44, 0x57, 0xa0, 0x64, 0xd9, 0x81, 0x35, 0xb4, 0x99, 0xba, 0x06, 0x7a, 0x4e, 0x0d,
+ 0x3a, 0x17, 0x6b, 0xf6, 0x48, 0x02, 0xac, 0x29, 0x6b, 0x1e, 0x54, 0xe3, 0x87, 0x17, 0xdd, 0x0f,
+ 0x9d, 0x82, 0x3c, 0x93, 0x6f, 0x1d, 0xbf, 0x27, 0xfe, 0xed, 0x5e, 0xe0, 0xb7, 0x59, 0xa8, 0x1a,
+ 0x8e, 0x69, 0x85, 0x81, 0x35, 0xe9, 0xdb, 0x33, 0x4f, 0x21, 0x89, 0x00, 0x2a, 0xe6, 0x23, 0x62,
+ 0x6b, 0xf6, 0xd8, 0x7d, 0x53, 0x23, 0x1c, 0x8c, 0x63, 0x8c, 0x78, 0x36, 0x60, 0xf5, 0x4d, 0xd7,
+ 0x25, 0x8e, 0x0a, 0xf0, 0x61, 0x74, 0x5b, 0x93, 0x60, 0xac, 0xf1, 0x9c, 0x74, 0x40, 0x28, 0x35,
+ 0x7b, 0xba, 0xad, 0x11, 0x92, 0xde, 0x96, 0x60, 0xac, 0xf1, 0xb5, 0x7f, 0xe6, 0x01, 0x19, 0xcc,
+ 0x74, 0x3b, 0x66, 0xd0, 0xd9, 0x5c, 0x0d, 0x33, 0xc9, 0x47, 0xbe, 0xb4, 0xc8, 0x3c, 0x8d, 0x97,
+ 0x16, 0xb1, 0x27, 0x33, 0xd9, 0x53, 0x79, 0x32, 0x73, 0x27, 0xfe, 0x64, 0x46, 0x6a, 0xfb, 0xf5,
+ 0x49, 0x4f, 0x66, 0xfe, 0x7d, 0x73, 0xb8, 0x4b, 0x02, 0x97, 0x30, 0x42, 0xf5, 0x5c, 0x8f, 0xf0,
+ 0x70, 0xe6, 0xf4, 0xf3, 0xda, 0x2e, 0xcc, 0xfa, 0x26, 0xb3, 0xfa, 0x06, 0x0b, 0x4c, 0x46, 0x7a,
+ 0x23, 0x95, 0x9c, 0xbd, 0xa7, 0x86, 0xcd, 0x6e, 0xc7, 0x91, 0x0f, 0x0f, 0x96, 0xff, 0xf3, 0x51,
+ 0x0f, 0xe1, 0xd8, 0xc8, 0x27, 0xb4, 0x2e, 0xc8, 0x45, 0xa7, 0x2b, 0xc9, 0x96, 0x67, 0x80, 0x8e,
+ 0xbd, 0x4f, 0xb6, 0xa2, 0x56, 0x57, 0x39, 0x9a, 0x5b, 0x2b, 0xc4, 0xe0, 0x18, 0x55, 0x6d, 0x05,
+ 0xaa, 0xf2, 0x44, 0xab, 0x1b, 0x98, 0x65, 0x28, 0x98, 0x8e, 0xe3, 0x3d, 0x10, 0x27, 0xb7, 0x20,
+ 0x2f, 0xd3, 0x1b, 0x1c, 0x80, 0x25, 0xbc, 0xf6, 0x87, 0x12, 0x84, 0x5e, 0x1c, 0x59, 0x63, 0x41,
+ 0xff, 0xf8, 0x8f, 0x2e, 0x6e, 0x2b, 0x06, 0x32, 0x40, 0xe8, 0xaf, 0x58, 0xec, 0x57, 0x4f, 0x16,
+ 0x6c, 0x8b, 0x34, 0x2c, 0xcb, 0x1b, 0xaa, 0x5e, 0x56, 0x76, 0xfc, 0xc9, 0x42, 0x92, 0x02, 0x4f,
+ 0x18, 0x85, 0x6e, 0x89, 0xe7, 0x2d, 0xcc, 0xe4, 0x3a, 0x55, 0xb1, 0xed, 0x85, 0x47, 0x3c, 0x6f,
+ 0x91, 0x44, 0xe1, 0x9b, 0x16, 0xf9, 0x89, 0xa3, 0xe1, 0x68, 0x03, 0x4a, 0xfb, 0x9e, 0x33, 0x1c,
+ 0x10, 0x6d, 0x53, 0x8b, 0x93, 0x38, 0xdd, 0x15, 0x24, 0xb1, 0xe2, 0x41, 0x0e, 0xc1, 0x7a, 0x2c,
+ 0x22, 0x30, 0x27, 0x9e, 0x7c, 0xd8, 0x6c, 0xa4, 0xfa, 0x44, 0xaa, 0x02, 0x7a, 0x69, 0x12, 0xbb,
+ 0x6d, 0xaf, 0x63, 0x24, 0xa9, 0x9b, 0xcf, 0xf0, 0x6a, 0x35, 0x05, 0xc4, 0x69, 0x9e, 0xe8, 0xc7,
+ 0x19, 0xa8, 0xba, 0x5e, 0x87, 0x68, 0x6f, 0xa7, 0x12, 0xfe, 0xf6, 0xf4, 0x91, 0xbd, 0x7e, 0x27,
+ 0xc6, 0x56, 0x5e, 0xaf, 0x85, 0xf1, 0x2d, 0x8e, 0xc2, 0x09, 0xf9, 0x68, 0x07, 0x66, 0x98, 0xe7,
+ 0xa8, 0x33, 0xaa, 0xab, 0x80, 0xa5, 0x49, 0x6b, 0x6e, 0x87, 0x64, 0x51, 0x47, 0x39, 0x82, 0x51,
+ 0x1c, 0xe7, 0x83, 0x5c, 0x98, 0xb7, 0x07, 0x66, 0x8f, 0x6c, 0x0f, 0x1d, 0x47, 0xba, 0x78, 0x7d,
+ 0x39, 0x3a, 0xf1, 0x1d, 0x13, 0x77, 0x44, 0x8e, 0x3a, 0x17, 0xa4, 0x4b, 0x02, 0xe2, 0x5a, 0x24,
+ 0x4a, 0x16, 0x6e, 0xa6, 0x38, 0xe1, 0x31, 0xde, 0xe8, 0x3a, 0x9c, 0xf3, 0x03, 0xdb, 0x13, 0xaa,
+ 0x76, 0x4c, 0x2a, 0xa3, 0x7c, 0x25, 0x19, 0xb0, 0xb7, 0xd3, 0x04, 0x78, 0x7c, 0x0c, 0xba, 0x04,
+ 0x65, 0x0d, 0x14, 0xd7, 0x20, 0x05, 0xd5, 0x82, 0x50, 0x30, 0x1c, 0x62, 0x17, 0xdf, 0x85, 0x73,
+ 0x63, 0x2a, 0x3f, 0xd6, 0xa5, 0x9f, 0x01, 0x10, 0xf5, 0x42, 0xd1, 0x8b, 0x50, 0xa0, 0xcc, 0x0c,
+ 0x74, 0x2d, 0x1c, 0x66, 0xc6, 0x06, 0x07, 0x62, 0x89, 0xe3, 0xf5, 0x32, 0x65, 0x9e, 0xaf, 0x8e,
+ 0x5d, 0x54, 0x7f, 0x30, 0xcf, 0xc7, 0x02, 0x53, 0x3b, 0xc8, 0x41, 0x49, 0x07, 0x30, 0x1a, 0xcb,
+ 0x20, 0x33, 0xd3, 0xb6, 0xa0, 0x14, 0xd3, 0xc7, 0x26, 0x92, 0x49, 0x37, 0x9f, 0x3d, 0x75, 0x37,
+ 0xbf, 0x07, 0x45, 0x5f, 0x38, 0x51, 0xe5, 0x58, 0xae, 0x4f, 0x2f, 0x5b, 0xb0, 0x93, 0x31, 0x52,
+ 0xfe, 0xc6, 0x4a, 0x04, 0xfa, 0x08, 0x66, 0x03, 0xc2, 0x82, 0x51, 0x18, 0x53, 0xf2, 0x53, 0x5e,
+ 0x57, 0x9f, 0xe3, 0x91, 0x08, 0xc7, 0x59, 0xe2, 0xa4, 0x84, 0xda, 0xd7, 0x19, 0x98, 0x4f, 0x2b,
+ 0x05, 0xed, 0x41, 0x8e, 0x06, 0x96, 0xda, 0xe4, 0xed, 0x93, 0xd3, 0xb6, 0x4c, 0x09, 0xe4, 0x4d,
+ 0x8e, 0x11, 0x58, 0x98, 0x4b, 0xe1, 0x46, 0xd8, 0x21, 0x94, 0xa5, 0x8d, 0x70, 0x9d, 0x50, 0x86,
+ 0x05, 0x06, 0xb5, 0xc6, 0x53, 0x87, 0xfa, 0xa4, 0xd4, 0xe1, 0xb9, 0xb4, 0xbc, 0x49, 0x89, 0x43,
+ 0xed, 0x2f, 0x59, 0x78, 0x76, 0xf2, 0xc4, 0xd0, 0x3b, 0x70, 0x36, 0xaa, 0x1b, 0x62, 0x2f, 0xcc,
+ 0xc3, 0x9b, 0xdc, 0xf5, 0x04, 0x16, 0xa7, 0xa8, 0x79, 0xac, 0x56, 0x8f, 0x01, 0xf4, 0x33, 0xf3,
+ 0xd8, 0x6d, 0xcd, 0x5a, 0x88, 0xc1, 0x31, 0x2a, 0xd4, 0x80, 0x39, 0xf5, 0xd5, 0x8e, 0x97, 0x67,
+ 0xb1, 0xfb, 0xd2, 0xb5, 0x24, 0x1a, 0xa7, 0xe9, 0x79, 0x6e, 0xca, 0x63, 0x2a, 0x97, 0x99, 0xca,
+ 0x4d, 0xd7, 0x25, 0x18, 0x6b, 0x3c, 0xaf, 0x5c, 0xf8, 0xcf, 0x50, 0x54, 0x21, 0x59, 0xb9, 0xac,
+ 0xc7, 0x70, 0x38, 0x41, 0x19, 0xbd, 0xe7, 0x92, 0xc5, 0xce, 0xd8, 0x7b, 0xae, 0xda, 0x57, 0x19,
+ 0x98, 0x4d, 0x98, 0x38, 0xea, 0x42, 0x6e, 0x6f, 0x55, 0x17, 0x29, 0x9b, 0x27, 0xd8, 0xf5, 0x91,
+ 0x16, 0xb4, 0xb9, 0x4a, 0x31, 0x17, 0x80, 0x3e, 0x0c, 0xeb, 0xa1, 0xa9, 0x9f, 0x79, 0xc4, 0xd3,
+ 0x26, 0x95, 0xc6, 0x26, 0x4b, 0xa3, 0x8d, 0x70, 0x91, 0xc6, 0x03, 0x9b, 0x59, 0x7d, 0xf4, 0x1c,
+ 0xe4, 0x4c, 0x77, 0x24, 0x32, 0xab, 0x8a, 0x9c, 0x57, 0xc3, 0x1d, 0x61, 0x0e, 0x13, 0x28, 0xc7,
+ 0x51, 0xfd, 0x61, 0x89, 0x72, 0x1c, 0xcc, 0x61, 0xb5, 0xdf, 0x00, 0xcc, 0xa5, 0x5c, 0xe0, 0x11,
+ 0x3a, 0xce, 0xd2, 0xbe, 0x3a, 0xb6, 0x0c, 0xae, 0xe3, 0xf6, 0xa5, 0x30, 0x38, 0x46, 0x85, 0x7a,
+ 0x72, 0x13, 0xa4, 0xf7, 0x6a, 0x4d, 0xa5, 0x99, 0x54, 0x45, 0x93, 0xda, 0x85, 0x4f, 0x32, 0x50,
+ 0x35, 0x63, 0xcf, 0xdd, 0x95, 0xf3, 0xba, 0x3d, 0x4d, 0x5d, 0x31, 0xf6, 0xd2, 0x5f, 0xbe, 0xdc,
+ 0x88, 0x23, 0x70, 0x42, 0x28, 0xb2, 0x20, 0xdf, 0x67, 0x4c, 0xbf, 0x72, 0xde, 0x38, 0x91, 0xd6,
+ 0xa9, 0xec, 0xed, 0x73, 0x00, 0x16, 0xcc, 0xd1, 0x03, 0xa8, 0x98, 0x0f, 0xa8, 0xfc, 0x6f, 0x8a,
+ 0x7a, 0xfe, 0x3c, 0x4d, 0xf9, 0x94, 0xfa, 0x9b, 0x8b, 0xba, 0x0e, 0xd6, 0x50, 0x1c, 0xc9, 0x42,
+ 0x01, 0x14, 0x2d, 0xf1, 0xac, 0x56, 0x75, 0xa0, 0xaf, 0x9f, 0xd0, 0xf3, 0x5c, 0x19, 0x28, 0x12,
+ 0x20, 0xac, 0x24, 0xa1, 0x1e, 0x14, 0xf6, 0xcc, 0xee, 0x9e, 0xa9, 0x1a, 0x54, 0x53, 0x1c, 0xae,
+ 0x78, 0x4b, 0x52, 0x3a, 0x10, 0x01, 0xc1, 0x92, 0x3f, 0xdf, 0x3a, 0xd7, 0x64, 0x54, 0x3d, 0x6f,
+ 0x99, 0x62, 0xeb, 0x62, 0xfd, 0x1b, 0xb9, 0x75, 0x1c, 0x80, 0x05, 0x73, 0xbe, 0x1a, 0x71, 0x01,
+ 0x20, 0xb2, 0xb1, 0xe9, 0x5c, 0x45, 0xec, 0x82, 0x44, 0xae, 0x46, 0x40, 0xb0, 0xe4, 0xcf, 0x6d,
+ 0xc4, 0xd3, 0xfd, 0x09, 0xd1, 0xc6, 0x9a, 0xca, 0x46, 0xd2, 0xad, 0x0e, 0x69, 0x23, 0x21, 0x14,
+ 0x47, 0xb2, 0xd0, 0x7d, 0xc8, 0x39, 0x5e, 0x6f, 0x61, 0x76, 0xda, 0x9b, 0xe9, 0xa8, 0xaf, 0x26,
+ 0x0f, 0x7a, 0xcb, 0xeb, 0x61, 0xce, 0x19, 0x0d, 0xa1, 0x48, 0x85, 0xef, 0x5b, 0xa8, 0x9e, 0x50,
+ 0x4a, 0x24, 0x5d, 0x69, 0xf3, 0xbc, 0xba, 0xca, 0xd3, 0x4f, 0x8b, 0x04, 0x14, 0x2b, 0x61, 0x35,
+ 0x0b, 0x66, 0x62, 0xff, 0x70, 0x38, 0xc2, 0x7b, 0xe5, 0xcb, 0x00, 0xfb, 0x24, 0xb0, 0xbb, 0xa3,
+ 0x35, 0x12, 0x30, 0xf5, 0x30, 0x3f, 0xf4, 0x96, 0x77, 0x43, 0x0c, 0x8e, 0x51, 0x35, 0xeb, 0x9f,
+ 0x7d, 0xb9, 0x74, 0xe6, 0xf3, 0x2f, 0x97, 0xce, 0x7c, 0xf1, 0xe5, 0xd2, 0x99, 0x8f, 0x0f, 0x97,
+ 0x32, 0x9f, 0x1d, 0x2e, 0x65, 0x3e, 0x3f, 0x5c, 0xca, 0x7c, 0x71, 0xb8, 0x94, 0xf9, 0xdb, 0xe1,
+ 0x52, 0xe6, 0x27, 0x5f, 0x2d, 0x9d, 0xf9, 0xbf, 0xb2, 0x5e, 0xc0, 0xbf, 0x02, 0x00, 0x00, 0xff,
+ 0xff, 0xd7, 0x07, 0x25, 0xc0, 0x5e, 0x38, 0x00, 0x00,
}
func (m *AWSLambdaTrigger) Marshal() (dAtA []byte, err error) {
@@ -2342,16 +2343,18 @@ func (m *K8SResourcePolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
}
i--
dAtA[i] = 0x18
- {
- size, err := m.Backoff.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
+ if m.Backoff != nil {
+ {
+ size, err := m.Backoff.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
}
- i -= size
- i = encodeVarintGenerated(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
}
- i--
- dAtA[i] = 0x12
if len(m.Labels) > 0 {
keysForLabels := make([]string, 0, len(m.Labels))
for k := range m.Labels {
@@ -3248,6 +3251,18 @@ func (m *Trigger) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
+ if m.RetryStrategy != nil {
+ {
+ size, err := m.RetryStrategy.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
if m.Policy != nil {
{
size, err := m.Policy.MarshalToSizedBuffer(dAtA[:i])
@@ -4078,8 +4093,10 @@ func (m *K8SResourcePolicy) Size() (n int) {
n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
}
}
- l = m.Backoff.Size()
- n += 1 + l + sovGenerated(uint64(l))
+ if m.Backoff != nil {
+ l = m.Backoff.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
n += 2
return n
}
@@ -4422,6 +4439,10 @@ func (m *Trigger) Size() (n int) {
l = m.Policy.Size()
n += 1 + l + sovGenerated(uint64(l))
}
+ if m.RetryStrategy != nil {
+ l = m.RetryStrategy.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
return n
}
@@ -4832,7 +4853,7 @@ func (this *K8SResourcePolicy) String() string {
mapStringForLabels += "}"
s := strings.Join([]string{`&K8SResourcePolicy{`,
`Labels:` + mapStringForLabels + `,`,
- `Backoff:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Backoff), "Backoff", "common.Backoff", 1), `&`, ``, 1) + `,`,
+ `Backoff:` + strings.Replace(fmt.Sprintf("%v", this.Backoff), "Backoff", "common.Backoff", 1) + `,`,
`ErrorOnBackoffTimeout:` + fmt.Sprintf("%v", this.ErrorOnBackoffTimeout) + `,`,
`}`,
}, "")
@@ -5113,6 +5134,7 @@ func (this *Trigger) String() string {
`Template:` + strings.Replace(this.Template.String(), "TriggerTemplate", "TriggerTemplate", 1) + `,`,
`Parameters:` + repeatedStringForParameters + `,`,
`Policy:` + strings.Replace(this.Policy.String(), "TriggerPolicy", "TriggerPolicy", 1) + `,`,
+ `RetryStrategy:` + strings.Replace(fmt.Sprintf("%v", this.RetryStrategy), "Backoff", "common.Backoff", 1) + `,`,
`}`,
}, "")
return s
@@ -8652,6 +8674,9 @@ func (m *K8SResourcePolicy) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
+ if m.Backoff == nil {
+ m.Backoff = &common.Backoff{}
+ }
if err := m.Backoff.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
@@ -11513,6 +11538,42 @@ func (m *Trigger) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RetryStrategy", 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
+ }
+ if m.RetryStrategy == nil {
+ m.RetryStrategy = &common.Backoff{}
+ }
+ if err := m.RetryStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
diff --git a/pkg/apis/sensor/v1alpha1/generated.proto b/pkg/apis/sensor/v1alpha1/generated.proto
index 71d319f2edbf..5ed58ea899a6 100644
--- a/pkg/apis/sensor/v1alpha1/generated.proto
+++ b/pkg/apis/sensor/v1alpha1/generated.proto
@@ -623,7 +623,12 @@ message Trigger {
repeated TriggerParameter parameters = 2;
// Policy to configure backoff and execution criteria for the trigger
+ // +optional
optional TriggerPolicy policy = 3;
+
+ // Retry strategy, defaults to no retry
+ // +optional
+ optional github.aaakk.us.kg.argoproj.argo_events.pkg.apis.common.Backoff retryStrategy = 4;
}
// TriggerParameter indicates a passed parameter to a service template
diff --git a/pkg/apis/sensor/v1alpha1/openapi_generated.go b/pkg/apis/sensor/v1alpha1/openapi_generated.go
index 30115b16bf47..df4b31d57faf 100644
--- a/pkg/apis/sensor/v1alpha1/openapi_generated.go
+++ b/pkg/apis/sensor/v1alpha1/openapi_generated.go
@@ -1682,11 +1682,17 @@ func schema_pkg_apis_sensor_v1alpha1_Trigger(ref common.ReferenceCallback) commo
Ref: ref("github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerPolicy"),
},
},
+ "retryStrategy": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Retry strategy, defaults to no retry",
+ Ref: ref("github.com/argoproj/argo-events/pkg/apis/common.Backoff"),
+ },
+ },
},
},
},
Dependencies: []string{
- "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerParameter", "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerPolicy", "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerTemplate"},
+ "github.com/argoproj/argo-events/pkg/apis/common.Backoff", "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerParameter", "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerPolicy", "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerTemplate"},
}
}
diff --git a/pkg/apis/sensor/v1alpha1/types.go b/pkg/apis/sensor/v1alpha1/types.go
index 9af354282e75..1594be17ea50 100644
--- a/pkg/apis/sensor/v1alpha1/types.go
+++ b/pkg/apis/sensor/v1alpha1/types.go
@@ -259,7 +259,11 @@ type Trigger struct {
// Parameters is the list of parameters applied to the trigger template definition
Parameters []TriggerParameter `json:"parameters,omitempty" protobuf:"bytes,2,rep,name=parameters"`
// Policy to configure backoff and execution criteria for the trigger
+ // +optional
Policy *TriggerPolicy `json:"policy,omitempty" protobuf:"bytes,3,opt,name=policy"`
+ // Retry strategy, defaults to no retry
+ // +optional
+ RetryStrategy *apicommon.Backoff `json:"retryStrategy,omitempty" protobuf:"bytes,4,opt,name=retryStrategy"`
}
// TriggerTemplate is the template that describes trigger specification.
@@ -624,7 +628,7 @@ type K8SResourcePolicy struct {
// Labels required to identify whether a resource is in success state
Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,1,rep,name=labels"`
// Backoff before checking resource state
- Backoff apicommon.Backoff `json:"backoff" protobuf:"bytes,2,opt,name=backoff"`
+ Backoff *apicommon.Backoff `json:"backoff" protobuf:"bytes,2,opt,name=backoff"`
// ErrorOnBackoffTimeout determines whether sensor should transition to error state if the trigger policy is unable to determine
// the state of the resource
ErrorOnBackoffTimeout bool `json:"errorOnBackoffTimeout" protobuf:"varint,3,opt,name=errorOnBackoffTimeout"`
diff --git a/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go
index 15b7f7fbaa01..ba8b8e637996 100644
--- a/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go
@@ -478,7 +478,11 @@ func (in *K8SResourcePolicy) DeepCopyInto(out *K8SResourcePolicy) {
(*out)[key] = val
}
}
- in.Backoff.DeepCopyInto(&out.Backoff)
+ if in.Backoff != nil {
+ in, out := &in.Backoff, &out.Backoff
+ *out = new(common.Backoff)
+ (*in).DeepCopyInto(*out)
+ }
return
}
@@ -909,6 +913,11 @@ func (in *Trigger) DeepCopyInto(out *Trigger) {
*out = new(TriggerPolicy)
(*in).DeepCopyInto(*out)
}
+ if in.RetryStrategy != nil {
+ in, out := &in.RetryStrategy, &out.RetryStrategy
+ *out = new(common.Backoff)
+ (*in).DeepCopyInto(*out)
+ }
return
}
diff --git a/sensors/artifacts/store.go b/sensors/artifacts/store.go
index e18a26ccd1ca..d41aa0a0271e 100644
--- a/sensors/artifacts/store.go
+++ b/sensors/artifacts/store.go
@@ -20,11 +20,12 @@ import (
"fmt"
"strings"
- "github.com/argoproj/argo-events/common"
- "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1"
"github.com/ghodss/yaml"
"github.com/pkg/errors"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+
+ "github.com/argoproj/argo-events/common"
+ "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1"
)
// ArtifactReader enables reading artifacts from an external store
@@ -34,11 +35,14 @@ type ArtifactReader interface {
// FetchArtifact from the location, decode it using explicit types, and unstructure it
func FetchArtifact(reader ArtifactReader) (*unstructured.Unstructured, error) {
- var err error
var obj []byte
- obj, err = reader.Read()
- if err != nil {
- return nil, err
+
+ if err := common.Connect(&common.DefaultBackoff, func() error {
+ var e error
+ obj, e = reader.Read()
+ return e
+ }); err != nil {
+ return nil, errors.Wrap(err, "failed to fetch artifact")
}
return decodeAndUnstructure(obj)
}
diff --git a/sensors/listener.go b/sensors/listener.go
index e448811b76c3..cd5ac7be6a91 100644
--- a/sensors/listener.go
+++ b/sensors/listener.go
@@ -36,6 +36,7 @@ import (
"github.com/argoproj/argo-events/common/logging"
"github.com/argoproj/argo-events/eventbus"
eventbusdriver "github.com/argoproj/argo-events/eventbus/driver"
+ apicommon "github.com/argoproj/argo-events/pkg/apis/common"
"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1"
sensordependencies "github.com/argoproj/argo-events/sensors/dependencies"
sensortriggers "github.com/argoproj/argo-events/sensors/triggers"
@@ -126,7 +127,7 @@ func (sensorCtx *SensorContext) ListenEvents(ctx context.Context) error {
triggerNames = append(triggerNames, t.Template.Name)
}
var conn eventbusdriver.Connection
- err = common.Connect(&common.DefaultRetry, func() error {
+ err = common.Connect(&common.DefaultBackoff, func() error {
var err error
conn, err = ebDriver.Connect()
return err
@@ -236,20 +237,26 @@ func (sensorCtx *SensorContext) triggerActions(ctx context.Context, sensor *v1al
log := logging.FromContext(ctx)
eventsMapping := make(map[string]*v1alpha1.Event)
depNames := make([]string, 0, len(events))
+ eventIDs := make([]string, 0, len(events))
for k, v := range events {
eventsMapping[k] = convertEvent(v)
depNames = append(depNames, k)
+ eventIDs = append(eventIDs, v.ID())
}
for _, trigger := range triggers {
- if err := sensorCtx.triggerOne(ctx, sensor, trigger, eventsMapping, depNames, log); err != nil {
+ if err := sensorCtx.triggerOne(ctx, sensor, trigger, eventsMapping, depNames, eventIDs, log); err != nil {
// Log the error, and let it continue
- log.Errorw("failed to trigger action", zap.Error(err))
+ log.Errorw("failed to trigger action", zap.Error(err), zap.String("triggerName", trigger.Template.Name),
+ zap.Any("triggeredBy", depNames), zap.Any("triggeredByEvents", eventIDs))
+ sensorCtx.metrics.ActionFailed(sensor.Name, trigger.Template.Name)
+ } else {
+ sensorCtx.metrics.ActionTriggered(sensor.Name, trigger.Template.Name)
}
}
return nil
}
-func (sensorCtx *SensorContext) triggerOne(ctx context.Context, sensor *v1alpha1.Sensor, trigger v1alpha1.Trigger, eventsMapping map[string]*v1alpha1.Event, depNames []string, log *zap.SugaredLogger) error {
+func (sensorCtx *SensorContext) triggerOne(ctx context.Context, sensor *v1alpha1.Sensor, trigger v1alpha1.Trigger, eventsMapping map[string]*v1alpha1.Event, depNames, eventIDs []string, log *zap.SugaredLogger) error {
startTime := time.Now()
defer func(start time.Time) {
t := time.Now()
@@ -259,7 +266,6 @@ func (sensorCtx *SensorContext) triggerOne(ctx context.Context, sensor *v1alpha1
if err := sensortriggers.ApplyTemplateParameters(eventsMapping, &trigger); err != nil {
log.Errorf("failed to apply template parameters, %v", err)
- sensorCtx.metrics.ActionFailed(sensor.Name, trigger.Template.Name)
return err
}
@@ -273,7 +279,6 @@ func (sensorCtx *SensorContext) triggerOne(ctx context.Context, sensor *v1alpha1
log.Debugw("fetching trigger resource if any", "triggerName", trigger.Template.Name)
obj, err := triggerImpl.FetchResource(ctx)
if err != nil {
- sensorCtx.metrics.ActionFailed(sensor.Name, trigger.Template.Name)
return err
}
if obj == nil {
@@ -284,25 +289,30 @@ func (sensorCtx *SensorContext) triggerOne(ctx context.Context, sensor *v1alpha1
log.Debugw("applying resource parameters if any", "triggerName", trigger.Template.Name)
updatedObj, err := triggerImpl.ApplyResourceParameters(eventsMapping, obj)
if err != nil {
- sensorCtx.metrics.ActionFailed(sensor.Name, trigger.Template.Name)
return err
}
log.Debugw("executing the trigger resource", "triggerName", trigger.Template.Name)
- newObj, err := triggerImpl.Execute(ctx, eventsMapping, updatedObj)
- if err != nil {
- sensorCtx.metrics.ActionFailed(sensor.Name, trigger.Template.Name)
- return err
+ retryStrategy := trigger.RetryStrategy
+ if retryStrategy == nil {
+ retryStrategy = &apicommon.Backoff{Steps: 1}
+ }
+ var newObj interface{}
+ if err := common.Connect(retryStrategy, func() error {
+ var e error
+ newObj, e = triggerImpl.Execute(ctx, eventsMapping, updatedObj)
+ return e
+ }); err != nil {
+ return errors.Wrap(err, "failed to execute trigger")
}
log.Debugw("trigger resource successfully executed", "triggerName", trigger.Template.Name)
log.Debugw("applying trigger policy", "triggerName", trigger.Template.Name)
if err := triggerImpl.ApplyPolicy(ctx, newObj); err != nil {
- sensorCtx.metrics.ActionFailed(sensor.Name, trigger.Template.Name)
return err
}
- log.Infow("successfully processed the trigger", zap.String("triggerName", trigger.Template.Name), zap.Any("triggeredBy", depNames))
- sensorCtx.metrics.ActionTriggered(sensor.Name, trigger.Template.Name)
+ log.Infow("successfully processed the trigger", zap.String("triggerName", trigger.Template.Name),
+ zap.Any("triggeredBy", depNames), zap.Any("triggeredByEvents", eventIDs))
return nil
}
@@ -384,14 +394,14 @@ func (sensorCtx *SensorContext) getDependencyExpression(ctx context.Context, tri
}
depExpression = strings.Join(deps, "&&")
}
- logger.Sugar().Infof("Dependency expression for trigger %s before simlification: %s", trigger.Template.Name, depExpression)
+ logger.Sugar().Infof("Dependency expression for trigger %s before simplification: %s", trigger.Template.Name, depExpression)
boolSimplifier, err := common.NewBoolExpression(depExpression)
if err != nil {
logger.Error("Invalid dependency expression", zap.Error(err))
return "", err
}
result := boolSimplifier.GetExpression()
- logger.Sugar().Infof("Dependency expression for trigger %s after simlification: %s", trigger.Template.Name, result)
+ logger.Sugar().Infof("Dependency expression for trigger %s after simplification: %s", trigger.Template.Name, result)
return result, nil
}
diff --git a/sensors/policy/resource-labels.go b/sensors/policy/resource-labels.go
index 046160af8bde..12383964bbaf 100644
--- a/sensors/policy/resource-labels.go
+++ b/sensors/policy/resource-labels.go
@@ -24,6 +24,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/dynamic"
+ "github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1"
)
@@ -35,7 +36,6 @@ type ResourceLabels struct {
}
func (rl *ResourceLabels) ApplyPolicy(ctx context.Context) error {
- from := rl.Trigger.Policy.K8s.Backoff
if rl.Trigger.Policy.K8s == nil || rl.Trigger.Policy.K8s.Labels == nil {
return nil
}
@@ -43,16 +43,16 @@ func (rl *ResourceLabels) ApplyPolicy(ctx context.Context) error {
// check if success labels match with labels on object
completed := false
- backoff := wait.Backoff{
- Duration: from.Duration,
- Steps: int(from.Steps),
+ b := rl.Trigger.Policy.K8s.Backoff
+ if b == nil {
+ b = &common.DefaultBackoff
}
- backoff.Factor, _ = from.Factor.Float64()
- if from.Jitter != nil {
- jitter, _ := from.Jitter.Float64()
- backoff.Jitter = jitter
+ backoff, err := common.Convert2WaitBackoff(b)
+ if err != nil {
+ return err
}
- err := wait.ExponentialBackoff(backoff, func() (bool, error) {
+
+ err = wait.ExponentialBackoff(*backoff, func() (bool, error) {
obj, err := rl.Client.Namespace(rl.Obj.GetNamespace()).Get(ctx, rl.Obj.GetName(), metav1.GetOptions{})
if err != nil {
return false, err
diff --git a/sensors/policy/resource-labels_test.go b/sensors/policy/resource-labels_test.go
index 79ef8216c284..e17a27ba0ae2 100644
--- a/sensors/policy/resource-labels_test.go
+++ b/sensors/policy/resource-labels_test.go
@@ -19,7 +19,6 @@ package policy
import (
"context"
"testing"
- "time"
"github.com/stretchr/testify/assert"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -55,6 +54,8 @@ func TestResourceLabels_ApplyPolicy(t *testing.T) {
client := fake.NewSimpleDynamicClient(runtimeScheme, uObj)
artifact := common.NewResource(uObj)
jitter := common.NewAmount("0.5")
+ factor := common.NewAmount("2")
+ duration := common.FromString("1s")
trigger := &v1alpha1.Trigger{
Template: &v1alpha1.TriggerTemplate{
Name: "fake-trigger",
@@ -75,10 +76,10 @@ func TestResourceLabels_ApplyPolicy(t *testing.T) {
Labels: map[string]string{
"complete": "true",
},
- Backoff: common.Backoff{
+ Backoff: &common.Backoff{
Steps: 2,
- Duration: time.Second * 1,
- Factor: common.NewAmount("2"),
+ Duration: &duration,
+ Factor: &factor,
Jitter: &jitter,
},
},
diff --git a/sensors/triggers/custom-trigger/custom-trigger.go b/sensors/triggers/custom-trigger/custom-trigger.go
index 0f0df551d235..dc32f1528e73 100644
--- a/sensors/triggers/custom-trigger/custom-trigger.go
+++ b/sensors/triggers/custom-trigger/custom-trigger.go
@@ -102,9 +102,12 @@ func NewCustomTrigger(sensor *v1alpha1.Sensor, trigger *v1alpha1.Trigger, logger
return nil, err
}
- connBackoff := common.GetConnectionBackoff(nil)
+ backoff, err := common.Convert2WaitBackoff(&common.DefaultBackoff)
+ if err != nil {
+ return nil, err
+ }
- if err = wait.ExponentialBackoff(*connBackoff, func() (done bool, err error) {
+ if err = wait.ExponentialBackoff(*backoff, func() (done bool, err error) {
if conn.GetState() == connectivity.Ready {
return true, nil
}