From 9d6c2087b99d9ab5f7e2b9a8a5fa4d60611e8345 Mon Sep 17 00:00:00 2001 From: Moh Osman <59479562+moh-osman3@users.noreply.github.com> Date: Mon, 7 Aug 2023 12:44:39 -0400 Subject: [PATCH 1/3] [issue 195] terminate streams gracefully (#207) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * config * add timeout * wip * not working * uncomment stream restart * remove default and fix unit tests * validate that user sets maxstreamlifetime * fix tests * fix format * comment out closesend * add timer * tidy and fix mock api issue * not updated? * fix failed test * check status message is exact match with EOF * update config * broken unit test * fix test? * call streamCall once * address review feedback --------- Co-authored-by: Laurent QuĂ©rel --- collector/examples/synthesize/record.yaml | 36 +++++++++++++++++-- collector/gen/exporter/otlpexporter/config.go | 14 +++++--- .../gen/exporter/otlpexporter/config_test.go | 25 +++++++------ .../internal/arrow/common_test.go | 2 ++ .../otlpexporter/internal/arrow/exporter.go | 6 ++++ .../internal/arrow/exporter_test.go | 3 +- .../otlpexporter/internal/arrow/stream.go | 35 ++++++++++++++++-- .../internal/arrow/stream_test.go | 33 +++++++++++++++++ collector/gen/exporter/otlpexporter/otlp.go | 6 ++-- .../gen/exporter/otlpexporter/otlp_test.go | 12 +++++-- 10 files changed, 147 insertions(+), 25 deletions(-) diff --git a/collector/examples/synthesize/record.yaml b/collector/examples/synthesize/record.yaml index df6a79a961..11d6fb278a 100644 --- a/collector/examples/synthesize/record.yaml +++ b/collector/examples/synthesize/record.yaml @@ -1,4 +1,14 @@ receivers: + otlp/loopback: + protocols: + grpc: + endpoint: 127.0.0.1:4000 + keepalive: + server_parameters: + max_connection_age: 10s + max_connection_age_grace: 10s + arrow: + disabled: false otlp: protocols: grpc: @@ -6,6 +16,19 @@ receivers: path: ./generator/hipster_shop.yaml exporters: + otlp/arrow: + endpoint: 127.0.0.1:4000 + wait_for_ready: true + tls: + insecure: true + arrow: + disabled: false + num_streams: 1 + max_stream_lifetime: 5s + retry_on_failure: + enabled: false + sending_queue: + enabled: false file/traces: path: ./recorded_traces.json compression: zstd @@ -29,11 +52,18 @@ processors: # list of processors below. service: pipelines: - traces: + # This pipeline generates trace data, obfuscates + batches the data, and + # send it to the otlp receiver of this same collector + traces/generate: receivers: [generator] processors: [obfuscation, batch] - exporters: [file/traces, logging] + exporters: [otlp/arrow, logging] + + traces/loop: + receivers: [otlp/loopback] + exporters: [file/traces] + metrics: receivers: [generator] processors: [obfuscation, batch] - exporters: [file/metrics, logging] + exporters: [file/metrics, logging] \ No newline at end of file diff --git a/collector/gen/exporter/otlpexporter/config.go b/collector/gen/exporter/otlpexporter/config.go index 0bf4ee20d5..68b4ad8d9c 100644 --- a/collector/gen/exporter/otlpexporter/config.go +++ b/collector/gen/exporter/otlpexporter/config.go @@ -5,6 +5,7 @@ package otlpexporter // import "github.com/f5/otel-arrow-adapter/collector/gen/e import ( "fmt" + "time" "google.golang.org/grpc" @@ -33,10 +34,11 @@ type Config struct { // ArrowSettings includes whether Arrow is enabled and the number of // concurrent Arrow streams. type ArrowSettings struct { - Disabled bool `mapstructure:"disabled"` - NumStreams int `mapstructure:"num_streams"` - DisableDowngrade bool `mapstructure:"disable_downgrade"` - EnableMixedSignals bool `mapstructure:"enable_mixed_signals"` + Disabled bool `mapstructure:"disabled"` + NumStreams int `mapstructure:"num_streams"` + DisableDowngrade bool `mapstructure:"disable_downgrade"` + EnableMixedSignals bool `mapstructure:"enable_mixed_signals"` + MaxStreamLifetime time.Duration `mapstructure:"max_stream_lifetime"` } var _ component.Config = (*Config)(nil) @@ -59,5 +61,9 @@ func (cfg *ArrowSettings) Validate() error { return fmt.Errorf("stream count must be > 0: %d", cfg.NumStreams) } + if cfg.MaxStreamLifetime.Seconds() < float64(1) { + return fmt.Errorf("max stream life must be > 0: %d", cfg.MaxStreamLifetime) + } + return nil } diff --git a/collector/gen/exporter/otlpexporter/config_test.go b/collector/gen/exporter/otlpexporter/config_test.go index d688885a21..87707b772f 100644 --- a/collector/gen/exporter/otlpexporter/config_test.go +++ b/collector/gen/exporter/otlpexporter/config_test.go @@ -84,22 +84,27 @@ func TestUnmarshalConfig(t *testing.T) { } func TestArrowSettingsValidate(t *testing.T) { - settings := func(enabled bool, numStreams int) *ArrowSettings { - return &ArrowSettings{Disabled: !enabled, NumStreams: numStreams} + settings := func(enabled bool, numStreams int, maxStreamLifetime time.Duration) *ArrowSettings { + return &ArrowSettings{Disabled: !enabled, NumStreams: numStreams, MaxStreamLifetime: maxStreamLifetime} } - require.NoError(t, settings(true, 1).Validate()) - require.NoError(t, settings(false, 1).Validate()) - require.NoError(t, settings(true, 2).Validate()) - require.NoError(t, settings(true, math.MaxInt).Validate()) + require.NoError(t, settings(true, 1, 10 * time.Second).Validate()) + require.NoError(t, settings(false, 1, 10 * time.Second).Validate()) + require.NoError(t, settings(true, 2, 1 * time.Second).Validate()) + require.NoError(t, settings(true, math.MaxInt, 10 * time.Second).Validate()) - require.Error(t, settings(true, 0).Validate()) - require.Contains(t, settings(true, 0).Validate().Error(), "stream count must be") - require.Error(t, settings(false, -1).Validate()) - require.Error(t, settings(true, math.MinInt).Validate()) + require.Error(t, settings(true, 0, 10 * time.Second).Validate()) + require.Contains(t, settings(true, 0, 10 * time.Second).Validate().Error(), "stream count must be") + require.Contains(t, settings(true, 1, -1 * time.Second).Validate().Error(), "max stream life must be") + require.Error(t, settings(false, -1, 10 * time.Second).Validate()) + require.Error(t, settings(false, 1, -1 * time.Second).Validate()) + require.Error(t, settings(true, math.MinInt, 10 * time.Second).Validate()) } func TestDefaultSettingsValid(t *testing.T) { cfg := createDefaultConfig() + // this must be set by the user and config + // validation always checks that a value is set. + cfg.(*Config).Arrow.MaxStreamLifetime = 2 * time.Second require.NoError(t, cfg.(*Config).Validate()) } diff --git a/collector/gen/exporter/otlpexporter/internal/arrow/common_test.go b/collector/gen/exporter/otlpexporter/internal/arrow/common_test.go index e429d7b1b0..6361d12452 100644 --- a/collector/gen/exporter/otlpexporter/internal/arrow/common_test.go +++ b/collector/gen/exporter/otlpexporter/internal/arrow/common_test.go @@ -97,6 +97,7 @@ type commonTestStream struct { ctxCall *gomock.Call sendCall *gomock.Call recvCall *gomock.Call + closeSendCall *gomock.Call } func (ctc *commonTestCase) newMockStream(ctx context.Context) *commonTestStream { @@ -109,6 +110,7 @@ func (ctc *commonTestCase) newMockStream(ctx context.Context) *commonTestStream gomock.Any(), // *arrowpb.BatchArrowRecords ).Times(0), recvCall: client.EXPECT().Recv().Times(0), + closeSendCall: client.EXPECT().CloseSend().AnyTimes().Return(nil), } return testStream } diff --git a/collector/gen/exporter/otlpexporter/internal/arrow/exporter.go b/collector/gen/exporter/otlpexporter/internal/arrow/exporter.go index fc439fce6e..f355e1a3ae 100644 --- a/collector/gen/exporter/otlpexporter/internal/arrow/exporter.go +++ b/collector/gen/exporter/otlpexporter/internal/arrow/exporter.go @@ -7,6 +7,7 @@ import ( "context" "errors" "sync" + "time" arrowpb "github.com/f5/otel-arrow-adapter/api/experimental/arrow/v1" arrowRecord "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record" @@ -23,6 +24,8 @@ type Exporter struct { // numStreams is the number of streams that will be used. numStreams int + maxStreamLifetime time.Duration + // disableDowngrade prevents downgrade from occurring, supports // forcing Arrow transport. disableDowngrade bool @@ -90,6 +93,7 @@ func MakeAnyStreamClient[T AnyStreamClient](clientFunc func(ctx context.Context, // NewExporter configures a new Exporter. func NewExporter( + maxStreamLifetime time.Duration, numStreams int, disableDowngrade bool, telemetry component.TelemetrySettings, @@ -99,6 +103,7 @@ func NewExporter( perRPCCredentials credentials.PerRPCCredentials, ) *Exporter { return &Exporter{ + maxStreamLifetime: maxStreamLifetime, numStreams: numStreams, disableDowngrade: disableDowngrade, telemetry: telemetry, @@ -175,6 +180,7 @@ func (e *Exporter) runArrowStream(ctx context.Context) { producer := e.newProducer() stream := newStream(producer, e.ready, e.telemetry, e.perRPCCredentials) + stream.maxStreamLifetime = e.maxStreamLifetime defer func() { if err := producer.Close(); err != nil { diff --git a/collector/gen/exporter/otlpexporter/internal/arrow/exporter_test.go b/collector/gen/exporter/otlpexporter/internal/arrow/exporter_test.go index f0c94eecca..f3a511c895 100644 --- a/collector/gen/exporter/otlpexporter/internal/arrow/exporter_test.go +++ b/collector/gen/exporter/otlpexporter/internal/arrow/exporter_test.go @@ -30,6 +30,7 @@ import ( "go.opentelemetry.io/collector/pdata/ptrace" ) +const defaultMaxStreamLifetime = 11 * time.Second type compareJSONTraces struct{ ptrace.Traces } type compareJSONMetrics struct{ pmetric.Metrics } type compareJSONLogs struct{ plog.Logs } @@ -123,7 +124,7 @@ func newExporterTestCaseCommon(t *testing.T, noisy noisyTest, numStreams int, di }) } - exp := NewExporter(numStreams, disableDowngrade, ctc.telset, nil, func() arrowRecord.ProducerAPI { + exp := NewExporter(defaultMaxStreamLifetime, numStreams, disableDowngrade, ctc.telset, nil, func() arrowRecord.ProducerAPI { // Mock the close function, use a real producer for testing dataflow. mock := arrowRecordMock.NewMockProducerAPI(ctc.ctrl) prod := arrowRecord.NewProducer() diff --git a/collector/gen/exporter/otlpexporter/internal/arrow/stream.go b/collector/gen/exporter/otlpexporter/internal/arrow/stream.go index d8cc5da0b4..34a9feb96a 100644 --- a/collector/gen/exporter/otlpexporter/internal/arrow/stream.go +++ b/collector/gen/exporter/otlpexporter/internal/arrow/stream.go @@ -11,6 +11,7 @@ import ( "io" "strings" "sync" + "time" arrowpb "github.com/f5/otel-arrow-adapter/api/experimental/arrow/v1" arrowRecord "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record" @@ -31,6 +32,12 @@ import ( // Stream is 1:1 with gRPC stream. type Stream struct { + // maxStreamLifetime is the max timeout before stream + // should be closed on the client side. This ensures a + // graceful shutdown before max_connection_age is reached + // on the server side. + maxStreamLifetime time.Duration + // producer is exclusive to the holder of the stream. producer arrowRecord.ProducerAPI @@ -149,14 +156,17 @@ func (s *Stream) run(bgctx context.Context, streamClient StreamClientFunc, grpcO ww.Add(1) go func() { defer ww.Done() - defer cancel() writeErr = s.write(ctx) + if writeErr != nil { + cancel() + } }() // the result from read() is processed after cancel and wait, // so we can set s.client = nil in case of a delayed Unimplemented. err = s.read(ctx) + // Wait for the writer to ensure that all waiters are known. cancel() ww.Wait() @@ -257,6 +267,8 @@ func (s *Stream) write(ctx context.Context) error { var hdrsBuf bytes.Buffer hdrsEnc := hpack.NewEncoder(&hdrsBuf) + timer := time.NewTimer(s.maxStreamLifetime) + for { // Note: this can't block b/c stream has capacity & // individual streams shut down synchronously. @@ -265,8 +277,17 @@ func (s *Stream) write(ctx context.Context) error { // this can block, and if the context is canceled we // wait for the reader to find this stream. var wri writeItem + var ok bool select { - case wri = <-s.toWrite: + case <-timer.C: + s.prioritizer.removeReady(s) + s.client.CloseSend() + return nil + case wri, ok = <-s.toWrite: + // channel is closed + if !ok { + return nil + } case <-ctx.Done(): // Because we did not <-stream.toWrite, there // is a potential sender race since the stream @@ -325,8 +346,17 @@ func (s *Stream) read(_ context.Context) error { // cancel a call to Recv() but the call to processBatchStatus // is non-blocking. for { + // Note: if the client has called CloseSend() and is waiting for a response from the server. + // And if the server fails for some reason, we will wait until some other condition, such as a context + // timeout. TODO: possibly, improve to wait for no outstanding requests and then stop reading. resp, err := s.client.Recv() if err != nil { + // Once the send direction of stream is closed the server should return + // an error that mentions an EOF. The expected error code is codes.Unknown. + status, ok := status.FromError(err) + if ok && status.Message() == "EOF" && status.Code() == codes.Unknown { + return nil + } // Note: do not wrap, contains a Status. return err } @@ -334,6 +364,7 @@ func (s *Stream) read(_ context.Context) error { if err = s.processBatchStatus(resp); err != nil { return fmt.Errorf("process: %w", err) } + } } diff --git a/collector/gen/exporter/otlpexporter/internal/arrow/stream_test.go b/collector/gen/exporter/otlpexporter/internal/arrow/stream_test.go index e6ee6a7df6..718b89351f 100644 --- a/collector/gen/exporter/otlpexporter/internal/arrow/stream_test.go +++ b/collector/gen/exporter/otlpexporter/internal/arrow/stream_test.go @@ -53,6 +53,7 @@ func newStreamTestCase(t *testing.T) *streamTestCase { ctc.requestMetadataCall.AnyTimes().Return(nil, nil) stream := newStream(producer, prio, ctc.telset, ctc.perRPCCredentials) + stream.maxStreamLifetime = 10 * time.Second fromTracesCall := producer.EXPECT().BatchArrowRecordsFromTraces(gomock.Any()).Times(0) fromMetricsCall := producer.EXPECT().BatchArrowRecordsFromMetrics(gomock.Any()).Times(0) @@ -118,6 +119,38 @@ func (tc *streamTestCase) get() *Stream { return <-tc.prioritizer.readyChannel() } +// TestStreamEncodeError verifies that exceeding the +// max_stream_lifetime results in shutdown that +// simply restarts the stream. +func TestStreamGracefulShutdown(t *testing.T) { + tc := newStreamTestCase(t) + maxStreamLifetime := 1 * time.Second + tc.stream.maxStreamLifetime = maxStreamLifetime + + tc.fromTracesCall.Times(1).Return(oneBatch, nil) + tc.closeSendCall.Times(1).Return(nil) + + channel := newHealthyTestChannel() + tc.start(channel) + defer tc.cancelAndWaitForShutdown() + var wg sync.WaitGroup + wg.Add(1) + defer wg.Wait() + go func() { + defer wg.Done() + batch := <-channel.sent + channel.recv <- statusOKFor(batch.BatchId) + }() + + err := tc.get().SendAndWait(tc.bgctx, twoTraces) + require.NoError(t, err) + // let stream get closed and send again. + time.Sleep(maxStreamLifetime) + err = tc.get().SendAndWait(tc.bgctx, twoTraces) + require.Error(t, err) + require.True(t, errors.Is(err, ErrStreamRestarting)) +} + // TestStreamEncodeError verifies that an encoder error in the sender // yields a permanent error. func TestStreamEncodeError(t *testing.T) { diff --git a/collector/gen/exporter/otlpexporter/otlp.go b/collector/gen/exporter/otlpexporter/otlp.go index cde409f2e0..6722aeab77 100644 --- a/collector/gen/exporter/otlpexporter/otlp.go +++ b/collector/gen/exporter/otlpexporter/otlp.go @@ -20,12 +20,12 @@ import ( "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "github.com/f5/otel-arrow-adapter/collector/gen/exporter/otlpexporter/internal/arrow" + "github.com/f5/otel-arrow-adapter/collector/gen/internal/netstats" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/consumer/consumererror" "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exporterhelper" - "github.com/f5/otel-arrow-adapter/collector/gen/exporter/otlpexporter/internal/arrow" - "github.com/f5/otel-arrow-adapter/collector/gen/internal/netstats" "go.opentelemetry.io/collector/pdata/plog" "go.opentelemetry.io/collector/pdata/plog/plogotlp" "go.opentelemetry.io/collector/pdata/pmetric" @@ -131,7 +131,7 @@ func (e *baseExporter) start(ctx context.Context, host component.Host) (err erro } } - e.arrow = arrow.NewExporter(e.config.Arrow.NumStreams, e.config.Arrow.DisableDowngrade, e.settings.TelemetrySettings, e.callOptions, func() arrowRecord.ProducerAPI { + e.arrow = arrow.NewExporter(e.config.Arrow.MaxStreamLifetime, e.config.Arrow.NumStreams, e.config.Arrow.DisableDowngrade, e.settings.TelemetrySettings, e.callOptions, func() arrowRecord.ProducerAPI { return arrowRecord.NewProducer() }, e.streamClientFactory(e.config, e.clientConn), perRPCCreds) diff --git a/collector/gen/exporter/otlpexporter/otlp_test.go b/collector/gen/exporter/otlpexporter/otlp_test.go index d12bcc739c..b4666394c2 100644 --- a/collector/gen/exporter/otlpexporter/otlp_test.go +++ b/collector/gen/exporter/otlpexporter/otlp_test.go @@ -31,6 +31,8 @@ import ( "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/durationpb" + "github.com/f5/otel-arrow-adapter/collector/gen/exporter/otlpexporter/internal/arrow/grpcmock" + "github.com/f5/otel-arrow-adapter/collector/gen/internal/testdata" "go.opentelemetry.io/collector/client" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/component/componenttest" @@ -40,10 +42,8 @@ import ( "go.opentelemetry.io/collector/config/configtls" "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exportertest" - "github.com/f5/otel-arrow-adapter/collector/gen/exporter/otlpexporter/internal/arrow/grpcmock" "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/extension/auth" - "github.com/f5/otel-arrow-adapter/collector/gen/internal/testdata" "go.opentelemetry.io/collector/pdata/plog" "go.opentelemetry.io/collector/pdata/plog/plogotlp" "go.opentelemetry.io/collector/pdata/pmetric" @@ -457,6 +457,7 @@ func TestSendTracesWhenEndpointHasHttpScheme(t *testing.T) { cfg := factory.CreateDefaultConfig().(*Config) cfg.GRPCClientSettings = test.gRPCClientSettings cfg.GRPCClientSettings.Endpoint = test.scheme + ln.Addr().String() + cfg.Arrow.MaxStreamLifetime = 100 * time.Second if test.useTLS { cfg.GRPCClientSettings.TLSSetting.InsecureSkipVerify = true } @@ -513,6 +514,7 @@ func TestSendMetrics(t *testing.T) { "header": "header-value", }, } + cfg.Arrow.MaxStreamLifetime = 100 * time.Second set := exportertest.NewNopCreateSettings() set.BuildInfo.Description = "Collector" set.BuildInfo.Version = "1.2.3test" @@ -611,6 +613,7 @@ func TestSendTraceDataServerDownAndUp(t *testing.T) { // Do not rely on external retry logic here, if that is intended set InitialInterval to 100ms. WaitForReady: true, } + cfg.Arrow.MaxStreamLifetime = 100 * time.Second set := exportertest.NewNopCreateSettings() exp, err := factory.CreateTracesExporter(context.Background(), set, cfg) require.NoError(t, err) @@ -668,6 +671,7 @@ func TestSendTraceDataServerStartWhileRequest(t *testing.T) { Insecure: true, }, } + cfg.Arrow.MaxStreamLifetime = 100 * time.Second set := exportertest.NewNopCreateSettings() exp, err := factory.CreateTracesExporter(context.Background(), set, cfg) require.NoError(t, err) @@ -721,6 +725,7 @@ func TestSendTracesOnResourceExhaustion(t *testing.T) { Insecure: true, }, } + cfg.Arrow.MaxStreamLifetime = 100 * time.Second set := exportertest.NewNopCreateSettings() exp, err := factory.CreateTracesExporter(context.Background(), set, cfg) require.NoError(t, err) @@ -803,6 +808,7 @@ func TestSendLogData(t *testing.T) { Insecure: true, }, } + cfg.Arrow.MaxStreamLifetime = 100 * time.Second set := exportertest.NewNopCreateSettings() set.BuildInfo.Description = "Collector" set.BuildInfo.Version = "1.2.3test" @@ -920,6 +926,7 @@ func testSendArrowTraces(t *testing.T, mixedSignals, clientWaitForReady, streamS cfg.Arrow = ArrowSettings{ NumStreams: 1, EnableMixedSignals: mixedSignals, + MaxStreamLifetime: 100 * time.Second, } set := exportertest.NewNopCreateSettings() @@ -1092,6 +1099,7 @@ func TestSendArrowFailedTraces(t *testing.T) { cfg.Arrow = ArrowSettings{ NumStreams: 1, EnableMixedSignals: true, + MaxStreamLifetime: 100 * time.Second, } cfg.QueueSettings.Enabled = false From 8bd6b3022d39877f6ff5357b3e904a7d4ab00ef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20Qu=C3=A9rel?= Date: Mon, 7 Aug 2023 19:39:50 +0200 Subject: [PATCH 2/3] More exhaustive unit tests for metrics and logs (#209) * Update validation process documentation * Fix exemplar issue in metrics * Improve metric generator to explore more corner cases * Make assert.Equiv independent of the testing framework * Fix bug that occurs when a log record has no attribute * Apply same optimization and fix to traces --- .../internal/arrow/exporter_test.go | 19 ++-- .../otlpreceiver/internal/arrow/arrow_test.go | 25 +++-- docs/img/OTEL - Chaos engineering.png | Bin 0 -> 184081 bytes docs/img/OTEL - validation process.png | Bin 0 -> 215556 bytes docs/validation_process.md | 30 ++++-- pkg/arrow/from_record.go | 29 ++++++ pkg/datagen/metrics.go | 59 ++++++++++++ pkg/otel/arrow_record/logs_dict_test.go | 16 ++- pkg/otel/arrow_record/metrics_dict_test.go | 16 ++- .../arrow_record/producer_consumer_test.go | 14 ++- pkg/otel/arrow_record/traces_dict_test.go | 16 ++- pkg/otel/assert/equiv.go | 91 ++++++++++++------ pkg/otel/assert/equiv_test.go | 14 ++- pkg/otel/logs/arrow/all_test.go | 3 +- pkg/otel/logs/otlp/logs.go | 14 ++- pkg/otel/logs/validation_test.go | 4 +- pkg/otel/metrics/arrow/ehistogram_dp.go | 1 + pkg/otel/metrics/arrow/histogram_dp.go | 1 + pkg/otel/metrics/arrow/number_data_point.go | 1 + pkg/otel/metrics/validation_test.go | 6 +- pkg/otel/traces/arrow/all_test.go | 4 +- pkg/otel/traces/arrow/traces.go | 9 +- pkg/otel/traces/otlp/traces.go | 36 ++++--- pkg/otel/traces/validation_test.go | 7 +- 24 files changed, 306 insertions(+), 109 deletions(-) create mode 100644 docs/img/OTEL - Chaos engineering.png create mode 100644 docs/img/OTEL - validation process.png diff --git a/collector/gen/exporter/otlpexporter/internal/arrow/exporter_test.go b/collector/gen/exporter/otlpexporter/internal/arrow/exporter_test.go index f3a511c895..b6bb886b43 100644 --- a/collector/gen/exporter/otlpexporter/internal/arrow/exporter_test.go +++ b/collector/gen/exporter/otlpexporter/internal/arrow/exporter_test.go @@ -13,10 +13,6 @@ import ( "testing" "time" - arrowpb "github.com/f5/otel-arrow-adapter/api/experimental/arrow/v1" - arrowRecord "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record" - arrowRecordMock "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record/mock" - otelAssert "github.com/f5/otel-arrow-adapter/pkg/otel/assert" "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -24,10 +20,16 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/metadata" - "github.com/f5/otel-arrow-adapter/collector/gen/internal/testdata" + arrowpb "github.com/f5/otel-arrow-adapter/api/experimental/arrow/v1" + arrowRecord "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record" + arrowRecordMock "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record/mock" + otelAssert "github.com/f5/otel-arrow-adapter/pkg/otel/assert" + "go.opentelemetry.io/collector/pdata/plog" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/pdata/ptrace" + + "github.com/f5/otel-arrow-adapter/collector/gen/internal/testdata" ) const defaultMaxStreamLifetime = 11 * time.Second @@ -178,6 +180,7 @@ func statusUnrecognizedFor(id int64) *arrowpb.BatchStatus { // TestArrowExporterSuccess tests a single Send through a healthy channel. func TestArrowExporterSuccess(t *testing.T) { + stdTesting := otelAssert.NewStdUnitTest(t) for _, inputData := range []interface{}{twoTraces, twoMetrics, twoLogs} { tc := newSingleStreamTestCase(t) channel := newHealthyTestChannel() @@ -208,7 +211,7 @@ func TestArrowExporterSuccess(t *testing.T) { traces, err := testCon.TracesFrom(outputData) require.NoError(t, err) require.Equal(t, 1, len(traces)) - otelAssert.Equiv(t, []json.Marshaler{ + otelAssert.Equiv(stdTesting, []json.Marshaler{ compareJSONTraces{testData}, }, []json.Marshaler{ compareJSONTraces{traces[0]}, @@ -217,7 +220,7 @@ func TestArrowExporterSuccess(t *testing.T) { logs, err := testCon.LogsFrom(outputData) require.NoError(t, err) require.Equal(t, 1, len(logs)) - otelAssert.Equiv(t, []json.Marshaler{ + otelAssert.Equiv(stdTesting, []json.Marshaler{ compareJSONLogs{testData}, }, []json.Marshaler{ compareJSONLogs{logs[0]}, @@ -226,7 +229,7 @@ func TestArrowExporterSuccess(t *testing.T) { metrics, err := testCon.MetricsFrom(outputData) require.NoError(t, err) require.Equal(t, 1, len(metrics)) - otelAssert.Equiv(t, []json.Marshaler{ + otelAssert.Equiv(stdTesting, []json.Marshaler{ compareJSONMetrics{testData}, }, []json.Marshaler{ compareJSONMetrics{metrics[0]}, diff --git a/collector/gen/receiver/otlpreceiver/internal/arrow/arrow_test.go b/collector/gen/receiver/otlpreceiver/internal/arrow/arrow_test.go index f00b510fd4..385f02fa25 100644 --- a/collector/gen/receiver/otlpreceiver/internal/arrow/arrow_test.go +++ b/collector/gen/receiver/otlpreceiver/internal/arrow/arrow_test.go @@ -14,11 +14,6 @@ import ( "sync" "testing" - arrowpb "github.com/f5/otel-arrow-adapter/api/experimental/arrow/v1" - arrowCollectorMock "github.com/f5/otel-arrow-adapter/api/experimental/arrow/v1/mock" - arrowRecord "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record" - arrowRecordMock "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record/mock" - otelAssert "github.com/f5/otel-arrow-adapter/pkg/otel/assert" "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -26,18 +21,25 @@ import ( "golang.org/x/net/http2/hpack" "google.golang.org/grpc/metadata" + arrowpb "github.com/f5/otel-arrow-adapter/api/experimental/arrow/v1" + arrowCollectorMock "github.com/f5/otel-arrow-adapter/api/experimental/arrow/v1/mock" + arrowRecord "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record" + arrowRecordMock "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record/mock" + otelAssert "github.com/f5/otel-arrow-adapter/pkg/otel/assert" + "go.opentelemetry.io/collector/client" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/config/configgrpc" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/extension/auth" - "github.com/f5/otel-arrow-adapter/collector/gen/internal/testdata" "go.opentelemetry.io/collector/obsreport" "go.opentelemetry.io/collector/pdata/plog" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/pdata/ptrace" "go.opentelemetry.io/collector/receiver" + + "github.com/f5/otel-arrow-adapter/collector/gen/internal/testdata" "github.com/f5/otel-arrow-adapter/collector/gen/receiver/otlpreceiver/internal/arrow/mock" ) @@ -369,6 +371,7 @@ func TestReceiverLogs(t *testing.T) { func TestReceiverMetrics(t *testing.T) { tc := healthyTestChannel{} ctc := newCommonTestCase(t, tc) + stdTesting := otelAssert.NewStdUnitTest(t) md := testdata.GenerateMetrics(2) batch, err := ctc.testProducer.BatchArrowRecordsFromMetrics(md) @@ -379,7 +382,7 @@ func TestReceiverMetrics(t *testing.T) { ctc.start(ctc.newRealConsumer) ctc.putBatch(batch, nil) - otelAssert.Equiv(t, []json.Marshaler{ + otelAssert.Equiv(stdTesting, []json.Marshaler{ compareJSONMetrics{md}, }, []json.Marshaler{ compareJSONMetrics{(<-ctc.consume).Data.(pmetric.Metrics)}, @@ -424,6 +427,8 @@ func TestReceiverSendError(t *testing.T) { } func TestReceiverConsumeError(t *testing.T) { + stdTesting := otelAssert.NewStdUnitTest(t) + data := []interface{}{ testdata.GenerateTraces(2), testdata.GenerateMetrics(2), @@ -458,19 +463,19 @@ func TestReceiverConsumeError(t *testing.T) { switch input := item.(type) { case ptrace.Traces: - otelAssert.Equiv(t, []json.Marshaler{ + otelAssert.Equiv(stdTesting, []json.Marshaler{ compareJSONTraces{input}, }, []json.Marshaler{ compareJSONTraces{(<-ctc.consume).Data.(ptrace.Traces)}, }) case plog.Logs: - otelAssert.Equiv(t, []json.Marshaler{ + otelAssert.Equiv(stdTesting, []json.Marshaler{ compareJSONLogs{input}, }, []json.Marshaler{ compareJSONLogs{(<-ctc.consume).Data.(plog.Logs)}, }) case pmetric.Metrics: - otelAssert.Equiv(t, []json.Marshaler{ + otelAssert.Equiv(stdTesting, []json.Marshaler{ compareJSONMetrics{input}, }, []json.Marshaler{ compareJSONMetrics{(<-ctc.consume).Data.(pmetric.Metrics)}, diff --git a/docs/img/OTEL - Chaos engineering.png b/docs/img/OTEL - Chaos engineering.png new file mode 100644 index 0000000000000000000000000000000000000000..af6e89a17a3f3f43fcc288d562417ab1e6781e64 GIT binary patch literal 184081 zcmeFZbyQW`*9Lr$zN9E1ASEDzf=GvyfOLZ(DIlHFok}QDl9JLPf^>(dAl+SxG>1CC zAI-~0akjc<%^y!*HH8} z5hgD!spUDnHRt82sg3H~Q&m)Z$8c3oLhY&MM~bWDmkr8wr7vSkl0L(fbsbc{?j&s< zPtVR7DY#KsDA-oVjaSFm707+-Rbco7j*W8nryPUadc`p}Tg7c2Y{&h)sr;tOuQekq zY(8~1)ny_r&8KBG^~a%i^Cd8t|K7qwMx`nLdl&TA=yfbGG5=!=tYeJ9_#gXVu+Kz6 zg#T+Ng9F~v|FskLOo{>Xf9(yYxkUB9c1p~WcKxrNupglk&_ez9Mk?@sL;b&5{coE9 z4)%Yx`hRZq{{~p;WE1?hwHP_0GJzqPKMapKB0fG|n)2O4hQDEQR1OP7jeoaZ-+?%M zt3rdn@hZ^f3#UZ8{NSY^qJIy8sa0a*+?^Dasv&S-SY#Cb=TP<@YjE5jI2-86SjTw( z?rMl`pnf5wiCqugWXze?U$}@U81@{{^z0zmXukf>@keGq?ql0ju4^6JQ&FEV(lMD*UMuz8Yt$jg+ zDj`=iG&If!a`CNh$^Ly(VO(#}Uv$x(XphBB6&}H4^dIqHlyK;&F&8cm7J(guQ#;+? zv&FEE)$@7rYynL5c4p^oFHM8}{P9E$TUPHs2P)r1^V5-)Am4jVSRpLoE%j+>OCSz6 zPdwA#E2%}*eu=`Dis}*?>D|2FupwWK_vDY~)FO^HIF;e7zaREfBgJNnJ=zM7(4cT# zlED3+FerapcN|-){FCEIqC{xCo&rnwAJ0sR>p;s=hK$j;Z>}IOudbl*QX@cdWYK4v z&0jJ3b+S7XPW*OM{|nGDCy^Tth-RPD9b$oK9ZD#-=!c zwDm1r)swKlgKkWGu(?@zPwx}TKSQ%blUMWC)wyLv6Jt_QL=f>m7Mn|c$BL25vwhp~ zzi=pGanCa$n<V|EBfJO`I|Th^nZnOvi8lxt|d0K2n)-Xxb${` z*8G2#ggL<}h#&}quq9x{IxqL8H_v~b0>-EI_;E^8>le0UObQLn(t!$F8#T;-45CPe zdQ^?BYq9hg_m8+q${5{Q60db8dER8?_?pOo>)-plXw!PzPVM>t`(EALcA!M4Uc~(M z|J+N0=;xvL&%Jm{z1<5Q@w3FJr>48gxcw#g|E~N1XLx(s3r4OiMwW!gKVA43;dx)< z<-Hh2E{UM`gv&w$%xPh|P%F??3l~?XB*4#>c%SJMgMyo&gj15A|YT zdrqKRerB2Ux*hI*yZTXf?H_)jcE#(yQC^qrx2{D3T{>L-8wRMSq&aM*`Pf@8-ln zoH82+Gm`(@j^SC8QFPP%RjF}o-OGQkd7MJ|!CRFI-rvrz6`*P4ZB){tyPfHOes_SK ziHB$C%Oy3UQiG35Wi98y0Sy&90+pzfM2g><}qxBLfgnX8{*5Sp8tC!+Bo@+slA?A};yb`~A?bnSDdn;!01iLvo( z9`1z1M2bV<+fuyd&Zc9OJ$$R_wHG5KQ2|OC%edTE?PhF}Kj;g*hP`CJ5$Dpp98n4! zggF*XVfSk0!eaTQc>{c9^L(T>s;)#MtuK5aMqPZzm_h0ZDdzisSKCtHRJyL0@LdIu=d%34O$Zjq zA8BZ0*BWK!pSUa_J+=r~Za3z9SQC*5DQg^3?`)-=3D7EdKc4Uil~mADR8mHzu}97l z)coQ_qTg7qHIMyd6VH%L2d%c> z)|)I1x)KI`zK$)zX}-ZnTk|aP8wn%Y#vc~CnxU*fTjK;_XF1Sht49$kQ53-mc7aVo z(0!dx3Y*un`IoC^Z8$g1y*-}nu$juu*rxF-$YH>d?;g-EU}cTe1mmO@a}7VDpt$L+ zS^T<4^QQg^e5zUTw$2?z*CDltl_o?D^n*iEXTXsq9_rF<~VyFQ5JDiU((sA^}C&uIdiB zzJS4qsza^FkPPJFH&zHtC9M8MCNk?IY(#5C1$RP10?RMl2rS&7}-^*wtG!oxEi%&-PLIkl|&bFu6=^`MH3}!Cb#-%{cU88rTy0 zAkAZboae5Rx}Kh1_NxfI=OSUP3o&JwxG$@{Mjp;&WuHA1zZk8@~i)P1D`hh(uoYn-c*Bm_=%xIHUVljG88z*&9&V}f4Bq=M*O zc&R#4EbDUZY@yIjlfCBxv>Yz|@O&`G6^3GI{Pr_c`81YKh4nr(czVuWpjuOT?eo_i z`!#lE5f_MgZ@;&pXcS2V=gk|W+t-PG;ZdGB2)|bhxf>EzU;hSWNF0fJJGVc#XNV`CKbU+4MrV!O;OqPcbJ#x zGba|tBY#dR?~YS8@n%i=msxWENTlJABsBXPHSxpT)-L4QR-FN-atbQZq8HV*uLsr^ zcvi%GFMGk0nMWPBjyfEu-f2r>?Rk!Dd)R2*q0xt}|rLtRO=1x(+u zS&U=oi;Eq=wkw8M$q=I9-QN`7ou(#d#>t6`Bb$j-;?o9;!vW z9t>ElR*$|vix{5w_S#7O1%wCy8hKw{q4F}4 zj#Rq%8|EC~lc=0Wejg1|1?)!y{Et-@?2jM8RYjHKc&&C1H{2zWxioYBUsKDd^3M#s z5}2(=o6X!7)TpL3l*nM+8RYj^i@5!$Nodp=_! z-*Ebt(F8fxP2O{`5NuyFbKQ|DCB@rxc;UR$ke!5>%W^6F=on{aV!^R%V!Sl9dgIk{ z=#uO3H~5(7s%iRI{VM}boxx?l&hG23_ck*fg~aGo`csUO4kH?_v;cP_S+F0h$WyEW zr*(IAjXq9qER+lh?f%xxymrJ=-1Kq3s}7eCiZXYy?G1o?2|Hy?iaWNS*Mp4YiCM{Su>wpn-c;iDQ0}4{CV^3 z;Xo~+h5OX$@Ne zZ%~ZBfA8C~#UNlcK9!cCcg%o0^KKkPD@-o;x5Q)ZTMrCbjp#Og)UE&hf{@!Jhm2)tU{}8e&N4z5^}3ei#wHS5$xU zMJ%Hy=j_QOm>RzpXT!m>U@tG$1xojxDcTOXoy#X)n}@4s4~1GDW_qv4%mm^fRzu0^ zn%lQ|+Uw>VL_HU*nz>Kv%QHv7`F*HGW66*y->rUv+8O(^^r!reLmHj!0YM9xaa!f8 ztGNW;SYTKSBj<*Y57EJZpfLG-zwC@bywUm9YngET_>t2R~c{w>M zU*cS6`X<&(aUz?J#l?6V5A*h zBW38UaHQ&cz#SL3;0H}nKaV-jJu~{Z2mAM)^#PItY;EXM^y(K^{W*tPblS6q^fD!X z6`|GiA<$3xAP~#^tpHGfD46kI5Hz?jJ>2vYb)-ceIrb~KhvYG zxu*o%>$^!Njf{yPePw5oGiz09=X}#~4jb=SAV>Xt2mqh$z_}+kyoix>hJ*tsyH2}F z(BS%hu$h+*LPGF++;^VQD`v_iyysEcI}Jfr^1AP+GC=;Trl zfW1T`E4EM)Dfg&7LmyWKp_KZE#>!yQn_kVb4&tF%#Woaq9=XeQG-(^(iJqxZ_T4g> z6F61rXu7GKy1rcGNR7gFf0@)RLP@gW@p!hIs<&flTR>^yzVCCB>Dj&G(uo3@Lm?TN zGrog{5+)-D5T0l~qB4P--|76tK#~sx`t+-`Y!S6qU$>%pEw(&6_9iQRl7!8xYh3RT z6K=#@tyyX?#MNtD43$`s2=m7zqwgYpEf)oa1M2&W&Wbk^?wNJkf|ING1759g=oPcx zyy$bbC!uqy&okQS*cMXGR8D?N5r?p>Loy6bwEo4`p=-VN`09s>-|JFJ!cD)tnjHGFN zcRKmw64AsOc(7M>O%UgT@w<5Wb@uzt&w_=47N|3m{F?3rh}$T{@V21hu&BqvwpBBT zC1%MPLQAj1k&xd7{!IA6k_P<-gE0q|$$t_cd(pYHhcxScf3#x0 zljxnncTy;{U%*+uZN1HA@a%1}<_K`Agf4-2MnO9!r$FzF4q0QTM@Ja(y~yN%&G5#9 zW6gnwRZ)-8zCB!V?&zQio9=@_CdH)q_(JnH-l1N~Z}~@7Z%?o>@r-aSz};=9OYS}v zW*h+4VAzmB>7ELO2`3zaN)QGbvU*~pM(13d`7E~|DAuR)7urv@5T$yA8hSv}8b3D8 z-3k^6q~!7&0#9N<)Sg^ggdkZ}6p;;Y*-xnK_{MroxD%j^5mIb727cz3-YeA{0Dv{L zzX>pLO&wz%=B*?5fp3Q%u0*x1+pU(ljIit{0|S6*xi}wx+IC@GEvH2s+ISdA`}neK z*3XHu>hLV2I-dDA4h>XRh-@Gd7A8M5KGSBc^=C zt%s{p#?iaRJ!ie0H%9$fN1ffz`qo8FyA=oYTS|iGQn&gK)sPu-{d_K7A@Elb(V}*E zo&@f*!Oh~MN7y2FAvirc>)M{bw&f!>Yx$)j1A=U=#B_auTYNIbhK)4_oJr__g;u?4 z8%RV#2LL5%*;rZP;eXTw21(-UxA>J(Wu-sdLdbpfK~g-d&+kf>9VH&~8eVp`KHfoR z0c#~hWTx!~JYy?KpD1XxNv7i&*P}@4$ph|rR)E}^H>bKRPByZTmIsnovZ^;eT=W4A z_n*oRA}t1ZUD;cJb4iMLDr!8m$Ok^!&-L~gq-9hO-;0;HP^HpH6R>?2CGOJxgIuyT8YDd3yXkE5n=Owwt(sTt$iG*>pcJD}_}`o< z_^wNcSH{WVen12#2l!}FNqxw_!tLu9cq7hI{zl#wNKWhvv98KOa9^Y_Ek%m%eAPnD?aS-ooD>-Z z`^dhNG1q9FYn`;gP3oR-F(#$mtj>vz@#~ymuVb8i=l1Iu2Ox<}E=f|a+MH5COptLjlQS_#H^&2$&v@nTQ$R^S#<23(kByAZAvuuo(NjA(k z09YT3#67NC@42V2kDs5>CBB~+2th`>U;Q~E$|_)2Lx!lod~J>5rO+(|NVF4b7QkEw z>f-ylzh3-zEne0Sh2b!O546lzRD4(Zy~*7`dO|o7l-_Z>M@(}(Y+I;4N?284xUb`N z`l{6H1LMcNIjSU$=F)@2%OKk&On<-HgmBkN*TN-g5i71R8qKlnn((kg4>|RMBzC2a z#|4@8ifF|64tkbL^k=9EV1ed3V8TN$cd0rA6bom}e-pm|q^2g*p4h3*rj1V>p81lU zjcq7CDMJSc9_6lyJ0LYIPj~lAyS~tN2Rjb2_}YQewf23%jTGz}`zgER{_gFy<5M^Q zQEbN(Ks@3V*e?;N(F!cS%r=1WL z%MANue?WcuPFM9Alb+QZ*m#+igjY5_cL6HjbKhp8i_=7}_TYBk;Sn0D{JwU&Z$CC{ zL)W06d0e{T_;p92?yF|RYO|CDy>cr)H7BQpH-XMrOi1-TSetpX{yT471xU3*tzAON zz(m8eDgUgKn0~#U_6(#**YDbH2X47mt>|(`Uvnh>z(oVr+~gD@CFd#W{TtV{A9uJ- z^6!YdB)(AVrH$^Rh4)Ebb)O>lKXwQ~?|@};t~co3_6!Y}_i@>hZ6hIcvI20t6t%9x zabfo{l!P|>yHuDJNNjBXmaX#6cBs}f10XtAAukFsB}JGT;7_8cBum-=qq-&A{`}S%i51si9Sf-3*Y<)3(9(z2X)ZK2c*7%ENf8VCy#+HXv#i@f?a z5}?HSo<4d&{NgIoo}GQ#F&Q;Lvhadd=zj7Jzc0;1MXGG1N1XDf`_8D5E38%^0FVx? zJ{(bRMYq{98RaX_xJND6PVChISX*cpW8%>SNQ3Z@zHlA7bl6l?`~9LPk@MqLK~)v6 zxw(gy|GaR(OoyneX>e;OuwOx6(I$=VsO6!WOdLzI{w}ou?P?k}I*3WxGjO zhWj^GBJT}xd00i|Hmxj?MMv_v_og?(bMx|wz#uqQ?Sak%nvpdN~Bs4N9ZV(;yq9_SE_n0-YVPn!4A zMuJ$C_qWJls#k+UME$TSvR>0$20o*2wZ<$8l0Ya)kY8@cjTSfW)!+iik7^wdL3f4k zgRw7)*8pVY$C5Y}#yN8xs29wiAuZLHoz1)Kff`b`oRj+^jOZ%9n<#78ue%U3>)(x(nma9 zd47n%5a~qn6-<$kL`ueFfT8#FD`1rMiZv#{-hy9}B z#cs`~`vg&#RB1R#Y0fr@Ca1Y?X2J~fv(txx=&UEKOk>9P&rbl#3fNXfRG1?W(TW#(bgxcio7Q$tvJn(GSj$J zR8_7O04`QM`b_B|2=c;>QX)M_R|tX*dtV8E@FI{OS3v@jF7LV6;X%_y0-EvN%unXYcQ*j7WVG#w`;vJ)Fjr6Cv>C8q?srO^sHmt2C6vpnr6a)2 zK>{|IdC0JvM(f;B{(QUDbI&a>irnRiG;{yPtjt^Ar>AW}KmJN!Dc7tOa=J}HW#(-- z-s#l;GoaB31j=k9V{@$jWIpTZJ2xe5t*xy$040O)W!9l~{Jl{T%PaAru$=)QPzx{l zcdr-Uop5|Vx>&ri{lb!!DoP)cU@rO|-#clE;&b78apD`UWgd|9yb@H8@GpEJD@gdK z3<~|hAlXaX&aw_k|3J89pM7@(F7tS03R~s#TQ6y3@e?SUAT9>u;&UEN4j)(7sxn5t zZW$530P|B5MCi8pwT$Uw{gS85)ax}dC~PB;9Z1VF9$MdHlpWe<>yj0y_p~k4y91Aa zo`f8TxSj(*jr(eE{6&Gcv-VkJS;|YShrCvUT;q+OcRr8X6OMp7T*ly&%(%F?=f2w~ zlq=VQ?*b5bv4iAH>d7qn4zhTT6ilGkns+6WsRDU6^2`!Pk1N1IX`BZ>_APYXq&Cv2 zO8oX)BF4)%L@gA>_0!gFKt@oQt#QQ=dhFj@)=e6oBQ)U%kdF?4I7zN&37jY+jjR7a zXlaRi`WR@R*YeHABC5C{APBWKrihS3L3O_Pgt?*CDA7g_YcM^D1N-K5;bGo~n>6_g zK!IN}M^aEw=L1q>an=Ha&K0x>@L2@~1udXGU&EN?49xfG|AJ~2H>{G-@ajBj8+f(a z@-o4y+m4PU07yMRauhL|pN*)y5p=mA?X7vTQKfg@k~sn~PLmICCv;Y&AUzXMSg2?M z62-&|GEbC@-n_j&f7l(zrqAA0Cm;g(wG0biLIXo(etL#Nba>#O7-Z^VlOtEiLR2*VZeoB#GBM><%2$L;(A3!6{4Zw_2HA=t>mKe7J*|3yRHbaE z=#vzW&aR4q-4#IZs>4dI@~dHd!psFL7BE=#o8XByhv)bE_E{ z$H_o+c?4>AHq%)(H^q+1(R?mAkuT$svksKf%?mf40bQJE1mrPqmdyJeD+Yh->K$#8 zQ6xf;(WTl2{6z1@R`d+3Mwi(ESo;|L|(nSg6Q>CCCLZa5yPTTVWAm8 z?ouwp6(s2pHwtox1P!R#1Kazj-2?g~Mgn9<1I@=C9ZkS=)`K}|?PU)j^pU4B5659_CAJ<33A9F7kD&4IHOF0;khIR19tz~+c*W2 zAr0%<)(nkd+sk^h0@~l1Db0$IC`Flas%bLavsL<#76Gm=%GboM1Be z(oSPyDx^ia8<7i&wm^ykU{a)!^*ku1Xpv1p+V@hvdU|h{(;fqbKWbbE@+#{_mzB_W zwb$|sR8p=xr@K#?Um754JbOLDKNcZ{H1C%%weZ+h7)H|U)B5GV z@$tO{6^ps-TMBS1&k-!4>o0v-zrGZ5Dg!|jp950v11JCK2!du=t{fC__#?GA6Fj!J zfi?v#dd}sqz=*{nOl%_REE=T18QNYi=XNl-G7 zwX-9zD96xoUcW;l9G>ank6i4*#*$F--dFFi1r^O|4Wwcdm~Ws3S$1`Ef$&O{g1d!f z#G~QGAKGSixhrjtQ48161$PaIPadxQSQepp?)^{AJ-FhRL6zabhZ)}sUhC;zZnBmW ze;%MdN?CY=6e)2(3TQx7DSPW{j@!BPoV(ffjcIh(>?2OLqj?wE+wKQ^~fT^eSVt4|WB42(B%|7#=J+OhyyIoh_+@WR3+mC8drWqZ- zKt_&&I(QyXzt}->23!VWHgETb5kL%EZ^%-VmFhGoYFb*pJu+WGtK7hyBBFL0%x!Uj z;E=*K1M(d>5jq;u98G9dl}`2ZqAxW=I)<1n$YB~>Mav#+@*& zSg*ft29z4OoMpWQotLl1;Dx))0!E@6?!4k9p0MOHW3~e!9^bW?@O~B6 zoz+4mKZtgs{Jb|>hCHa}ZTpSPbmrS4`Q4XkM|Zdtz4|c36TbN>Hwjo;bRmI0qt`;? zz3e&$C9?kW-cpuGP=Wz*vY6(>y5)&jU7_qioxPd)y@ej=C?L^O9Z3Q}YCvbiqBc9W zefX$X-5cAuF1mlN@-FAC60PcjPk&8Q{Fok;5g^kH`alWAq#n7_s|AG&h8G|%StQQ` zl{UZmG!9KoM4omf@LFfS7mctMV`CjY&5}@^SFh$@d-kr2Mgrv@` z#04F1Do9cbT~|j&mF@}ynXwSyIjTPk5|%*f$9|nb{c_H>p9CZY9O(jkS1PbD#}%aj zk|vK`!4UAonWZTpT>LzlSbyJNgMb7DlQZ^M!25@O>Bwk+r3hRvu&Sj{M+UqC#Dv>c z{5bL(87?1}Tbw16m{Kl7GRcP)i|~Nc6v}+8W`C%X9@%>{^gV6Rr*t03L#O&db>A9a zuYBe!fRq})KHt_oY*it)oyaNrFV&SbJ#vmNRZwf#NONf{(tNb}SHKYfrNJs4 zR+^)aJ5AM%XutrKfEZi$Bl||jIS3dhJy$&E_(0CP%!66>3Q~7~q9CKS0(t|6K|2Jm zFA`^7^OGM*Cr=w|GH?{2BgBw{l?p6={YSHwM4VH-K?5=<3{(~rM|0#X%{`!i2Q=tU z&!cQIV^fMizOfM@A5iHhs=N9P=$xH-TcA0G!yM9F?mey*V)!wZWL!9EkKeiMj4et5 z9;HH*0uaP%P^x(6;&TfUGp&rWB72p<6ZCS6>jp}>tu~@oIrMDK8VpILAchJR3eJlx zrHptWOd1kp;owk)gl8%YV|H=NE#VqySU`^v6t?^&9m*ZPiv$n{>Wyq`o1omSo+O|P z-Xx&j3lpc#Ur4_gh}i)$<>)Criss;2zt<`}OOlYsB0%e%MDbBU1_kn>5|p!R5F^9G z!AA5JpiRNU7w!BB2zE!f=!#~`DeQZ`EzaqH-2=hSen7GDuoWnUy4w%shsP!eho;Xt zqPpP-ppaVk&%Th4eQmOhyF;DtSPzeqro@MwfiO1qcY6fn8gkqms&-J?#xCyIoXBCA z4Vs@wroXGP@5J~30NDV-WOw&A=}1M|;J$PRUe{{c3`h2I7--zsaC=M-6}2x`!*+t* zztXww=n~bN=uSqxSs5tP7ifq|gwkfa33=AqXz$O?m7w#a()F`j;~Xk#B`7mB_WKsk z=D2dn;Io+S=r3NY9uu=9^VLtSV!8)%z%=B8BELGQ(BJs$W<6NTMEh;G$C>3luNyqx zo76`}_9oMY>25d5NxS%Bx~+R>v@A5p?)0MyKnujIb06e}tH#N{D)%Kg21`}}C&7>N zn+}>l_eT5Rx+uuKRjjXaB(x?jgP$as?va>&n74k1%GG+uD$`t z-^1CH&hp2S>?KVrXU0`Xno6M52`IG!B^hd9F{yO~6Agt3o_XKCING+R9RR?;nB`B= zv2Sjd*AL114lU*f+*fm=cTVfvCP`;@zJMS`4fyb5lf|{*=c4$js+~L z1ZerA!6z>El^zhHs0i0L;~0D7yE9`kU&r4JO z)>lUFx7@@po45`BfhJaT>-+agpz#lo3((#NgnD7$a1Sl2rDXEslFRkD9;htcEYOx@&ofUKfLD`4i^VZ+ZHB%p1jEmSb;M3I? zXsFa;T&hDn5Z;^Ao{Rl{BDH_JT%qfL zuC+=KW<>XonbEEw(dIb!G|GO3%{*GAW6b^3%oCL4K=cDc07nKYNc`8kKoXY>{Q5}U zK+#PVD%XN6P1*Hh;B#G2yn$K@0~&yk=XS^^1)d+eQNr^-G#PL;tP~JaA>b6ByIoKM zvR-iC&tqU&h?=);(2(W49%T0nIs@n%aTClM%KLnpuf-En9I z0#jTrRN1b zsGU2w03anZvu#!pr=5ZGC5ZmV(+30X6NtlMpm{F55qOYB&lP=^hHKERe%#?3f)@CH zY<#$X%G`f{`2W|}uE0wdYUy4OJV5bcOd7}npcM~R_{k~<24mWofWhcDx?xUOhfhJX zXU7gc>{h2EzVs`JP&~CgaDqg(v_wZswp> z7&Isd_1; zm`7r@EWo7#b@33TteL)Q?#sQB*8u0xRS+AS1%M(n{ z_!szek@*(m=nif$HH?9~s-8)Mk3Xi}`UUfFt5hGP3$fqO((+!6u6-i@Ggwsa2O}Ab znc{yAF2TC}!#0h>bL~r@BQk>Y1IiKU!Q9I7pbt0j?Mr?S>70i++|t9zRNDcF1@{qf zQHl4-0m)OZJ(tg(tube(%elkk?tqzR_*iI+DY2jZfe;pPrC2joNUmLHr@90k`j=G} z*jIQ*FqEGo?T0~$e7*J{B32cdG62>NLwA<>g#1XBbSp;Ul{AJCDEq9-45097baJ=h9cfVBiFKl%4kC~PMiz=+w z*qXkq@&1aeFdc1*PQi!K56wCt$G)JAvlH*g_g6Bcf{`i$DLVKfe^)ult4Y`(@y38- zE2aM?|CxTHk3!q2l@Bf~Q@5&~K4BxFVaXfr$M<)fr>6@t0GU>4^KMsaN)_i=>-@bUw*JxZ11LStiS zs54iWo97rB%x4XN9G>@$65_{{p=10JijRv8ip*=u_C&Hzi!W1AstAmsChfk`$Jt6zx{D1)8cZ1T8!7W5$<1*HV1$Q86U5WJ zl(JtD!SKovo$)b;Pk*mUpJPNvhL)E!a5v^xQs&ibBN~|6n-VyP2x|6=_d7eFVF-=h zj<2v1gMz)BaBD8grf}!&=BIc5#}JCK_si3~Fcf)F@LtJi;bNx8>IN)EiP%Tu!FVaK z@<1N)(%VVr2Bq{Kmn0H2s}^Y7)zY81nL_uLdwwd0FVyz2Y;LXtNeqU|J(jJiNc2;| z6@&ei;qDhx)kst1 zg}|5F&u-%c=6+A;-WmJLs5TLr`CA`>FTvtoO=$XOK2msjKTbolhbJX3e;PLf=#FaQ zzzF2(?hpoDTq3_Vxu{HzPX%MBKc1dtIjtJKItDv7(UGOwieBc`t(n>BP!oZWmq|2a_lV)Rm?An^cA65kADfpgl}Jxs08`=w2R`z zlNrkqv1KY-sg%01`Tc}2r%#-f`jcA@EAAd+5S59GEb9~9^}zDeE3UPn?_$6%tHUCA zvYYqoU6SHAU@c}&f=FULpJ2ffdK^CMD&lf9y8l%sJFf-wYK9cgW+ShrWq6l6ZB?(E zH3+7pdQ}keIq%I?`uVz<7d5qPZQ3yp(GkH41snZ?TF^w8*i#3W4{`^^K|FfBQ~UhH z1FMy>xXgyCi&U2pKaJ83i?Wdchgu9m!Z|F0aUx%*t9Dv3O{{0nptB2_u=IO z5;|$X9+}hIT4q|F;G9-zIgWA1FkYL9SH~C$k|cZzXaI=mX2j!%7cmIgsu}5z2q_X6 zdvuQb%Z1=;zGcs3aRPsSPna<7bl3Q`i`g-*fQ^$ zg)#AL^Z;|m?)gM|jnp2gpAF?eURt+@Xh0o$7h4AR$XY%R4B`>|5>;>>ocNImK1J_u zT3MXhHe`y4_PS4}$Q82VCzksIGq4NWHfOi*RaN?pF$+;x;O9N><(({Y-C7kQ&00?5 z#8bY&w;YMTm))~DG*T$YeyF95cR{ZBT?IFUG?UNv^*Q7fCJr(B0jAN0Jal@1O6@&D42G z!Y*az<|XuzsM@_MO;1tOWkNsrRW_rCsn~%}!S@u{(-+^8o_mYS2797C1h^J(E*|dO z+^#oq*;1j!W^<8{nsT(ZvOdOw3}dNe6$gjw_+d-MStp4oEWEVsYn9V)JSceI>;9Y#Ch_BV zI-!rY>XOLZTY!a?7;Q!}5c>T50Wuyrd1cZ4+OnM3qNU5UF)-K=H}2hQD=DW~(}yHV z-;r1_W?JJ+ioD!gGP0*t;n0M<#(T;ozDAN5(Js}&3T(6Z-U5l(LP(C*h!is-`o8}$ zhQx9?7IX3pThkHzD#*rw^L5iyg*@We7>AK2SpB~Bq4$OTP*JNn7Xjg^@<%F}1TZyO zH@3JNsc;1O&D{`0bnzOmP(iR5yGxik&H3&~t?9XvJP;nUxRYh=_rQyGG$BHDL7}Q( z1X=Hmb&Ua$j^9waGY_#;7Cw>TCc8!#7X2ToqcAIbo-_XCi@b z*&qEfk9#D{)^tQ7ap2}K_fLmJgbA?N_#DEcF zpAq9zkir3D0|aRwx=AdsXg-x{lBZ7G``YDy$CYRMX3_LPFtz$mQCG<-(u2XPeau(N zB55n6=cr-q%+tTd?|JDGc-YH$bqD9+wtSLJXDr);$092YxD_+YjE2LuC*x< z`h?Z05cW4*8m4SEsfaw<>mY%dGTDi|hy-@IAUfmo(-9`Izw5m`(EY^YZmn^sj}UCK zNDlD17=v@9oeNFX1FRAZm>R}A;kxco@j;}>C#h5s7&D7YCdE)e-gL=$5TS+2!&IWJ zStvEpVr>tm3?7TdfF;}>cK^$v4-BYKAJEH)T)?K~IN#w6<7=zt&jaj>pYxFKVrXdF zxfLDOW(AXb;NDJPG_-A$u011x(-_*4Omtgd-AeTlfwi&!Lan%uR2Vb-R(&gUDuZ`n z3~6e#+UZaGc(DXxpb$gsr)QI4L)pdf0xh}e$_xokS;F`_J4DEsaAA-Jvc7fy%L^_7 zUV(~>=o6hm{^e#1b7H1|>^*L;yG1#~habk!Zx=#!_1Nde5DOM88Jpl`qLoM4hhlSv z5ZcBA#_u=oLY#Bsv;1daHxmFUPmo%QA}_92X*&4;dSRwtn^@Vvcjy4)GkpKcn@!gk z*w6ZNP{`pEJQ(Q^N$w9^yKs#j1v#huob&SV^W7;`A87F;w14ed%UK+T;Zt%Hb z?yRF37q)011F%9G0ENb$cSkhL-2XN3;>nWV1`$k@Z-%5p+;42ffZ=`J_q)7t_9Dv) zR!H`1h5=1u^ORzxg1&V{ZRB}RSKFEnOzp&~0Nmj@xXNdZU*SJ)FO=8g~RS`T`oa&$$NA_HELot64;ZR28J8GF<&&@o0ODFaN0qjZH4P;jgzz=T>hN5K0 zo{uePObItFs$bCYvF8?*L$22LDlE_n`@%te&CclsW~Ht!ZO-OkFid&MK(3|u6uJ;Mev^())rZ~-I*`Jm#j+e3U|N0$)z&?^`r-~R$!PHoQ zCpM2IOW=G<{t$x$;p3=u`|$1_fRG;pL!!w(JTT_FBOGs`*&zlaDEx7KHm8UO6K2}? z&4U1P=UHfKM++rzMA|iEpM8R|qlO!9>@emsH82^~AX!(d1<5-8Bk2CDjVQ|54v=}1 z9{ZUci&aD^#I9vug4ub>oT(~nfUF%1;NOi@-&O1qj2W|Whp8nKaB1*{{bUw68mv~h zHz!O>c^0fP4CVu6ulUbw!R3YgWkK2e{y$Bq|6U3F@_*mJ^WReEuetgE{<~tnCahh8 zeXMdg5tueC?-BPyky93{=%xSGD}gC>Pr9|0HqnNik4*JNYgFR!GJ*BaI<@hL8x`yj z4uDgy55DV~fb=3*5QV*^`H{Y1phX_GE zs;r$p&ByxDdOk|(Emzs3xM+=s)UTcwwbJFE3Wg1OtI<>}@R`)LVaO!4b=FOyiLW2% zu1r+%ueR}fM1X{7x9IT#4!*l&x=W58r-z!Vyv9*It=m`ZbXU`}N3PdMZj>ObBRC&a zFM)UWy@wP^_3AV-`;Brh8j-kujyd_SN6jQY^si6Jq`Nc<3ae7~>t=<8y)LQRA2@f2 zdS_N~f}nfLZzPI~eEH2%rh&u0a;C`bk!|(;`h+M)pQiqn#9u=cl8?fDE+iay$i?a;G2cE zsX1;(5wayFb9zzZnLO6Ac?r$3XTsjQ``stBDR?;xQ?^1lJ5g2}p2h$O7@EFP4Zl&< zUoA6WR8F}*)zILY5E@+`08ga3(wqma8QHsoa@ih!R5p2Pz*xaTLa47}Dq#}m{raeW zJFj@*D#7WYQ~Hy_TU*|@P50I|cwj5pM7SInS3M2|AL+OiC#_{;1kyLFmjuf2P*S6k za#PXw4MKM49@JoHQG@EnmrAiA1X7fS+mmq+HFw6h`6cD;;SVJ~n`yZKPt#oI4=u@2 zJCb(YGlj}tG(?DLi`o%#0i^cAcO8~5{*{gBpTrwQKE}R*XR1URTDrN$#EEFU_b;gk z9{DyY-4z#{a&E@13_$uT`?ejrj0 zT9u>?9KzuSXPIn8z~Et6I^L5xDaMIbr~8@L?^b%1>8B!5x$8YWA=KOb_KSj97~h+l zH!ORaCR&eEfYHgb01aKj6&hWLDovJKPpiDEx*8EVImNoF4oaPbgl1JRyxk7Hec|mn zDL6OmR`~L-S7god+F$dVUVB@NGDEvsL+mRa^SZp_{MI$}GCGN+;a2#YFh_5>kZI&Z z*3rck!}xIMwMmgv>p7n>t4>Kmi!+a%37(vr>(R|S@iTChgPV+@3W^FBtA{Sg`-Xeu zmtcYH%k;PXhpWrBiv|moGyQdnZH?!0?((DK*7}Ml=Fuxz7w2V)S}S`u8$7{dOBm3) z#q&D5dVPgr4zR4pr3sxuXbB%}E$ z=~P_zU~SQiOJr;Btd}?t6^-t@=w`PLiVK7DO8?n|ocUDlnc;W7U=>ZTp$HD}zzQI-j#;ztEF4PN@;4=8u=EA7Q;$IW6wax z%88VSalv}YLY1g$Wutp}Gez%w+CjrRCg<&}j1Bjx6O$y{Y{ z$>q$X)>Hk`i>=#=tee0F`3n8e3XLtdz0t9`K4sLU;Bsm+TkiN%t>Kw>Da%w`FW;cp zG8!+mW;&!1ldxP)EA6F7u}O~oFfBXr==+gqTy7KjCI^ycLG0S#wnE>rJO7kiaRjY? z4R~80%o;}beWN)MpG*f+m?*nU%AxIgf${xQ$5{PFv`#+cj?=-$ z+OC6Uy4xrZq^(u$sbnQiBz%s`uD*sc=`r1|;NuVLAFIil70t4Hm-y@gyyvvg{+z;V z>ZpFH$WMT32U0J`YhE#gB*3;585&}nPfeyh=LZc%8$J);LhjAIIi?ZPux#eAbBA+e zr8%tHWYxre&SP@eNZissqGnsQeg#+>NKy+kLVRBMUesMlJwwy+A9+m2*Q&b|_+>r5+t1sy z^F5Vr*jVhi#DJ5SmHjK+9T$FlHXNrzw3<8cjFo=^{OC+54!mKWJKe>*XgT8ub=z8K zHip)AiblLVt)OMOS;2T_a4uN+KjWD52*Y98KDwC|2 zAy5>E3KlqgbIunqag$<-H(Yo~OUbgoe9a|*=r72z{-Hn$_G4<(T+@>7d9E@@BdC)tG(& zpHg%yx1mShquwcM|=q)k-Dw+lSz%X(r!p{Et}Uqm0dxel-pX%)B^FIV%Y z6xqCatY6=Xy)%vdz*pNzF1qjTcu0~yZUB7nhn1VvNp!w98)s|=XD;w)g!lI%xMItm!~ca$8V)^ zTtD_Xgop6@Ea6546Xou!v{efDXU$5A5+RT~^JVz01esp%@;4^ouFA$2p*LGZzHy;@ zzLZo0CK17z0U>$$$JP-hM^T65RshlVXAZX6ufi0n+&U7aDH%=gMtb$f$@~C_z_(2w zE!dy$1ZJMk?=Us-1n`B&EFmIK5|CfOS9*YO{&{NUQ%B;HAYi)QXNfn#w{f`JM>LHCazg*mzJ zx1^IGkH9Mhfe+a`ZJ8ntn1raOSHqIZK3Kr9My9vL%AxnV7Dsjzs;xRCW&a*oQoP!-7;Xkx$+k4;)HDoK9X{fH-J_ z8(60$Y=4wk!UwQ{^a(Ww*fSk5j$=#B>iXaw*H52O?W&VCcC11dIeIl+#%Y0{|Jv{e zAL6Zz$tnb!mfP7)UtQXG;w#0Y&zu^_TndO4Z&?v-&OX@`412 zdVR}++5qy5HG8_(O4ZgbEc_cCaFnijxAYXzT#vDx&i8ttG-)0u zJ+EL2m5s&Om(|0RqNr1J_v ztroz&oDeb}#ba0_-(hZX@QnzDw|vXBuq*gsHp}%8G2u+o1{(}J=M7W_N+r-bjgMK@f zUduWMPHwJ`$%#EBCcNw00#+iQmdE<_`BT{ji&Qo_c(7cYPn(J_sj+2Vr@EbcXL*FSi z)n3SQ0qLUvwB=-Ys7+f<6M`VhMu|p_JjdVDOwwKJWP0uAcT8e~8sHks^Fpcea1xKv z1xjr9#vtQTkgeSqDOD-b(}$($H8$Sshvm*3wN6}PrT&%%K_`W$KI}3NK(C=pqIsn{ zY=8%n9$%{t>Vx)FRaD!LmCVYgC!oeSh%$tafI{EmrjSqB+KjFkU?347i)pX9vo@wX zsQPN!e&_W2)8Wy+O>jy5{b-G`Rc_Y!xQ)Vc=ytW)$?wj^jXrRt31D`DHbg0oX?iAs zb&}W&;Ha;3^lAM?LuXTi7E1>#twXVdpbhtyuEV6SZbu$FN%X5YQ|;LOYOii9ioUDr z_=aOW1)&hfeT~Gkb|UAPihe{d!>+zkvH^ABu%NkkB0bHT$<;)}Yso%!RwE~!pfx$* zhML{2F>C06@W=Np4mU1hR#s!7LjYaMLl!m*l%zM$OF90+i0uzOls9n(e-(pDVboss z!36mN^ogFJ=nL@Du#r6&`2CfQ?@AqR2mnqnv`n3)9PILiKPr^VWrh2P8^lK&Z8U?r z+?vnzx$kC#+fPnno;UZm2b^{W^feoBu)oUkoC6zrpExSON%2klRWTJD3!bqIx44^F zwEX8^&+VCws$H68bFkPD3FN{+N8LOjqS~qlh}T}XL5$LAX0^ zafv|)s+C`@v;1sj{pf2Cw%EB!-*)@gIX4M39K7}%*tk}m8Rl)0 zZk6PeIxA4bNtpqv-o%xR<`PoCZsmb&boW6Lqw3kI~OUS-Ej!ee%R|cTK=pz2~{m*2yx*^G? z!q(YL7uagpJniDN4ET>L$>+Bh8(@rfZ!(&mZaVk);4XD+x_`O+Wv^?_n;9+vs4STY z|2X4rbP(E~19U>ZaTU5qrkiW7B@5Iy zwktT>Muh^09xl=~Ok0kN%e?U=VXqls^3oTm-a-vdA*9OHq1I^jW*H-JpFcW*1%|n2 z0ooMyB<$y(I3jG=!zPAOzm1?1h0pBXI^*bo3zHAMGG~OZPRH*-;pG?71#RFmsxb%l zmj10X#BpQ9GXKef>+QN0bMMUf`#1{;jepd;kXEulUCFBTs(V8vm-zcKh^>qheM_< z>$5MLZxzO;WTOS8-d`~93x zv2`T7cLoPE>~~cHQOdhEWpm9FrGPOhcoFGp92Nw_EOrn0)#LQq64+Bs940xw33J}A zC^i0eE5^wQ{npu7U=VuKnKKybWK*-Ye0-B3Wj$UZtnq5!%P{sgkx)0uhxcX7_)(2T*Ee=>V;eN zisGTMnAH0644~xw>8H^-Rn&5h!C*om#t&v#Zas4Ubau$*XibP*!B+4SI^maex;}-K z8;jKJ?ng&s$!~%D)j`v-J5nC(sF{C}u*DHWDi$Kd)-RUd3Jr+TG~Y7eVfCmsKDk!Lr3fM_)z)hM_h>ZbGg3FcI5|P zhq(z5f|2Mi2xsgb8j;unE*G+u=W#C9cs2*zl>FuUvRwT_EsiEDZs-jb%!+9ipI9Cp zN^0}R#RHz;HS381wgjkkN5}Jo!#M3sqXOgxyrdi?G1vCbekuRzi*w{ z`5ErC`pnk0&}(BR>+jz?=;O+w;?CD4*r6X%>p{CoD5IV!vFo2LTiIXAI-r-~HOX@@ zbmlK?zie&Uv?U|eS6>{Kk+|iOiCh@N$jQ<_`qaJ-*nrs9;w+Dx?$Qb&zQ4Im0OxY| zai&hfc0;!kmKW}f0i^KWr`u^FF*-2;Z~px#Z3TY~d3&0RX?eTyBdT>JQ>o3r^d+vW z_JFP_6DHifRQ!Gr#R3F@K6s$E%Y*gm_@BrduYEx>Y_Plg<#R&)suBY99FM$jJp`+C zXgH*vtP=`z>MZZA-%**avdMT?)~8Iagf^iiNwsAXpnan)CeZ`Ek_JszydFaL>-6zcI%KX+ z=GyEOZfxuCd0q=+kI>Ohul5>O^Z}NkzJzgN4KJxUxoiku|~x-(TvP1+Q!t)UTC5onOgRu z1`r*veKrP+b#ew^@OKN%6dR+Rz2D!%caJI+yqm2m-%q3?GJE6_|0A;(H=2}cAjK_< z%+deYUnPUyT*{iJ;o+-|j$YEW19lsj0yW4f(j{hVcKLnO)}~jJqY~+Gc0xmnUJf|TDZ1QPJ;`b^Ms-BREq9x_%=+-%aak~ zT_kDn0T-lgsOzBX{Ac@8fC*>QNgVFUfB{sWrgIpF< zvL45KO|Jn<-xB{Q5;IX@7<2GheTbHG+o^d;wXYc(c#vmy(qWS^+y>DzO*)*0Kwefa zWZUNm@Xc5p&*0eu-pKkHr>xAL{TX5kYv&pwj_znIHzYpxhlYlMkp~N%l&D;xwYeSI z4ULJz@Fp(7!<&TMRsxp^C||4NSBFJ4KMuU7kLqMP&=dUC)0@B!<=K;~9cljf=#f{? z0!_43QS%E83Pxnu%mbLK^*?-rYnaFCVtlpw6ZPwkv%{z9Pm162jjbm;+is+2haI<` zEJWm~?fvG0iZ{QFZM5U-Xk?EnLTpN)o--T{Q!LzPT#{_Cz7va_pePD=4thkJJ$xT= zv%2Jx_ppuq2}0V{26431o5OvBP6$4F`vHRMlpe$-N6PB6Q;QgYdx3uU(TeKj}lM z&dy&2b*t3ipw?_!=6#dqE3??Vky(Y2&f?`i#tDZ9Y(eq&eEziGKEx7AcUj|C=Zbs7 z(T}AIs`ErGQ0*-q3xS9|AlotZitaWrF-zLUSsCTs%S+J6lpy)mhegr6qrrML`q6GK za+DqerAfhB_Tr<3l+Vtf%bA<9NazuFD1Th%>W&}^8DlT1dVC0i5E48 zpL%P2#<>$rDVnP27=>T*${FW#2SM8DU))?LTGY+aU0!0r*|*I~bP*P=l5q(_F2L`f z$tiXN=xL-N3EZ+NtP&u6zA52#sYUOWJ(;MqN4?knT@$G9{|pu}Q-0H7U*TY7L?;k% z$kSU}Ed*MKBD2u_mIMu4)_avXG=?R5TgY;VJfIr_}SCTfokP{DU$f)vk}#d zeBIb7XZ~_wrR|k-rZ{+3XsuPXunQqN7Wx`nI zAImiJEpX2`m9d>#e%&Sd-bU)(;LF|y-IFa@tUZ4;9oz4(8Qg({_|e?t(c`ooPe~fT ztwJ4$4?QBpd^LwI_r2rrC+Q98zcyBC4EtZ@j65vo@=2`6O@zXOzEVT8G~!rXFg8Cm zG|_emt&~q?WN!rO+;HuLn$~@344th1bB=fP1L|#8S~n>=hS#)*6Vw-%RVoPa@%)~f z=CjUOY2Na_`LvlL>(dPgcutiirf^DQ?xb97E!x1rqvZit!-2H>ya%5fyCQ(0~J8f#`fjaBpq|imAHmnz|#VznaocfNX z({fZ@%x)ypt@Y@>tt-)DmZ`e%?ZmH+sP-4f&8NN!fZEIk4OK=@Y!9UDET02*NuzX~ z{NR}+@S!JghGosJVe`v6|4?9lz9#8zf4^PvmkiNPPfv)u`9KC+^i@diV)1a{aIet# zbNVubI>bt@dhr!C`}xOT>u*oc*8(;&8L2TddC-zEpl|7C!nJ4^Sh?X3riyL)><9pd zvK!(ISOE`@hxksKCCBeS-+_(@dBJL%#89HOJxm7?eF4}xQ_VsiP*uo&#zOQqC|6+v zAKRspQYN54G$A#U#X%s5N6QJ0p7_&lS{ZBtoz=3b1<0&)gatDtywJ6!=+)L&^A;U5 zS23r)kADG9)~`~|vUIGdt4WDXfLg5T&JasVGI3%tJWdl2^?B%gm=0r<_}KOeWKW7V z8v767x^rAS-$Bn1Fk0=CY$lkd3$S_1ww-m={D&DZbcyZV{)sVAg~O3c!axO~KE#7p z#np&OCAbY9Eo1@wv(FZ!JqV_~do^wbO(!{@EJ!Tr_;653wQg(+8)aNCm$3}!y}l;> z2N*i`0POMM+tc*!BmrL>3+jvQzuZ^yZQeM4+Y+;MN%~<3Y~Q^2(Ua_i$vE4%u9}`U<6g>MCn}`7QFNd^kO<`*IvY&xd)5%EkGRQdeFZInQC=f(o#An40o9 z=+7cA2ADZxp@{`lH0BRv*M(&`E3cSee8VgD{5sVm@!U8vN8d+7#hSUd_Ft|xP=tC8 zWAoR-++$?YL<%ZtEraMsTJ`=aUZ${nkC{E7>TCApXvO**dzzG2BC!&tLV&*&MS-=p zQKzh_$%pfiv#RnqWLwes~>_Z!sQ?|n%od~Q3+Vp!-E_+;R zrOCnZn2Y(1;Xbju`$@Hr<$UP-@b0~b+mRB{Y2468=_6NGxjT~Z zOBa_h8GJ93r2}rYqvT4Hx&M~Iq>BRR75-}p16eUG4W-eTFr%im@xWLcbkv*w$w>$q z5V_89N3-U5JK5WHe{Cka;#cT&{PaTON&AA4p;WMmffU)3z3Y)TEq8+zG>)fpG0k}@ z&qC-;ZnC}xfdgWY*7vV^GM%k9tjPT`_AdSRjOS)YYg-q6f4vW|XgaZ)>U49u;%a<> z5(^ZgL9f=SGK$XqWC&fbtbTp*S8zk`PvO<5VOx1S8WrtQ#pyt+?`0d+`u4_9w`5M@ z;L@}i=;pmR>3nnsVRH%$hTGBz$`i!z*xM5r@g^8>t3*8#_yDz!lyTf#@y8;#o(7eH zb?q1vDP;NRV&_ax4QA`CSse;=AP*Xa(wx1EYnAC6>K>7ZX1e7@(3zQ;5Q#XBI;6RB zLfk`oDB&yaRG~H)t38j$Z8lG7d4Xgyk#QQHC+g}oLHk)Cg}imfV3NuY^O5366x*oi z%CY0-5le}dM<(DA9za0Fy-Dfo zo+_QO>*qMygdyv0HYNcYlYt_@LOa1hFUL*Y(Msk|`OpjvuLf=r!lU2{in^)wEEi>w zFLue!)6QNDsa(Dlhz!WEovzaRIL`3UJ^!mqh+7DL9#M$HmlJ@NoZpHlck__>1;fMK zqclg6Az$UZ*!F>XK@M*~s=o?$cd9Jo!}Fu){F_IjOBr6VDe{m8XihZ%5moybdKM|q z4zSsdjq$}rfV!C0w8-L5yEmPyM>=NzO@|0S2xV+#t9)nu{H~hv*{`&y`R!unkLt6t zB_V1HR;X+jDW% z_BO_1pmXprvZkV|4eSD8Ud83*m!or)q1HoZ5$}u=ttP}|=&8lmCOc)7*du{}uT;PR z{pS#h3BUaD2IRDQC8yV@I$!*Ls z;xMlr>32kGIV23ptI`jb^aLRg=U5DUg;$XXET1K^0|X# zfv3JujbpgKIsFJMg=cohA3t%6(AVm~u6cZF-8Dt^WRK$w`_b1Qj_1;*D{gB}u?<{2 zPQUl1ctX^>sWA@*#(yOEmZED$#3pF8zgzc@!e<|T114y6Bd%SE2B((LXt#Td`)=b! zWw#}Fh97q3$rto^oXe?MFD@^e@V1%5kMOS%Po9ImtpKv+ny$voNSW>HK86B`qa!Hk zA5O;d0hFX+3r9U&8`aPTU!_#Tn~l&60atnYo(Ng^OGK{u_5tMew6!$|UmmuQVJtEB z%4-$dG%89h^(gRIliA}Smf&*mxzpx$dlhdSP^;j_z%3_-6;!fBC6lObi9p%U_@5WK z`*rryv{wSkz66*Di@5{3@HX(galRa)K%PJz&u!CsezVyY9|A>J=hs!XxyRRTBQ5G|6co@ji` zjpphNfX4ay9=9;iwEBO_+AVJwA%gEv;|sy7eTCs#6N@ymljcV1U3a52Tz}U97O@Ag z*iR433u82fXe^vWW}v|G?X5r#4orO9c$Sf#y!rSgKdZZSG!R8cE2Ee{(A2vO-I;4le?Vi4i)LIr_Eab0_D8_4J44uik( zCM*<80u@Y)z0tm@5;)J|y$bFXg?NxYbf}xhU^p%*ugt8ygH0ZF`^yo^Mh~)*kL8gc zxx31YE(Nzpd9MAy1h<2!d(?>2^0(!0V$u`C4B_?l$_C;r(53sN)=&&o+s5WwTH?qeNcJb<`Wypsjzu3_JYW7 zztl4Yt;W?-mYj$Lbr$U!XvXf%w`Vo53DR)Vgb3(M3)5d4>W{WBv+j!BUW0HD=6 z%Xq1kk6e|@TCt2erqdIKt3&nxyB zoG{nn6rQo45iMEufKAS)SDyTy10EJYN}ff1yY4x>rdyR6u$g3dKESvgCSAzmtxwC&R87?65#mQ25G9VJ?vwc8Y{VEk5mVowbTNzY zsU`JxlP`DQS)O1nnLjZPIGW=#f_V50P9z4lJ|24hA_<%k^jz1GB&YiS%&?&Aq730KyX z_R_M{!+493JsOl_4<|VS@tzanN-WbeZJ5AG(0Le7_53JZ;=I4ywa0BhMc~KMB=p?g za)(ixfc~AV-o}#y`NoBwreD?+6NosBwsRqln-5@tPD))^ z5gXCZ67D~H1*z0(-3V>PB>nPCI)IG5ip3M#;3H@Mj?>SyO zyDbhd^P+HWs59)a_CgyNx&F^=;Al_^k!M7e7NcPm#CbjG0w?>Nv6X}OMF~5tYDxhG zp6&9>w7`#-d>KABF0v(56u1zwIYVAhj7Wj zFq@1d#I2?mw3yR(h7+H!%EVF7x2)6JJZO1kflzJ)b97zBJ*azSa(~LFId&g~%N~3{7{#0?hzNM%W z^W)`dxYc*K!`zQO#VAj|g6c6a$W7`vPRsKxm>JyHzPma+{JK=P@fn!5Wk@1gh77Za zjo&1cjWgMJzD0W#d?-OvRuvn_2|2yb-6^pYl*7l}T}`bu(N73mJuVpgQzx|&PoUxf zyI`*Ysa7s&H+nuWYpv*8ja|oU!WMy&JjVEBs)>gB|P zO3bF~Al~3w6_z(=LZMYp$cPk{gLAKe+_}2O`hcH*EI$f^t=42XruY?zA7iC<@?O{M z+x*c=QFiHM%F3xOJ++D=wDgcFRSY{+Y7?poo8*z zWw}o|J0;Q#G*N+mmOlrqSfG_`%G^oss!!90ADupVvJ^S$8RNz-WX7J>&3eNXhzS6= z#@aT81k2&)yO(VwAiY~{mKie}wd=m$#AEZstNC}5g^^qb6Dq|yAgVkHaHHOPChL~R zBTy1K%QK5#{DCPYSfm%40nt|fWZotr8UuKxW0E%jo^hgo{w8HCFCi(GA|dhpGoOib z#fmy>%g=|iK0j;eZVaoyY_mOo~BF%YsTu*L!$pH7&L8`Y|I55J>V4_TKk*=zKdkGzf#_p)jV$OUs z2{PX6^IGLmPY$qbY~5Wmdr|Y)xY7DkApDchR5ST*fxYkGhN3KnN>w+jro>ZgR;R#oK;_z_hzJW^E&sp~-BTmn+ z2kX;|^=0~ohPho`F=8d$F0-x2ts9rdRa%f6;}p=wzN&Pv*nXNMBo;_Yzm0w1-XwNN znDU#SYMX3jujeohnlA^Zzg&?IwM61e%n%+hKRdW$G~*Iv08ro2bfczRM(-<^y=Z|9 ztRP|Rp694XBJ`Z&PdW^ludi|RjOD?Ae&5vDXXX13DqVwf#{dUISkiG0k_0G$s z%7nH%j+@&8c)$gCk;{_ZreEDv*%UYt=;EO02Vb+EBUY+ho_$;W#r@4jU_SkVC7TVk zkPsCNc#DkbW=FEac2Vv<|FIP|1t9Xz%Tjua> zuCLHd-IZ8HZrbP_JO}3d=>4YBlsczZg*l5wA@ zeo+9`=}FfIIh|=SVM@h-I&8&&qx-)Zqn3ST>yN+-JTG|OTKDKb6ZSY3&bS+zlwQzT zz<=&ZgB)nb{6Z9iybDjfmvP!Bg7dB;v>nBxMjFwKHyMZ`ecm{Et(DhT9(SS$dHd=`hjcKa;Ew!*9yq@oiC=kr zIcG@{_nuV&W;+*-n;suQdj7iN|4-_&4CWlt6jxepZ<8iy&f9}Y=MEe zsMrLhFW@S8A z%myoGqt4J7-7u#CmLl1?nHApAj1Ho@!N6b(1|nazA$*D_-{h>qeE=dm;$6Qzr4d1_Gs(UbG< zzQY`LeCgLDdzbF#MbSk4!iQ48)gV%{E`k_-9+wdB8Gg1Z@9A@j15P% zG0y3L^RUlsKhrF^`xY3Tn`E*6+43^Z|LwAgYt{m71}Zve+Uw0CxqXWqI9E3iua3Nx z2B;l7yZFG+NpVVqwe%;?{P&iw8YqFVT}yELC6!@hRF45Nz3caV;cw%R#1CNe-ZXi2 z4xA(@3lf^-EERMPK-EG6+-^4WyqwUFocu{33{D2#EZYruKzHK5AYD3S zb^9p#C@HibL{rv|m|1~G0wgDw&i9|%SWpA2te!5h{}G*|_60lN1{P z|NR29s8{oba@MX~z=TLSf=P)|tp`9i5HuZMhUF96#FA+AEJ{3gUJeCfNzxv@?%+G|EUJjb%MOdg+SC+NA5Ac3Ivp>oKQO2krsj z;5FlnqHF^Gmsge7-y|u|)0_op^?_QS*ZJr)Os-z_r*X$RHU^^^H83alKdh*Rf;diw z)!M(cJ%C^;EX55fJyZrATflZ*LrksJZ?cXDnAAN@9`U&jlVr{Ed(io(X)UUEoS_d= zS8CI?wQe$+hrVDYJ?)IHdYHAp_w&!$U1#py1H)mwD#=&MbdbJpTle7jZ)OPflEt^V zAC>ddepn7@U79y}lg2sWL)XTO3zXPdEqnuK2swK@dy_VQw)CoeUUj>dffG{6S4kMM zd`3Eit??e{<1&{x(pWXaHZtdRv;|Jge3reY9#h&J5{FFJv!vF4AhmKS`NHG4m~oC# zm@M<}()G`7dR|7*)Fxj}PE3Hx+H~j9>1`pzjs%3bMrZk8*N3K0*oU5;=^WEHL(m&F z0uok)92p!4KY|PbpF_Bs$~1^F=Iz>n*jFRA@Rcfxni!m&t#{>)cDY$gec;>Y)oj0| zwB)Pac@|Y7)`-xRzJ=$4r)36O z_7W`o}XQ3O>k?xtV<9jC;$yL(Gja0b$)QFo=VrekxIOk?z2{%*lB zbt4O{4E@Su9mF0`1lvLywfb^sXf}G*7MeqEny3V?_CbepLk7+<@kpyF)`+iDXWSv2 zdUYM4Fuf zm^V-m{{ToL0!yHzhSLO#UAeV&va`no0t@W2g4)2y->*~AWL$#*7-~DsE4XqHdw8_G zLH7C;j-w4)=C}IaGoeq<_h|$P^wo1-c5y5ZdK<4l^(2C$$V(BL%X>Z;4 zVIzREUjJ^qA6fMrWL>AjLbIGFexv)0qr%D5vMVC6WQ58Gr7%$SBtKc|ZL zGMahqToxdO?;cu!otcOl*mMCst!iQ$@eB^qOStLE*|yn`vluy!R*AlA!FS?q7KNI! zF=NC9gC#F?(A;;_ivtsgbN@;AH#RfCv_W~SJ%6?%VpejZQC&I;dTL9O^tK{}2+J-9 zn>NBFrw8?dHXB15i?ke0&ZJP8SK8wv!;1!&TCq<&C@x$O{a=Ra7dn!HYBkn8!wSEC zJqmU69Mw5L5TGZWt}k`U2ZQd;ZZ|av;$O&e-G(T8=ui3ZGatINig^BHL1i40j6qK? zXl3SGck5eb!i<2f(kOfv*Uh!N`bvhlEkY7{&SX%8$;;8%RF=u1}mjxr%QB6}?d zo^7>dlO&A~K=SWb>+^FZM`^kswK4$;QR>hwJ zL(}vBC6H9VK=q5@Q=PGbTv3KX%vp_FpeRLNKOJ0E>smJS0fihTx@JI*X z*7tJEf>^e8wF(Z{$7eC*4g%TfiO(x0eow4F{wFSFR>xtQXn${-X>ei?G#O-RswTkI z_Gq`l{t0DRb|^ckfhCFN?(z++^T1DcVWB@u)f~}j)qzrP9R}&n46XVFdH2aQ1%KcW z*F}$(twRQdX61Md4rPyiZ2E7#B4fVBmA}S~xrgy#hn7|bqL8=N6+gk@GPOv5K$*g5 zeOse#VFOZKJ99wasvTzv34I1vF;L^09EZjDejcK3xn9V8H5|a4_Q&)lq%`8 zEVBDD<=W4i=MM1xh7uuYdraaqWX^MKbZCPMHxwmdP+djE9{N9%CT!x%0Zz-ca(`;B z3dLZsw0O`sLpsbtgcI7T|NHoTb{!kR=1x7K$)Bj!@}jLJcjr$;Fa3I&zwb$;DtU#1 zoVK(bNO6pxY{b?^QCbWLnNA!q*?TbsT5MBiRq=OA$Yp>iV?=%bY?_tdRHwkRV|(-M>c0^u;U^!_FMd9Z64zD)zXm!soaiTCEr{~E#orhAQ`t!kgL3RcZ>2z zZ_$z#iut~*sF62Bc3KDrDC0|8m6aP$d`(J3UmSu?a1Ertqf@rT)KA+AaJn+BbVQ?X z+yZDAPe5;+${!@0@`tVVcJoz$MnUAn>hFH2xMG$d=&qEm`$#&=q6!+1z<_`bA=Ikx zr++X1KR};DAUZ#8Y|S;-R#v;-WrHGm9Aa&g#4*_S5BVRC0b_&L(Igp1XYD0#d9$T6 zdklc&1l&!P6DRc`LpcmM86IrK))&9Uu1l9I^#%y~6I*Q%K_;E51y`aFF(A}@GZ9t# zz}@Agh!7RT2w-5P(!17? z5}D5@b}&dLB_#_ykgr+V78bJ)rXLM$*N{D4sxu(0mGVePfzCLceWJjmT4sG4#+4T?8x~ul z0h!ZNymF>eyFi1@$fHu2c5HG4u7pw}kWOgp73m^VO;=4VCEV<+ zD6as*Ws_{Pskw%7T6TJAZZQ1D>8p26ofuwEP-_f}tz+^qif{qBvCHy`1V4$c-S!A}PfFED&Gfg2P4BtM5cXzV4NZ67Pt zQYuBW7V?%FRjXQ^4P->J;m~mDjv+q^rO$`L6Za_kOgGO6s8F4g3Pz7{NKZ!w3r@vE zX7H_7y_xhJEMIifd+$UM^E@bhpJ^WmxNrgzERRXbEkz6TTP#f}z9aE`V4G3$Wq4TI z!#S@m4qpD^Cy&WBM;zPTQ=pqO)(Xx&H=7n1wCUj{RUz?PEqYD>`&8*8zo?p!#%{$pVh32wQrx0 z$%?qHij<2`0|gW4PEa>-3Q!cbHC_0Gp6NOehqHk37R$;JuO3#V0=M=u)Jr@w_U^_b z8aqqlM9n|dVPgh;=;=1JXKqWYl7H$+yED_zz<^}N1j_T!yLap*UXGDN!h0YKY?iwW zB4qY|H)5XGL|?&s(c#lU+GPdAX|Fey(uhWyL~Df7?C40cY!iSe`ifr%bQ!7pc5<+e zJ*@uur>T@Kk|!m;-O0BJCGUpyTlG!AE`iYkmm6N-tE;F-zE}%H>e;xtTZg)weIaK8 zCC29*KL2i;SCc#H2Ceum-97o$bRg}zCWRvP=vW<{2-2X|#VXGJiy;tc($n#2X2yK2 zP~;&w<<`ZAc<~rCU6>~YxesGqk7tyV%d@U)h%7ydS=?vlci++)2>yZ)uwam3xUv*^ z^NWo%YG-?X^pIwR8y4h->;pJ8&362!m8}Q4&%Z0@7+u-d>4JaWRrJUGvx;79CV8rS1XXV!cg=*)eKy@oYSv@2tI#By% zEAi(pN`_QMro?#4IF zlEr!e--;yiHHQG6J0TG~|K_-&1)7G8`sG#EK^HXmwRU-n+*sdX2MfP(I~ zRzheSkr3A1`~AAL%k~$)NtA@QAKk6op}b;`H=leK+#9R$*iv5KE7W49 z07`Z{pb{4bQMsV*kBBF{-{a8xjjwUUpeoQVHHyEPv-wI}^> zx=l0D&Rkn7W=GXR0Ps z7%+ht^XnX@-(6~LU24pdpU?xM5O8AFMm}<2K|6uS>9{_yQR_Dt!19rMrdmi_;C%u; z7?3IZY)>F@+|HDz|CRm8^Xzcrjhi=I3*Ww?w>L0!$!Zz@Xm?y#w`ssTZr?GUSJtwY zXg6zTQ1thy0q^EpY*@q2^md7rP7(uE{T5Bgk|v%k_t2 zO|B;ougn&I;wNl+6e6c&VgwpF;j?Vr2#5`i< z__E*y)H{=+Izk_}pqXX3nX-P9(M#6Mt=C)WS6@FnkA8bkwGkpQ91-_G>@#nWkU#Ai z>Q7ew&68Ei`pQbBZ@=^eLOOd3`&{fW95P(H2U`{^Hq1gh@XheF*{dI z;R_itDfS05v}SC2p7pWmx2Kwjofk0XZkQPG!;Zf;WqB?+p%)3pd5SiTvFRbPY++^# z@10$_WD!N;x8C#G#qCHKui;)^)EdfYY{lQl`gEl@ep~Cg`J_?8MX8wnbJ@bh_na5s z|G3uav1qXT+hL%VXJ&sDS>WR=i`G}3x76XkUB;y7Wj0}h_qDxxfAo1CW4$<4s-|pb zd=skZ`T0x%p2g2{a}{pFnEsyh+QMv}VU=67Z*CGOrv6?oOyya2s_vTW77)mOn#A7U zhsGX~-s!TaT;`S@qT#W?X|7Inl+eV7$ZO+zA~`R*>cgpnf6a!*A9QVVg^^4eeA2!9 zS!SPJ*lqOXqQKGlu^_?~?>H^pb(s1ZoD=?9mjk?Zi)fCUB&Ts!PQRqNZrB$X%=m_o zee}^j)geX4Ee+I*OAn;HZXH%-bo#!rPPynO=kmz~mSz-O$Ca13uaV&5*JL_>5WyO( zs=#Ni=qg-cQ?TWY+q;f(9)4sxBx2fOXG*w5uvz69$&M+ykGt)%6u0HgW&QzAFEks2 z4yrK zgY;cHWNh;m_P9l_8E02J`F-#D$#V~d^&ju}(m29rRX&#-@~L$Q#79+E*XPh{{bGLq zgYRi-pYJOWdDphsE$q5gE?xXZb$iIWL8eP^=G|HCOAZmxpsZgt7^ zLpC?X`hzZRk#y#45ur!>KCMei=U-jtyp3@G01f_Tlh&|B;-?qOzq0Z>==Qwd1#!jV zF>`Q#UXV@YKnI>5Q(r%=ELo7mLCuGy_ZGh=-t{+gy166OH|POw)B1p&Z$0*J8hFy% zUDYG_IE!;Hyx;zEe~bDzicO`Xo0cSmR-`U6ys7BT-g8~}e7M(>HsSbseYH2dU_syK zPwiF32aFnir<~vj93Zlh{Kr+R6=%WkFEx`cIpx}zcEsg@MVgeUJkOy8F=az>>tJCB;GIH4bQnE0m5X|oQBix;J*W(Eqv@(_gMS!QqUBzj-x5!n^tT8$d$?I=aAET& z8BO+^fB(QK!r&=0hZfagM59Brw*0`wxcynk#2(`;j@p$g)^%fIg-b!9fM zfX9+xt-~5inpuBLx1y?JdlDz|x~k&LAjy$w);Blvll+fTOA#jG|1tFzU{!8S*f0Xp zDM+VCgOqeP64D{v9a7TWjnX15NH@}K8l;i#?(T+v;d#IR`@Ha6N7(yeKWok0Gjq>9 z>#6_zrZL(G@}6+P_lEGxp%k3}DLXC&?|sfJ#hcGQWm-5k@98m=HVT;oRl7hAu*b~k_x2%%#04x zdxma3gR*IU?!PX(YJ8Ykg_V@dG)w+GQ>s^`9jY{QU#H5|tm>=lX`t*fcY;1?x`7)7 z;en)i*JG|hqf;ijS%;Bfd)P&zerMfiK&mf}2=m5iQyE3WBZJy7d8A6WMk0Pg;)~kr zo$?FWteNJ35;G)w@*+ImvGnIX51mW1J5+m3^-HMVsw}+t%7GaDK-NRa#vg@z9qkLB z*+;f-r?Qvg1*IrwJ|=S&DdE{RcIpu|-j54ABKhHcdki>;of`R{!3BHR`iKcHtjWtJ zz25k{Dn5fm_q8~dhD7eo)ma5_sy0V2&l#j0!X13B*yMJ$=q3=*fT5zo`DWPs=(%et zY!-Dy+@Fkg{^27?nt_(y#>P6%H@ZCDBFNm5q^ro-m0BB{wR5do!BumFE}SFQT)X2_ z9%*B=+T9fU^(Ano#G{ArQ_q0Wc8`8EFM_@n7x8m`=}G#OJ#Qw zskcB_w^lWnF(m~v6bDIb_3Okg5?~^H=tfz_4{=0wj9 z7VsSSL0tX>sVOI4Y4U*fMBf>3jJ%6f*eHAs^}$=I<7Ti^yk6&ficMQ&XZQFZLx4g^ zR1U?r5;P#T3)Ks8qu4|sC|znyW5io9ZdX^<=pk;OKKYh%`3!~2j&cb_?S&Tot~&xP zQLYyJInyl7oSkI>YDGbtVQ^QrW};_eFe$R#Z0G4`kJQg=&;}uujfW|9E$!FRp{&W` zmgVmUA2;+lUn%hNDNi?%^#VXhW^wQ(a-SJx&7%uRV3;G<_VvNhh;XyU6~D{d*P~^U zhy;I%98`-T1}IP3TotoV-5}kN{DMbyU8@N08tm4!XQx@yl2z(E8~R*6?JNX}+m*+U zhYLg9>n)^40A->jg#|L2A0^3>Q=iPC6!qC9V(ZvC;3M8-Pes1 zUHh8-ctzkZ3gds1Kj$UchA0RQrZ!^C&(IQpb@&|2dIuPVKl*0I}(nvr(>`)Idk+`^Ro+V4*4Xl*wP?do)9@&f-pN zA@gm~H3f!zXmU0R_{d~vdQ;^bwRO5Bz^T3K;5Z8J`2vzuyIrHQjv76wS%6P!alAeL z8`9Hh*f0NQ`c#?Ko7af*6*>XLftk5-<#r&u8ek5PA>rL#-w9Rh?qYoXyR zhI}u5LZ~_VX>rSnPq?MWw!&n(h`XVP9Vw2Vm(6-kh*12gtnBKq>g^LmQ2Tm*@GtZ` zb=sg9Khoa_K2vl;dRMtceLZ3JT8=kYNLo|DWIxAB;5|rJHlt7`e~e7Y|6%)$(=j&I zwB=5V=i$V;b@SxbIuUg=p|x^okjyJ{!;B!V(c6$f>wY9S#-v_%FM^3UAP$Q`rwktK zM^~d`MbPpnz36HZxN2DwP7NJ{jo{|AvFfHfM>o%p0Wl9UVAy|pATk{cEBoz^D6UbL zLVK8e*f6plKvoE4r;e{Ce)c4x-AmW)TXS`Cu>!4Ke}}^TQZvB76PN?|pM7ci&hZ2E zm&EV@WO{tb_9##^kU1;aDEcs1cZX?541w|RN%D?)G^)CB*JFN{6TeIF2m4v;aw-{I z-P@u1a_VF_sMt`^FEURo1pk9uacHMfwmIarLW{aV)8@PCn9kPMLU>m`uKl>f>G5QR z0pHD3Ws}9I;tVFA2D>9)Y|y(r=kL5ZZ`>pj((ao4mPgPSM0vW4oIabw*SXc7L`tcX zN(%u$IXU`7|EW9dtK6c$2aF3!1~-zTk@#w&+MCk`2U$&y3H@Y*?I^gAYCHrXI|jFv zX*V@|_$WeuHDX=d^B;qhP6|vv?hjy#9%WNmZE}WGk=;LEp({-0n}c)e+hzRZ3YON+ zFf&eeeLxChTy}}lmPK6t*3B&nn+3|9=|JSG)K3f&VuQU^b$Zqm6umuX}@TNY4I zh*vXGd9uIcEL$|j4{-Fcnm@vyC#*X|xx~jq-{~fqra!|!8Qn7awD#u7yJdxYy41r% zHwEBprk6SMFquwhu$-5xiCK3RxT*6Ezwbh`bWV@92yed^ z;6nX;@D?tI1c>sg6lQUrF{FZYYw@AjEs@3K-ui5->2m9`>z=fw^T(ASOQfKL(2G_w zoaJcwHIM1t8CIjgU#h1bHE>T*lIDHP60@l7e3@3qYVOXq*XMf^xd7E&d4b^$){D`hMISmPT&YDhGS+{In zey{6yO+}WChn8u&qyMqb%%tQu8D+gTBT!vW1j)s%z}ZqK_6}4HAq7QsaBFvsJ$+f= zMYH{k*_EnFy-Q}%Rrn{kJ0$8xq}n79u_O0a+joojlfs#^t7Kj}l;D*RPDl*nI1shy zzH2ezSia{oG2bk}#m4g)Uf!Z*!;kXIDyodu*ZX~pb0tmXQXY`;D{?EXe^^;9D<2P5 zSOpEZ-t{f*r*7&Vv;#@W7diQd&F*J^ZH@1{WC%&HA`B>I(5N3BOB~+NNDKFJ6$>#Q z((G7L;yGc$8W8iO>AIGif9g7e_DzuSYYIu!bJ>g+fEI?FmcYj;qChpbd3XB+K^pIB zA3fIY>pqL)(TNP`(qMG_t6u`GP5Yhuuo^uD~Sf#n0n@6{;VEQYVU?Kk$tM?rxl zhOV6JyiN^XW9J>>y>lK#z8t|%wWvtlqoUSkKHOK8FOPCZRqWR73lI>6Rc_plPYao5 z<{-34$jIUlHg@X7@Mc-Kphoy%42Vk6YetAdN+8N=2E4SKn9SCx?UQiv(%9iovCim> zK%;7x7Xr~pxKqibA%;Nn2fSCQmuyHq$<*| zYV%#>((dJsrIq+%UooS}gf-(fv2tqOfLj?p>Y|DUn$ifC*?Mz0np-c=72g)l?tIM? z>#-UOReQ~uc|^M1SvVDAhKxB`Y4|aW4!{$d9@=L!L>)Xo6bdB;D<`Rb_ijQLC}yU= z_m7gFl~hrIKym^&wT|F~fYYrr3<@rO7ap1}=kUB|mnA-IFY`E1Ldq!*M-8~9Kk z0k$lEa076)sS^j1sGVO$cFN?I`}(q)RQr}2poU=(Z3C!<2Ql|wZ!%%U-?U9?}E#oq}<)1d%b{AIO=IphU$pFe9gZWgZ_q zbyGTm1C7S_(N`vVWgH%JOnpM-3bbBQ!0l^P4gQ=K8t847OZx5a#%j|{?w$6*J}{a3 zq1E=_t$3>bEe}_9fPUkFMinZ+VXT9rLRU3rlT`_VN^IctYNXPwr_Fk)L~$s$E!Vo` zjCe+F2v5as`O~Ck$_eBEkrbu5DyLaqBP( z9uk>OpJU=AfSG#E@`KxtZA&E@kY_Y=n6yj4DR`z*$U^&!#LRGu!!La^eqA_@eAUrD ze%QX{zyjbK@R%FG@AegxC}&wXAi)j|$K!}RE=(++*EZ;dPowLJP~-fVzsHZ8k&Jqx zGcn+%MLvrgQf39qSqld@(ZxyX`r*}Ur^})a8D*}Sw!uG(>&|v9-FiLlzoHH}G7?#|w&+xsZoVbmcaz`jf0Dl>4*;e%@Rd2CR#xxi#ali~GI8&58wB7DT?>=#-T z)t@)Fmw!~6u2RnENsyV;S<0q7KC|610pIXxp=B66>Z4rl_Q_2v8+*}@Bg0!OggTH` z0--u+I?qQ3$e>Mr;kmXqSu)|nkR?=t%VI2L9kANaY?v`{d{5 zUPt~CWJE2wwhJjAHnxtR24};KF2{d&lf$6Mar~D1y3QuX%+;3ndX}yR2EFv{1umMK z-7IK5;$99cTS0N}Tt0??z3yDe*Nf_hC3o@TN+LCYF-M_JH1jGQ@+|(B~^86AmrA3;`h%u zJ>q+=h8BIjeOV9x4lwMADcVRCJDbST0bW;dhX{nPqJe*~SYC!uq1tr8qNxs!W%pf~ zlg0f3G2ZWIr15j$qE5%8u$JP&InoRV-wBkIj166RX?&lJSiJP?a||R`LEASV7r;vT z*am*9X^$evSOVJW;(=6PhScz+G}kl(a}w{*v%3O6V!pAywqD~Kc%1YMgeSj;iI=)( zLk#FfWw|MKwp)(=(4S}c)Inhym6gJWd!$LXb3=^933o?I!h-+8m&F#>%E+wtG>IAH z0~;QYe|Ne1`kjGjJL-du>M+vgr{7O2m>>s8UpGtf@qGn&+pgbxycM+0MP0$$fZ737 z90B+yJGa0Kuj*KvDHlV47DYc%>*gENY$}`avZ4wgQ9?II&L2)s>2B_*%jhMQBr5as zF=;Y7@M?8H`ZYL2oNN^oh?r+SJudn8h=Z#d2Jl7Ulz;l^b(WuL5Dc-6(FR2uPu^?+ zP*3O^J%nw5HwSzD3?;Z|j zt9xDi{0M0`5hTZ~AGxbr8?CRh^TVC$+=nj@jdCx=K_CbC(AvYVLn+yH{3YS!H2!b; zAmQ;#dXa2^Al9NsEnkb*Qd97yG@5@T;INBviF}?s&}ypgC(2=ok_cFnL_Zm7jQ>*F zw>zGL>r-L@@%59tO^7ho7R6xqT{Uc85u`AWHGHp|`3{%)zNyhr_a49OR`6(&aBS(% ztCpp+AYPvlcKuZ3o-&fXDtyF?jL6LLP)iiT$xM*Gc>E`v{GVS-C zM`hMSjZ_EspVsI5H#g$W$0nueeW?Am!QsZ&66Jc1hbCvR*hntuZ8Vll1h%$F>E;_x zkIj+P7)TMWTF35(M=zEox#|GDJQ0?p?xm|adsEfq09e**`@L>UMnYlcUgG^@dwF%> z>;hEh#UWqh20VVLbIlkS<2J8l*-4I<;cW3L9iKV0UQWZ|;i*jh6nz^MNBsQKW~`>7 z!JW|HRc=L6Fd$VwC9KWgafD+;pERzQ*Tw?daP2m zU)OHpE~8W9{*u0FW*H8>Eqm`97lCzz|6jX;4wuBbu|@fBo$5y6akW$jot<2V)kMAH8UvvN6z6N!+cCo&BwyKOBsdj^Hs%_PrsS-9aMWE86gAbgm5c5 zstZM|1%*pRxf*OC2Dh{G8Ya64t*Z_Af-dufuH&IM-)No8GTKH*G11V_nqp+B*gW?S z4p2#Xd3ig2sg-C3qeFE-n6N+>2%RKe5P8Fa8$0~_!V#=u+)7LTo)b?8BsVvAWXEa5 zvL@KYt>Wrxb=7e3>A)mXk60^Ued+G6O z{$J71NT)-B&ek+6TD+wPzGI==Wk^WfTG0Qtmckfx0nEa&t%gAD_5;;YsY?O~|VbBwTqe zElf_huYCUU!g303cl?E}MX~(d9oq3Z?eX>3i}s)kt-vu!bTd*9*WIIo!x!@d47e~F z5oyFDBa(W!-TIJ9l!b$Rs36|uF@zE97jy~d9H+)z63T5!;QQ+ELUqs`77 zGgs1%3W=Py-mBX)l*-qKB%#ED_zR*P3ffBk^ti(mpe3}(kHtY%$v2W@S>sw{M!o3P zee+OBjaa1q4$}sP)=}n=JMjngd%?}$6&j785IQ*-|Ab&pj8LOV$)&fD=;=#&h(U)t zrl%+xvLex~mn>+Om#NsKF!NKPaKdnY+kh{?bF<|LmGGqyX|C}0;=Dbylm~h_T$X3O zbK+k!6cGry@)4THH*Z#M60e7Nsp)u{>$DMG%@|!wJWhLpbj$bC$AgxmSNOIqO8tzv zq?5(>NR4sVCWoZ2qZCP_%D%Cv$Hf{F(roZ&{{&X{q~(~@=-NKF#QG~Z(8OHYiRL<^ z=U&TA6I);mf3kRwYrGIAgf~GP5FhnHxvr*|uOMQEN zR*@_a_Kn)SQsY>rNZ?e}a^Oe4K_q>M{#k|IR;m|~BZO4+h4(WGGaF_54upa*4BU`B zekSV+24z=T&^MjtoBf(Q9uJ9{ychTxJrh3QTbr)+}!vA0+Uh0GgW33l;Ypb#zPUBYbR_M z8nWb4In$q?GHyCW8c&)@<<9qrnv_L0jX z+fYFd1C~4p-B94wYu59aaGbQI$*arF+=YPwA<#$Dy**CWNY6Joq*fjopCVnO`dBsH zQAYc}cBC1fBO6|RU&r?KuFHo@6FxrOb&$%#lChn$!tjP|r`uCaipcWy z@8L*H#f(OBf%qA}@ls(GC#tRS$&w!>Y84{RzV&Ya%S|zRTiQ3=0gBlsCnMm9`eArb zt-4gAPx~7K2lkYg$*kHxqqV%hkZ4IVSz@y>3H(jbE_v5@mvm`ZCYGQcp zk%9tz19|8s=+G*%EaMxsq3hS31x#}8d>2xw5Ooy3;$vZ%)tJ_ePp`>suf-w;VDozLWW}~Dnuc-J*H!HMpT-Xys z;X}wX9sBPKR-r&8ncss$B8DWYvr|kF69(!BzXy&?B7^YLkT+bs#0bCVB-eeY^;-edN-v>r(3 zCro;$Q|WB~-!HQcPi`Z~618&ae+>262#P3D|_mW#2yzYM*$~Tzhne_TxA)cHQ`VH!f3)9y2=*++@rWv(_Pol z^PybDEn((e;>eRMLnzj0toYk^%tw~gFBd&Eq|=q-E{;lU`r8Wt75G@8y?z01OQ4NQ zPf(HdMuT-z7LonGyR&@t*7$iM|B;asJe1_BO0ivZvdbHyn3_V&rl2GC*nmNbB7MnpuE`tYIc@!`(?XpuiPam(Pj zz6{S~WUO)?droL!Prey4#UT>p(9HA0qUJ@WaC@ZZlgj{nlA2Bq^_}!{w{Md;TlMd2 zAC&XsKEn-LWXktKc)aLRDvCM{-Ccp8hg+1&K3{1R zJ~n02BpXckvSeq2&4cfj{}F9K(WByiBg*5_l}GB5`kI4&p1<7s!rha{rA-F^50_={ zoj>Twi6>j5*K0>7SaBjf+5&!N8{lZ5T-awvWwK1?%r5_|a5CosZeCt>t(3rP#%2UF zTY(x2{C}(NDv+4<>BN(^qO7TDd2L>!+41Y=&%i6%ckd*?Bh)P+ z26G>X!P+U-KT9@1kCvIpuCWCRBtp{-8qZ4+e7MiX#lzFy*5-Hh^^b9IOmlPdijkR_ z+4Xp#YX9*I{p&07wazfCERc#CT(J~A>gSz|juHiCL|YIt-6a>J&lxqhP2=2|y-vx3@ma(6Eh?Twm| zMiXM#_YSR@WYpvK)r(gFBLqPsJV8UQY1t|fN;y21GSUj!6Hoo)gH<2s$Imiv=s`Io zCw#U|9)4=uCcFuiGCDu2OBFEC;%RGRW@`J8JzR!pVg8-~JAcM-o5z8BejfWw*I1)KOO}WboX9c93<=OnW{pB zy6N+Gno4%rmNTxE7$+X2_?vy?Ej5@k5@;#S7sEw`$@E7zEsYZ!4eX(vP*9?_5p-YklS{EwBKbi4a^pd1yX8Dzv#Ewq71#&Ty8sm*U9IZcc+6dfaG1 zo@uzB5Wg7s_#eK2|E9ydCqUgC&S1LM@$}?ta5);%oS(F;sdL`L0od%C9SlHuf37yh zq}S(go_o{-8UI*|0ydv6u?@gw?g#!+7-zVRlQ8Zn+6FZ$c7MJJy{R zNDlQ)A|y%+^Vq;!RcPA%umgxVIbZ5$_4?8hYHIoDwg1K&PFTCb!4pIE(kl~nGLM@b zl?2$9scDnRJtJLb1PtPTnDP9{AA5EuioPZ#^+=x`AGZQ8eu=sR7}9uY%HOsN;q{JN zr;#^FOnO6Df=yD)HkJBq&`lSUT1`?oZfr}4cJR&zvKP$%Xce%i-)KhS$!{v*{v^#nTfAcbx6b{j|Ia!@<*U#Mmpw+{ zFtS>OGR6I2wp-*&G~mqST-R%MXU~&MHQn1)i-hi^-WA@D1urGT>=t_qEy2y zrgxVId@GU3vBJfr`1ts}y}itlcNcq8sl|KG!I)Ae5y87>oSTJ3v3%j3UduocX$Oe3 z6+TbiP(rS*u2Gn*c#eE)_|ay39og|c+Y?P3i=J|jdXa3n|CV9Zq(=j4Ae6xTzX%Fe zA&_<&+Je1V=HKnhp!~c2(4=7BkJdSLJRh0zT&%%6+j)k5a09BBE`bWQF$%<&(6F!- ze0Nf=&&#vXt1nuAG7%0v@d{+2XvL9JNBuT-aTw)jxBD+`joGNL!k ze6=NsV6hoGvRT8zEQKa-rfK-EDG%}$+d9R;cFk{4$@-3)@g*`s&$j_9JTA7a^Y4ar zbSqlak;Qq+bS!80^uh zac>Q!t>w}t^jX%|O6RhQ2{Y$;Kin1@ts%g6%Vr1=mzI{&(9kSjtbmVhe}8S?yRq>` z3Q!d(Y-UJ_T^$`T0dT0Sc#kr#p;S0#W@h}aI8>+V>bRVa7SmMK6QsNPd%$brsO5u| z3d9Ty$d#0pD~x*35@U`3{`|n@b^9JDM4FnLF)=a8r{#g0czb(8oquIdryg3Q>z>i- z(uhCBV{A4-uv3Ls6#i(wE|E(A@3sMpj*2y5eK;JWp*X0$J3Z529*Fv>c5;&PAK>|u zS@Lurz3LtcgF#gMe|GfeVHfpehrCpsafg$HJ6b&6+rSnB03fSbIKi{UC`Q$Oyi9lOj zUrgzZ*4Z1i9Rb{WNdX!wIbKEpNZq`!FfrR+fq$Qf%F3b?eFTtch6n{7nefh4aLsYu zfg6WG11d;_9Pec|-JhYM&8VH&SPZorD4{F`{q^3j41Qomc~J~eplBEv);E0Cdoj~T zsF|5D=+%mu#nkilAT8uENvHw&E1^JIHaU;!rCWxohkh#X&yT^r&NF8Ri_^x8RQmBR zS}4Om%uV_=VhtuB{s#m87?O~~(ym*<^vv8^6rFn_=1j(tMl7%doo7S+7K;B{JW!~< zs6ar@JHEQw!tXaTHr60o$jYm*7^5N*^q&7*46OGhEXvdUmLUDcBEV`KJ#g24<>kz3 znx>{yM@^taM$}ybVPn!Bln-E8P}?INw}wticcv?H^mPpk4Ac9Hh8v&L7m<~+i80Kx<UJVsSA4x zXJ_O}WT)vwwMZL_E^z)f@_}we2XBdG*5KJw=rfMex@jr}!^`iJ$Ia{rqWK1(lvnjU zZB9I;YRyggr|B?G&wxi!*{BC==3lfAmM!efw*C3qMD|L|Sy81}^bt!ZVNp~^rRIjv zkzX=mkGpHysS=~iZ9*hw%GmYpVm4o|b~gOk_*CA+q|XRzX$z>Any4c?TSA%~H`K9> zzl&ms4T|*5x{14LDyi8x|9LlJ;GxO#``3%II%wk5*{olck&_G0M!w4Jx0v`p%UGpc zK3C;VBspewOhgl^D2cFS>lPOyqofQ5YzlvV=>4kpJ;;zP>}IN-Pp=TnA4&pBpPkV_}Ck zHVKJ|qd-vBA`V)=xc0|#=Xk>M_MOfMwAq-nlk zviA)W*q;)9T>-2R%vZa9sQBrI(21d_>)nhifa-m1R`M)vjkA+o`L7-w^&%h+>EtWZ zMoqhjPG_}}M>uH5PLY+%*ER8nuX^?Kz9dikiI=dBK$Hj!Vn z-2O;z1u@V2>i^#1kMVzvUl`+!G4OKZNJisjw9IyrT`L}t|7|Ze^M2>Fi}v+}QY81Q z>Fn;#wl})m+)CqhiH(hIm6ieZeznC|p|;q`^@)+L=I76!6BfsmfcL9r?I9x}Y4mvA zo(lu#W;W@=t}+Y-T+Lf5sy9451Y>z}RnE$MxW&i*&rqW z|MK&f&thBZ=~+QN%1)_#lT26!5y08d_U!3ut-|oGew0 zI^WvR$mry9&hG5*9`M4Q_LuMMAP>LwRi2aAlUwV{{TYoa(h#-X7d3t)5JMXE@H#j424QGI( zJR4=h30`4gVdCHfg8*2x`&8+0R6%^mUmCE)y4yO_hHumS-hArjJ3peV2cWd4E zAjxz8y|k+=33+8hC0r;&6TwbcEA4+cCY+pC-iZcp+h@O=M?^@po0Z^!saf~>&A#gY zSuo9o{{x-=P$LyalDe7_5^#VRrJ2F-02|X(4X7V2^%5oX`MQeC0m zP?q0=U@0Xh*99UQ$hLZTp1^{?HO_|$qP)DOn8Wum=IzKzD9lo5od*)y5@ztj()_R5Daex;*EvWphvmOEtEy+kCoH|ahh#?S9OX)-k1 zgMPlkzpru7dV2{n2iF~B+;{QDp)IxxJi?$~?|q$BQgqp#tw6)K|cxVOUx>~D5XPKEo0 zrSO_F$Yh>N#ZnmG>uXmU>}n{@1Tk@OgQ-#-225cPu2SeloEA591jVv~^@72Cb=e7g09+(uh{!y$| zi8FuGEI>)br!Jw{Z;+RigSedd0`<+gm&;;Ia$akjvIYR z)>xepKz5($nUIlwqDOX=RU#va0c$`wZuvUhfoR3mZ6c&OQZ^r9RlI9PIAo}dPZT-k z*Y^4Y9*+%+w6ydx%~`ec=<_zO=7yNAz$$hC0lELMBzP#456}^mM4XFcd*>V0I0D%O z>j;V(g+0*k} z-%CkLuSQWS1B&lh3<~6WTu$2<&nDt=WedPu+BWG=95uzechTxo)6*I#gd8Xi^+ce8 zP3Cr_k~zkB^~x~6C?EhP5zrF1-uKrh({=U~00%YP^qO41sy_n5NoCvve6sz{UrJYZ z_x7=~jrsS-1@N$tY*G0orRvkacA4hSd|=J<{+>>IRUm|vB@rS%H^bLULE0Xggh`%5 z4s~q1Z6t2X9->SgZLs2bId3)j!}T2H$jBrbRv4r04U;q@s(t7@} z{->(?0~+494K>f%e>)#g?YUVvuRGM$^Dhl~Jom>W(JQ7{YVYIk=OJ+zux;I46)421 z+atO5h&=B-gDaID07r(HS>?QffCHvU_!wznpvLX{I2hnTf=Xu5r~9q56c#LJAsnACpvmE7y7z{U6FB4w@E3pG z4PXW!?K7NQYXV$DBBPe+akd?DCoGPk)86EusYwZqbgq&D>@(?bf4f&!?EPGpec7LG zV;z9^1$Lz05scd8B(#)qwmG=Apj@DG3Z|qm`Rb;SH~LMEm)rb}B2s^W9#&&xZLLp;LFY@pU__EgqZMrqWv9<+>>!v^2!fh$2B#AbZP`#g1cmJO9nN zSU~Qg9UO8V;Ny?SY|oql!Hf3_|J^ll7`-kLP-Im*V-`kE5%i9%)$sh6RN{^#S}GP! zWUs%>V2Hs-cG}lwcZ(sh-J5MDa@uELAmDP8W+DRntM9Aae(*a(+p|$4daGkCsUl?OorTkn zR1^@q)Af&ZH=^Wf5=(=oDM-R|Uk_*G6FDGNOVt;)rANqT(!EMbKtU;tsMX?a8}4tL z6sH2XQHb%170?sHV88;XCh?*lVB(V>4(5^8ukRg?elK>25>skikd!-LT}Fg4|H zBmf0f=SBwxQ)`{SA|L`T#1jwnNTA%g=2*P}*6iHuANWh5GUY-y8=HyTi z5fQnPrpTIJPtVN}3ViwUC0M>hvj&9}D%eNwnS21nsc-F~JM!5U7&G&=m34A@51K#5 z%9tJfQrg-?!?6NPOz5B#ZLPN0Ad~=dEkaJ)&Ujj7*Eg^gEgxlNvG<2-tfoMQH@l8^ za(pagX!xeRqr)H?Ae69u;E31N(UP57?=$oyCx-&+L%MViP@3dPRZkq^z~liKH6dX8 zTC@$^UhKIk5<=;ZWD5JcvCQjjBZ9IY40mrk@qj27pO`3eC)h!`CU0+Fv7&eQKf%PS zO{wM!l+iuLyELtcm?Gka+ds$NKsQpgV_C|*6yG_!cE1KHA~a;G{UEu2SKxj^W|3r8U2@ z3ZwIheN6|UH>+56xn!e64ayPbtdgcnnZq({R6+Ry5%rZfxra<&6RAP3&Y)xhoG z;pte6-h>5N6B7Y8B#q1xAtUB`Kz|+ys{hLSL5UDzQKN}s!Ga;GiP8yXfav&r$|No- zfC9C{3=9fc>zMe*c77!eL4ibJ2|n5GtzzH++w6HF*0SRof@H*Wt+o71NSK8|rtus- z(p|h*L_|blfBcBF7|UxOKjYFOPwEGR;INFmtn51e$=&s}K2UX<-f@7Ad{|gma43v6 zNajFzT3J~kziw74=mZ?Ncp0uCcvWa9Msyzz2sbn_MMd;S9#Im2wxq$HZg8g0lh3d{ zZ2=`WxP}5D59f?5vHO*GdJfR=*2+ZE3R^a!boOMBTG zHW!z$-|+2ZPzE(Wh3*$HCRm|gMxb0P7}yZ1?S~0k(++16aEqkpzl|{iSR~PN^`(rt zfLg|E&vKmWXDIf^bS~39!&iZCHQoD}n`@CDlNCuDyC-|j7fS(w_uN`2{vCM;*n(iH~x{Nf{O}NS@+K!r9BsTc=%Di5H#ZO zEYXlRyu5_yBz!_2KcYcB_t^lA>i-q14kY)*pQ_+MuNqWel7M~%g**(@bCn~0aX9u1 zo#)GbXb3v#8wv^-Aa*lfXkZ6itfHElseR+bd$8IVi_RoF4HB30cL(C_Kb& zzV4ViGa}JL-ZiK_Lp2xPqDUDDS62lCX3sKtal(E)SC8wvInoJtIt(`P*0E!&+<&YsOLtt1vZx zpOW~@CW(Sj3=`AvUY#nmaC3n6Vap^-3tcP8mn>ZnG&hY_?zu*fK-b@#5E}(5TjB}; zQ)hH|HxO~X)}{9OdcAgy8F$1wRhm235DI&uJ^EKGnDgFhjg;J>qoMKRuN;>!g6M{P zZ19=gtk%GgJS=-b6u7z3%yfPN`g7A_d6~XgEsgLTAO5bPYU*Mu;18Hp+_-wEr@k3U z0qd;KMGZS4h-HCMqn0%q92N8QDPR^yOx}HIva6DN=U3@8P#Gvve7Jk?FNqLRiAB_t zV?n?NV!V7G1La*cE!+q)1U6s~V7G+rE)s%7vdT3X$hr`k8~P0UJ^GDVi)Pz zAD_WK&aCrf^Le7~?urUo!Y-NJna_Lrgns`C_hNsn9{G4@{-yubV0}{5iYSHK6*lja z+gl(C1@-S}{c=LYmW_^>|MF;&n@!V=rj6L|uN}G3x=kOR0f3Is3^&srODhR9OPN6D zc;LY}eA#7<`eP68LpI9UXCXmckn3nvoze>{cAR#d6xY`l)ZeYZ+_^%Be{x(MWowEl zNzMJs<$aD397RNN`*0M3J`1*2aSieRHcw(2st+HVfFuwLo8>wCu;<@xTP#gnc3v!H z1+sF&oW^?nhm#%#;ebM^ke42+*PAd*qk8}_Lbs6rZ6|l-8iwu9B#+C7t@g0kDN3f7 z>(1$9&yt17Gk;eBMORu3ps^-goq7QUMmm>I|Hzn+<(8C0NIaWFU{LjWB6(#A5lq1P zvC}&}!z?*$5d@D$&Fyt{__X_7eJ~jZV5(xJ5k#e9VQRBF?wPrUWbn?{R9m_nU#KZh z|H|Q0{@HK<`VFL~sqaRQKT;Sl13_ej?0;az56Wci_ugE$zfbX=!JuuQk`MbW+-5#X z2bI?Nr8X>NCi9ZKmUAm-{nSsGh+XJK`8mQ#JfS(ut&VB*b^|0Pltn*!B8y6!G zooLpgwp$HqWqXBuWH90&2V0`um>9jDHs=OsE2|6G16WSZGicKq%^GWdiMcPLF$Xw-Qhn|79o^cg>*g!jj57?ZF5j)I;} z=vIu8B--hw1`ri9Xg6rS|K^*T3Y{^e<2wa2dmPvcg3xlaK~5oMwkA+y*SQMRh@4Fp zZUQC5xMjk2)7A7>haR)Up*b1A7w|e@OqJ!WU6z2yL5ct^jw^pA>b;&-G)TQo&p5}T~P2WOA^G>h0iM@$e(d$d`j_I1^MMdeq8k~b$u^8oskms!k5#v3Rb_@^V9PcyoZrx z(g3nxSIwU2sxo;k6++YCN zR6Ob!`8XuTj-p76M)t-ITps*l5S0e;8E0!N^JUqifGGN_2Pf`TmBZ)LS}Z7E-;XwL zqvUAa*bX*umt*o6zYBMNLSZJ6hkCmZQy)yrDJtHtg>Qqn-4n{8RP^#IY}m zkt4|9O^)J2o+LZM2R`%vf=#=hHj-A(7WEsIh)IfQZtGV8vQTiaO7PL*GY!-B@jP8t z7yP@f=$*J)3y!S=Z?*NdFWklcXkk{4DoOEsN}hS;q&H^G>Mr5Mh3tX`vGK_0T(^ zgW0^Yt7F*qyLi2fFC;YYfpS#I+pJ0g!gS^7Q(4>hv=dO4x{_7dvc=Ie>x7yi!APO#d$DYh^L z2is!^$EVQudM_Ogcjoqvcv}}B^ouyM#8EeF3!Zv}wFb2$_eVO~(_288q|wr+?$_Xa zaq+Tm@5dEJZv$iVL+35ok-^PVnvU;?Zfl&#@*ga(CjuXN3{~L*wf=}uD5#1xYMEDW zo`rjH)X^uKG00mz3-0IN7>t?Ow>Z)%&||{b@i9frZRsb|^G@j|EKhdM5&e%|`FgiBf%*#6R9T;| zgxd4O6zxL_8dw~!09wbEyVuX$RE*qp4i2Dn%%>K_jcB}br;g>h^n8fds5UHlyTYM} z)-2QHO4Otl2qv+Lt5ruy%op;1cezDv@B0^fGSWlXB}qSM;+jl;vfHq*FB6J5-+$H7 zQ0HjFTWzziL2ESv2&5m44=6DiyRqpy{!pawb>kJHK&aoO!&oa1G}TAMcto4pu7-3GvB5IBLFF?Hq_%=llxjKn~x~M7O+oZ~`Y8O3})B*J7x0t`9I9XEgp%xl9t z!^E#Pe`gOgSWIa5ngZtfUO$0iff)>XecR2Nu&h|_a4X*H(rB`x<+*YbJ#JJTOGMnX z2M5FyErMAp7MC;6j*1Z%a4f{ylQZd{Zqvp@9hB*Ndf6D>6Vlh2@5f3kd}~^Zjca3 zQRz|;LAtxUL6q)Bx;x%Ie(&#(cdff_cy*XLbI$(k{p=?aO5Pd%DbGQwN0YHx7(m?~ zjD`wt+;C@v2R=~d%+V#vqjSU68=v+{7Bq||RA1~$Ks$6PVV*WqZj5nr!#j7Y_Csyc zG#|$sq=vJ-Ciy0@smt<3 z#10YmVJ2>yR9G$^_zWyvWzJcmUi^bN&;8#zJZFPnY4qnL;D|5Yz3SauGmaqTurk8r z_Ds6NNxhB&fFnpUdpL?JP9JfFtBb|TyiyLz3m3n|^|`U*=Dh2l`=)jkMzak={Qk`2 zzWSgbBg0>?*iD#dOLMmNs1Qjs3w~whukLV6u%=y5%YvZ=k^?M?ylP>KFAL(XN1;Rl ztF;k3YLR5Nplu)%c8$56O0VKc6Mz>gU?!kTOhiIbC=OJLN3!e355-aHOU(af&vU=3 z+Dk#jh_K^9T4p_Be+;rFXRrS8cdZI-eb+PO?|K5G8QU+jo*#|of|41NysU{ zb#uDOPa`deN?jLkJ>Mz;MZ+zs_z6)DQIB^EZ{zPA-;s|@eh-oowX>1WsD?HItnHW% zRDZ!+xjE(ac`<+bJ^>w=YyIT+X;nO)=C2mUSs97FxJcyG(@B`x_81WOs)9H>i+$M~ zS|lOv1OBr=>3=o1X> z^L>Vpi&o*yasM<^{xtkJFuEBr5tU!&L~W5aP-^9>34975++! ziqxRas<(fP?ShR=jIcr2=-KpxKBOtur&(S^HyJN6ICE+J+-R4}8r+q|Azp+LC-8-Q z91$Py2Fd6Gm$sx!hf#d!|9otazq)J%jyh0ckiukd_@neyaF66ZPu$t-9Z!w@8BkQ<(N9+EKm2ffq`J=YaBJ=^ur7N!?Hf4 zoe%5|GDrD3i+dofzyQ2!U=k}@HZRf4PN>8IkdBC$4{^%JAUF*TCYLLThvXY>A@1WL zi`pBvUgD>PG{c{YqaFqeLIW_!3G|e}%G8b=y;IE}WJyKa z5-Thex?is_sr{f?TA7`TvasgzyGiteN-LP$K9S6!%z#x5nD-Hr^4X~8tA(D_Wj@Q~ zr~Xj`-#YwzH^qhtm^Fe+7wFY89wLoWz(Yl`H1*%GIY^dZGi`A)D3=E2I4lpF5s0jt zQjOrG(o@PG4L8D$kOKhh5%Fi<(MxOTUlx8v-s6r=^->n#xtKdq?r>3WEMUChBEJdq z5NOlF{X##GN!f~S#lgLtqTERF;PpVx4Y5x=YQ+dd9j#=$=;l;b+4pK;_oBFH66oZ1 zf>rgplsZ;^1#jRW9|2mSz2P?4{{)$g@PiBtlajDtG2N({M-!l0`s^)hV`IImDI?W5 z&73)MVzvnhoJIXpx!KJIQ4>I4bn4CvSw5I3gV3}&`|gf}>Wa3<^^zbJGqfI}^0X(^3X$N>-PI(UcpAp^-0FCb-}?Ma!U<<> z?DWF z9;!f11Lq%7st44B`ZYd0b%nJTiLdr8hpfLk3=_)A5!`Y;3=b-O;Emre`catW+CIZV zre2e9mdjobT%8y}79IPkO5;T}l@}y@;u32`OVt2i$)wKaNl{5@*79W79DUsHRR&4h zUxr${R%q4&b&F+qZq9UD|L#q0IZ>`{s)Mg>cL1rx0G);*d@=B%NzuaqxtF{6N?7%# zCoT1u`GUp)e)g}mQy_n)5gbN;Mk?IvKBGyHTeS@8sxBY`G4i6o8HHqIp z=X=E=6#H3hM1Ob$edO*CB~+LCo`>#r%+P@O5^e?ulZhbp_u;ig7Sv~#sV~41ir2v{ zY4qR}3Lx^nUU0QBw!)O0I7fgp-IE|P#6{&fg~)ai}#w?`WOVw>qC+8H)Zn+zO?@lPdN&vkpor+GcN9kv$032nsvkwJzOBj;!`J%)@ZQG^ejMf>dc z-B6}0M4D0GJ`T)-l;BFH&zp-2EeW(ED2VmRUFZYq}q9qMca+DhA^#JM2?$VMLfXzl%m#cKT z5CY+l8>iw3+JDpG8i_4&`aczK+{;Yu(t^oaj|}RxDa$609@ov2yM=EN2ZP~`^VA@+ zp6&Lc>70-$ZA#Wkw%5iYw**~SDymYR-C&&^?;J+bD9TJ}!j;3f zPckY#ZAKS6R(&;nZ?=c7SZyoC@%|{`E|`$H4Q<@ocpLy;a4z%lC%EFBUVf8npVTj$ zpxgbS@N`LnpN#!X!zh8LtS4rffd4QzxvtmEaR~}HxI{|NB|l_l4yB~!$Qd-|~C~=IcU(S>;M3vD=)4rz5cxVY-9q#g&qP4|Zcy{D>(>^x2C#*TL^=*_RK%BcQx zGQ0Aee)*#PZ<~^Xy4@F99NC`bOz)#B&`^;q|4vasd~AM7xJRZ%09f`dRi5QEO1Iwq z1GN;xXe-XXuYfrNUZ#_iv{ON&$&;kCIC(V^u`9@_E0uP8EBUV)_uR@iBGot$3@(-& zAdyo*fm8+FfsH8H!7t~iZ{umjcG>PoeQ~eVW1#igtP2(L-o4QJ~SR?zMt|AEB9V6=?2JbIC%YO~IzT{))LytI}l3+6u6 z1#LNo4$@OEbh%yki=Q^ve{~TecIw>9Aw1w$^ex=Pbuh1yRT zA|q%uhtUl}$T@28DuxHG5$Dxf=Tr&`9t*fXWk>^{=(=Eg^GN2MKe!&M^DCG=yI~MF zMnr`+k={1z^{}fOw!#~_z}2}^m0I3X|1_zm2oO-Z>~-9@dslj`lgk>G=2IS^Jgasw zN9y4Su#t<&1#(-JTl6v^(0&(%oaJeY_r=wLzG=w)c=FQs_TpJr((S2)VmLZm6%&j_ zNaChFvzk7K43}MTQ|5NsJu#yeWcp z?#0M_Qo79%D-Wf&En)g>Pm+E%E9r!2ZT9~!KngN>AWnMjnil9V0k#$vXs_5}Zt?Ig z5Si}GMrrG~LXU`cEF!HjjY5w12!`cG&G}yUj27r8`uy5zg}tc;mFuaI_~KozIItRJld)BKtM)3W zeDWkfa2IT*cT~M=lfXJ_=a9BhtMhr8BbRUBy;-C8{Y!5F!J->+1ZN!HA6dbs)ckgj zWykZXuc)@cb#h4b^2g_J+mkI5b*e>rHq8L0Gk$P3Mc3#g@CyY%vf)m~#+1~bIdQW4 z^Dt?P-=ElC!LZQY=ISDIfk9WV+~mmwSrWnF4St1foRA~S3&lU`Zm=NP8So1^I=kt0 zW7@qmYEkiOB0~8)K$*bx;{7fcN*w~#(RRyGD4>|tNooL`(YhzQk2vX?D;R&aSGzX# zbMp^*GO#y)Yy{Uyae`}QVgF72XYq;IhsZ+Qp;1?W#tshCdIwdow7F-v46g{2zRLx$ ztBgA=pC?j1cryEe%&%3(*&dCVJF$^6p5q6n-1O`g28GAgr7=rhk5HOt-@;u(kG3&u}_XY>ZIt({6Dip&qq;kWXE4 z0=`KzlXc*vgakFj8x#Q^NjN@nD!L#Px}6|+(^|Jq#jxcOV4t!r51tyk#pd*e@;3_9 zCLIEUPaa)Ew#1J8^9I|`qU4kOv9+*hp7rpx=Xl?G7T;m7KN+zw1X9WZSNqz1ma3V~ zNt2k5>a}c^RxkZIkfx_J=xBF~1{yU*!I3-wtp3VBs&I~;si+iklq+iqmCuVP8$)loM&$$^klB`|Zfo4*z_zzNlZIA7~7`qFW zC&rkl2)$oHCC;Z(dBr+92QEjI(H_xiKYZEhDA2C8T7JssBY4Zg@+YFp<>JRLQ+zSc z!r9}URMd%!vzw0*NJ%iZiPh`EPOd*sf!(0tp~v(28@Mfqdn(tPb8tf~#}1RoWzpFR zkaPxPrKmuE^FY-|dlk_E?GvU{xyKjj41SvU?&lj1YzglBP?US(mb()Gz$xm7;nwNo z@O#;?(>bY&a*|W{dmgv;q&NLm(RiA)rRXE?EXw|Gj5bTkEn8c&Y}^JS<+SBLr{DSJ z)k!j-M0;NI!Cv;R^4hB_D*CO!i=WjsXg@P|{i_zH{a|Ne;fO%2(CB8cOgy&`MBp=sEIF z34{|SPBi&(aaxic~jXZGZjS^^s5E;&oq{Aly1?n>3+Lw4B$$( zAxQ3ln$+j&gjAoyA_m7!QH4hLYkZ+FIjp)&aE_{{64KD7=!j3Kk@W35{_Ir# z(j@&ng}l3`4{Q{@E^JF}s{yzIldL{FZ+^P=*pekHv)C-GA7L_X_^`Nj?)4{0&(JWR zoH*Fgr%rTncv6u`@Jc~9KUykXgLng64@c&6mAnauXuY~AlEL=Q_CSYkOPjtlnFmeJ z(<^`uql^CN9hyF)=d@jj!-S;3NTxe@NTp0QEA(9AZ{kkiwuSg?e6_ug)`AHnr)0~^ z1W*h_QuiyceKaV)i9mW}YKvZnzO}IPGp~tdWU(bw4nJJXHYhb}4`6;x#xcm#2^xGp zn^q4+Jb(2D;=NOTQ-#UJGRc}VnBS2I`bBpbAt6@PBv5sGFFowRdY%SoG}v-7l@K-| zJ+A;n%r1s5nLFla(_#Hp^NEx@+nd``XX6zZHzP~?KYOlX{VRq_&3aFu9CtNIA+*Ik zzh%ai4Cs62!J9+6Qpw5TXh#qu-1jTWAAf~v?qcbAajw!}w*|W?iI+&gGk7ETdeu8<|-N~@^W)f$JE_J1(6lz@!CjQ{7gjyeWH5XQpl^!cbnf9&0j(T3x!RH z>dN*UV{JmnXM<_c<&4>jOQu~KvtL1-cWJ+4KHv(TG_(>teUChN#e=ed;AxnEnrDZNgCS+?)+lDSR@T*dzMLja zYrvGr(@5PqE3WNsQ>^vbpTe%B27OQUR?#j5O`iUhm{dyqszjPHEnPoaE%e8GC;10z zNv+ira;4<#R&-Jy0*q{JtPskayfX#HgEoVGm#Vj$5)ASp7jG(SX?qjcw?6yt9c;9v zLDdr%wI?FsBg*i3IPdd1*r(}+kBe=6H=8Q~3aOfKeIM%x;cx4BVT|d$Q^7+r@$RWo zLN3CudDGP*96Gn;!98{!NBS~lvLeww5=9#m{$R*Nf0Q5z}^%e;4cX5UV# z3v4~W-Pd_K{ePHfTMs39b#+WQejavp6&J)4D$Q_pJ3)BL5)CiyS| zqGbD9F1q~kte?g>LgTTLC}GW4bb={&WB<_XwzE|kO^rHaP1D?ozY6ZuLU{_Td>nxc z6VHp%J21DCcYUr)PDlFq@lbSt4(x#Ro7xG(l%Lwnyd4==7{-#dYDhy*EH-;7MO+{AOT^Eg492F)Eyj; zz10|b9&Vr`P!dON9h5E|W!`?l{U^!5m^=9n{ntU;iO%`BkmDEo3%{g;CjtE=L9M*Y zmj0u12Vkt4`if9Nl?XMLCFOs1-Pq)(B@TCDkzZl;@751Y4Efj321aMQrB)U!3aM*e zyAl5H)#r>Q#dD)+r;>2Jhmeopn(*{P{oHH}GH}AU;1LZlgK&bPO(pz3Y+zvQ zRolkRzY!#-z$6#IrKMmyaV^nQ$su5Yw7b^bY*(PR_}YdS_=Gf0-v5&kj6EFBhS>Lf z8TXqy7lQ%mNP-#;P(K23Z{vP{nz_?)-B7|JZX~wwDcXJ5y8uo4CYYOyp2x;IbctDQs0 zv#!*yG2YJq0_&3K+^TnL;>=rXxTr6s z?W{Q)zOBlAJy)AuYUuBN8`$y^rtkJyPsq}~`pV$&yq2A6aONpV{v3y=Ypd76oUe;+ z{_iH&Yhq;uZQ-emybBVuXI7^qtP3MdixOzH(>UF6O;T61jQgm*L31mtm*bih%DPhA zqKUO!QQ0%tbQHoUnq{w#;)%*V6!A+J-kiP;UM6du8_JY5O=5GHa@~K1C7D?DRkO3B zKSzOQNLvh+A;+g2-+q~@JN%_3=3q~04BJm-rZDv_aB#JOLxc1-+_v1tYN*zUF)O}=e^yQ zq#pS~=35nUrNtlOqm+cA8KhnPUgMdv&>N+t^mHH_m`DS?%dS?Vp`9wei`#>E|D(t7 zQ~u6Ql zS_X&{RM8MOVob56;K-;F-wE}E*Bu!j8{&(?}# zwH1P`v1qV6NgAvkd|46xSi=Q;xNk2~k7--k(Kk7zk0#}f*BVGF@3(zB=pW4!Iv1y& zSy0Dzpc;w4J%P(?mvS=z>P?Z5{t&g-?T78#;rJ#+%iw(@%hm8;LN$i}9benaQ1lFW zxLaPXO(i>h)BW=dc;`_*-M}V$*qN8&(InVuMm<6URIBHPiN$*+xbj+n#8hA1!$IzG zi5LKr3Gv_a&rw!6ap6qOp{ZfOziX49Au_k^!Y4{=Q7JWxRpxRCNzGf?b)~dm#Q6TAJBN%pT%35 zB;FKpRToKl;OzH0#g9K7woD^ot3(T`Usi+URbs1uaS=g~0a@6Uh$kA1tJ)CEHJ8m_s^*u`cc(8F zf$&B=l)b0?bq*MD@OYBR62jm~K(bRhqg|<-g@g*lef&o&Cp!fej+E)%UKf6wkQP`H zp$t60hp0CpIOG}W4&%*oQI(q6GU!S7x_Jg&@SSp;`{c}I0_YnYdXkz#ncefeuY^O_ zp0OC)<(huK5fHbuy@Z?g_rTIhtk`_c)Y1A|Z2GkaW9u2esvlrtOtVzMtB&~^#51>Pdp_*{9C;`*O8R`22{~1ah_EB*a_|ry-*4Gfj~xo?j6tLcB!INM;yZk!JZ*fm zbeQJl{bFD*3+Qx!)R1{9wGJ;#z2+IY{@(E;RRIJN6eQKW|9o?|_b+*ij)*uQ=)W0R z_L63aea6vSWmx|2?440w;s?&m?bDM}8x$nRVaD$awuf+9!Zixir%of!fCs1>i{=h( zRDRgB8KZ}OP3(>3#Kh0TIpT-f<+@)_LMafR{E1Y+h%jn+^M#P>M8Y}&uzEdpZf-li z#+G^H@R~T&guie1%uZOV*>v?@{FE%%@Po}$+{dFwb{H;M)&s>FY0+gVtqa70%!NcS zU`x10D!i?ZjYR>UTf_HVoaVrWv2t_`tliaX-eN)+ z7UBB)q*;%ASQI{#S3t@DI*)%LZDMssYh#4R*$JBF6|R%$zD!hB`*UkHC4qifPeyaP!T}+G<$K+8awC_9H$6ak!l=IuO?0sK5({(EwwEvFl7-gbDgHdY#b8jn$3$>eShQ3?Mu@0jV-6qs}+`-yfMRG`6P3d`F%DvxA8tTvW&BRJW`oWvzx6iC=>t|d9NOt%j+<>L%p)9}B}4N+GTk)1Y*l~iWB-ePm_N3n ze-MtY`1dzhFxZ@3b`n`LcK1GdE~aFZxpSv!=6v0Gq<3~RQfCUd)Z%^LU`_t@A-~ka z;qgW~=IkS_>^l&TN5i5-Wtcd>miOgLw7RShm(;`j8KMTTlB~=4wlXPvOZd)ZBhb;~ z_V=+6Nb}_1R<$?OU_w?ecE<(1!aOu+-`5p|WbN^hOCi4lPi*?cD%5_r#KprrU={=Q zk5X0`24{F%3_n6>dqlVT_PbU{1^=u%<_7@z{d$YE%*YrSkoqg!3k-(SlLToOXB;9d z6V|H+Hf=BBBvG%C;wk->KWcp-(MNLbFu8wZfa0IPzC!hd^2A$T7H50J&*tkdj`QNM z#Dj>t-TK@jFKlgFQl7-fnBt%;jnm?X%c88befx5UG=oFoBh=!#wYFq_m`Iy5!dtQB zyKl__T-xB0q&)BbGcdC4lS@``kxSoLq#}TeV!;_W1xd(BOZ{$}<^1L)y)wvG>AZacMm2WoTgsp}Y^Mb)l#rU7$# zCW@c92$J6L`&BooaU<@9QIGYBO#|6IJiYf_x`_v1tg}l$>Vasg9>HxP*VroC&U86T z?5e~ZNJ`E_dKp(xnNi%CIB7$DuI?%|k5P%3K9eG4Ge3CYa$n;Hs6C?iX;dO^(t1P( z3+sMHjy>bUCqZDKY3vD4HS)@;R1U%cxWYbd}3nCzvSRHIKur?;f8eb?wa7l zk~?OPw(=i(5X{P}<)gd2x*K&-h{Y&|W0;0yu>jH!fhRY;r&i7$A zEFTs!98l7g|1;7MV3^x3{YDmrh4e6`0TMZRfkrsx^7vD8?OG{@-Sk7$l(?%Mi{rW0jjTD+1Lav_4kLe5>8f{=@=ZA%!^-zFl^6{4$z`4G^ zepz79`C`aLcz|Es43cShjbsEw{TzxP{pp9LiE2f~;{Vz{IvsHs(F~uck$$G6m$8xH zf7npr*fTQmvC#JRLTDyCZ&-jHSB1X?eIsP{RF~DRim$84$6}_4=0|q`L)g#6;&L*; zI^Xn!;-L#H7oYLg6o!67?6Be)pkE654Eb0r3r#bh$G_fYY)Q?$OU4M6ksyHU7sUr~ z6{#_W&h8wxoXC2dR4yHvd?Qqz@lEsMWd99#Ao}^M@t`5`wf%!PZ8<~Un<(ZsMrTy+ zz9Y_)2kx0WvVx?2@lK_T0=a{4BK5=`?i`-MniZDo4on!_PKDnokL@b-{R=Lqo!C`% z>;nEGW*7_}zfp9_kyG*Y=o0tPyf`Z6-xEPG8(E^6^5^#e06I|FJq?KkM64w&KQomzTsE8(Gg*n(=km1fJ%3;vYrfsTPPzWVZ`Fm8vcHGQ2>z6 zR(;$$3COKtM@ zi_l3+f5-}e6`KB$uvh^^AAXGxF=VZQI}Hg8dym}vpB$$5{zbk4y$Gd10cW=9Yf2|j zG$Dn%+%$FGes|4n858S{BfX@i>4tXjp3Ollr1Y@UboMXQ&p~ftvnNR|a6eyyJ(xL9 zFw2I9w!zn}6h2dV5ch=F7gAkpSvVJ7=^{+}O)HiQJA zGwuP2;2H7X{@f3YT{hE-R_~*5sb`k|djFsqT+^tFRcM(?g%xSjkM>tjoj0Rn&%!gf zFl0hH_~&@tO>c8>fv$;4G9OQ(=`5yN2=qDsH~@Wdgt|b53w^FR6o7ufz;L$S;UlIPIT-BBkdxlg=8VXISF!p2W2 zy53wfWMrZ@%uu5cUQCPS4?y)}q|<&N!6@=0oO;Y!NGjSjx4QT@OL+W6C_WF%ndkN1 zgv{DAl|O;C3;}!E!jMRc zQegW8f6yPsdpJi5Y$V51ui#OVj;}v7UN$ySO2j8J?mc^}5&5O;XP%VxX1oJOkv!$+ zGK&t?ceY)9#BA|0rk++$@h!MQK9;+gl96!5bgh~^-ZbO1@=VoYHBcy!8}6=B0}eYO zE{MvVk5~uaD9XFw-v@>nEN;-+>>*(w`%P-r-)QrHw`xfbz%^0`$MLD-b^4e#2pdM8z4rTzTDAoMILpyg7X zgc=({DS@Ntae=ae`xD?e<3KB9GvX=bj$dZ|ngJdK*a9?=K32snRchm&be2J{_5GYrct@AU{U3y_FJNgAg)azQo)7^Ch~dHAxF@Ky9!|Ap z1C)3DZbLr_+ng`Ht7ZWum;z8Ql$GTk>zd!wdhK4oXH1ZEp(?YUst36Q1PHePiwCWX z=g;Po3dq8khbWEqN{=pHr|Bqn>1X!zw;60~e{CI*L~k?NXYTF+^}O&@mD80r8p-L~ zsj%^+Lb7LI}T*4e73?ZgKjj@&H-bfronrX-cG@1yi%W3;U zyoEl5AOUqU1cJ?M_w&+I2+$!dac0{A7xwbabFAU)c1cFq1VJTaVu=g@1kar~cY??% zb;k9@RofrDe*tv{Dxv^H+uDqyG!-m;_%Tqk4fWbLVjogNZO%@)w8fJGl7-i2U7Dm| z#LY6vZ3NOocD2^x%U_4A%391ukn5nrz5pRFH;^$>aD)4?tNGi#@10w)W>KH_hOBQd zIyS}%dCbS`L8@6TjaOyfkxS5{B!phQ^YV5HcmA>cWK;jMf&GCSP?N8qP)Cw&LFLEF&DH<{SC>|Wyc@*@vGgv`onHU#wjVST z`4cwnDQ}MYd7-JjiIg~5I=x_k2ZEpM6xrS6pJ>5~OOLz)muk0m_6qOqTXoAXj+dOC z&`+>n>Ei_WouVSBsHwJ_oG8^7W2H=(A^a?qSuws~m1W_2Ie^&#SJ*Ba7q)Bi&F%s; zi2T|3!FTgS{lQovxang~E6rjGP;DW%V*B?|eE-oTO7&aH`L#A3t?I+WJ`(o_cRj#>5Jt>m)G zTWHV2;M{<=yYb6Ts>?KT%>+LM9uKsfarD{e_fX(75)%7BtR(NM*Iss}w8fMw$R)dD z>)Ls(FMuF5b=Kn6BtM$r?=$o9={uPKZq!CqJNOJb&v-o{*$w$=kW&w+C%Q=6;K(o$ zQJdZL0i$@FVR*U{BKu&o=$zy7xcH_;UtAToT=&|qtO@S#VcNZfIPQ0?g_!#S4KX#z zcCe#`u7V%XGq31Pu|U+Ge_k{<5w+VyyRo%B_G083AYd?6g#rxN|J{uL9(@?ue~bOe zD;USLABnw(9|;0uJn%t6P8*bN@a$<#^r7uA^ncT^j6%5t+JDvr`7>YFb-|hCyOsH{ z6hX>~AuO;J*!?zQO2PBwN;_v>0-Qb=2xN99h)~FWjrvFSPO{`j#c|4*&GqU~y2K_t zC1?&t&#}MNY}Y;bN6M0c&bj4^cxVT>nOo^)WG#&O<2d7E$1;(nP}m1GF%^Oy2W9~5J*Z0Tni*^8I;ZM0w%S6o%w(R z&An1lbccZO6>or+479dBp3m=R6>I+hTkJQ${{Yu4MxZ(yI~OZ->5-EAG{)zt#9 zB&vKLP=wPBxK;oL5lD&=a2A0QoiwD>1`;SDX<)2TQ<{H3fCDilm=w=)bSh*8GVepw z+db_K;*S%}gN02_gf%W_$@=VCuGLUv z$7nNIcF+n5+Ve=X;+sT?%ZSsH?-h5`VD7hD;wcnq^kxETW(>azptr zte3@?$pwJD7IJrn6qxIJrOhNH+>MS; z{*r+s^Nv=2g!6DpM4VZbw~*>yHBRxiv0F zsB2G-%?U_%bK?REZVB_0v3EpsjAVqA7Wu(ilz};{jxExoh+^)JmbW#B?oa`{+G+Xu zS?hGRA+2s{fmoS!8d>+X`h&e;j*>8Bve`vpP_*Y^ee9!}@SKX|$R^Q4*#Cl(q`qa| z?9;Ar*eV^-V&jW*)Dg=1Rc!~s;!nKuq>9pz)uuWIIrXL`OS)kdb6|7v?+nVo@J#6M zh;mM1XC1KJH8_(tTWXMus{E<{l&+z_@SB5v^6$d#XvPdox6e=B#5S8|>y=#}CM3Cs z@9LYOD79(qvi{`}+*%foC7*E_pupn+%8qB{ZVyCtp%%s#EvvXxbpJwDbpbv`HaoEU z@`an9DS29oJ#KM_sGl;*^08!nuz0=A{1{ukDONgm3<+06H3zF{^(AFH+jm)8_RWHPP@v&*w-XF`vFy^vRY)Hn<4E7eNui^fIPMook1)g!kEmz&XTpBuxs^%r zzDDOYwm4ayy!3u=($Zyr5$Et46=b=y`=|~ra@j{+R!POVin_`MvR4V|NMTsXW%y8lY+c^E^@6b0t;J zJmByEnMnc5K}`f&dvjM9Sa!LV>IILhQgLQHO9I0T&XKHl|5NT9+w5IiAo?OD_9}72 zI6q1xi48W51Le;>Ik3%#>&Zn=1{>PB-BmU=syj83OI!8BH4RTR-K_Lm7>#Wbalt<4 zTt)^Rb{lt|jx2ZX8uMJw{Z>dcAwJ6UD^%CAQ53065Kzigh}BGlbg&*#$xrs}>w=*7 zzlb}K6Lw)~N@uX-M{+mkSGxD(h$&+!E9SPtd_Uz))^LAtn8;?*B5I&^tJ}J3tWq24 z1M_*XQ-LrR9?QeLwY_%ONp>ftf{^v~FL}%glzY~thSZN;4qr*Sd^m8^yz3ABqKp2a;kVU|ngj>xJ7 z*GRhZ_QkglHi82AE+37E{!d2)cxhjLI{VK5Fu^#%7qpO>`|ly)FCn%RN%04Ok$Bg8 z9M0-eCR$#z^;Gbf009yl3=g;6Al_godph&T)%-^t_+B72H-F00VS5OPDPN4fL)w+9 zwR0O^W?^(kzG;i*y(V^e65x(v)PKnUX&S(1V(j2GgP0Wflc=x(C+mH^8z;y@qsyuB z`qwf1Z(qT+vPTqd5MYz_r;G2NGRs{CEtOm=?_HJO!$QLJj`@)$SHQ*~_50mJekfM8 z;(y(dnG^4=TvTV1YkY04f>Mo5n&I-UQk{=qgk zPl^cvP&t^FCjgq_)T&8hkv4|ptw4xtA)_HQFRg=CwH`u!t}kyM-ie(}>`Snbh61xg zm~Qwxyvk+E4MO{#^M%5(1baeUyA5c0QyNX?-+B}n5yP3J}kE(MG zuTfoJW;2u%#&3*kzaH5F$Aal_bHq#CLyBs_Uy*`Lm2d1u?5-jfWzciW{njj2wjC7x zsmUN6nbM+e>?uAE8%!!1G#x4x><^RrEPblE-DdC2rp-ipZAIzg3p(bHR)a4K(r0HD zuvd(AlG`1o!vlfDnmJJ{Bn1HwmJ8sh0GZYngx5k%=Z!rAH!t<6L2#lAI7IqeI5Mr* z_hbow>+EU!@n?(azy**gB)6P6S4riU$%qy*%G&09FF@i`8){h&h0tp^UuP5L+W-g~ zi%6E9VaWFgZG_H(Xwq0>0;$vX(DG_pl;WNP7CR(_5#9yq*X1rsox!!zjdobyU`OU!m&DRDZB3G<$qi#~ z>s!}8z`S0w{HeHl`dJ}YB9KgFS)_gsDXl%tfAzEWgu>0k$Wd1qN~ZDP%SX=kpyvKz z)z=iC*YOL`H%&o%fhsU5NJD&+;=A(RpTu6%(w%ABj1%o8G zp~2fK;{mbv^Wxe>iP+Xuu4)k9_XSwY7$vee@;vTb zfW-i?y%7jlM@0O8aWariZ9Vj0`oEnGsoDm>Iri1$4495*7P248{Ppt0!b?<{o%ip9nZr)*u>YRN2c z_q?;2j$r7jld>pq$jQW;W*>_a*%8~mwDELR zx1NcXXpBG?7x$6tI{qtVfpU}bfyZ5pWaes=iwrxD3zOTxEPq~(zhIpY~vTH1X?hQq&-QE9DbNcwbK-%+Z$$u%M z{X8~y-b2*MM`dpaiVFQw>Q1%*Pu?lX@V%9b`>e_E$eR-Pw;D;LEw#)5E)50|;KY_) zQ3#|TAh+ufp%*wBEq#-*bAof3h=%6V(q`+HJK&lc^8qgDcZPY8!(2XFgi4enwdn4q zwfIv-efKGdKg8&r6qGx6NFy=8a|sNW_~~#vF#5xPoHLk~NHN_DIcN!8hnl?UOoDgE z+*kR85{;BdmgU%;%`+LR%JX~0cBAD7YQipCNYtxI4Kz;J8=))BKQkb(lHl}#LwZYL zc=^Mf@{#dDnRvA~MPpGM+B5QMms~aN>zZe!b_0nFqo`J1c1JP@Jzdv`?~;ApTn+DP z*n!!GX{q~@%k0XJE-=&ASPAITN+`1)9ks4WDKZ!6dD;PZX^T36`!fetk*#-^N!~?k|L~ zYgQ+hGU5Td6jPo+Zv?*o$6xzl13Z;`?iA`YCZaz$`}X+(d|&Q+KG7NUmrF0hnG~#M z011+cfzA}y#ChxO}+O(E-m0!tRuGrTe_+NEIDC8&;eGzb(#;Pmx=Ex zSXyDcFB=HD)fL(mqZi%JGC7*gbyeEkGvt< zX$u=mKl&-VilaPnUzT-BzoGt~U}EX!EWH2IMoU$mM%txL^)^q_0m=SPvJg6jCwfSm ztw9$p{=-1hWIn@#ON?5E> zsL*nAt9-V$<;yoomz+b12JPJI;L&#oJf)f6eSUkD_7TaYCtC0V^USB`b;nfC7O!DB z)u>BbOkf|BbozOHtKC8sD~nEU3pBD9)%#sm-~993JVxljXqGi8!Uom?Xau6P{bkg0 z*Xea`$GCj>h$z03k$qAmxF-wM?inV*%=cQa2Y36%oMJm;IIcwsJ4JUbZXc+rnocOI zY9Nrs_^13es2T6(LplBwsNBVzlY8Aejs>Fl*K&Ve0b&nAGdXuJry}$-;QP3HED%^H zmYQH!%uuX|^&oeP#fwS@bT$b^torit%ubsddGZz;ajv&9J)nqn8vdtZJLUZ)Ll85F)zZmhDq; zZ{1a<5xTA2KccRq)=MbMt1}8}UZ7M^YGT)DYCO*RI6OO5KWXC*QrKFpVsfw%pjQNd z68XsNw|8WpR)7-=D8$IZD&)72b^{09D)7qm>a;4kSixLsgV3*k#!mHPEL))BC(>@6s^E*(DDw4uGp%bc(c@BO9Hig}~nM z7?D}tk2o;I!lRi#0KN`4o^G7o&+m?7p}3th*~_2lRkC6J?!@kF&MZP8mD}%P7{#>a3f!aLQAMIHOQK~ z%$?xfKQu4flSQ^&E^`>L>dvc+6|bn{Skl=4J40S=N;k37#_?)z91~{i%a7xs5~5 zJy4J78%%C5(x-b%T&a>q&Vk=Tu#nWkO~;kdcM{82%XoM$^!0*Fq6xk3LE!y~sK-uy zrL4^yBPHC}40>}L(LFYfiDK|}ga@C`O?doPChYg8mfiy(6|(j`JW`0B4=-LxLjGsi zs{r6R-?4j)G-8WN=Y%Y2hVjBKIVeki!~q8cA#UnXe8URqFI;eTF<5ZBxSq;$4%++N zj(7n}<281C+0fK-b!~01-%~H3P_L8Y(NV9v9&_ZMABch&^5mjw@X1g3Qsb(R0nz~v z+U)5RQZo2kcr)D}mK#Udl>7WLnDp9{`zIbn53llK0>4S)p2u}74gdAd`r9~cznopCH$%a#PO62<%bIXug z{c-IYS#N008nxLyGO|{CJfP_YW@hR9$#YFy6^QyVHD?;wR}`%NWFMG? zUx6R_#fiH}Ug}DX_^~!4a|k^~%Bgd0k~rE9YJ;G+Bv`ybtknn@Y6g;29iX#vOt9X$HIlG&U?ItXc^u z5j8u)_$G-=Yo5zM5$CH(b^@;cspZjeyCn5QtFZ zJUz}90l1iX&u-uJk4F6*rTAJ7MSm>rMA2@Xk=Y7IzUT6zuvKj7Lex*i=+f!}gNaQ9 zS~5AjWcOuMT|FA&*XOC_P=d{(2Z>oE=Q)+aHb|Y;-oQBYC_w_K2#~M}7WaV6;91{f zq?7KvyQ0KA*-aK|BWmmezW?^->P-U;G@RCI-KdgZbz_`9kI&8}nq;%$;6M+CA#aH2 z6!s0djs;S)9q@Gss0Jl|fe@;^qwT#K(Gv9ts^%HjXPy5ODSv~a{_OKu`9Z#)%2LED z?fz+$+xCT_g!-2kj_Ii67H%CXU5580cN!9q6Z3{40^K>|n8{xY!-wB$eQMssQF{Q6_6rDX z2;A}@r5Z<$KPZR1x@w8g>6Dt$~zsNqXU;FJxO^xddJQLms)jQ^6%@{pA z&xFTJKppwKQ6m($UB?Shh1P=-V=IO;CAau7r~)WF`R*+(qDsZ+46v@Gr(}nsM<>IT zaTfXPtcq7)eL$r)f#mC#v%Ub;ekO(2shtxggbWo@J$%SPbH-qT)$_KDyb0WqI>^g`J;o_<#LXp$4wc5 z=-tv;v+#q9p%Hu2Pp9AZp<^@A&R($TF=GhjRDYrs)1r@}kT*}B&2e=b{9R(Sy?mCk zRj1p-Zt4Z4pw?kL@w?*&Y6LlKQ7OIo>$v@n1wVtpU(Ls$h5!K}#2;XlYu%lICIF}P zv_V)k)FE(n^XGx7eq6<#hXSa<1VTFZ=xx&IgqU^i(08{+SVlX6)G6>ytzV{A`cUki zK+(uE8JgE7Ro#ExvDB zT|Y}_c)y`WU+kvRZc)xaJ@@s6A6g?WSBW@@r=9cd`z(lwFne8_!tga6i|_ujtARsw z6t^q0e={q*<43^N439n^fgKMGEZOC@mlOr?+=6fS$(EJ5rvFCm`)`q}6a3(U-v{7k#-AR|y@qWf zb@rE_X7WofYGtzXctASvL!zK$GDt7th?WMjKaVfW4er{&KV`n($|lkc?m>UP*Y^?y zpW_>uz&x|j6#AyC{atYAKV_wKZSd&@G0_i@3n#gJZxuB~ccE4Lrs)NnTC=uB1t9lW zvrJH2@6>dWr+bcb3tvf#(H)Ll^W(D$HT-`;quLrMcbs2KxqlU9r#t!xdH`TI0#5i)@R zfrs$cg&vV75_H4Z)6Ll~y1})ga22;p%Y3v6j-cs)-tzd%I!x=~adfjWJ5q9Uzwwn| zVD16l^Gx&8D>*}Ktj`B!eLW?-B8F}MM&d}YtG*IOJU(s)$GYy`Lq!4Ut|*}RF|dgv zp9wku@+>(E*j)J1B72UCyD~8tN%F?p_DAHM=9O8H4cWcDL5?pt^$Z@%tY|tSFhru5 z|HO0xFTTRc?al-aBJVD)o|7NwO`L;bwcxQE`&-}*PGA8ScI$xRME`~=fb$X5ta|?P zxbT-}^JoiQT5tU}K!W`uJ~?i2Z|D<5CDsv2g5JBMz= zAjBXV4g9h5%LXoiktsswX}x$Z7%3|1(|@8hj@UY=O!_ZK+e3_e%K=honJmul z#KlpG^Oa0a!@|OL`EKvp|f(;HZ2I@XUATow0KBjCW=f;&5vQluToNCauPf4Q>mKtqZ_2sVJBh zPOe6W%z^8a4Cr7qtRA_=2`CW(*x8^IFfceg!2#%pt5f(83DJH?=f(7tgW!q7?#b0V zlbueNrwHfl@MNe9RW1)!atrbG+>s9$>3*!jdT?w8=+&oPK!K~eq;GC@^&u!;Kl6q> z6p!!t_}C*bJ|5f#o~uOH^uTQ%3Iwvre0|r3HFr}(dU`sz;t!;hc-T1yq&JxCVGtNXue31J}z`=4hAOdQ6JqKqPjb@WEMRd@UsFypP z>UYdHK42)il_1ZpBh?P7STq*MAp{Z!4^*aGZ=(3&bx9lEMT(ePeP};2cJc`Gvp_h5 zX00~8MWiE$ILv_>v_qNLI5~_Ch>azN8L3=e^Yf1=vCdtiKPf83L-qdms_wh5f1!hO z9w3i(4QFNG8-CNBNVL*Td9@PWTmZz!M!rUNB4z0h*g6CpK`v6)=m{5tYvs)6LB zw{1BVihgt{`&BoyL+2-+NcG~7a@RmmnHk%*OnZ>M4LEam8BR3YN0$oewWcUAUh_Nv z=WLmb#}$Bk%?=gr`ihj+a-`?kiOr3yEtn!r)uK8Zc?qtyz-K?o4&z=&y}%9+83Vp` zM95U_lG8mlO=D`$|e2%LTX@o?j96>O^g&uUoy5( z&h4ClyU@SW-6YmE1O{&8?R>l0;o(dQdh#tspvB{xu(&;AtD7$3FLC3|&OCLT2z1{t zr%3?~j>h|#A?}*7OOd2Ii0sW9WXa~mXin<@(eER!A=Jw6$8~y;NolCWv*cPg+%N2uhvaZSLI8`t*ow@KGuP&`) zi-p;St0s6~JO%0}$<^;YTraPUF84Cc7ms}|h_9}CTtpGzgNR}q zH*L<|$>=vnO^N=ugK6VG-y7bygPy2w&7ejxAGfPGzu#TX zzQCc~_T|WPkgtio2k%S3vvMi$#q}K83%=9&LmMKO%IW;O;JMewGicNU(97lZn1wgI zMbZUfMURb97$qpScr&`4VTp7$Xm@>sfw5N$-Sk5j>ImVe=cZSg!a*Yvj);c$ zJk*PV$ij{W{`M}O_RMLzmDA!7^i1ONq9U=9r}MK@12**fGO_hlfumtfY%5jL2AAf* zQCxv7hi>oG?#c}v-(lg6rbyI0Se%@TIDLz%_8qi?PJiNY)jiPEn5~V(5f;34h!kq# zm356e{Lhbq<q1n^fE%T?PnkTB$d!Dn^bmo^61@_m- z2~fLf<+X-%v zh8)CNdAsZWc!2kge|3ca&;@YTs)F&A7EIgiIG00eUK3yYT5MhV!tI{6xqae2&azdS zJN@)at`^kSM2dmM7qNF48NwT&u|tDrPZffaqeFH1S0NDVVuSM^=gpA(fnm?nnNWn~ zLh_lEqkIGdQ7GQraCnDajAP)a@_p@cwu1_htjF3eESdWAs*JBa(uk)V`FCCV5g@Cq zLyr#D(e8B9En-39skU-TAgmVEFnu64!DPGBn~_j#u6yGi&Xm=RKv4EdcAipjuHvdsloM0(s_yO!5xHU4lA{%2?39o<0K5pj8(})y}gSBYk-P|7>Mk3bl}DRu38{z zJnT94JV>|nN#r{VwcWvo=p*sp7`I%BDu<7F-j9l{|Fl!Z|KY?OL1y`oMd~ng!{72H z-2=Diw^vS>N1!q>bM)zWXkdBG86?bMJyUv=mL)U&z(yj7L^2f#W#pu*f!viAh$aEU zsLL7oY-Iv5@sd|XccNevEK++1du@}`&X5Fl*;5C<8$H%N-r7qi?|L=?U6w7HhFuZx zsWl|w*q7nb@^S$=;Vo=dYLF5g1!5dil_gwf<>Q^{GPvo079)bxBgf5}JfHTHlioIUy42 zot%>7q0x?c=Nq20uVmzHFx^I-E>F>P7qa&Zd$HFwS=-|x0tN?OdwdeRlVseLQSTFd zdS-Xcm2evSMt9#3b87}Df~fMJMTu>{gEL9#nuE?ihwRTlN>aviQ6r!tFRx(S3yA?P z6hxP^H!KPJKad2}u@cTzc^o(2_B^1*-Wf}_K<)P%U#DSEQ}7!DIql6Rv-Z!WoFZJ9 z1zyGNO|>nigg;mu*L3gPTjoAs$*~wyzYkf$zq*R5j#o;q-#k9mZCm{D^@hb|za4F& zP91_gim8j%rpxb`wQ$8n`ee33JWkv?z`2Hi5eHPk!18UW4vd^NKV)N4@+!KxrrPH{ z!*$i;LBe#8qLgTE{w*vaCDHs_kBQtjl!=QAucf1d@~N*ZtteLN>EV`+zSDXssy4}~ z^epU6la0&HPlk$`XvkLZsIosMrV2~6gkJG@yFp2CkKT*e9%1%KUk!GgDrfrrD(Bz( zRqZ0|`@w+#O!_{hd$+ZL$arGFEQLWuoC65Z{=;R*Y47#?sryO;V}kQ$+ulLq6)Tdv zcNDnzQD<+>(x)S{jmk%V5sTtF+emx>_g??}U}3$oV;`*ABECnIKGwfo??q&n2w$SF zMz%$KS6hlRUkWE)l?MA$IyJ1bZ+yo?3@M4IjHo5!%6u1*0d28LSAC~##Me4JD^+b$ z&Ji54UV`&$eFq8KG&qUdG}7dU;X+V66#?q={70~*%^}!QH~3G2{KER?G`jv1Uu57) zoUGSSf{hL>cc^NZW6MTqt{%q-AH*J1RY%XZLP%YAVJBePQ@EUSLTi4(j|*-S^u~4F z-;0Wi^Adbd>eJE@73XX)brsEIx42z8CJA+|-Co>rI$$WR@je(VNpL0|bv@=E(_9JU zKTeFDn)o?v-(BZCb=B-3LLTd@K~GSnQU7U^H`L#&L#5PcfaO5#XIzAP#^M*0BW{|W zZ%=a?ipMv-cUmMaFXt0me#>LZ#zpycWIo`fAScftf55{cmZWlkEjuYTV2tqgWH?m1 ztmYAfE?ng?18G^Hn)5l$rz$T~VRD?{9>bKVM8BwZQSwA@2|gA!DwFD~xzb}U*}Fzs zsb~s0{J#Rp`4zbKDxPBoUJs$A?heZ{fh(@v1?QV_Tbi4PTb>TKQjtDsed#9)iO=x9 zJ{taIK}8wYBf=i*-=RV8gLy`|d>|Xw{pR;UaCG+@mw}YdYn!x_)Q#{4bL$aGH+SuV z^UgC7X@K)s@ZAMpL-C&Xpj>oPAfi-der-5wUy}ZYvwtR{xM6^K(aEOUjhe#-5#UX? z@>y?q(PH$>AnP<%(bo0SyC{khE2Ed>9dv2sNsG=v)!l=iO>M-v7pHx#N4X)ij+Ydu zV`t;1m|Nz{m#jTpbn-YW-QoT z;yYU{n=FcsIjvMW%$UJ|wcq<8uF_HrHAuxqDNa}PDol@7+>cTRDzikF{i1UT8;|_#iG%F0p>WWqfPcr!Bg3FW!_MXS}1su=hpIaxRb(QQdl^*zc#u1+kv1WRd>}2cTnyCofuUH=-P!?sgcU>5vf~V_y4YRdTBOP>D0Eq`drAy zFuj!aNSKGD5@coTeEL+JK`L}~{Ep11WZYEbEXym4@HuMy6F1TQvw&;NdqGCr%FiTX z^%SpP%gKFD9?u0=&)(^-_gKV2*cLZT`Gn$_Gn-e4 z()cX<)F~vJ*Y0igPrIJlMh*H;Ejn0MEyG)e%+a0St*P44%U<6HTbW+un&4$56a1q# zSMO$_T?lo|a&wTZ*I0}*(1Y*~@|VAEDcP^L$=GZP8@x)R5mn@`;2uU-Bu-mZzcZX!h|-S_ z)NjEfrZ7e0_F=rh0z6MR#EJ;>Oo@%g7BfQ*w#yC6s*C% zuB2ygdE$MIUsgPRE)U?qKudt8&syA@;qDgt#G#O$k$|$;q2eSP=b+>?P!C`0V={NG z%+Q+GL~eOl{kpA^;DdWfszASdu)~B*WSpnvMnlXURCm$}OVI+?6%8TU+hI_`9P5U| zdJS5q26|XlNY`>o)GHyEIc(oX%O)|6amZY?i48A4D7cWDroHf2L%kAbv;u6WD~ zPE~#^&Fh%)Vk@sSD{rquWWpwmc7{&T;pm{mjwMoy8O0P+KJ}YD)6pW6pVrHztSs9J zT}vN&$ui1AnKILdYygz4{`v$18~aIyx_2`7aL}RS2#Lpf@4IZ&rP;2vTF6WJ3}h9` zL8*e6D+pCKwGdxoA%V`@8hj-ir$KTk7s*{CT4O)b6mLtPw++>%N7yN(q)3W|s`#nx z5>lcCAL3FD&p|_YU}t|=pO2+qe^fZh9}+~d`S~;2l$|+PY*Uw_&V|M7{;C4t(5(Rp zXqB~7`FSU}7CNU;!(uR)$q15>dRa?C`r%7=%es}f>9O$ls?E+h`PZu&sv;Hp+Refl z%RDJq)|Bz$VF^Q&&2!FQ#v{7)N#z;ZgL!J|M1C1mrHps9w*Ts-lCtg+(%QEO^OrH8SbivK zcF)6GF3N(L0232aw)?4WanvVz3=CPt`TXXyyH@FzA|AC4%2dTwfbdJk^K>IqwnZG* zdyG4HFiE>c@$96L*cAGVjaj$1rxu2XgI{}mI4YQtBQ&CP$9-3kTOog43jjv;N`^b` zT|9_^XePRfQ3ep}xzrI@T9jx^FWvEC9x*`}opRc!NY{kIC6+ivihgjm{2p4ws@k{o zF=g_BFF;hxHuTNN-TZI$N5j}DodvjxFvTpv9#iSOZFrEyacd}hAh1Gv*5wYnM zL|F>Q%b|%JiPc7elqAp0#te@9DABh<+)$LIY-qP6kM-9%6A8%eC3`oCu9p*d-0$$nssf@+uP`)404{@J zj&Ytv+CO|kJmn!i>+V) z@s)m=VydU07Zq$e;*S1-NI95f#JX*2qsQ17OUFpTpJc6!%f`k!D4DxihM`vGDqP&Y zDdwFT-&I}o2b86FtRMH>mg8+FjJM1Y1=L4k4~HcbJbIm~!|J=yPYja6HnCrSTsSgI#3R<)`rZPriyB;YE7v4BI z!>4Dm>=gY~cj=0a284y_!KRT%`VKt>?D{e>mtUVdvWMHYC+0_7M7EW87}H59b^CIu zbvZyr!y9>F^<&5^!;{+*4|v0q??u%+*DqcRBe0Sgf03`lY$&BsSA>$4Yh@)zf12Ur zL5!*|W%3!+P2b5@_VT&Eh=mFCyo40&yBzJ)7wU#_q(5=*ecuf`fo{0FXP&n#U9C$9 z>U(@clkcRkRdmftxj_k%0J!LCIi*lTO=(8iob_@3EJ|YsHGc!;Gy{L2msgC8^@J@m zyx9a!JIZ_bgI`e6w<25%>rt&p68nVphG>xWiqG1?)Upl}g2+R`%uu`aq{NS^gdMz+ z9i_y}Hx~rc3)`cH20OT~ISRBMWv?>|ojES`6+UJR8;lqd(^yY}NCf(zKzbDQ-%__I zYlbIt{|ZtHPaX$?fJOc)A;vm=Jk8Q43qO-mvNZ-jGs+q4qzac5piBsLT0~sIwz?tp z#YptG?;i&}sYaBeBrgz?A^>eVjcm{;-?e=q5A-RKZ^1SVh~(tpX!iqkN}eNx!lsBv zN-9q~njo%VmU^zC!_0!$VhV@0gDE2J?RrBiiuwl*2L*DhNL0Uzx!TO}@%^hZ{c9q7 z2|g^B|NfNy*~m(bTewUdzUG#`j?O}Kz&lKm`^MsKp(REGDYhI4N%?~X z9&DkELUP|p==x=3JK~v|ui4f<6o_>pBu!b< z)TV2Gu5+C3=;(-YK1Xb80k8){*0RQ$SPi~kzXvm~4ZwcI+J#fbnrH<7C^C^^(cKoa zQe&pFQhNt)Z8?Z9=IsZh;h$e-`6HF$+(#?jUw5* z`&~+|Zl;-r!WA+!X5^PrDz)ZhQ?-$16WU5u4DeT`RgpU*V6Ou5UQ zvQ)$wtI$74$3+abG<^N(E7R(J{iic~>x|wg>mw7yMv1g|aRtwmT*-)Drp{jC7~V*) zEL3J;&cr0PeP3pb@k0m2agCYUT&yb7g6+leTlHVsI)zDHM;0&sQj>?0836OUgm`*c zndjd)&Ayj7PiM=?D+0e1qmVFg9Cste3xau&x64#RHQzC;H5bl!iZ5-vtYe2*QDjej z$R4&CG!h|aX5#X<^zn+Kwt_8WFd=Eb&v6PLBmeqSKD3Z|yc%I%G(G>Q;#Rcx;{%Tk zg_bNE+3w_K^9vyR3{q;Th3ay@zF}9lq_<4*QO{V=NI7>VWkZSoL?3KTye!BEEW&ar z5f2T%r%OFG??SrRkeKzJ)sVAV5y@6VEu_S$P~tiJT7U{q)%}WMtZYfupt)`z=7~2b z)l5M_L1WIL?)}>Ep0>eVJU90|S*|UE9Ojp>q%iA-0qpN_D2Q>jj=EUsZ7-|0Dbc;PgMc*TXB^e-mV>Y; zWPfUAy-$BAZ1Ov)P%nUH9lgfcM0SP1Zo&g5U`PNebC|femguktUd}7lr8}8N+*I7u zkP>mAmR2(^5aj9@g;-`a5s;JE*8OFLho$;`bczf@l!{d1&b8BVTLAWw(nRRQy(dsy z>SDg|;Q12lch-<+K|(j@Ghu0aG8$F z>JUL6XG%!F8LdRZVbFAksm7_=gAPl*@rr#^EgCsocQ6=DZ4(?^3( z{bbLSed8CKaW&wRaQsdh#x(yLfTzD(TL+QQIjAyp%gl68?qr2Q%hF4=N|en9#1NwR z;sxC>*CPb{$wM}&DC~_f^K+mqYkYuTHgQFSw>Vq$g!R__<@FMP+U;cW0o)?B)<$_I9jwSs5zQ11)U6a%d} zJ>lOu)XgIrzfad>gx0wJSm}Z;vgFJ*U`MRJpcsEbrD1-^EHP%?3RkV(fX|T?-vIHI z9-cu*g+?LFGjv9o59QtEiZ9h4ghAH3R&cr#DcyvRq-ycqabq5FuyW5^rGP47_+VFF z0?Vz4^XSLBBTf$r#lpcwBHn3b}~qihiiIOE8d?u0)CVpdEl!2u^= zoVWoNg;_wN=!{pMEa5Oq#UQJ|q=K!9f~_CVJAbk5Sb0Gj%2!Ao3VddUGm0S|*m%r% zZ3SW!ua>pyrhq5O~WV)gi~{gwMX~lRnp~hZ&`7@Zl@zG44>SvMV3Zu@fP zZ^C-2I{lt%Cr?%4P{lMilhGpf6t5B4f=3PlB|uxsSf8D&Pl}x+hXdOKP{DW}FhlTCdX)_l^$I|l3E+{Z@ z!$3(M#H5j&z6T*c2YNgR-o;5XChD<_dpW{#Bu0VyL;Z>}4%So%^dyhW+>S2W&?Enn3+6n`5pLy*d2Si-g@SjCW#AO-%=myJXP50}$kXW5mn*=xA$RtGDz&Z;7 zKeqQ#Tqv*GSs#$bPHdBg2~vp!ZsTz9tOfT;<>1F7Dnhfhbt;s3h3uPABAK-g(E8f?vsY%y3f8f*mOUL zmLN~r?n`+t6eFRRBKxePD3%wPDIU*-2*nz3jkDi12t!J`E~p#39nkKr^1yem$%(r0 z67Iesnvq9Xz1vH{iOrVNj!wQ zJAnNeS&-)~?lua7-!rm+bz`h+@a!dn#J&0W=`P-K6ja77dhZ%U0!ze+2_O)-qyjk} z^BP}ljjUf6x_|mn2tO|`%i$8X=Y*OcVP{Wl~p@aiSZ zT=S~xM3CbDEAHNJ>t7%$YY|_{@V7Oivh_~nrNsAR7gJ8j7<%xhpyul5sM6Q*rG=*K zHQEmx{`qD@sqgODvzn0G=>Nxe##jbmYJ0=-{1$dBe@Ca{<`arZ-#B*nc6>=@Aq4`# z>`_A!ZpjMaBt9+nmqm%CPA7jGR1vsdBMuZ6-d~v<$vALupm=iIy_A?gBI?at z^Ttjs(Tc(P%$5WG6kzb5NMg_`4SI44ic}TaR(WY&Y|oqJYx`ZN8;S(0R;xrUKD^M- z7RsmKV?Qq)CLh_jYC;TIzXb&+pO)yY+XNoab;g@k9FgWOd1BYify8E*>zP1JEEhxF zu9GXy%80`yvFk3HI4e zem}TNe{qHXYQ<|ok5;Xe5(IV>4)Dqug_!^DaV}9~v{XBA+_apA2DV`aUcDqICkL+H zPwP%aDtTu^X~hT#)(2>7az*c z1?8|k+%@8VSUdy2Vk{gXppA)(%RALVdXaVy?;V22U?i|FZ(niLpF)o^uMC*U7c)By zN{&Fw&uZ>zS7YO45EvMdPc^b!w!)`*@NPm|HuZICses^_Rjv?9`cAsdJ-k0{L>2D0 zhyo2F;`_9$Ci*}w)dvM`gQ!FB@8OZAkU9rp>9wyM$U}{PxJN4)su%&~0`hkplAVLd z>44YH08jrm!$HtVe(ISU%>cv8uYJz{qu(U1IW{-(jkG?NOS8@)M;8^Oj(j z^F{A)r~gQlt4zi+^0Fs)lPM$>lEe1gUs0NcvnlAownLgVr#*-XkKf$~MffE^b{3JY zk2M+EKNip5lLF`nye4v3W#kEYC>t~x8fEaUY0;i3@bl-Be*GueCeugc3ku69WqS~& zo(j6bi*}joaE0ji|OX$#BEFF?E`DB7D-sFQ)6{lMPk>F^TAu^zJ#|lA21+kuWYE*?k?6~Z{--%+3 zjhEAevh>*_?T971Tj67}R#5U`^^qV3eBdA%K*|^Ch~~at30~-){BO8A7krK^>p=Ex zf5-T>hXi>jzQ$W*#xzC4ESD?yw||B@7W0T@*h!13Ql@%ZA}Con=?@9Josl+VU6;;E zkYmCf-tZxUO{{`%qCgG}lY(pEW8$y}cp*8=!^q4p@8NR(ow;(zegEQd(-!U#gs*8x zkCzm20h5E!>A#!U$-R|*9=gYZhmAML3hX&6;5R^sHV;a!WfpR9_t@VRbVz!gmCSWZ z|BbalU^95#6!_j^?Md_}af8Ltri6t*zyV$sGQ__W+s)zYGNaAx!fwLs;-gW29R?=r zPDR(>50VV1e)UsU1|65l{29Q3(pi$EjiSfCO(zWp7a+dc}dI_8SmC8C9c<3qPPtEF(%f@!X#>b#(B+6?k=v8)M^l-a#F?!`Gry1cE+t zA4#&GeEqjY!_0Uk*C*EGp|Xn4Me1J%y%qr@%LlQct+eMtN5yhM$&T@9>&S?x6o0a{ zGX2tir0#1AQMJp^KF$1zlKxz1&GJ?NfzG5v&YTyYf6YPcD3-j7_pHX<5Cm7&1%%Wp zNvJ9X{*hB}3EHXLF+1-(T#O@1zi<^|EXmqSCcjgqH+Hj(Sg!Lqa;;QKV`cN@CFywKmV)F8ne^D&x?cm3}YvM zA%=F0^3#t?kTd%~W+cpv22D9Ra3(vd+I&p5ZYWJaLhbk?G{F2m$AdK@mHUda6d37R zXa}@4{IwkFT#t+4KHOF^E~EIoMGq4jjzzyHT;W->gyX&IdN+a>BKSCmp7oD{?tYd2 zBTkMnd3;5|6aQ9vfHqdKs;2b5vM~pnFur&F(W#d*Gti}15-^Qu!wei7ZJ|WsliPpQ zaa>5w1G{(1HCd0D6&Pr4w4}gUQ25L3Y*RRBekD5)gvHudBvGa0x|i1P-wq`bi{1!J zA`3?;iK)R7e6_JwQR_X)8WOg@Ao9rkA59A$ODR@qT!{@v`}v?4lQRbp9s#GtOFD66 z<}^hpx^>peKV)Ol^LTj}nIjA^&#?Mqc+U{XRzwf`HEpg!OWeEY`)y>Q9h|nv3Uz&{ zv8c?fC46OnWTd=SNjO2yj`AOo2e3zdC!CA!0%nSlpl|>F5om_DYSJq6zyA$YY63vLm@BjSHQ1IaabNutKeetn>@&m2Em98WEk21*m|Fa-@ zdn-_KnM`AQ1z^FMe~#T=>FVL}JpVhKh|eT{Mi1^NO7xHROU#H~T=+$2`UNHb5Ad-L zGk6e`L&J!x2T#ZZ1Lo^8pomqW06CR_zxa^54ZtGFJKIj-yDWl_-R@DP^3dLX69Un9 z_L$-Z;TP~ij`>Xa=c&}a9_NCkl0vKi!tPgpKK%Rj|GPPkaP;ElZn#-e2b}2t^az2N zrI7xGe7Dc~nZb|mTieelyaomaV%lPjoVvdbI9;T{ZqB1<~>}kb+z><7hJF zuo7>1dAe7<@fZcA*=hD-X4w0vEr8J1W@EHRZSwr$LU&^{9|OaClK10WqhCcG?BW=g zh{)XWs=mHnrQB3CPpyoazIOL#C=y5aA@0%1Nn2+)jc!K>83p#jf1S<^2f@*@!DKz` zLT78DtjJ`nz=OoY%PToKS*6a=X3DaS@HTh+G6EkD&l^0g-0!5(UFr-kvfG)7sCaL0 z&slCd{sfH0cWbhOLs9n2@!HN#png|GOR;`ehNAm_%a;U%)G98>KnEVBXR+*NAE+B; z%qGjtifp$g?(uRtbw$wa)t}TAnicZ1vSKM~ShjpY4vV7}6%{o&{F5_#J8l{J+3ov~ z?g({@IyMhaPfX&CwKZ>ee<5Vz3#$XEmUE4taq;l7Rd-JJ7A5cj*tkV$o29x!qkwfi<7pQIw#$p7`Br02{gV_ z?FFVnc4p=$@NF^u^*uSg&AWBG?qmkIw*OtoRmc|g#MZ}wj;DVU`X)sIXXF+ z5D^d)2co&2HWj(vT>C7&c=5urkM~4E^7jrPjePZrjQZo{o>-Hg2u!8z%=aV z-G^MRf`fy9)j8Sm9QF%gzYc>pZK8D$W8bAd^8^Nip-z6cn5{ouS8h;~RZMMY;8!Zp zz{^$2_W{XVu^bi!_Pt==bgs^iu(zh_VNNaFJI*Vwbk_#cy$eb$ZD!lLtGy!N}= zmp_OvUrT2~cwZ;aRk$BezMhSOHr)=V8&h5g>b>e^cN_|4wl zUW5W=RPP23k~`q#Hz=s6WacI}*H`dO{8eV6JoTxIF8lo#FRxgOdafe;mfhWtC}?PH z3A|1^E4}e-BkZIpIzO*ZPwjiSX_N~jVAE+^WcTngN(#Sz{hEypveN`LU`Hd~4KK(5 zK@@?Jd3nM6$x|uP0avklJ|-)#8uln%{7)1Gkxv4$kIUO}IjLdm0{ov^QBje-vT|^C z+V9DyP;%M$`Oel%Sp-1dMW*A$F-vH?hcY#>O35;m%@buN@)XC)HGp*&!HT_gHoZ9B z@+R^4baAp1NchUO)C>f)&etoqo8JSudB^%MgVz$GTOIN9#0O7lU)xRr+DS~t7%O>85$q@=xk7n?p8CsS6^ zJ&wG*yi9<-osKuXLC?a{($X!9KnUcX@joLbmPUPe2qe|q+}yBj4C<5aav;@4zM*xV z97U*`XOEA;nQL<+_{EzKVU{P;cFLO;9XR#7?vz+a7?ulmpvDIy zSR|8)D$B)I+-J}He*E}heAD|M$094&gR=^ps$!wLxfDM*2B)XvE1dx|-4ed9)%phX z#&Kc4RF_#D?A0?qXHLGe4(U;z(Xla{Gv|7pX#(@gWP>^&5VLK;NxIhU>6%3!ngTDd z5EbU)bw+X&_m&u3xysEZ*)!XoZ&f-kU?yg% zx-9y0h(e*zX;|G>`J_&h2dexDvHjfVm@VgJmc;1u=xxBIY$l_^;5#TNC<=LYzuSXX zH#TCq$uY_rOn}fftKJ9xk-ski@8@^=gAJG;HGtlWm<1^Cfe0eL-u1NH$gd#3{~9ce zAz7p4n5JC|*Ge3V4Sb`RfOx^cc<}hyTizMstJOC&+q14WS8N+vcGEU&H+`C#nwA}8 zkqQ#q4f7rZ)L&3;rI1!3&r5WS;Jy`Iz`&M=s{;|r`kc0#Dn0e)Q3vJ_M<_++EE52U^^Dd*?p#2tgW!bD`!07oBhj$=+wPZJVP{kKOG(m-Rp zWr_By0~FmXc9mHTw4dY!*N*GWh2c_}-PQ!#)(Xnw$4Uwa;6&4cH^qlhr|Au?$kR(- z`s%C&n?PcIB3)fw`DD+u-DaRrBP;V2bCt??+CQ%LC&%bBxSn-kj^#h*c*gI-6F~Ti zU6G6=`>Ltwb}fM1&Cbe5D*lfH`@yUQ-ry4w#veCtN}(`GC7ZgWKW`)5#3;g;Ca1-o1#Ei-u5}1=YiU7 z0c)wFt^NFXYcdk|^dHIr3CVN-;$+qWi8P`hZ@-%CnPFpd2JlPs(pDv@Yc4Ico(D+x zv1Sn*O{|p!r|r1AxVD?WZaKcC*ptXHE8}Nlf4_`|%h{5Z62{!TCvigPRxg}z{rvn& zH;-w zL!*>ur~Xv{F@HkkH4yc+NBI`K*<*MA9qHRpIE<1S1-k4*gukC(^N+6& zVjbb~e{-TN*We5+Hc+R8CP2Qjb%ALUJDqGxYPjw#w6Jy6Urg^vUD(uAS3iMr^nd{v zl)AnNcqXPXBN5xjbI={5?|NeA%8_dOa_hzin`U9cq|kqUe!lWzyG9ov!hxY77Q@2- zm|sQ`E~LW?cA;A@h|k_Odep(CeXYeP6}-D02FFotOvW?d{e^G%b990 zo-E{Pkk4zZ_@o|8j;)MgB!`At!q5q*aJH`NWsB?Ov=d8f>rw+%K+!-=k=pLeXdZx! zRliRxsE+?G1Oz!2$R3Q4f?ZdDUf~dObFzW~h|r!zxS|74uUTv*@q9RwG_kM3se*eV zM=|#a#TI}Fbq3=bS|`;p`hWqwLk}t}W{JRR`CeaN|EhJcf|CmXMVUmim6p0aR=1tA z6oa2t0+>Uv4QI23{rxdIEF?HEZSEu<=>_s82I&zXcj>9ISKE~@Y@lszZMp}`JxqXQ z;7tQz(gJWV$h-w8C*kIDg`*6*1Q+w{8h@RTU|LBr@c9fD>=I)X84qPto-X+60=9u; z*c|}Nb;gVJ;qA2r5*MmA0C)qqd7>Pq3P5pbeF%AFA`&doucd5-l1lf;)aJvVX z1@e zOg!s0{18#7T0&kXCst>M3Si?kQSA!vPV{K`ziSE!0nQh~OrZ44YqrWOx2res@8bjg zptIQOf2))MmrqO|-pdAL$#NK0fX>B7mE*$PBgL zmkr_EgMD)G$C%BYq{c$B1RcS(&O&&hv;GH4ZT91%&62(ZrC%wf{$7|3$QVpV7mU-3 z>;SDSE-tc||I4V1yf?dxg0+sjD(j0l@imm!3ttW4-s!SGfsb{Cu(fc?E?jxYTRn0|1}Q~m_)8E5}C`G4rpn)UWa zz~ov0mOgeD-}wMIh^87=1z^d<^nbe9?Vd;wf_4BvVZd;%mnq5vj0cy}+ZlVMz}q4u zB(!DzCxQSUP~#WihGBdIM{)B0^LL0(8%xWX`1pw21(T<1m@~I%u#f=I8jUz6=5szx zt6);!vKV9fpP7__<5J+<9ykwvon$cHf&FGmZZiKpEDqx^8QcP;VSxMdM8$AGV*4d|;|I08Hv z&F$@Pg@ykGWa*Jw_y9oLoD>0zkN0E>6BtF%XPh6CNH>9eCI(ih9{|51e6v%DSpafX zp3FEc0v#DQp#)%To>m>VQob6tFAhV&_$cs4ydYip@qjpQTx+dpAC@3>5lO51q~Scb zfjfUu=DcAW2uE>-I#&AXRnqWR|IXemAe`!{Z;LGlV$u*C^!5t^B>@Bt+YuKqIDMso zvBReLEC=q4IvRsQnYbGM7^fx)uYgGi6bW`0a9`*gt&d=L!Nr@AkjcKr8yG5seBi}0#l9~`D`2Ji|k-1fJC93|&-*`51=i;HXYK^+d_%S^^vf#0LaW&;oS zoknt%rE{;uHrO$BfGeTgOdYJ&O4`JKhsGI+fzP=6^8+G#K$ie)Jb?pWxFs+`I}1Dy z@Wu7;@X!I41$N-pYyje^{4LAb~B7a;NBE3hlKn6>b-2>j{u@r|51uv#-GTtP=8 zwabS57vnK2aI>7PSq7#-;7<525rRMph%Q;p^(PClbpfdkxA2ICI& zgS2ujBNiAxNjmX;ux%^0K47p*O0K>KSb_vm$@>qCyG~~rd z=w!YFWeq2`JZJ+SSnLmiNN{VDkB`qL4z7ZM(e`?Qi56yKVZ-! z${FrQre!y+q|1-dsZXX8S(92Sxxel{@i-W}%_<8&?rRgwR8J7W*nv5*%rWn9EX7xJCG;_Ot&>ADtY7_O7SHkRpJk@CmqGXta{LU$)R%F~bh$BD4kQu( z>2%y;y4)BF90m)crOZtm<{`w+x58&f7^_#ohQ{zI9bgV?U`+G70CH`fBSvZ2b6}6^ zH?Z}lUv`*#bjrE=fSbwt@*coPi7bqpyL&aHd=B9&9T8UU;kX!}lrgI`o7O%tu*|`T zpa>y&Ow`cr?D`|<aX}oH5u?)m33fd1DQ>2(nhWP#6Sv5d`+_$JmEQEx z5EkT6ndKx%1%oF{D?DA$0*7fMD%|>U9L(Zw2rj?Qv5(#E@*3JNMe2W|B|gci>t53C zmATQ#4hjPE=GNS{(t2X$!VX&=#qDt7vbm{r_bx<)+js7?x9`*t_B-mrgtQW+1n$ak zt~^*|Hzq!y6uyy+66JkHJ3+3t`{n9mS%P4UC;K4$(!88R8RGpQEc@7Cb#HH|w9{zm z0C@oLKe-6P<NfmUv(l(?$hocHAUMh` z!sYD6vGiqAehbg5qt=?dlUj~iStkz*LP~-!^8-*Oj*QaC$TsZW1}5ibKT63Pihki5 z3F{$7v1#p#z;sQDo-f>+x#gsKRnLdO^vX)e46V;hER5*lyuY(zpZ(e9bq~&6il$7Xl z5IRm!B`!gbU-t&`=el#ODOeSabXz^eU+KdYB2aL4cMEQvbar-L!8gHv%VKj7Rsra5 z^&2pM$Ud1AAv_o?Vne&2kdV%03+QHpc4NRQ z)LiFX6D=J9I6x-L*>B9up_vI7J+gg#HIS|&GzL&Rgb<-rSH9cVwOR?eC2~=jIdC{m zklw{n&)aJhz7+ohLG}(&6R^SZmf5^|Ws<%Nt~!KIj&~t2 zFtE?j*~e_Wvs@kk1#9qYYHV7BZXuY)eZVL6ebVE`buW3S6ElQ;Z(tW}=LO^>}?N_8-9Rt;&|d^Jv`15qYrZZ~=t z+l!s?%~kZIq$Ie(te7AY;2Qv_YE^q9l&j|ff;J!#Hp&Ccad&Rzd|O%j=*Y;8tdqwf zuIq58n(OxjKe@k_`{OfX3&oti5?J#qG3N|oE&z{_%W>Q<$T{P<6F_nVF;@j&Iq5DJ z6kC7;Q*A`B=xm&2EiT$;IXx}@2{M@|uzSc4Jn2938p+a19v7FY*HY{~WQS74JSIZK zjydc2Rg9@l1rK2t8z!7Y4;=tVvG(pP1w*oFEe3e0kuDEw6Xm20?IZ{YBu;LG5IOkW z{n6_@JX4-zW&5lRkhE9B0uUe$f`uQ;)n9L75V&1L$3PBEGYm%BJOKM)Kw<<1Z4x+k ze#~>z=FOr3XA$L@*4{v+%IC~;Z``=Ahy;8q8qBnL&I{pXy9U-DKeyMdtQB8_mT3)f zzL1cbi~k$R&aA?KQxi?3`?nf^!DP@czGo?2n8)A3mE1i$&# z;Afi$-$R`3kfjJK{YA?Aw~&hYGRnKdTq&x>PM*n0|77>Dc&b}%@q%!LvR%!?!^4et zL{dijE?0&H*_8=`T>u#Uj^2bcB=W#e1O+Jo1Z6sp`x%8MnEtOV92>3w)INqy-TeCw z6ls;rw>iXnV?8_=55?$|2VzN{DZN-@W8*{SWpgi!TAP~q(1ooRG#HzhP#u{#&tNir z*)J{S@sxBUkDv3-HLQ-%^ym6?AZ}oFNkjooQw?`q9{(#3I`Rl$q6*7z{5r+gZOC%p1RE_^Q{>#;^*?>t41GDTtE;O8 zz|8750Olf-_dlIoGTIpcz<_$h}_awsEE&pF_WMeivN4x<`#eCy%Ld#5k89j$!HiB6x>M`mgmBBMeb#j9mBf z#Xaotue$N3jIZ1q+=V$2I3vub*Cq18oSqztBSY#}%yw8C?P~w}ycx@+<~LN+@`cuk zF7sbUw1LdX|I%zce`41gYFWht!Y>#6b{ufIE6pmbf}2YppOg}wq7z6@elGU$__dv4 zegmnVO_Kw~{OAxN?+&daaR0A^#|XfFug&T%TbNVCg%y+1vOA$A%D=C-8zJ{ToLxWu zrP|Dr`AV^!9a^66(z9WZIQr}Qxm*EC^uOfsxn@x6)8Xj$U$*GVB>MW8l%FFt!O^FW zr1YY*{3r0q^;Q$y*p=qQ)@Px`#M|={VihII0{p})7t1|X+5xUygnuMR``#v$^k2^x zzUJAtI-jKd@5OO(nL_26zha)#=X_hg_$jQP@k*Ddf8O_x1XbJH1cfpFnYPOOLdQJ)h59<^2nekC9N z^JwJj6X+Y5CLQsZk%@|zV*Ji!KVa(qE2X!&yL%Ov>!_r(U$drjU$mvSY5Ct8|G)3; z5WPNWZu9`)#jdm<>PK# z9{+3H-yQ;i@ALg#Gv952xaMRzFH(M;_X-xWjOY8Yv-EUbmZG!y(m3=${CVmAmp~19 zTnbz z!{kP_E)eSNygTJBzWNUTx&VLuKp0p_*PadAszZ~g3%ZoqvLm#5>Yc*!(tpnYGFY_m zP3^B+_MO|{%#Nmn_)0ZQru~}3!)sxy+GTo>h%TuQo^fUh0AT<5ZGT0Woa0)RBlm2{ zTHd$asm!`ionN&K@VS`1Fhd0$(xju6z3-h5dEHTA9mOU6JOG!{v)B}PU)iGl*<#BV zoLAe?qF>fOZUOgS@UNef0TT_@^gOO`B!qxZO^?(^I5j!*)pL} z{6oxa7t=XPt=;F~@yK(@e|b;EH@$l>L zXsNjMN0z>5@mE7tK{>Rzo08)_3*CnJ7|?CYKI6ncVsJQwUEykhYj($8KXNONJ%0c2 zs^iwqxTchrH)6ec_%jubASXG#x9RR*-`@lcu39(Hp23g(dEOWasPQ`7$#v?*R9Mlv z<7GERd!Iy0g-i*?2gxS!!OUuBY!=vOXmNmJQRxIF@k*fc{<*!ruHPX3>CrZYjLrM^ zJ=kWm#qO-xnzyn>7LUTBNxPxd1@u!|4;?kP9?IB!_@$rjdJuK*G_d`7Zqw`Ue%}G5 znOUbcP&)8IH)(eLR!3)IU+|**5h@dvfegdVBW7vPyf;CPb;WKxesO6Xs=^`tdDRTrnG%wckFGzb!EP z9juPHo>1=>NjdWJf}qU-$!v?CyZuVhp`hKTo)r8zIY8C__Ds12?UJ{eijuSPw1&?O z)<+ryKz=Tlu)E;rEfk=ZsWA?8@xxEMrM87a-?U3Kchf;&g8==pIeknhcX%w#aKA*S z)IrkEU4K|WN$Jzqn?cFGM~p}2tE$uwePKWEEQf>Ui{P0jtVqT&KlivDA|$@9zY&>t zj<@7HaTV||pKP$(A|oT=84u8{IP$YP>ZSGhGxT25uMyFidj_=!jX#aIe`{kN$k4Mt z8d+X1QYyIMX9fn)Uq@C(<|40Y#%9^4LfM;T{*e25Kl!Opti4~;a642oXzp19h6Az@ zFX3Y7Ytxy#`9H?Szh*B+5-QZsW`Dd;W^NIdyu_}m`U{K^m!N}{l~oo;fClwUjl#LP z&CkVuu9w67N=H6jc!HYbn48~Co-b<#gC#dQzR5Va3xB*;;dR94pJqfg(jeE!K|W!U1E zfvl;YN3B)YSiR%>e>Q54Jqz6a{qIkG$$s>Valhf-2A(}%e;%^7EPVZurxN(fP3KPs ze4juqV&Htk`%?crrH3iGczR9G&j{*Dk=xBj$@_B7LHnHKGPJ?no{X|{xqhDX>t;dW zYe9CGA15o-q9TLiVp)?@%^PG4*8a49TsB%zjr}A`=4p5CW~f0~3uCX>)t#urx90Az z`8+kFKVD7rhl5vl`B!xncIF<1P4p zZ{3lnqIQP59pZkvag8t=i5V8%@|oQ~FXC|gHYk%xVSY9db^ML%Yw%p)zeC{9ymA6+ z!@dxXo2hEnyo5ngx@0OBFgoz>nYmoApIEaa>zSzIe(mA^z+CM6rK>FnMLYH93-z5{ zcR6+&eCQ?qCuCl`7HsaX*Z*x<%=Q0S!oY+C2CAWBbGx%jEO&8U+>!s4Lzw)4C`)0# zDzl%`OJS2aar6lyZIho%SE+5`&uUK?Zlx%goAj3&?2){MIteVUxtJwZ%+CF<346N> zV$v%*ooaJb8V*PQ5!{Y*Gc1qK|4}jaCba#(ne+89gSDAv&|WpzXL9)t^bRSwZ~ad} z3!JJ}e&v0=psTr+@Kx=$UrC9=>T4h?;8LPKp2B=beSZIa9i~9gyy1PMF8ffD?~Lt) z)0y^&6Um3aeWxzXcZU`E6c1g7-)8!LiA-*Z*PtXaKj#8~pCv=LI_9gLtN2N7xVpaV zu9*Ke0 zI&@1AvIVR%=Hrc*u)fnDiciC`o^wS9yCE2%^YuX0g~=ozlAyDBv7ad>G-p0xNJYY^ za)6JohFHpZmxkw%iwM!j|CycZNqTLQU-!$EeKNsa=Mi?sK*&=v6+ zsBNg7^~1wb0UF9rf(SqNk1APmv{S%(9KAUyI#(5(^nZ%q-2@g0V@>7eYsGn9{0I5Z+-%w zXv&_-EtQn{G<{!~U1Iefr(T8cWWLJ`9@{^Z=wp=NF?oq5Kw`HI`wY1Ay}M6Z{Kya& z4dk?P7A*OUM{!`bUfpnjKE}q9YGM|JU_4-)j#|vTaYz?p^+r!daLShD`(EWInSBeO zj4#-0vlxDkuDw-rYuSs73(N7GHzHqY)zY29^4)Vuan?pTM`_Csq!nZ*E0$M*m#BBG zk5lSuB99o%p%s`Y-)WvVuIseiS>pR+lN`$fTv0Xjr2hCMw5WD01ejS;nY~N(GJH-D z&uoOQl12;dA2cN99Y6QF>a=pq(7Jv;3re99db61|HP<|I43x0Cos*!gq+sXsGkHh3 z|JIZRx4uD~%;@O3j!CEvc_=m?5f)aLkqDY0+I%rd6(r)VGgK*5dWLFyfEKr@*feO7 zd?5%J3++z+lW5X)&Y;Ir#B7ou?=W-WEJ`{Pl=pBf3103M)2nTb4k1%&-^>CpWYocN z#`}46u4|`w)#vw0v!}-3DI3ooc$nXDQDKzQ3D@SJIHJ{*I^Em`z?_FIzkB<^+3EOEw`+n|F3E}+QA7!4Pfh)C~`clVKyx(q6G zkfs_WLM6<>_!k!r6!`F)IsuJ|bg`%+52(QxlH@C(Kw7hAjTI=LH_UK;7`Skj8DtQo zrxDTdbOJ)4s-a{#A~!CsgA+y)3P!u|m~Z`H#FF>v)A!Kk)?R(r9{NeMjh7|^EHizo z7t!(x>BBu;T=;Y!lU0KIP+v*Q&fZ4t92{8XoT2Q(Mga=^oz60n=Q{#+DZdxFEX$?u z%RD?ZW<2KzyH5jK*~7<-KBOkbrpFn}cVH#_Xj%;23G(^nWsf4UHHPdDWOf0F-Q+F4 z-!dauVo#KFYw9D13`%Cp#Tj-0Mj20HN=r=2&$3p6>cdngB6IM@>g`!j$tZy+cT|@K zs*yTR<@7hG=D|8bbsNxSb~R(%+}ubrz9Lm1$=GyG6az=I5~c{EGQ~g8oE*@`5R7G# zJ7&u%86}+JK-`}MQ(v9xH=!1cC#al>HQ_l{Hi3N6v4nB_-~@?Q7Badn)v;@NNErH+ z;AYL98GoCyT+T|vvmBhwmH4=jZ~O?3xG#Ww>w{01N?%b@2-sXx7aX`N$AtvF!uvCi z-d1txQrQLMRL*ZB=(yt+k)W^r}C%hCv0{wT~X59crLR%k8AZg%&t6 zu$Ko`MA9aO_J%;j6+nIDB4XA-2l2PC^6Lp`(YAVwY^{6r@(>sw0j+I#eVNCVTUF4q zvp0FS=W~svk@7SS#U0)4Wy)$5BRR5hTiKs5sunIBK51w6hX<~f9r`XD0i5dh!=I+( zL`7#j-q>&=EO6ge^L&egYJ1A@{2Auu%Y{A0;_v0UJ2+SD4Fd>Et*iJL@tHa+19X`B zwvu3Rtx+kWhR?MVO+t+`t5aQc6wkF$q*$?s_;={}m;w+P+Qg zdf+lZeGv?GK8-4OfS^ruGYr@uRkE92NCov4D8-OQo(w$urP&1!600-d1QNj@xib{T z9Dq7F3}DB1+K*mP=Y)eWrV6pF%%wTCNnsH8 z;n+jCaL}Frq1yLQws&ck;%slmtulRFRvO*f*P{@{^{IeMrRA(;s|hW#tZ88^jovPJ zgikeJfBIM&XVKZZdcT=ORHy4yao;#Ur~GG#yJ$=jm-6n^id%oIf3|cX(hMh$oek+G zn6PQ@2vsO#gX!X(@@#)o(htE#DnYF{Q*$;oWc_{=@`0j2&K!K^l0cOuJ<7PM4v(W~ zI`&ys3^V0w!hJc9Ikcg%+*T?HzcE_PunM0Cvj-X1DcEc(jJti&ed1}dXJh-YzNXhpom5=u+AXsY}|CW6Ear;&-U4jxhvIW!|uB1b?skc5r^*qV^PrS z@gr*!NslqK67@dkV^4E)UfZ;SW;4F*4HhaN7$hk7YV<@3v$yPT1h7zj`G*e|PZ&YV$v?;R)suvN1-U$E&YWo9-8rNX~v~)Z> z1=K9$tEO{nq;eNbkAz)$i-u7_>Gr8{R@)#-Oww~bkj;QlILviXZ7ZqR9g6LEGsmz$ zvYKd(eU?Gx#M|1P*-KN9$e7&z7UfBY(0x9cq|?D@or4{+GuL`%aolT(hA%2#$HSA? zqw1Vn!l_#>6yD-DKoPGw!)f;*Wp>uBxR-4uAcCmMu7!;~<>V~@vXS7s50IR8#PP7J zCYgC}gMIdI-5{9QBsL$7YHfLO$3_8RLe2=urHXb%#*UAH!pA;p3dBb;RbQbT1vEUF z?NC$bSc64~%7)O8jc*SUAk#%zMce>N7)zLGP`8jY`>JYaC1pnmMFSy{GSsW>?0W-c zdtvd;-nzca#HlJr%cV0`^!wnnhYe0Y;1n<&Il?|1AqzvVp)ii{6|?x{rsRX?@(gy( znxqERo;~;l?DJO0J0RLhz7 z8jZ2;ZImIa`zbAbVemyfdNS*GFguRBw=6qm*Vj0dAw2w%S&D)OD^-~G~n+12u+SCR?2LK5yMCR(C zGD#uiKG8{^U30*6(gA+G>`SW-rgeh2TjqBEr>bMnR_DuzEr?fR?e{}9@E3t`lh;>H zoR2>y`Hc+fJJ&_~R?dmFf{gnK=ArhtQC6o`G(I#>R5ZiwdERe^VFQ}{CFu& z)c+Qx(=vkJvTfG};Y-o$q>q-T*e^*R-!ULv6RHwt^J;`99)EJ6|V3dwWVw zW@!F;Fuh)JitO?|7$4eI$sH8*zKQ4jk*V#1JH{1ef^^+YECtO!Cwok-vYN~IE%whk zK@YZu$X~Nd0or*3b;YtZ#^x@jfmk&(%5UpEp>+6mTiNX`>?9{B_ND!}&plXRyLO$D zDGcH(vtlVE$E>(|w?RjXEjYKtEafZB&dNH%%i1flhFfSC1fN>xO9+{n!BBiNUu8XHGvO2P2INE2l`+dX^sEY|wlOo=&^iR9htd9ScE{o#c%!9oT)W7M)hbttLO z+}wq>mmT1iugNu=_nogCekqk$g+E6Rda-ss6#WE!S|{7@^Ttoc@0c;pv!`1Aw)jz% z^2tI4_gb0Q0kyTlF)`P4$Tv1WJX$_=S1#{|E&sN{30Vs9iAk=)(vQso)L8*`_6G*t zOrLx$w@}iVC`fT`d0LvwulD57#B!=MTR#xDGM2}EP~BO&q)*BnnKhesK5Zz1U|w&^ zA`poA`dbz4cCTbdHQWaJP!Q{dg#MPN2g&k8Eg$ zu{$6wt^50LLcY`QVvbxt2dL7d2dSpj1{|W|vyFP01_|!Xmy`vswLDwLE-WlmbY#|R zT)K40z`y`4<+KS1I_eGdKG{Osg>SGikZMch*c?$+ORk=tz@RnAl}dec@`OxQR#wWZSFiS2=VWDtKmqSiL2<$>VV;W?7D>Ec?d~k} z1cGQ5>JDm`5~LSyzh5WTKOy$)-0ADr2Xr3D+&N98w1a3A6{SoOi&TzDQZ-ZcTws}1 zb(FgDw$~;q%d=-O9NCZIf&%x~Y|=ACPU!%20=yDoTz*yGiuveN8}|G6y`%;0i+<@1 z?Y*R~1^tTY-ob^XyubmKM2wku(_SGq^Exe07hCyb0gcfjhRB%%%z0vBJ5$vYy!!(QJ2Vvh{FKA!Sa)!coon~}^%okO&iiz5}n;&l@~2enm$uENrSep*`At0gJ2zTGHpck%4rf&&l@2#$B`P?cJa= zK22HiUM)NP7Uw?SsFCj}mt-d0!(99H2-aM*xU_UcyHmNOxVU)PQa(I7*&5cA*Q%}B z+S-baU<^;MJ=#_#v{_~P?Y*gq^X?J#7siQFAVIXLi+grSNY36s2iUcgv^3F+Vb-wP zXwVNrbqy%GGaAv1eT^-P1}?qa9%eCkz*4P@*hC+LyOSXLS?c(7N;r!~8RuXX=UEF( z7>|bD0$JyWnw;AjFB{t1c2PpoEyNXw8qq5J!mNI3-|M~U(5_%vA-80dc#IVqRAS4{ zs+xJM;VYi!J2QOu+t3fv@@b!m0BxGDk$=k9yzO($9WGyOrNXS$Fne9>5iapkW} zmv5)fcV8mP$z4iXEGpG4D6KP}HQL(b0rNK0As48%KGuUmPg3)bYuSW3d7Iu-)?KpH8&f*I^iOEKITtQx9?vkqpqId(dD%|`}p|z z!>OrJyz}xmTOQ4_pP#tD-bon@l9cM^2U+LGUxkE(WWWLjzjZ9)8x`cI3KInlR?wfv zyo>@TcuTD5+v=}sG5?Z%iMlKzRXY8$Vk{RfK0$S)xdpBZZg&;0ZY^%Orx4Bek(#{$ z!aVoa%-0wgn6Udd(3Z!rk4?nPtowXuP0k&Ob^>bS&bSfWdzyx5SG+6h&BFU3?g&lZ zaEX?okJPcgxU2`kMSI9XQ6@U6-c_40G24d{7=7p4Kc`c|*YaQ1dwu)3Ql+Hma*bfD z^##}nOBfF8(}6SK*iReY8eaY!Ar>XQI0!{i`G%{hmKT=Ytb`{M8DT~d+Qy1rZZpE- zlRj6pcX?H%ueaDht@kc5=i~jDD0egu+r+)CdJ|Q<)-1>R1ib;`<5?Jc5{z_Jr3B|iV$9t@#mv7!2NzXx6AA0nl zUIEk_hHK$j;Ji)0#dYF1%Q8^Dquvhnc)Os+O{#3?aW5~Xj$!R5W4|6~eG>v<*`PUR zqPRV`B0*OvvA$dyI-=NTxAQ6SGwZMJX{EAbWUPDt;?)U4y9HwYZLm337dzV71?`Zv zscLs72|{+=o#}@tkOM%$ye2EpYLP`n7oELkClm%}Wv#w2#h?iVdn$v|r<}JqQWgX2 z%$gY~t*%}*d~sE8z49FcGdm*~+d~;xrOnIdy>`(^i|SKdYpV>66QW{FaN14pJ<)VG z?>N<41>e|kiaUbQrA5vrRPs@r7YHSj0oB2`)YXqve9a$X%g|FIxA1Eggyq{^)+#O?uS>u&#twWW5&0`a z733`!mU?(-#eO-RuMeW_XRr$k7q=0UE3znTdS2Jj=XQ0d%!uXW@FSuW@kf<9*S=?? zk6pWRGfh`q31FR^@E)>Zl_h(oJFho0y7#f=lBjFqb>ZTZM7hEv-xy%~sy9dzdAbu_ zYC+R5KRQnGiQg$PY>#cjG~@ec~IV+Fb_ykQDZrE&&-2$=SE)T*N5QQbLqkB=rHRt z&RrE1Lx(IsJx@-)nm(UxNx~{RLfz}Z60D=+gwBL@@~x^kxg1XXiR9_J+@ue0-n@x9 z=4gsyKU7Kq{ukQ0>JC&+?iI12BuN4p4g|Fl@-QBAZ?TGzwGQ$(L$svvc#jkYS{Qk! z8$@7a^q(aw7956AHkr=fVEz5CzLd#l^1LU4A(BqH^C2xkd>!+Zua);M)x*r_Uir)N zG9piStD-T?lQuIx4vV{duQaNe@u~Vu;u*_Lq(z+s+CV(7pSgbF>$<$6Cg-9q{LS*6 zr>erApDc>9F7@b=S330RHH3ko>o;xfo6}!I4(j<_B#;}wUAki7Om9okoi3Yt1=;#U zm6Qw_I;OxwXE?c#7%ySyW^_GZ{MLp16RTM6EzFf&JAB|*P+saf^bsPO(5x@Fpx9-o zzz{+Z0E)CK9eh#^#QBhV-gm;mQmcRho>)hDqTpT=&l^W5IXji5iApMe_z)^)zUa`I zP@FN?iE1E=N*#$;>H)n8Rg-cYfoh4liFSE#V!RM`hd?(U)Um-;T+XfE7F|q#LuKPC zuHiq>0KpC9*U{H(8t3QcEWJ6K>aDJ>K9O&TEUQ`P;OK~L)fcg};!=zGAsD)6o>{nj z@ZL+q0iRuJ!Xn$7hS21U@O1}wRc;9U!+X916Q$~H*r7ZnaGIeE^OWINl+}ct_0y4A z6mC=ACS6f6jPGuL`K@5Ps{Qf!F`ZrVhjNp!XUZ2zLz4t@mCJ{=%g%!jWzqC1 zxm!jEwMehoRO=@W#jOd=nSWF3uVtYHui(JIfZ~L0g3B3Hj`!ovh?^3^J2P@~>%9nB zS>k#JDSwR}f;2q*%a<<+^EJ{WmG2{NIzB{qs3)XX_&G!Tv(ko5-Wk4-BEtCXJnD4z z4*O=+YUakBM-QY=fT`>lVQSrScZ$gkF)WSLs8XFZuGW&~?3s0A4Sw$7x4dPg^ZGd? z9x0Q>`PS9?($(LuQ#2qH+VUaLunHsOYG+l+^C2P#b2EV#g6OR%B1F+;eZ!1K#Lhog zg)8kt&coS%Py2rUq^+Qn(?fn8g_297RO!7}DOC zycm8;u8*XJ-$af{WtvpdWt!DZu+L~V<|h4)BL~$RQloQF{OK*)YO#+a=^MK;U0orK zO_^`aGFkXkR_hh3;AFB<*yyo--qi&czTiL45JNV{x-vemYU69Mi#UmI-(}-TORa;r zffHh>R;1=~dF?Luv%V7*ytlJ%ZQc89lxG9>&eiit3M#IWMHK-ND!uwHJyeb&kHU>o zP9Qc-#hIk+^Kg(-zB{RV+A_FE+K+};8t`1vTa1UC)Ln1}pRYm^SDWX}Q zwJ^(MqmYV1Ly_0);CAIZH?1lWh?;gjb_)*=Y6zus7A4MJ*(Lzn?N6V0bZWEap`q-p zsI+pstj+n0EX1fi%4vt9`Qm8rKLwM$6)9=$nqI6_GE z2m!i!*;;g#xz|*Ph|G$?S>I0nNC}ntB5>Z0ke=i%E}L8_$rO#$P={tMMRks-NFH#4 zmI2x^TyyTj>&64DaoB$`at=n>?f(WL3G=?ZlVay%9u;RD2Pc$p`^!NZ)PR1x&#e~o z$H9$)N=FB4VH#r=_O$E-x%9S3zOOxlU2N)$YGvh zgpx^@mR7kk_J@HnFKDd9B*HyUQb^U~7Neh|B$b7in! zPDVx$vVb)7O;qDm4d9D4)Hr#4I106S#jb5DCIl)Zwpqg zdCyD(akMxQq@%1zd;~*;__n_Jc4tcFe~u5qa=B<|_^iP~U!NBh_ZHB>0U^9%I}pbg z{kre8J9?cu2sOzeqobqut_B1NQq>{s*tkpKbp|C)#p`x_U!1(N#W(78f<-05|LfO@ zY`qP2?gN!~Z0q9qP@()qzoSzOD4^y8lMV(O0Myf~mC+D~JZqy%!M}Iva3s#v4%WD3 zUnYlz^_~A=urzjX?Njfw@a9{gEa;RZgJUnXyuNx0VOj{Z_Vo74hp|x@c&gvqVja;r zBEAvU<7wSvl;(6@d}3G83-b3JcvZWv&r^!fIHFB@%&8;B4mX;aZdDs2qlkB9O%$WP zqJ7{j9&(l_oQJS7YgqtMxGd4gWa!4}DlSvd2o@23wT1%Bi!esux?~{xL}*SQ1k`p^ zIb^+D2Wx{7OVVID>-mO|H{RC>7je(8K2AHC#sSiq{B4WSU^93nhNlngLHtr`zyL2jQ~r+-CM=u z{M5UctL468F1<=dt<%r39)Ae2qfU;F#D5F8fCs4}p{nY4V{0+!G0C;%0MP0;bF zHXE9?#Tu($V|QF~mUj%r=P(_X2I<_rkJ~u)1vrkDaKr}P1Q_I`jE*W&Gh6h0v35(>=K01 znSord%`!MzO52*)#nUUX9J;DMd62O0xEOk8(x>PkmK~qg@>&2` z%f((ywS%-d{?g>~=T+xa_xbD4SpjYxg;_F5zD(6$`qAgRS3VEnsW7yQkfI;vQfitK z_@4KpmGrT96GyV*-vcN1j~I7{jzzIk8$WOjA6~hT@`|OwwJy%ukzZD{hvQ9)b0fU4 z27`+r^w#5sKelKjdOMtoAKN(YV0!rV&~zAhkb;o``39GvtTfMFkE!ak9N{Q$1$36L zBM7gAeTJ@ri>sHh$q{pHIzuh9gjQ2|PSwCa1;&Sq%S&~+Z7uDsvs#cL0sE(OMP+5< z2V^+laerVSehhEkh|&N-uVI3x|iMeMmNg)6W0WkL~wCkQ<+^XGFh@x zG9oTsUBWutc)vjl%d%KnDbvZ@33y&vu zXW_g}8i!FdIYy79eT#6DreFB^t*|MNh~jSD>M>`W`ai9@;b6CT1D;k3MtVQ<-p-}` z&+*qrIflw|sCet8A@0Rab>qaFM=_;{G$?yDp6;Pc%Vm4q*(3N#S*bs_#&X zO78(bz+US^0Ugrg7Jy0I;71#d_$bM{`QfS>@2B1exXPiNN2xWdNm}gWM!1NBRb0nU zAm~S5TIt|m2k{VeUV#K!EPUsm@Yjo@$$8O>3v8agHI5OQoUJsfTe0W3N2hh&7*9lH zNzOHEZ(RGlo-hcY0pQh9N(@JV9T>t-bP1fUfBossY091>fG68W)I9y~k^qTF< z%FaEP5RD4%d#gkDKAWM?V9C_)Xp!gh+dRy(?Cl=WB|OG+iko$IqtZUUO3Wlj*1s~) z`RK4Zoj$cMDNEJ6kxRE}&2w#(idlHl!Vql5!-D_^TJw}MWL4Y;=wDlE1gF1Ey42@o zDtOpMEd2Q3MEmM0{4vY8A#bLMyO*MEE+0+^8{Wa6G)>bJM(Kxt=NE`;pT-;#=Ak7{ z`PxRr9O`at+zMtlEGP&J!Z38o$qa0~3Z4Pl7IX*KNR=OIX#V>3Pt-8?p)iKn_+jh_ zo~bTg)YVc9Mh0H+@r8yA-zB5Vb2b{KFW{Z8%2=MHWHW<=1q^AUugx3x`#J68NE6#gIFi{mS)-; zN|bze_>?7M!!y4F!3GgdGT5`1&Mz!=SBKeZs1&eCeR-QWf}~s@OxHGuB|!)8HakS2 z+$e{%Tub#;%FBk4^Fddg?=T0V$$zcm-Qo!EMjX^nd+Ke6K3$$VnJUCJ9)>V+hpcTj zQDWf&Hb<1!MJ)BorwaY&^;&dw+mF7sv|$2-`K@KaA~UdBO{(dI+4=1=9<+RdugJ0b zMT4brOYiDvPUayt@zp;&^0o1~^aey@iM9dwodN+;s*veL=n8XTbdOswf@d?%8i^z+ zdpN-*>T#n=jw{7b3YqvLzF|`P5RTK9ucf;0jx6w*$&IJD=Kn0_40lw`JPpN~j_x_} zzQy`WuUMo{wF8IOUSX=_jl!$TeBy8n|L`}^CI~uPoh|TVwRbzYmP5FTm><*=2ni5T zqprGmc@2I22A#0Ii8^F}He?CFnr%~McUHqMFLHCG&<9Z;KPq->-xDpV)*J?E7IVep zi8!6>igP}VzW6s57u*+cnsdr0+S_Cu&?!MdXH)OsH3Jf5(iRszQXm0Wa_;~Z;WQj}A; z^<+osYHI0^dmF4~`aeSq*gQA{9r>z1aAS5sEUq{O*icolSkiXXb?~Jgj+H(H5xgX@d9=oP79Juz-Q0Y6Nj=@9uqkKBwh7ofQz8kO{i<4&hD23SjcV%3=HfD zS3d*{6iC8@fB-1U*IGs%YCH^F#Qo*=rqADr6PX{s!cywEHET`#UV{q?66AG=7t7TF ziX}s3WEk;O?W#O?z#H^o@IIzPQxh5!ksb7q=a;~(# z^vXgXwA(9a#J5e6d#%X7PyWN^@^hzaiSX*p6kO9uNk;LgmsPD)nTP zEZpO@uA1K4<~}~yIXmXr&rkYnHgN^m6_ zrH}BRkz$)8B7u@?sqV%xzv1o)m*2>sZyzEB4?We53!U*T#*=DcC?yKLq z6Mjq^X*ayEf!x_aT2d+pWhZUzEnrf8_e_?|VytT7osp%qT6i6DkLoh3Xs?(y=(kLj z(2W2}Rze}Xx!yS$3v8oXI&p*2tk4a$fI9M2igOolp}?`z>Q$Aq#K)yL)2_9xWa1-O zzGQ9Js51yh0_mw=Pgn*Z&j{YLO_bSJzw|xNi=yR#DDt=W3o1I>ImsTkorJig9mQ#o59SS7XXw5Bmk^ZFgDFu&(M6 z4hs@Y4q#G_R*xEYg?2kHzivE*f}<8|Fc=w`nVJOvz=)n)B?<7Q91uhoZoS9mBm5Kc zTWi#wF58%J53dSnve7DpLj$YLk3cvB_;)<}DcO0nF;kIzxEqU*m|Q?TLCvtFgR>BS z76OJ{RE+?v8zd+1Tv2@SnlOr*rB9>^scYDEg#j{RYaxtXxH?z}y2o0HL>>6mclt#A z*fOI#0?x8qXBX{Erbnpid6-eezr_v!Vq5J>F)A!IclGZ9V|v=J{`uWyE9MK1bG$CM zZhCPwpK)jOAL|Qj0HN#yXs@8G{w1z-uS}k|PXi@|$WBxkmW?hd>qM?E(un|&e>}?v zL8S@(yLf1I5`+Ae5!LhUIpdbMKU&mcj|r1;<)fj&!A<|fT1JfvraDU&KprKyc16q* zqjllhu)agMs?=zTGhG&e*d5dNgLCE!^NoNutWR=t5IL+r?(!uaP98HS?a`m;i>EY( z>VyDL-C|E-)=$j}9NRA%!arKBSi$?)2h*SL*)!k*c-{=rcz9`>D{fA4;VlAcGsOQ> zJxA4(84~T5sr8U9s<6qQx<5YkAnF*=LYQ-he&123JIb%ql|gNUKHg(yYjiC} z&Cfe!@st_)#aG)R+na!h;r@;v%*`unnuO4jmHU5za^^)TjTKK!*o-N^(mF?Ap%1Ff zeKIj8;R0DL9a9j6w-;(7K5@c!*2VY7yIzhJ=|v-z#Jem`Y_dU} z6p^u5A%J0J1%~&$)F*^K7ONMxf3hHFxS{W99<|uJG6!&A6kh?##KYt2WVwwjxR2FPUm=sPE#m~X`XYmjBAOF;{5PBKiA^%< z;|lT^;w+}Eunt|LpLEf&L4Xg9+=BL4k-ct?d6&_{uOs$4WHTavVdb{dD;JR003X|1 z!b>!6T%2GMV{Wt81rPA)RvOG<-%j@DubtwT$CetaFcQ`B2D7?cnm!AM-t|)rLm}*L zJh;e#f=xS*X8b5?-4g)YedRHF;1#{Z8jz0!JmdBvLXEoq`~XoClBixZH&5h!4S_`v zbJk-?pc>RgTM=jgPiY&NlYypjwLZ+QsRIxX!osN|_X2eqf}k;mGhk=tiygpt9ZQ$& z_Cowv3w7O*<7>TtB==hmW7#bqOwBQgT~V@L-XIjpgB?U`)1s2+)9}^k2l9JiMm_7y z#+@zF`CVx2zNNEYUm-D*6x4t@M4z>_D5Mxw17EUb>=16|fx>)=LrB+6k~B(zSGh8kLY-i*~FSKvb#%^X}>RK@+WSUz{dzpv1wwoNnzX;IM`|MvgdEQ zev_X%xX>CQzw*{eRD+;S6KYpm-GI%z1sMUv|- zNUmD0UJZa{lkmr`0u>|SrGfOkncxv%Td(bZIG{_saBId3NO#5LAdn21OtbC0HiLT? z_r&$PevEeRa?xF;EHmJEded!+%(>QJ2j|h#VyA(2qP?@knocXR8Lgy4_Pdb377hCD z%Z`h%gf|i6#5*P*xMRKc8_UAQfqRTkW+c*nmyP+1+3z(&#S;E5otr{sF%d#?yAkoh zOWqWE3Zrk~Cd{M!-rO;a*@2mS z$}G3au?N5E&oZp?y7{XWmK)y%4=@=yPSm^yo!@M^yQGP#gZ`fOZ6|0QbN7!V2Vgkv zgabPffb_b?-oe4OZL`ww^NO)9P{JuXT5=YtFJ8SmByz`K59<8s+RW^n!bY1o+1rPJ zCmeiL43CIM64r0#!DauMm%qrE!Z$=ssjP%@V=9YVl`hnzKW2b=AMRxN8&Np~dG=G@ zV~9L;EgHkwO%213!blb6y6C4f<1w#Rf-SdD|5NH!tGJu{H_2R9U4ED#bI4~dOTFZI zX*Wa{8W2ermr{@=IRlYVgk;<{VDqYC2*BV~%*_ZN(KU3={m%tE6{KErCnXB<;meQY zML?|8uNoy^cj<|V5F{!4@}}5u%;?ScBToeCj7pnX>3D6s^ZvCgNh;!b{TD& zA|0Bf%AizG%Nf6YgP*+2$+Tf(T25_AaRu{^3eopeg3@42m4b+f_-2g4H;(^{#cl4d z%v`^;jJ+tTemM)f=4rljdbpyfj-c!LdL|KokIOEt2ZNXG3FG1dXfN2~bIv6cBc=`g zOj)u97FxteNeV>C2*Z2{?n(K|UWn}jgi}BrqGET(i^_{|KWH_F+$&lsuV_vD~ z&z|dAuH9@rP_7ZjaBY2ITrE$C!7m80U=yr_TXlVm{t$lI6L>Pt>w3M1p3foQeN2Na z2$uUFmfBL5WvLC1ths9vB7%aDOok{kfae{O5wV)_a&=v-Q|qo{i~vLU)HNZrQr8q~ zd5zJ%CU&pQ82036u&>C2FX)|sC}|K^1-mH;I#<$-)W`q0crE+YtMdj<$Yw(lSV7L({-Az^I?)sd z^ZOZF#>wCfw|9+i(xvW?nnH4#58Nmo=awqjC&HeungxaYi(q#MX%%%DQd_O;j@@|g zg1{5ag3hD1H@1%T;4PzMZV%kvW8RJa_xeU!T{+u5n!l>I=Z{&`Tq5MrDytee z00DSS$FC;GfFKfAIWwo;4zcmYIkjU`w#k~cu*zewP5iu$1me6=`C|7a@b|jALQ%j7 z(w##k?2`PzL6!f(-kZlmy}$p%&S^W9lq4xjrBVt>5kiHdMHI;v3MG5?m>H^b5)w&~ zbwZM4-}e@4){=dhvd1vljWPVLYtE<6=X*cyzwXCO_Ygk2u`23} z+2V*s1*n)q3IKGMzKchZBBSy!Hp@fEW%)_8*vcI?j^s)`aqvQa>{eFpT#R)zU{ZN0 z0^z!gqif5$glfM90!=CXEb0M5C##YPy-u#q&Y7uI!N-Nr7{-ojP;JM$aW_FcQWv2- zt`lVV4&28mq5+OBNLx5(r9Yxbk^eDI+vfXS3Jhtmu2^g)eBJ zLG>)XyFSji-#ij2i$1nMEdkMYVdZBDPUT63Zka`I`40)rQlviU%fz+71h9; zn^@;#$)0p?rT#Ejw9?XcnH=#4z@u#Mv;{Afq!7K}z0@QeKMDlY%=SSZ1oFP+jY{4pVwxYbM}wT|N?E1d5jZe)Cq=TJY80-37ew=DxJAOj@kUOX7r2EcB75iO zvzILg_uV!uvF+wXTZ<9mj>uqW&Gr-y&iL!>z04*%<Lu3$a7ccC6K~3*4Uk!d9j3b zeBbVw&MKjeT+V{@GCPEt^}Ajsoo=D;$s`|hzmnL&t|%sRVKyWnsh(FAY$?~}8~fij ze1Ose=!>F4K9 zIi|)IRS3zwIPYhYXiSW0sn}SZvQ)g|PjdA>_p+sAxZN*Exi- zf?>M{upTAAG-}dVOjS3SeZaqq(BoVzoNI0s<=3g{_$>NaJPf&DUZi;*Fwu0{QKnX? z(D%q_bj;OUX)8ZoWLv`M;?=BrU551|>h@ zKi;lKPbOn_la(PL_WF!kHjxrHnx~pxBAK2@n_4upHEwG;E8)9N_nP3Kc~lo^@dPLC zw!KLpqAX<^Ybh@C8%R>i{DS%xPnrtS{_1M%xW-i-%upA;|)9FU%3$q`?5#Fi{{i7t&S7s)T z{l*i`G>yj;?$Lz&z|pvnrG^1nn=YZY!R%)QOY@ToqoG$Qj37ac10_Isz7(KkP7#um zbWjqE-qiJk_mB zb`N59H2{oWFjcT!?i9-yQoFKkyYy3GsM?NCmw=mxGWt`)(>Wz6P&aYJlr_z0#zi>d z=E*N#z9{RAP)a=2J7CNrH*hx1l$Wla=+d3malW4)N!NM#iR zD;vX0b0LMMMi6xSFh~fTfC2F3D9FqaIa~H^RgM+2D@l{J?NiMYAp*|NFVS8Q-E?qn z)Xp=!aR#QK?B)bP|5r&#Hj|PddS5?~Su{VK=(cPHAV%2wd-TWK5^aU#SFc(VL{>59 z`xgl{P~4wL?r8QneB{V(e}l=~bR~AAbD!|{e`MH?@$v1;i2l1T8jf=HvJ`}b0*vZLcej|Y1ol`Hsqgn}f~J>9e#`Olw#nu$#m z`V__MpGgRr6S1!(@q`zUCwAL0DimhYBC;V9E(4T!qYa|M zFaTs&p)c{WJ&=Y5GnvpYVKsRRti#Q}U$a86JV1kk4lhm@?H!|kl>;)H3E-|K5TdFe zr5YjC5~4M!Tlg{Zdvm8I=;QHu+RHFrEEPb^2jsS|ZnHxkf0~4gS65Cwe6@ zMvY!U=AZx!c1C`Rqlpo;YFDr)61uuZ>cPBT_0LRv4x@r+vS)Q)*3Z7t0+ly-b z*Q`lOTDaX9yYosw zh{rM$5ZFYnvNqb4lwkFE$KO}bU-KdrMC;D;goJ&-5E6tS*Jh>-P{~&imj1m03zh&u zN|@J0)VPndq||RqKRVNDYQXOa>@ciW#LK={T=<~a_r?HN9XKJh2FMy9z0ZwKl}4fw zBqjOvBF$)D{@V|k2`@t(8cy~%F-P3lIg zH;w>5^&oIekuiL$eGXEb?D@s0?G&wHB%Ay6BWP~=;N|GVt~vR0^-)!+r=#PWU0(_X z%w4=cD|6#YNog^(68I|QAU#^0GMKN^O`WR0Q7u`&hpg*7^;QFd5?Ua}vBSnB;lZ$~ zORsjSCGg9q8uP)Q%MRa8V@2tW=h$>1x3#(g$z|bcZ$!;R{Cc`_4|B$glpf${&by1q zs{8jz08=Jncp0{yB;2}Lxg)PBE-^6?DaF`R^9%|}FN+EbkHwq3Mc!S7peGR-SdikH zv}an#kZ}=%gf;vn>yJr7B8~0VGGu7d;RO@sll`AkUd$*iBc2Agie@8oAlzRf=c) zm;2AP0d6>Z0DhA{HMt*>(X>v^md?SIyO!SdLwii4`s`Ej8-XNpW((8?u7=Fo>s-^Z zo13dp4AZSER$XKgjBO=LQ{#s)Gl6Oz(qo4lf86nz&4xtR8Yngy5zL~7?o^E#dxa^< z{>XHVww7bKgN`dN4zGmut+s%se%&V_gNw|57{f#T z$NKWNz~lkoVXc43HScf91!D-q54@3v!YT@?2bvGtu>g?v*P6H?QpGo#-R3w1(Px!( zBcn6oyaL+PmK%l(%h`oq60-iyAUlh*~7g7#%_l*%=nv211J zZbmx+n4~tgLF#r7(EK7(0m>}9_ju$mCIilTEOMy`q(E+7=XbStWZH-APnWr`_jo$G zL9kk*LC}GERb~WOt#8$7cINp|)>T<`0ST|~W+(31sUKaelwx$Y5nfybLwtc@t*y=& zjt|oK^l`De#EdI7WKU4bEh}JSJ1pxR)?1!nD zfLOdI?--Z=|aqrnXis@xn6!wB%jAFMHfj{KlCJtn}?gcmgp-`&DTe# zGi+s72A%v`7X}NVblU@zvs0Jrol^=!bqD7-$>)|o9`pPWn%nn2sGZ87uM5|gucI$W zjmYK2G9eE?BrX6=y6?2J?&{Cg!XKaP~ZL6^|hv<)j#P)jf; zlU)3^9uYx&t!)4}k2vL^9G(-q1@J;8Pc}#s7n|22-g+BF2#O? z!@w&5k^CGKm!S)ycf5aFd&GtaIEcRWhP)U#qCdY3y-B^m7q@Vnn8eK}B|MY;B}zD& z=QAUy>N&nV4NCEsDlh~(RPiDXioTr#FP7?D>KC+a)E6Kxlqu=0Tk>98vRI$AQZrrn zjRxeit$P0fTzUc8RW0?m8iPZh~M$8Yw-mpWy$cuNSD;CkJMl6ZIop^>h!@mDi0N1`e7k=qt2@+H+i;y$~L)uJ1d!!&!aP&JqOX7OXGo(hp zbM|ekzbK+THHd`nE89(B$`uChQVf)CP&ZJ$M1Z@;)*23+F(5Yt%I7UcgC0))B9E7V z0G_~%!i6fHo_4+UIr-<{ocP51t13r$eEb?QZM*a-50Dio?m)dTuc=rA^6~4R=Mb|* zkm!QOO}ms}4Hb$Wz1$gYiCfD#uqu$>0iszbvC~EEnVkh-TF!F{*)33FiUq99aJZLJ zGTUEMk6YkR^85z?Yx)gcp><6rD5-+Xyk|JSFj>c>`1Cg?=V1ZJUv5e0Q?U4{KzR#d z!=QQQ*1z=tzprt#odL2?TO4!v)H45JgD>uYD!*)^-5r#+{zwkzq8GRs18+ zc?H9IRKP7}*;tziX|%A<`DUG)qW@sWA1jaL_vJ;EP_u-ywvEusC;4AcXKFrGry zuz=Im=dnrx*&&b4e4(T~;0C3v&?VtME8TKR2Nr}15XfUjmlnuNTEkZZRcGAxK|?6~ z{HePxE_%W46DxCcXe(L-W{G$Obug(e<&-4HnlV>u3yWqgwgqQ{?g%3r%Ie!rz4 zD!f}-upmgiNDQmIjx|`7<0Et)2^CJGIP~`A4*NE4?C64YA?^A6_trUgQese;oMy4` zD~-INc>I|zl#s)tgNW(^@&`Hn5`YEZFFzJmlQo5eiqSXsd$pMH18R3m`pc^dE@y2g z#N1LYZ40ukz3hmEOl&w6j&wKVn+iQE86E1)-*l>2Vz=u~L^=1&SU}2C@f^Oo0ZkW6 zh)iwcC3WmR>2$A1SH2en?C#1j&4tm>Lcs+DT@kG2Lp+12(zlN)w6v_?=`wccCL+;&*5b6xq z+ojRh;^inVV4_Kbyn3(h_*G1VAy@h6mQS#G5Z_TU^Lg4$__%8(k!%mi=b=Gt7)~;h zrbFI^oi|%Z!|Nqmu1K_e#-1y9;qW8oe9qG9fy16yaI~Ea8-aik)5(EIzpg?JOxJ7N zx`1Pc4W%7?)xZh(=x6SVZI@ChDR@A~lM+m^-&pN3*F8U|nh6*@DRG*Se!1X?iKq|l zMfO-=VmvueYdWT1-hozVSNdXgh4YyGe3NUBpExCAi@8;=Z9@IKRhy3qFxQXrV}TQz zW$TD`Uj`Cv12uH0t`bp(v-&3Vv&IYYn(J9Yo>jRR7^G!=pdvSZ_Y^lU7%LV?B7Ih_Cy;pPSE zdxUdi82s2##=JfPgu|SXE!T8>TlGSH7)z7O8O@z|YTV~}In#Q5XjrPf?{`(F5Y~KD zcCZY~W4g0bH8K9DC++tg{!TFe*|{Yuy?Hid0!xYQ=85|2YOzBK3s&k`_fMkt!*)YN zWeL=vVT2JbFgo~5_GXg7d+9C?Eg5{7J_tRihh|R!sE@65A=XQTna&c!!9u;s=`ZbW zion2q1yzBVe^M~0`<57Bw})+5#;&wui&XJ{x)<1v^X%Kd{{i&HKOqlRO z2nS`xZ^e)vGo&~H)DeDboB02zD`@68+Mk})Ls-sL(Rk(I@!@5zRktro1|mv90fK}r zH^1x{&ze+6y$Gw8XK1^o>x%@I=$#{J?&k~&pW0+IuotXvl2CZIXZA3^0qBiVe8X^ggRQW6+di~(z8c#nR4gjXyv z_9i-X6!|KN4M(N@O%JX>Pf6S*5|B z@h`6_yX&fdT;;Z(Px!0DkZA&0#`yaO;gd6Nz%J`Wn(J3n4pGYzmynTL-~xSo*+j_; zCCEO6-uzqN`xSS+c1BMelk!(Eg8`}}KD1!KII`SnEdZ)jN6o>shO}u;P8o86gaWtUuM@%dD#oA67tm zOvwxG*WDW4dSL(gZ==&AVT&mAvG{DUns)&|x zhzMBF9*wAoX9tb{ABJ)on;|0?Oast?aUh=n|i%j)xffEAVCuhbI`tp=Junj6{_i;B8UJ#|kr)XY9{*5f zGeK6nKrrC;Z4MVmHB4YJLSM6E(qia7U$kKvwFt+Y1-t)2h#*Ono(K1^v-IGND~dZ< zm{6-Kk}V<2g+>GYEyr%%ga*Cbf5^|Rz5m2rPK@s)Xl;aQmN1Ku3%2OL2)QfX3S5V+!!qp{qdtJ>b?U-DLr%j~xL=cR^jq@slOg9HgzPIuZHFr8P{ zqwWDGI>wAb_~j>fQk(#?+y8k`4?#Gij5TotIIhznzOI0r8|bmnYk|QA&^w;#MalHm zpz6ziztZUsc%>Nvx^P$?=_wFCCtZLwOt`<|t?g?#Gh5tx-qcK>ccLWEo4}8Mek2?J z9_``Z-gb)t`5W7ep|nYPzt(fsl>wjn*7hrwE3htC<3Q680P1ntwz-0m4n=!I;`}2G zWsxT6FhGyMdfeuKnN)_)0qBc0uZJ(TGBx}(bS*C_k)$8>mHa!Mi8{)X-T3)3Onv_6 zlLzzMYlHGJ$)G&{6s;4<5L@lJH!xmz$ff}~xFt+3VT#Be*Jwwh;*`E8~nF+EVjrh%O z$Ven6Ifr@L(&rn=iu%Ja^y;?ZOgE#ew~6Ap)9y<2Gs@F@zt-Tkf2PhV-t>OLuyr)q zbvf@xlcsi!QqL0e9x#-I->) zrJiqwxykYiT}KxhWI zNzZDURirj1eosnm0a*o{Qei;(p_eO&ew0c{|NW#)6<&3=A^T>3i-;YJRYv%Nre5+%BVqwFA zV=+aC06_|u_1-ChbuopoR@=OCmfqI;%M!Qp5)9#c6E&XM>~DC)e9{rjy*XXjTgt9u z!Naj3I?I<`bhUJ<@Nlu=qu*R~;Eg3SH?P?{;M#1a;w9ii&RE7#wtUOP3RYt&>&j)@ zaqntK zDqhVVcC|c4d#6M;SyoDW5v%{R7=RddP5FKCE|a*I&sM#;{z>fMMF9Y)X#LcgV5rc>A_{Pg9a=2fnl6aBZx=FNHXr zNLcdxdR6cd|CJj_F}l^;m5SMvT)yrokX5q!w&I^+7+&}D*wL&>zHs5oHk9I`S`l{q z`s&Yj81MF?9#@`psny=1f5~L;9vJ-cHY!<_(|89|PqXr!X=BBI$zLpfd)(@(SMZ6y zPoD5una{fb}$ibnBitKyMEU539mrzh?^ycEiBQpq8?X$}8jy9}@ZFgZwm2h4Yxkz$Zq zT^_v)`W9{FtOXaiRn*hdW-%k_HNN=la&F(G$_D*s(G9nLzB8Lkvk{M3WxQLucJXWW zwyRzzJ96HXHt;>(D^=OB(3YBW+Qy2pzw~d*A^p4Tsje2hTU*<)qg_;;j_#TPtxmhi8qr*=*yXw~v^X90xKN^5~Mwd0Tm2 ze74aDmWtk*586{ydHuDA;5XN{L}wjTa(T6bl6d}zSMcbs_baeWVLxP6&2!_%V&3^z z(OJS>Qmc5@Xq$OMlsmIJA=4Ll4d0uK3K$$S8E6=Mvk8W^?E>5rbwXYgDXWC&Wh_JVf z*6Mq0(f8s7DRP#@QTLASC!b{B5O^j_UauXOxU0a~k@C*yh0q7~vV~B?z~}}RD9QR7 zE@ehAvMk}6w%5S%6O+nss5eh4n>E{TNM?3k^8RgcPZpW=C6ae8qdL1t)jZ-qzjt8p zB>9&$Z3x62>2fn#<`EcYvVj*@7{!X$=mzhNy_<|~h*mzbPb-5Ba?lF3U`FeoQSvbirqC~@NU9g>eP z`}wWko4cv3V-am4B6)a8Pc1dNA-|2hyY$yG=BKrKz=&a+v?#pr2j(BjV>C4zT1OJfd zOZ@VP-|_~%_zXKWG2hjW5Mv5M)X%c4#0YCS(y~P)GcR|CHr)Mpj#mTsOx1QJf=9O!sc|31oPMq$Q3r|6Rd*XgMmxU z*?+w!wkoipEFZV9f{D(e9F_1Z%-p;Cgx7(xzqh7mZFaa_6bf(b@t-&Do-Bs8?|&Y* zyY6jQ+Mg~=;C`KZMRN<|wTT#Mc9oL^i~w2sR`By#Y^{c?4`nJ5g#Y4RqX4M|VfCJ0 zzap$X;iYbt&PymTNw%N;%}IXt-=UhRawA5=zxFP^gu(H@i5%Pirmwga{x@ldMfm>+ zsz_)L?FJ*uc3SzwMO^Fu-Eyo|`2W|Id#gTTI8z1MD6DH^{ipTAi!<_Ukp4^x$(u5s z+J%5F$*;#-0T>&yJpdc`ZES2}Y=A)i2{eT?*C%O1%>pS4$_8Wwk_ptdeX>E+r_Wjr z%HNvn1zT%vI&&p1r5K?^EAiG8jZ*SO$x7SQ)D-492>E0KSM2bgep>=>7=V6wT{aSA zrhojpsu|h4>`vG`(h8!+>J04pOSm`^q6e8Ua3T}CI!>5lp9<))?P`YtiVI`=2Y|mF z%MJDPLb=Q;jf77=x>KiRY%Ex>z_4Bbnn<0S-Q16FdIZ*&8p-wum1AS`F++<}tmprsss z!yxm@oFpx;{Y!h`O!V}SDhiUZgp-w+a3z3oQr zicep@TpYf-Dbu0F+L?3NDuy6#@p&~JC{W!gK#2rZfFl* z?YkB;P%Ip&t_mcW@R3Lmn@WR5HDv=3=sF`$Y#jw+2@c|j$X}yw+uh zs@-wjPf2HB^<^9fGV{7ail^dkjb^oMw0X@^vtTV&gOSLghVMv>1jRlO8FB!gt_p0D zg!?CWkkoo%1hk8g)5n#<(k~KpA;1i+TgcUnCjlWd?bdh?zG)9A#(5(drzTV~R)ee{ zGh*caJuXl^{%p~H#uM`>x0kP`-Djx0OvbE6A^b%TVWj^&Qtxw`JwFR-2+sNxsDJ<$ zuygEm3Q*}rrkLHZm8`o9Wl$dyE{p#&1-6WwlV6!Yj+1QBS#lRKO4faW^HcI9+3xQ2 z*cYAcEhDx+4P z)OdG$mX#^!M1}TSG`>`U``RvF3}T_ru%))Dkdu>ZkD50U_dyz@ooWROV-IqrptM^Y zrX?Q(+%|v3#W|$2)pD7MTy3GzY!?k zKU^h9Jm|O%35h8Fh(G78fEJ%g@5)Fsrsrb)k`Jyy#xbkrHxV{rBv5sIjbG5GE5H!YkeY^%u@8CkkZLWpxp$!so&^0c`cKE*%crEoxdtdlpU3v9MK+ zIjmFi(E^RoyXgRh`Jrb=?M*sCr~VVLt+s#;IGtiMT)gh{A8as3CC2Tu$=ic)aKbo^8 z4uqQb+*u{y4JXNLK2+A(lDNd6*kzo2_gXu#2gm1hUugnW?HAW7?kO5cE)es86&i^65ZrMX z=qE3G?8AOnoct-e6j9^d`Rl~kRxTJh=+?MNdA z$iy8w00!n1Uy#WR^OLIJLl6|svHCZTC!NRvW|N)x^!CaM^?2@8hu+c{wOO&AFv=R`1@Xtx8sSjmRp# zFakn|Xav@(U#wMldGDu$WDa?Ul2;$IrYcC7=NJ;EKC7u18r?&|vf(j-}^jJt5g-cFqz>W`d2@^yH@?A~kw(i+6Sr zy-H&8Fuy!daLy09BC}0XURXu#fPAOk;V2Q9~^$#@(kUI5~0N%$@@`Kkkd)^k(ccY(;34sFjl_NwP86dich9w3&8_ z^zsroj=3}KRyY*MV*1$ugX}k56^C}l&|Aug9h+oJzyv1e_V_Bd#y$drx;df~G&1We zV0Za$9fXDL1+n2e3+(6Qb7{Tm7GPjik=2w zcyV?nM;`hZ`JevwQaw^XHN`}@yXDK5(!Q#oSZFqUH7y7|50?VIQQI<*T#n=1a<(dC z6Dd+RX@oMbEzobB`mFn-IOw8S!>|q;fkCiKx_J(uBRTdOqJ?L0oIVXMS{XC+JE7%B zW)#)2ChO!joudWr&jA{Xm6Cu4)Yhy4f53tk+E&lqMzgV2aoUa!KOw$Vl%KEl}bGFODNs@b*p4 zI8Iav^Dy&TE<2t(24MtH!BquGPU?@Y(kJ>?q@=;nvxp5J;7#xS8=66cqYiCXDW%{m zV!?8MQh-*o7~#&GC+hJiV)oHO5a_DNT1EwhNxfRz{O>Po%#pzeRty@}M9hmo4XTC! z+kQ0a?@0N;qCAs#S{m})a6EjFxNPnRa=U48CzXN2uho5e9D7d=fVdEj@MzS)ZVBDA zm|BTsa6F*+9Vz3|7St4Ocz z1SFEgyn$+6I08)-laG%uQn)Q_WAR!rBt?Oh0yyw7uwU3Q&-cOb(gF5!r5Yzs%dd7vs`#|Khe;j5IEGGJ>(tPZ35*JI3#qHQ4Z`6mQ_ zrp<5k?E9bU>}k&X{xZCs&wNs%5T&y4DnQ6J!b3l*1e-$OW@Fn8ZkfX9JJQ{^gwhuJ zf;0x+IL@@0SHL7M)+8J-*QgDyHwZ$l2ZnW}4<9aF0mvXyuGK;h?MCk-{k)-};n8Zn zpYrMPkuLgm?iknf6y{XSPmh>_KCe&q02`|8qJS#!dpEmwIqTGAqiWH>AZRYnK07@7 z2^xry)(egOuA|O>|D&{}o4TErPj8>JsW1KpS0}b*c`mJ(VbWI_IGz?jI-oF}piw4W zLa)6w^+`1rLcUs$c(u^SjV{%qIi(;}vK3<300<{5?ygwtu&3V`KGtTYYeD`PtRWs0 z*8HKo{@{q|FmkdYaDBiHJQQROsbZ`Q%Yw4lX@wB~L^z8T{&;^BI`V-*5hY>q`9(zh ztSa@7=iH`XpYWETF-Lpve=c0Af8Ab`pyt{<1g(Zhajuh}?TnaKS7c5-J8Ypj&?Epy z1Ge7{h3jaB23oHbKr_T4#rVeWh1~pMj3I#g55QL!-joL3k0XKYaXn@P5!ok~U?{4c zk$MLY431Uj{Z*2C8}%pb!6rx?BdS2=rD-&Z7@2bN9q@8?K0VVb$GTJgW z6h`-~LsULAW5mFzhV8-y?E8mkN~$K?xY|KK8R^zCOfqqzisf)3hB@e$VMda~wU1Ar znu+@mp5V4@4af*#mzUZ#-#{VNJyCsKZ)Bz#sBj4Vv1P7Sni7%VaL{d{uT&Q9L;d$b z#idEb2eQo=BEVazHS7X*Da=nW!Er+)*Y6*YZC?+J#t7IeXU{HM#ZeZ# zHg9)w@%(U&Lf?p-iK_QE@KMzlRd541DoC2Bu7HAC5qK8dCu&ds!r8HDbr)3mpElNm zh1dRKPX-HjnKa!5J<;_w3ivk(*j^FNawCM;Hs}g}(&&PT0R(-KH{@W-m}7DfOkEX9 z>%43eOMfP6RCqLgr%Lh7w~*mB>|->;yF`2~1)98LatDNy5eF+EydX*c0)`jXpI9l| z1)knu??=s9H)nVw^gz}`L!Rd3YVgO=rP_g5&G`h9&or^`3J|J^x%Q6%x_f?}H6W>uW6- zljNmN3&w0#3Q0766q2CR2U2v?cA7^*%Uwoe`SM@Mas0Tht}H+#dc+X}%9)F2{wv$; z=v1KeErLX0A+%KA1#W4Mbp<5UU_UhT)GlEHX7r+?utN zAX|8$7gIs?d-tvBuf_WkA3YL}2ozU7Z(tCfW1@E>}|pi|Sw2BM1xVP9&y zQ^45SPdDjQ;MmqO@NZl8UwY%MD&Y2_)`yO+zSmz)3}<1|qpYp1YxKZ2k5wmpK7UGL z_7khcGxM4vU2*49;}Xouj%u8#k*qI$aXQGMecQHeDC><^aqD|rh;R4(?7nSE%Jw@R z_&=dtR#8^J5nB}Hxk$gYNFVHl6$i@cu#Ve@jfVY0u>t-k{#v=a91{KYka!6lss>-G zVJ(ThKE9iN-U~JcQ1iNCFitAXy9_rEy9Gf!7DWCc#__ww2^=a2 z1!ILSfR8lw$-ZiL2+Z_>$(p7BpN&@=FCL;PFT&8+QXH|F3*Fl=$`^i9aM&xv$UUKH z7EPCH3@I)89&tiD5MAKpCE4$P;KZ59Y#zC8|HpPEuKf%d&;o_rr{n6K0DlLVx&Xtl zB7*dyB+b=3Z+=)8N-L+1tA`$n`=a!VDbt#S)Xi3D==aJU%OBZj1IS1ksE?K^FPiY* z`g$j>JB|-^=^#=4xEiBA>F3lE9xzYEulT*BS&ZLfjY}k+hmgoZRo-3|OFZqCmq;UL5SR+|lfgL)A+# zCiPK&2WvP+5_S8^CP%_j)A_s%qW6c zfN61ZE?dc7>E;QcEZVggBM4EfoY~u29L#ZBZmfoN^nsvQ8s}To9BoN5X!+hd1SVx* zVJ4@fE1?*X9XQ>mQAutu#_Of@qT$zx`9wu%jO7LV;#{UY96xArgV0Es0f%hz(!#Hk z*BY|=P(vJI6^+dfJ3SR}f)4|Gpsxv;aZ{fJ>3b_yZ!A3ji!<7*(&% z=9iHvPRzu)kKvBpWXNnWI3CaZLDZO_aP`ZPYq?S~(2fl@S%Y|;%m{cp7UpSVv*MQQ z*%_@q=u|=VTP}@bfj7tyZJjQ!7&C2pt&PwcMqhl6H4=d0=13*(P*(QaBC*r1^$oq? z7-iQFe|AALjbPdz@njG8fk8|-2AO~mmB9|&NO?$)>MIf63Mq<7UUqi&S64`5w>cWs zPB3R_fvN&ktIsY>gp?ep^63e1&RYw!vJ&lMXB!()}ji2|Y6n@^p$i+-xbvSkri-?%Og2^x_6Q>vM zz29uJLi&uw*SB{<$&=deZ_qt5>TV6s0oa(Y)nNn8;qi)+l+qD6R(+X>JcB~G35>At z(V29soz0vhY8*jDk^6!?YltH!S${6`pb;s1 z#5@vidq2_c7+^}cUxy$gCk|_oeE|yXU$^mz{!Hm2VBh7DuHB)oU50>%>%n)eRrj>5 zw%k-(r@){_SRRw^ys4yq#1D9g<{~%y5}$mUxcsv5JC2m?mRNvd&G6%1C-^42gHr&; zDxLVBL1o_#Fob}IKY(qRZrIVcRuS85Q7a%9FdtJmq9{Gfn!I!GKEezgIxsmXli4S% z=!5eoAouGyawh|NynU)haN0HsCdJEsfWaT8P@VCy(SWxq1r6sQ$9b|m!6m|_-69R( zW2{NxDEc%F^g94C6gI8T*PPK}2)SJB%w1Y!pprG*EdkRCf6=)YG{BHthv!)Ofuk_( z+W@h!E{*N=I#*wSBn&Dvp|AwP{*QN`H39W#nGO$t%c~ZSfh&rbH3v)8wg{D<2T<lFp@tq?=8)AsdVc)D8lbG#z+d*P_gWqTFK3ZHkKc!Ul0%Qc`5wh_+} zB3k1R7nMVnJK?ohJe_2B&7+PZLzy~f*9WLKy3bE=IF151I^lm642a=IwyI=>K>p&R zlQoiZq<=a6gq;E2al7hdN8ZfgxZ~N?lXMh{0BEGUsuK=Ct=xsewjB5bY@N1Hgb^?% ztn41*Sqyf)y&>^KbNpZ{1>?NmH-Tw~sj+4nY<3*(W~&5n4pe%zSapXg^p67mkl3d| z0!1dJ7(lNE3$N48D)-5gabz;wip-JL9IOLjfGn?53l*Aw2I9qn>6GXe$ZJZVLjVAiX2>HA`w>k2p`&MTue zPUS#3(XuS;Iu;b6=CrFFi(l}Mnl=w`oNoJNm6f3qAPhJ8`~Vlz(qk^2j(4#TQcEb;@BZBu5tre2<{(@C5mF927raE zf)a!wY0H0r9-%7S<4?@XfRG>%!_gLE2>Nrux58Yk81mrDAFFxLhCcoV@eFGg)9f|O z*}04!$ZW3d$Rf5Ab+$on);$B;x5UiUWVW%um4=Wy<1o{t)1g`vlZZhQ4e=2OJaUGL z1w0qV5#~r(e|ic4=~wnCaNrR%gyFfv6B3IfC5u+~X_KJRq&-#a2Z$iT_sSi)_Py<$ z9#cb~Kq@idY39TUm!UUp03n=_`bA#4-4*G}{-g#GEC8DT)&K!sl!iykfF(RyHozA4 zJwC$afMB-_Yvopd{AdDwTJ{Jr9J^2gFS6sl-;Bbc0B`XjSi55FW-}2vv;9y?fiI{C zZlz<`99J3rU1^sqg&#IbwLuX=5Qq(_Cm5w>lrJo`70k}Pel2IWV0@Bo*&n5UXo~oT z1-qO6;M7XgE%#lS6*qlJtX+Lv)6%9$+aUf5zroP0cjKDkal@wO6i3&25B8nh}9)ZPQ|&V&986 z;dl{^Bpx>~Kj{F5OZp2e`)oPDP+X9~o%$Y|WlGr^7Z-;UCCi{DNOobO@N+_aPfw4R zDIG8UxnDl2>bHdx(LvVu3@ET2?wAGJkGnnKfmr@t2$CqflNWA& zyT?-w<+#r~5_vM4;0dPS;~(NFfiGjagm~8W%4r?OdA23YnN04ZI~CT*H`6FiyZu444?k!lDuZp>ytzF3z5ve3 ze(1?;@f=N+u(YLuwnc=CC}c;w2ebZ(-Qd4ek$fP0lL*BRZu6&EHof+uxSE~xgyRDO z?5g(m_62G$Qj(MX0as^@XD}*~ouPOx?G+KRocy>N0=sbtC$g*42F@_IP%G_SGv`O* z$OSeVDno_`2|@4Jm?E&GCmWavNCA)jiPVey?~R!3Ji_w3(1haSGGdo5J%q*~up=N=^v;C*H`DASG5#U8x0w45+J5%d22 zdydt-P8Un~6M%BSpPzq{(8|ktc0D+o%xq73h-a0n-p@;6lRE;O!Z2;nHbSHvN)=CL zK7anaMaIFbxH{Iy<^j)O!SbPvAVSgu&d~znk~k8e0rn7_4i>OPe(GS_PYHXV(EbQ_cE}w3$fN(POOx#@bkGFtrTn9|Ix4G;u2+P+X})MF9|9k#E`X-{naeQR#14C z2>5iSdd~azdo3p}&g}|^!g=$#(2ZGk#i6vvzc@5(TXh3}V{?Ft#tj3?RdwO z>{xEAO;0H?bl~OcciNKAR0XA>Sq^&n3ji{P^)<(r{&JP$H@SsV*b0zO30is>*fW z&u1Rz5r&@1f?T+~2anw*V}|aojR7o_F1D)G2fiX}y^nY&#&r2V= z3rcwp^uaTzkrm|QY(VE&j`S!RfRUuJi3x`jE9b)R-dSe)R(@8w>%L(5eWYd#)Cbtq z%ky+7&TXf}eY%U1XZ_Og zUu{^;P0co#iaNC0T?0plc34@)48(<)FzySwR1R_r+&o^qp4Vly3YYMo0iJXBIldPR zJd}=cp-;5VP&3j-+sq9*i{}Rw17cvhv%ve?Kflj$e;9t&_YP8wo=(Sln_ER-YltDr z!YxUu4QAJFl%tlQZjrmQvNEy@K#0G22U)A3#B&Pxdhi+cB~2xZ&epkok6Vjv4Ko1>w*d?G33j& zLLjEB+u>CgGql#&I||^a@kO5E4bA}K+ZQAOZZ{JaHgsu7@mIIw?M?~P)%mZ$wu7ho z=*nxT3H}9|#QO@^uLw6@*w5CG4!G|w%5Ep`F$R@u*&>tD%Sr4l)Oq(Htm5!Ozp%XW~MP zK31ijG|vWl6{w??aZJPL$BYjoC#mV)d?49HkOn}=-2|qdjkcRx)sG_eB%`-BOF&5V z&lGWDbem1~!s0Alj5YEKuVu*OO(h#I&;&$q)+h4cAlFZiE_(4|7mV=a7LK}Q0^wzT znFlDe^+plKe99j10C~wuXlG1j=3$IrP`oe}{w_fL@eTu-j~S|OrAYHb64l6Brt9FyWBAnN`A@@DZ~`(|Ke02uwW*#p92 z)vMnqOJ5*%z>|kUd)8Y5$}xLD$qzV})E_c$qybyKHUB+ctL_BT4XYr;?`MsD!6BBC zg31#-4kQ9?3To(nc!&D80_8_z8?Ais2XHLTG9tk&vR0Z?m@>ZnJb2jAKIzM#j^ep(+KtsWd=j`GDAQ=nMmM-QIMH%}m7y)Fg8 z-MLyjkD&BgtoF^(Pc!);r5y(iy!|X2z?+jd6!YNo`xT)IDS2C$=;S3C4*98uC)q$V z+_Ttkyto@j%r;j5j^9I|FpRM5p-wj_7D5P;va~ph18?>XUV(Vl9!OInE3N zj+v{^&%Jt_r_l!bQ#&RNms8bnonVTmKY$g*Wj0U^ZQL^~oee-I4g{ARGuG7Hh;>iM z3y}2pkpLA1bvJo{pfl@jx4OKNhHa6#h@*Hnav;kJjoYD60}0MkTeGjfyLjeJOe5-(xoov{_AOmOG{P()sp z)fWH}4GZBGqo;chLn!X;ohiF@|Gs@bgt0u~Yc=6fAJoF4_74r?N*XWp@HGCee{LO& zPe%Dddxs^s();zJnNm#IX&%P@&Pm*f)GQQ=u{#%UdqL_jQ!k0 z2*B}HAI-*s%GwaK`IhPz_Gb^l7Mx32nolWZST)+uV}wJQE0@+k77Qq+EXvy)HgJ9X z!Z9nc%}9%j#vu?f&W!5szd)pr{ypQ*KUjy!%SlPOJ$EuyfszdqoGRto$q-G5s;-zj zHlCBd#tmAyc)KnGc?Jwh&`dWBQwoP6Ei6_ioVI6ke=ib64jk|Uj`GVaMZny6XHSP6 zlZET^qQLRm$f$V%nc-%!%dG>ZK#A~&=UvBlJv!Uz*b8G`Yb-l(${6ILVO`fjgA;|R zrCQb#UnneZ(8MV;0EeQ|Ck~`-?Cya5`v5iP6O;2ris#D22N$qwSmWGs zPV5D*ZAUZ1e#MH%37lrP|Gbo>58Id9ViYMDfcFXG5Id+5_ZMN!9uTW1+4V>bEv?@x zD*6!d0VoCv^~A2GK`ug9m^y4c|2gDyJ6Os*zYb~soX3wJKjG#W1N;^P>yJ`^_9MKH z43Q7F4mWFVcp-z7oAyCWWg=u8(RJB_kfX}!)2BZ&5InpTbX^=KJ$n`7SxfeD$5GWX zIsXBHAkDC7&z`2$g5aa?g9jbN&W5&K_ts!-9#!7Zm7*fjiy}`bBfiW6Q9n~&C3f7x zoh?HaQ*D3maTtXn?!$NIqFyNi|D_cczGo)j*u*LQ4q&o0{9r&;^O@ARCuYo$iBs9J}3`MYxCL@R?;5GBrmdnx7)jJFx`GGX>l?Nm=T*9i!hR;B~`x+_+c!fU+(Bb z>F#HT1n|Q#y0$4mB>r3ejbpYy4Gmi+)ah^ZWp~(~wJHF54xV3}X^cya#SoiocdU~0 z_Vhag&SG-(DuhJ1mdNf2l{EhoXudr!W~`m2L^vRIx8P##7ZKSgJTJ^Y@;#p1{eu7w z+vIp3z-te{Gwc-;^M@Cee@W14%tmrtq7`PPZ5if}RX%xAx=y-t11i%a01jA5FJMaN zg%k+Fux1*G<(gF^%xxfj|t z;7dH}Dopj?e|AAmZ08L4p;K=1Am}$Y6|dO!Lw4WLO{fM}oEDDUgas_1rwXt9KkU7E zIMnO^KR%sKb=pW;EFmo=k*T>`Wl!FpYcWM`^tEJ^D zz$W8Y0=9WWX7l}6WOw?3{ z>s0|lWg(ARzSx>0eQh`DtHp)>%4mGQ{?7f)0U+4sfUXt6!y7_~jy!x^w*Ey>+lBmp zYmN_;FjA;eE+Z{ywJsRJ=Dp_lX(#@b3{KLk43e|FnkUEE_P5x|$)0SUl40h|EcX7kU#;&AB#u&>HgDGLg4i-@&W(m$9>DT=n}Wn_fASKt*#L@bo+yU&8CHRCU{RA}VU6({fK>wQJ@CFk2ZdD6Xy^jEZ$RXMrHHPyFk{dpv zNv%`G-jDBl+`oT+tEga0j$HVTZEA+`2wj?$?Fr}>93Gz8r@sJVB8xAh$*l)t4~vMX zT{|JzY>mOgw9{C)5Ru5i!I}?aJ(*gBLK3ck_EX=a+Evf*8t=(JuNz(;h%&NQGZGmD z^R7XrBM)h43O8wcKiHG%=w*&_yXoqFVR6>u+x>TXnr3+fme#!9|pK{e_D zg4XsSV}J^mmc$$a)s~x)2>@^?h#=eqs#{)Nx4}?UAaO&5gsBG99_k~kkVs(bHR)^Fu)~;gSHl%pg@Lh)UJ2n`(+CHL zz`AP@`UAgS@?N5AFLz70ITV$96Pc#KG(krLycs~8sLY>2q-gL92(_;8dmtLvUbMV8 z%4?DX&kNBGkN&muhKYj1pF5y#=7_KhrMIW$N`EF#I%vn}Hy%22L}RnJv&zM_#di?w zuH>FR8H!=@OH#9FhITUyKQR1>MHbelwf@o}e6%f%Svyby4K16COc1|!> zcB2V&GS}p7A`Ffe8aFaF z?itVcP2<@q*&nm8c@U7%(h|Zch(=CAJE>{T2l@p~T?mA*>j*k2T`9eQC{4*fYFwOW zT=n~qyQTquKmgL;&S0p;o@b%?E8K++<7FNRtfj%`E`*}0#QRLgQSwHMyg(jD%hnTK zjyWWrIG<55h*vU4P>P3~nEf9Rot46|p z9mmg)j6#5~-7QW2%s{>z56CHdLox&mUE}6XAVCA(49xIk_5QHrym-hJL?W+`DgdYr zhgUPZn@sIOm`NO-x--Hi3!XW%z}EKpI=Q!y#HHplp>ucB1*^t6>@yi;YSFz6Rt%?G z7W3OSR30e_RW~y;LvgUkN~npls1!VGrNBi0Thr(VV zjtHqiNrmmN0@%=(l_z@e0Cn!Nn2<1O#o4`sED2?&NcS0{Mst85h-B_zAFQd6scW3}pBZb;#KHSS0meZQSX_&j6%YWW0&w{dkdwgabh+HZH{Di`$h*1D*+ng5 zBSL@Y!Y3XTK&4^6qe^iXFhYU=X0xIljj(^by#k;D55jdPEfW9_S(R1T8{35H4@D@@ zesvW0*dM_`k^A){3PRqeX4IHkwvwsdR)COle$Z!m@KFKk3`tyzO2++xkZoxCkB~jN zi}(;66zU1(%^_SCj)3CIt%H;10*otY`wm>#-RX|bQ62^1n5BLG-84r*uI?OIZFJlm z+pb!Fg3=PA6+jNcg}8D&y*UY96!%Z}puUi*5a@%F4sZepLygKE2xg7I1e@1d+yaz+ zYJL{jR8&_0-}k`5dpgb$G7(|FHC@Whf1YbDR##Uy2j>&W5Yqe!)nE^3q96EK7tf3O z)hLH`q@dB(+1d7bSrCUxK!}s)Q3U`fG=Co6>{)P92u}_PdGwoF=$Sv9t)vuOFbwI3 zcNv1-9mEkvgwlqqd{8-%0K4|60M)`l<(n711hi(82p)(AH-oRR??7RrBLsYDW9>68 zDwTyqCUxE)>T&Lf;01d!41(ND19O;TvX+w!zjUaAO~}7;Eg;dZR5aw+qohtz# z>Z5jq?n6)(3Zc1cM43w*uwUo}AgRZ^<&hJGv1f%)M@cHQ6@kN0+Yf3(`w#%tkB%Zp z^y0UK=_9H zZr_dC#*yRg?1 zWn`wTSyMhqS54cRlH>5k{lR= zbQTJ7h4Zp-2vNXXP}BnjLyii6b_cqn$dMyw%aGZ35xOJxKs3$M9>7l)LWC*Z>X(}O5j-pz+xdx+%7s1 z4Emd8qY2cJ|5S`pROgNdzok9Bb%8`jEuLW7EMN-Iq=Q`yQ&?xT74dq(1;waUf0rW$ zj)YG~-_BdH>kTDipypGuXa6tv-wApA?}#G`6h{?^I!Jokfbhkmjb%C`)RQ?DAsP|= z4~jeJSOfR>sz28VT3$%@n{K|MIY1JwbM4w5)NBuTl!c_3lMLB+5^z*H3D8aKt@J$) zFlMl_`_XbhoE3~3!?_NN&4#e1jtpvH74*L)Q8g@LYT?~Q=m?`M|HiRoD3p$FBsb_G zjeV4CL95G!)Vdw0=p2Bk3Km%Uwt<@=3y2l-zK?$!MmlQyBa$y#gVACX5<#sX@B|_{ zt)%1#Z^FhKjTr6b)z4Fokx)|@zK!#7K$k^-0qOvyg4?DL`wmftp-OdO0d=`DY@flb z6I3ODKk{hOp$GjIOp<;{Ndfm+u#KlAa>&n|cl3_i|4GAcGYsXW!Rl z|6QSmQ~7x^Yoow%YEn_rNqiFvr8z74AULDCSHyz0NNrTr4hR68#*ZVXE&{#kFyxH; z_ie8~t9aZEkNFJsxW)+va29(~i3ev1$K#JdkA#lSRZNpBG*j}qZl%+5vSz>6ppY9d zj)*CnX>iPjRv#Kr>g62)e#{+Ak87+)SB<>qc+6xOs)%(zX#FLh>3Sm0sy;NNIn~mO zI5hS)iQ>}!qeNrql56}`*Kk#Mf%2z5lmeZ;dimDNcY1(@cXXW8+P&2Axc=aGbzhG{b&f#o18*UmXGX*Z+Q% z|I`=VYyF>cj{p4@QjbyAVM?-3#8HBj3i%qwq{-r}y%ft|y(0`poaH6{ohUU|L7(W`Rcajecj-*-Lw#S7KK0yM-Pxul@n0f@|N4r5Tx-?Enyp z9dkCvEj@wCp+hI}9@DrTN*?%z{hYtMC?W>Qh1o-%g8cMapylf-A^TQKr34A{=BFVj+#rTG7HXU_ZXY&m_- znt%QW8jdH>_{i$ANU<&r77 zin59;pFj8E{a-rnP(AH+$f@^HEZ({6Cu3su34FD{XxOy9Uc;!YR`M^fP4FC(-m3*@ zCSTWl@^D(AXMzIcIh23($equ?5(SlCUR-dc(khvu^>o2Cr_*$go1H0{YsbI${ri@F zNv1b!1T@6a#k9M^g|p~;b62fHAg5sXlCw?9Yf8ouozP`aib*%6fc`=IrZ1Bj#Z}>np$Ct*fRdVos;EjV4FBmWI`POH=$;&jZH!2CP#X ziCSo$A@X!8P+Y}K$*i1xEk-W?MIfhJQ5b-UzWl3@jER4;cWrpSld2cqe~vZQt2)To zhI!sRT3)Y+ULC%dXbn|GfUBTO{PQzZi5{Cz(cNN84|4$D>ocWf{T+QxeMrJeBaTj8 zh^hZx;r}<0;>0G(^gf_JXK2G=$IUFN0agA@A$kKP=r0YWs`n2}9rKb?Q>VJIWNup}inzeJbv);OF_`kn3 z>eB6)MX?_1@QVHgR(4(k>yyDpq+ttgGA1`X9;O^zdpf$={Co8wm<0H?w;Zj{3@rh!@XuF##ZJS{&X-UQ z3srFC4WFGGWL98*lvrSfB0Tt=H0H?OKcyDL{xvN7U^S&>;jF#wvR_&we2!&;HqpXG zXjILSwVs62ZvA`ZGjQcdbigvGBuj3045rJp9$H7^6@K|e#(jeRDzL@>=e4Pk18C#q z74>|-t5xsz64Q{fvY{R0dbHe#zv9_js&MtU=JW--x3nLDvilaSu2+XB`%1-yB-qtoUPDV ze&NGH$fABm4|ewDAuhQVy06w}=4vW^eGt^1^}7Jp+JYrJ)JQ^~JU@*}FnevQBzIZ@$hms)U+ z!z?fCtAb2*9P5h`C%To99J)s2o=71r>E41A=E8Z~@rtZ>VafV!$sbEjbo82Q* zN53PM@{WNoppR%UR!?YnnV5iujhv39s;TwOyLGSjZt4$85&l#k-9u?`ZQxIMpx`DN z2%=G5(HmqNqfVb`{v4rc;CxI;Qcs#rCgr?+XDZXq7O&IyL_(+MKy|}tuvB->@OH_p zyoMS6-g%c)PnT5Y>M~WEL~oVM6MBA;<(axM;^P))7k}yk`{eYzXLzC)r9NhdTJ*!= z;aW}MlhV)j#0)cknz&hZuHR)?>?T}R*RnodCr8{{q7Aq-9%tDcC>ai z)>rB7yHKPHa=V(PHm2hWAuDKf8Oa|ACk|@<@3ew=ydKkSO3c| zo6D+N$oUDitc%HWX?AI8Fll@wBgu$T-iT*0d)^M`b=@M`4?pX1r;r5wNlfPy#)-fG z1m=C{kR-@_-{Xp1K2X+PbX1q6>EmB#*S{u>WLd8fwsFJLo0kq4pK%gB*20p)ow2xN zG(dtTj*pZBVveVtUS5}uf{O<5Xy!sW!|a@#8*#))zA_wy$`Ceo4&%I;WMe)5#34Fjyrbk5Yl>NC-?A8#(i$r1I``uX|6xMgcUf5wS@OMvD(6EiN0*D z@W4q76VJ1?ybj+>b_{WGkGFEnx($DyICH#s_wJc-K7a?uaGlDeq)jrDM0;{pw`-Sj z8pvB8th{Jo&_2Of#E+WK#bLvuWtb3+{U%=)MrGv|jfB_&!g;J^apyQcr=sgkuhjVf zqIT4gL+85-ME$r&!g7YOMvE^YqQ%Ql_M8CR8Ewie&EOI3x4l&b*7Ictdx#VFhg_)n zI-nL4_tF2KcYv|be?4G4#$y<}11aXrJ5k8&8znFe_HFHU0rCdRo=e|a1*$d}Vb7P) zj+bH2T9{DNq&_>_)vntO_(hQHn@dWNq3pPUd2ZYaQ$TYUp5Fy9nfK#K#h!WZp3Bzd z4y)&XEL{uq@#P$o-)&RA^rWv=Q*MNgXDNq-~Nw`0O?G!WKzWNB%m%1CcM^40_kI)QAEGUp3_h$5Z zMYEk2p8L3%63Dq<>OS{AIr_coR6#!y(Yn|Gv_Q^M`#*7j{2X}vp~{=R?n#};lvR%N zo?i7Nd-c+`N*<3t9dZ1_0g+0O5+F}Z&$SVMGLB(}Dor|>uI$DTZs;}D{=jq(+=>osI2Y7!zI{@?H=wlus z75*VEQH<3&8mCo<9x3^0ytx_(Yo`wg_or%`B#*bb-?Ffd+ZH2|u0x3uX=pf!7J;{C z``iZKIY4FZZv0Nl`mu9X>o< zr?$oq-ru6y!&xk*p^=B;Fd}@;YLirpgKo}Sg&*(o6Dt-y-TqpA&RnKLU&UfVz}E~( z=cr#JLr$v>J1hB-V*PmD#P7hJU5~kylKnZk`sc?jnhEozqT1nhV(wR1^^2Y^>U|Xu zVLiXwno}L_oRCe7wk}q6i}L)n{GKB%O7QjrBRaFcVlaGJ1#lU#f73M_&hi(Dp5{$^HI=Ul%U*w~0e7k%$;NwhMuZYE?a#CK?oYeM1Y%)WWk<7{5>xwWILXQnhoyt29|uCkrbWJzV2^4Y%jH zEl;+3>>=)lUJ0XH-fTT~0PVC_HGhh4w^}_fHgQ@z;Uwn19llqeyiM7O^T3+tN%^j4 zESfzH%ZwdATBMrey4$W{8i7Rd{lcYhuTv(@7#QlT=7rDmbevmB*X6JGn8{ z_ciE=8h!Wc_UdBxi{v#rzp+Wp{mnPDWrqKebJ#0N_Pf`Ko~t>~dsVbYnwvAFn80xG zy>_$q!j_n4^WEGQn~ooMOR(pXr`y4*rS4UBf_F#y6bxNQA&PiK>Y-0;SZ@lMS5GpRf87&_5bm-!n_&Luo?`1`}CXA|Adw>Dv%^GKY6 zZwVirtRtO?_Di1XA1dnPB{5@1VtentF}|NDMIo*pS67uZHc1r~(#GdU@AI7M;r6{| zGw$8eU6!%zVjY>cPq}F_P2+$|{rcy358mhEA+~qY>Q|STn$^6HJ2viAQSe&$v&+0dyN3I8(DI;VtTrkRsjUofZ3 z?ZUo(p#NOoa=#Pv)KcfsZ>6i^0?{hx*8vXP%AJ|NcFdH(b}G%H$4SXFR`T546);d1Ou+! z7*{Pdx+wkNKOgsva)|-u`jN_rHjO>&d_x~;zRniyNq8fxzXnzX=V{^Nvs%c0Zi(WZ z1G+^Ye&2z)^)kb6S8OCsBbXht5P@5_o-VX{#kS!oCBHv7_pRx;T_kK7bzG;#eNDLS zonHWdd9854ztlu9-ye8tk-6nDw>~MXX6DZcko^CbAKCvL{Pq1m$ApDT{pV1zy8oO5 z_P<}o{O^Kc{x3I)281808_>5d8JchaOM2YoO5(OgXxC|D9{h0x)Gq*ttm}}q7=Rs+ zrfX`RF~}Q2XY?tp?|ief7iup;qqW-Y>h0*T(e;??27*Ah`upc~&?~^x0yQ{K-4w9i zfzT}W61bFh(b$*|lo8Z%@}MU@WxPxN`S3#U(EP?>05xbax`Bv(J#CBRfsnAh%HG+$ zKufz1p8W5h_hJAvI}E}Gy<&vg7%A0ov)xF`3n=s)9B@yiHSzVvWy{x)(j0Ehm^@E2fw!f@GXY6 z9fNVb{qNz8{|Y@}!!m8)z?RooZ5SKj%y64qBw%gEkU)wXc-4|q5GefpB&a>@V>0rv1!D98g z4}^38q=Srqfpj(ziw2N({0RBkR#le7nPC8McZ97%3MXigrL~JzBml`OLGqM5Ax9oH zw@xQQYu5w>+J->86m_jPZFZ8%2VSq<!-Hq+dc(`-spZNSG0q79ZvKhW20E z&Y=JX1w7j38vpKL-IqRRhA0rD0399z_@6vF{4E6QMbKy0 z92UZ9m6{mpvVcu70O0A{hFI8cj)1p22hiuBDvDuD-EH_^d)&Gmk>p?Iq8d*H?6w2z zuOl7;XaH&BY~>2n$Sppm)^I>?dGq>crP933V+vlvy#f$Kk{|S;^PG+WH)dD88N6bR zIO(HEAJy?lA)dTz1#s(VnSo=5oZx?Jw}>Bqk_J!+-BgXwBgJKtBwkJ;F(gdE;IBOx z-?k|Sk=2)AkpeFro>L&-BS9mwmDfQEj&LyN!YBesA#L~-!Da-BG|azH0k~;S;iZDP zE9KMiv}DaE**RIj1wpv1A`pUjJO1|FF{Lt4YeDGL{_K+R3ozei_M{;Xja21Su~o*x z>m$PEUjvv-?OZ+x!lT24^u+*-P*%a2VPwPtB8HS=JPVK^!GO@W&h!NBCd87UPCSv( zhpmNxT&EC)0(6qN5raR@JwY3xBm^Jx0h2D0>rA=U$gMzh5zS z$r}WBELtgu71qc0XOUj(_Z83I;R? zY5V8qv{ehuG!-oaxDP3oc6lNV60RFIV*vIE0X12?|IKUzkl&T4Y;exBFP$X0E_~(7 z2Mw8B73c9fuyE|yr9XoxFJapvnxvs8T!geu**t4O>*q&JnVyz@N)qC|!2NBfz);?4 zqdjj)%%=cll3$8n3-gHnwQhOoUa+z?tTIvVMhyk!9EJEu=%91bm9yeqjEpqNEK z%jyR{22%33Sb7S_%~H>EK<~haZS~B(<)5Kg+>|3+0-aD17a`3{rhp~>G76XuB+b=S zPy#SgG&LCEtdU|YqSw%Yj*}p>qzGu%CrGsozKUZat~lVHI02#?i15FOgwGKN0|%Hu z2&n4+6f^*ovLM7|DkUO~JwU^5ufpOq#E45%h)B31iU$C?M|3z#I}l-?t(9`T@*5r$Fn^L0r1c*0!Jvr?5nHux`%U; zpbzFZAP#I6V55UX47tyHH(VdFe3Xg6=s90vGIB6J16crjBNiP=<5K0Kz)&{jwzIaP zhXX5^+UY&Q5{i2K_@KAy2oupLZPhnfBF+i`yxPa;h0F3AFt4R@tyabUP76x`{Z1c` z1r{9APShuB0g6-%lwuAY`Rd*E87MI3uw8Ksa1X+Y!)4&91#K=~zPtk|z93~7q&ECW ztrYD#q}`9ua$|!Cf)3lJ-;dWm0KOp|G7J!}*ps^u`%yUoeHDFnQe+Yx$J_Bcz9CU# z&`(b6a{-HoGm+RLA=8DLR24cZjUD25zWJ0EAk^JFvql&u?U*hX&Lc zVpLVSK}HanSHE@u5?$D`1Hsz1Cdk9ToCLYH6>XS|M7W`z5h93h@MK2=3=c_ry)Y$u zi_8Le85`y}KsvEPLhbrKhqfg8oKRGPTkmazBhA0LE+A@&!eaO|ccJ}olA71dQ!aq; zTVE5fL}h)Y4i3b=0(p#rkrE1AAOeYK^Ojctw;~9joT+>a0OBTr1^wZn##58(V~cdj z0FZ?crL;e@;C){D<0gQb>K7esn#~mfh0j?}2iu5%dRueAdR#hlbr!zE6I!^;AcI`z zqtTsZZdR7 z*k#Ax=D@{2n<@shCJK2>D6V8Yj`5T**NG$S1U7HxWe~#I1++Far2uJUXN&@oN-GmP z95@$J0ploSdS!--Wr2a$ya>;PIS1wN4yM#X{{BMWX!~!jh)IJ>sS>K$Ozdg@&o*=D_HW zlUZ5A7dEH?Vz5|Q&<_kxUI85B%8iw?RpC3lY>wbAIl@Es{|@huf(7f)GT{OC2(K8G zig-nmSBqsK&H)OH;7h;MK7WrDF7z8Oqk|z=A?|CN1qm=|4IAxZ`&d7L5tr`==2J8D zj=O@;esbpFhuVlD?LXrQcx0ghnX;ezSDdJofx;mXk))4vOxiI z?RfwYqc!i50HQ_PL0F1fKGq9f-;935~@h?9lphTr4Dqm~3m-lCHyz z6&5g$QA^!h0hruoyKpn$L*VdP3(L}MQ-BlO@-I$IE@sZ_hL1Tu=4*F%^74u!v%L^| zk5ia?gz+|c|r!*@0k~llbD~<(D_gR$#T3im}i(=y94z3Xk zbqC`1Y6_{fUk1nG-x`bi3Q9YTW8P}*P$D|vDxJ0P47j6tW;-85mHR*t4wzZY3usDl zmI!Q9rC!~|^cdqGEyM>9?dFGkjx7x^Sf+L_$+2$@#TLKIY$rP`Pis#rXkg;ceP~G3 zfrh^`t5SI1z8f%WA{V&-=}1K5;3?+IvYqixS~G`4)om#gOj^~P5X)K@=%F3VDy-I+ zHM8aAZLYGmQ62qVXF-3o%>>@9EVlzXhD*6Y_ud?<|~(;C~LETlF-Oo}L1b|{@ZcY^^lb;!(V`7eldG{%5^V0|t3 z`Q(XaFtvGfZD3g;(jWAeF*ck^eq#Lr3d`EpjxQ~-F@vvZyRLWb-gp-aO_4Rv6}EWw z-Djf`7yJC(Vm4A2TC$Q4%(?dmf_}-0bruPg{rM#C^Ytw%)E{Lu54LBqR>eDiwt`*v_kLQ@a<2^~NdhaM&#Y*$U_qdvNItU;z zr0iKG6sB0#QQR#D)kC-`B1Isw4w8Vj5ZKmxzbmKh$NQA>!y z>D>q8iyRU9%_MVw=*fLqR7Ara8$@#(0KP1+futkTGA+#|K+Iwa?m}81FEwW~05^TXMR&M!;*@U~&N4vrUHR zp_)l4P^6^%=4{_nqDr*Q33<`1Wjj9{HSv24U*k0BW3)e!2&Cb!zTW#vNGq5DDZWfk{mVx3K4up!wPW$ z!P8n)vNiDahSjYrGkBLHXj7QtV16iMOeRR&vbe#BTDSQ|4=(M;(vu9B{9>KB((mxi zz6q-SS-oix6d}}gv)ty*n+HJCFa!cnnG^z`+|f2eBQy3mR&q>&mWYHz<(~^bqJ^~% zkN<&48-`nfyN`s+s!+%cE?5GH+L;Vqh{+*kN;{=PfD(lxJ@PaV;`x_|HJY~)to|dqNu8b_5#XxI1{*hK!(*qj|DW2ewYuV_L2o}<3dJO`Erdo z@suCPle?FpoGN8`@uE`m=N|O_9z{iw5bI_h2Hf?IM-qvkteFyWbzl;S4WPRiT}FHr zsLkNa9-{moC0@R3*=(+a>>YM@I|z(Nt=kGfkgm*)g&RU*z#JS~2O^H2!#|#Rhtdt$ z9f+^EGS@@0f`u(iLe#=M+GXaX2~34UqX1Fv)-+NBfq|#EK|_W(pWL?zM+yJNtw5iIg55a*Y$vT zn@e*zS+DE$NHG_jaHCxWmpj)Ckr>P{<1EDhx#tzMmZ_q z$hc7*t4)*#k#^9qinC^+Ec$E2Iz;EdN;nS*0;BOEnRm88k#t4u74dJhmK^MWz=R|u zD(OfOcct+4avG6?ASW7_OcG$Gf1*a}``X9}A zUdmVd=M^)DhqyP)vM!Ic+Fsm3GvL`k$G$dey?ftwd7Fa)>%^{7hDMywWp)aaQ)1k_ z>MW6;d85*osO^#2RV)@on7CDH%xrg`%3<-1+DcoDna?~^m0t4x_^m#r44X%<(k;09 z))HT$@Uq-Mseb-rm3DC0Zo(1EYv4q)jdqO|W`(`;Vd9r8D{LVwterdYy8W4i7kws$ zV$yT5bF5La>C13lKAR{d62LDDr$dkz1cK z%N$w!;yzc#!p|*PUD~!T*NrBat4%8#Kw-Bhec8R@M4ofc8+Y4j^5mFj&>J2`vP7-3 z$?oh0WpK7;{)>vP4c6xF#3rsT#z3w^0)eMDgJ|VV{MkA0qbF`TCf_XU@M_XU04y<` zMeMj#c*2ji9LUv?aRASV%FZt^Ndl}hKsJZ2>hD6jc*Q>boH{dwX%cv&f+II!fSe-m zu+2x`)}OQM?Jf@Wq=)usos#f)23nZjBf27eK}R?5Qt9!e5nAXp@7+2^WIH?u2fC1B z+>4EzNDs}g-DvmG2gUl?ry7$oj})`>EjC(@$CPf@Zmxfck^;+lfuhaqr;a@+pL#r` ze<|YD7&1I$7&e0k`A&i5b|1?VsUfzuN61X06i@mggfX3Xe)k2`+*Rp)6)2|Qm~52I zfZF{0M5C%XdAi>Ely!`=s7N5cKi{r0Mf$s;*-zr<=w)*c@HJ7NKvXJF)2+L4#A!V~ zw=DH%QmZX!igw7k*>8a|)iYK8cLRK=*Ydgsb}-UQbRD(@38dQcI+94*)9oPriEkbZ z1NlHjpiox<-E0R6XpLSz2agE3?=IxxNS~KtM(m64C>iYp#ZYuEP$+@YD?zV|5V^vn zvTJ)lU}2?#E?ay0X8tOAnxszl<@E9%uI zrA2}lFG0-#MaNxpNvdI?AVqQ0FcA&q>o(!?j0ihp?NLHFr>Dc z!hN8i20|nm&t5|#7IeIfGJU|iBW+Zx(HwRuDD+?tp4Txk;YXGSOoyvQ?z>SUm` zp#TV}i9v7cc(4I87YT8ICz@I-JYz(z7q+8_paij3@dt7hc ziM=gzH7e1zCH)D_kE?v1DwQAvup2F1DJVOjB|vJ@NQ57;MEz{-LEsC=n1%KXBeD%m zrsUfUih@(naFV?|iu;MUc(3x;&$xzqZijW5HKC z1QuoKTR6?ig?SloygRz=m_o*D72?Mp^DoQRq@lkOKEDcml{MOLAnL=XoxM!kwRS7@ zcI|OGpF^F@ZXe+`yW8R`iF{aYitW+n6N{Cvga@Aepr_`+fn%)Pr<`>bc1w9VMv zm%2uU`;=+DjWlSuFmAq@i+Ah4E21l@)veuF<~aisP=-7|?YtWOX2BX8wAH{QMq1Xp z5cJlUufmK5e^O$M1YT>lg1u_-rLJz*Ca@Tb%$c-6Q7eng*+$j4t?Mja;cLzOQ#6;w zx#W(oFP}Jb152~`!{&Ie+xs%Ql^%*``|sxXC=^&vK1zexozcc^{j;wpV{LCVXI|y5 zzim_}x{x~pgF0(Ea^-88#fqh`LB`R%2IQXRTt<0%MVD(G{;tgoU5220-@aSrQ)g_U zT3l#!@kK7A7EiHC&?PMH^I?p=nssYgu+vh#Hn?yyG`1@%@D5Daw|V{UQ_6J=kvZxaNuij9n?JO=zrJ%?=iZk-|w z?H+j1H)zcVnqnP=^@@%aW>U@1jwR&e#<+9@>ua9R5lFyoFx>@LaA@`Rr%Al22puSX zXi#;JpoN#H1b((`5us%(_$=+bB7DxBXA;zJHE$H_8FQV&R>4o6wJz|L4L)?Fr#aLv zE{crH?zQ5R-aj{7<`y&{G5VSt5ri3vgT6VHd3VKa=ZeJx?iAU~FW`%^S~^VFou%shGIj~JOT{DUFan=`pAp9*-WM{oJg*@`yuNPuDFV(lTY_P9N8Cu9KCRxWD^Nb{W`wohb&T z(5t-IEzBEQVJ-?YW&IC^oH{KR_%_Rh6tiQ4YeB_Y4<@X}Y7-7iLp9#Zok9>1TxqZl z1&;_Ecq28M9$4{?ZB2`Sx@QPI+t5c*=#E>ZOYcshJS44$lusdVLj!A&SOUnQ9JFVE zHTz!D&DOrNPWF9hI#b=1U1L2U^8a$3y{lZ#yMMg}wlS+WV9kcAyt`7`Q*xQ^DjFSw zEz<2SjT6(;JXVJS?#zD>q}1N*_eq^ZZ){fuKOcU6JR#t!f31z)ljPoDj^=^a{a@98 zXB*46Uiv;UN_J+VqRUBm^HSxM*qvv1MB%mApR}_g9aBax5MGPCvx$#KWk?`xr;3t> z{QMi~5YsB95TV~5p!0n3Shm4T4D zpJ_eqG?i@o^@&wgUeZnw7HXt**&3CZB4?_UQ_iza+25)=l|n5n zyqOYIZg7pGMDy9x!rbfa`t%PQa);ZDu$#ok%G~UVmZmxuM@=`2uM~t%tDq!jMTP=u zSx7em#fl&ui6bjO_X16MY0?K*0=@h%bU{q`S{DItE?R=)xy#VF;4TyaPDc_ABn3gG zxTf>n{?V~Z=V-SrNE^qo%gtLS+kWbShBL%bj^4wvxJaVvmXjw@(Btl+>@h<9N~k|S zM*kq=vvYGVL8#6CHZhU*CZd8d26hF5?a>pLMSo zJz>;VaNABXm$4?$TsPmv`0Eu{LMC}pDKn>Y8#=LTT`A&q-Spr*YLF*efX^Yt119N) zv8~qGl!CX-V50w_gzLnU%G{@~>tE)6>#;`3M$_W*hd%Cut^=e$llh~^=J;HnK_lW8AidP<2Hkn{;z?EPgRFW*UWG8Z!vJ1) zy5XBl$!{n5!+ed#`R|u#y&(M;=QH=V!?{Y8{_ajWA&C~u9XMD>n;Fhsb{I^@QDV-l z+;A&c5F>up5JkWfC}lJ6W}1e|+fDFn9~(}z5+;yfo)cOCxw|0 zVDVF>leASsBd%Q~wHyU4OW*6UwnOs!`c-SP)vuMARr=mFhqSr*%=Y~o_QakP!g>uC zUooAg@BO?OyES*BZ1Bc#u_ba#nq~|6Y*ca99u@-1$7wS9|0u(XJx_5dU;;(|;Kh;F1=<(hAw-g}9Sf zpgzSBCzDp7ePNm26A+M}z_k04uRlFiGuf9Eb`H!pCH3){A;S?6rWx5F5PVcyk(>OC zApMVO_FJy_>KLpP_tj3|KE} zf4V}=cHtmw?#SmSC31wRF0|auUs$|_Va0+e3b>E%YB>tqvD2-yF|4}-pIcdc6^zHE zj8Rc@^IFmsNT*AQ`G*~}qXc@z370%t+g!LuJ0TApPcM}}$96JLFnnUf?@M(wRM|DQ z98~d|nOP>8`FhZalNb9HH4R8ZdJR$%k05eMW+s>WFz0*@j!T&(=nk|yuna05u-DEq zE26X2$2|Ky>kno>4c`%QvWS(|G?xSUzI2-%NaxO;;O(#SDNgJwwSU#q{rZxcF2qHW zximLLFBwNhae5GUO?KG898a@ZyGE1C9**3Xu1=z!zuB0U03hK8V}ow$f$a4cVTpAJ z^$Lyj2cnm{7|=N_rC2l(a_R|UxwP1J$=}z*#6+e{ImcNT#b)QZybxeRzPV|kZ2-!4 zU?FjWL0xXWY8zEs1e}<;(yasvVSjY-<44Ky?Tf|jgdd_fQG1XGymglOWn;)rP&#RK zqr^A0fgR<<(jju@%*m(Pwv&pRwZkIP66%IezP3##OxLD^M?b24isJ+bveIs?_}1&u z#{mR@5ErO5z-tl^fMi2qeAJnMHNHD~JZ8VRZEUcF*=u4ELdL2prx+$b13fhp>`ilq z?@b=fH`-n(kK((8He$q-^P&fwcNx|~+5&&ndT9Qgw?)B6xsHb`Xy?o#_clASnGZiz zo+eyC%pImc=bDZb}3GJmzw_3`lL-n`= z0*L;*3!rkb@t=4{UIg9&lqgXj=M?lRa-DG_rNL+n15%>`X*c}R?-*A-fw~yZI9kzu ziX{eWxD8^G3R$e2){M9whrU>BGL`Jy&p_r7>Oou*dkGQ!Tm5T;QQ^ypwMd?~ogJ|f zP8)1?pj_Q1yj51vv72q&=laskA2|aHuMXxyCo?dT;-)`sAZ|0qOyy)nT5S4oIoT%>Wf4I(_#v;;v1bC#H*%h;(-P-mkV&e-BxvXnl{pb z7;guCPxzdPWBnS(x;3VOPW_?~S)y{>ZDz(~e=+vc15Jkminp=tXsK^7NUlO}QMOYYf(>DNTn;Q|Z#S8}rv8lIsuA zbV$vbzvy61v;rCqY6erw054qDYs(~VaHhzd_`MMNA{{V}nxrSNXySOb;`dop&WbW+ z$rUUw({rgQ(XqyBt{dncbGF&RCcxiA?~#FA%92QV=J_+PZaiUL<%TEpxsq68omt~K zMzr3og7-i6Rd5!*1PR$)jF-mcr_u&aFSnM?-)I2|z!tG9+Yo)LOE8o(N zeqrd2`s7cwqh-W7mY|Rm{zbwOl)8)`WZLLGT5jBRyY~3o)FI}CyUwJ$J z#A^e!(&9extvRDF#Q34tc=i6ik$T%QySh<=!;)mVPlMZ=@sje;l+mb9L~$a~IA@J- z_6yakS1-d*`U_-|0Q1lT(Zhzl^lx{un@%0yB)yV~6aY+_J);(-IO|W%Ty%!`Q<_SF zG{;NeBik^PLIsxb+dV+2A&{Jx$FtU0wdciI9eO2a?vLTL{k>l(M1MWP^7I1#CS-DN zr5|OVUGv=5Q@DzK|Jsfi7m6EY$Z7Hu?7ZTY4zilZ&KZr{WhwTyUISs#m7E#R?DVj} zgQz@PQ6HAT?`S?F+O3dNb=+-sX})fA^9u-|^rm!RbYv=rm5Cj%n6GTHUq>ek ze$GdX9gdt3fZ)qNz8%GFsCa{lP8o~*65qZR^}UXfup~-NE1bf_e{6%`6iOnW3M^|3 z^G(Cki!C~H~&r;?b!%3HUdC|eq7Wvuy_N1 zwQa!PXAI*z<_u5P0fTm5tOTi>oUiIzJXbynHbk1*p7GoO5{lR+{oO8(^;3-gLfVl4 zaH^chbc`+|GcK@ass{yzQ^k@MC{T4+nv6iH&yBHf5~y3{rE&QqUnig#X8z-6p-~wn_ULErYuVTw6nyTvD*38) zaQ2gn&xNbQg0oVTAez{_!=YVokA(J&z7@%k%ln=zD2z_suFVwBY-N&!ktdx$qP>1Y zaVogyz^u)?3p|J#8Nw}D*SKjgqB@rhs8dL3yI(zC|3FLrXaPWq3z{nGGV3j)&r*n4 zM;b3PJK7*@*D3M3t)hYyNfwPg@#QsjHsJJiB7a0Y6scM)Y~_k=9+;>YsPGr4qYFle z=I1xU6zPB-m~P;qNWZqjt|OfGV8wf5Fg6DT*LTSNA^Ex@HtvW|{V4s@V(eUe_cYWK z`=K89Nuh?e0!XL`QYCR5WTk!D*o%rc=pkv5#c)V|W|zrHv46YGFrCF*oo7XKWi8G zW20PX&m<~euM`5MtdjXu0aL^w?-*`2eY9}w&yMFXfN49qiG@P%R z*)!!$Qd^8Uvz?E?hthEI%SS`tFk86*gqjW2Y?}22KexCsPv~Mv6^moMroDrYg4;D9 z&hD~w3Dp?rY;yT?o`1jm&Ga>riW0=@^$PNHcV!$x@c>dTI2(itnp;2ky@07ifWT1i zPWh8UNc#CBdRoEa=wYr1*|DO&FQWTz+D;qaIG69UP!sAFp;ViZBUE7Rl;r~L-6?6I zyfFO#*WQ}0L%Bq7mQrtE8yW$c_fL|G~!d&nM=E$fuM z> zoZf3o@Hf8I*>9zSo6Bp)vV0;SAqo>5M8$DQmS#X4jf7zU$aoX;(MLs8jAAy}b5#IGh5bYCUgTC?cIcdYweowhqJahZtJVlO#F z6Gt0jf2esOxN}(w0UJ}i_ff{pCDA78_Cztu>x!hsvN#t4&$pZ8XxzCx>znQ!S1X`t z-s;YspEVM~VOIIaZUiNKE`jRsL2R6i#}j>MKt+zFs=TaB98$eVA)`!g?8WELFH`>d z9oR9$r_0=Zr~&>9yod4fJ${>uX`Q9-9g)*e1T_^NE9`@8J{)$g9M*gz z_mTRi_K^cDNgD)KIO}KeTH_1*vr7GES>H)paq*MFna|1%mKH^VBf8?gGX9EWm4)C~ zGkDy^U^%Ghxr+11*3xj@2Dt0CO_l@N&rd+=+1;UbC6Ium4j_2ynne=Dhj~xESl(ul zcE4`wH7{FXr)q1)B#^F6`vqGVfPeAN>c?>HEo*1$`%DFTar zkhO>2BY^R*PncVW!jYvMdgdPYOQ(rHp^U3NEqbz|5;E=E z^M%0+`~h@G!0-pX6wleSwm{RHNgg~#nq$q~)GoEvgUJ7e3xU_CCnr&b{kY*2H&yz| zuB*aSfe%O%ECIcu+bn*%z*2L~dpem1sx^XWbKHJT`_c;_5l*W-1>C1l7k-9du@9AC z0QRoaZfA3v+)iaXP_Yn2eCW@GtcCXKQl9E^!rP)R)0_v{*lMv<#me$CyJ~5Bhf-+r zV@FE%y_bG)MpTtlCgKqHn9Om4usMF7h1-=`@ha`Y?sCz_RIfnW_G`o`Yt8#!F>a4GE3m%wwh7>V;Pu+G93Oy}_S7$`P^033;!-r_ro2%Y=oj}h%X zO8b}EM(a6`4bDB50TOx5mks0jJw(xyuO#o1c8?BXhHtVgoYA%B>UKX2B>=$$C;yF- zQD~M3=T20$Bl@+=7C;4g=z?9`uLb2;DvyOcmn>uHUN^nQSu^owY6aRki4ql zdNRCi4L6lI#3sEZWUh)g_OxMSWKsrA0mahBQ_spl62KGBzJavqcGw`g zX~64~D-0D^MdDWvHdQ5>H7LGrp>eTx6t-}WwD3e z*QY2XV~j*{b-|05@-&iO_YHkLJjK4$#U3_uXd6G+ihkgawgM@tH3Ro$uiT)%Of>T2x_hUdMM_$sQbfp zzl`Et1p5B;3;lSELcW8+sj70)Q&`%;?er|s?jh7pbFsg!=WyVkT!QKi7AWq}x{Og9 zeG(L2!yZbeKr-?CDa@|e3zt^&Kjalf{X$EX(|bf_8&^N45`zyBcJ%CrN-i`UKGpp| zPGn(!hY1oKe!QrF9F4prQ000tF5329qX9ud(~#ZkoO1>TC1g+OZ`Vougj>hrG`xTD zBk<-0m4gB(NXBV{?#P8>WUp6|=L0XE)k#{!5Nn~GZUjU1M0+9MIqbKV`fX!p6^b3Q z8DefnTRRpLtK*id#xT1V#R(5J?2U_fJfkA(?}Oq=n1z`VhKxoq&<)%0pl>eZh2VRS zP0SkVAPhPy4zZTK*Gw7@&xPPb3yV&24b3s~*4?kKiaKhefNy@j0!f4-P>}>8tB|h@ zkA>bY1jz5+uP)nqekeixs+yXMJh5_`66&Z}su`E!))t=$GAhBb+(|7q>=o^=8Dzs{ zgbB5OLx=gdPvd0bX;7yzV8bMS+OQ(hm*9v_&?x6FOI=wk;{IV3D=26B=`#y=Gj|rG z?i|D(d&WFMA))R0_|B-)wUBgVA-B63&9-8yP8aOL{GZ>zT$-uksCF?P+MO{x7JgaH z`Cg=b_(ZUtmZeed_qIL?Cvv2@IRa;&nw1Ax4Z$L*|Hc(pURV_f)jUydi--e*{K@kZ z+13jef5o}4z9@3xsvTD9L8tcG)klI-erkSsIx^0|3NZQNf0 zPOzu=n%)DJue+;Sr;-CrzA6jS#5yF+7$}K^!D|&814ya3fxN42BgYky9N{%qk@WiS zh|fPjbF{GnA~}&T&E3s&p`YOoAGVF8!XNqWrYz-PLQ_E58pKV$JtX*OuRf8l>t%bg z$K8c;yA2E*{%xrOvtvXd72@!NG%x})1v<9}3FTPk=vFJlqtDc*M*?5@#9&01X# zEz~`|^D0nioFqicAEB?_%3+@!N6yXwU}$+eLf*m@GE?TmeMmrtoP)t8FVqu5PSM1* zLNGAkNZwAknmQYZt3%!sxBYV{1>z!^9@!X?TJuLbC(Eti*Ub?v%1)uXX-}A@avZo3 z1oPW0Ks5MHAwQ7%g(XisZl5K6`S8)W}9>p!hI3e!Z@Ml)M9#RAuJw6ipSY!N8 z_=uE+0!)UCQ;GYqe9=k);H>$Jab*8<-9aeRC51_*=zaE|1*tpa ztic{rA-*aOQr5&I7ae=U-tzaB$jEO)QJ{EhY|p&g9O!m@+bK+%z%IpRdTdQ>o_^MI z%$DH6-J9U+S-a^YXz{g;!7?)!sr(KTd&1tE?I~{J+^TXWa9|*05c&FE=<&Lj^g1K*@GLgD}Q3ZnGB>Umb`D+|_1KJ(ITaNHzH4#G$}XZ;qV29cg=>(<|o8nI1-) z$&eE<%)QpL0d#DI*V!6F_$c2vz8Wt!t`5<^lzQ6O$Lsz83+<>o z!4iHcC|5Ip%E|gcdiJMtlm%R9)LecN(Ri;--#W9!n~3TQ(};++WMou*xKZr9T%%N*mBHmP`)&J8 zn&Shf8cl-2eWnQYj(p_x>Dfxz#p+S|6tkK2FH=j6e(d}GsP^^Bq-(lD$Eg!kUm*cX z?ad)do|w~|GyzkzSSU}KbKj=!T424QJ;kfF%eeeGa_GmS zL0k9^zc9a*4Z|@BYNyw@53z|US9O{o0(tq{K%4X3TK z`locuIH{&DoBe(};Z8F+D(U0mh!^MTAdX$*ew7$5KbkV=_pF&f*?8AR{K1=Fx2dZY z*_w3YM8Mf8W-Zy{(UeAN&;*r2XnaZUD~QvAigt{*kbuwl$>r6?Q@m0QMz7!Q5_aMY zx_Z`g7DB=rF5QUdK?|sLQLf{*EXS(*OlKqY$BKJ$%)Ts?s!U>ixuaZMmB^E=O3fi~ zm)Cu%jC9ZaLy}3fW{p}5Kzx9Uu_b>OxhzRXQB(;zh5g&g=Av7f9M^b5Nsfvn9V@R)v zkPy&`ZQCMxH%`#pUiZPG*%X@8oJ*3-%%F4m*`)@gz6RtxUVLf647PszW)Kn<_LEcq z&PaORg*%&?o~3L!QpKTp<@U1liIXRvEiW&-LmvSsGK~b;i=Tx4!iw1`PHZL8%mh{Z zrZ-9@LR~(TgCR;}8}e-bnAaS!)1kbQc#FMK3R} z`Uw?fcH$kmv$ zmC5hPuUZ&pU=Z@0;h43J#oeyVb+xH9`yxHo^&{;mrwTr2J^FE;=xn@EE>Ys_7<)`< z`%IZloi8SrC^q&LJGfPXRZ?U;aB#A@XJ;{Pm_y4~6dD>?HKO<~#0ke-_qDaNYu3um z&E3jMOFJ*Gq)1styNb=OuRxo395gQw6~@t}_IK*iG>Q+<%y#xN<>Geawe9GX_{{ke z5{|3n8}Q^cIEglwo#}7NGj_7s-45)TTXyv36iARd?kKx@eKhl%B zuWzyo3JNwSC2%ZA*=e=5BzIhEgNoeBi;ob{=7`g2UB6zZ3kw@VS&23iouFp4S{5#Y z_K*~m`$Uu{f>0Av)#AcJDAW=*!YYv2`Vp}_U)UbCVCCrOI6qLFlX-O;ib*>OV3CH# z;j{?!Ks1IopnYT<^u(1`p|^%b+HIak+UgMfsgTc~Ki93hxVqLOI?DL*At+Gnw*ta} zBb=O^1yJ3&vo*K47*<_foiY&^7&tZu(e-SJw6wGttfm5s<|sVz-5MLWLq^Ba(u4WI z(){^K=KHGv!a_i`GebNpgWXxN?$f6$@iHF5ZP7#i7vNc$tCs>;B;JLGgeYohX?0eD z23;fcqL|&idm51ljAGYaG$^@0jP5Iw_S&#Vp2%K04Y{~T(pJm6Hj89f*ODG9=3~Ut zD7)kbvSbo5X&GcKyd(44gLrXSAX%nIs~Q3;7dmX15#7&v9Cy-Y9XBGu`?^o?80w0M zbpnz7u2UI0v`xNx4ZXA3Wk(}icf@I;68Wd|$h_QoGgWLwGA}CUxar4OvQKe!Ul1?B zVX+*?^qUZ>uM$>2`G|sI-4FBYRV!ap5T&Ya(OFFBxOJ3sZE^B$IE5#VI>u~Pzx2Rm zryiq7-cPSM*ecOZx{qxBPw|)G$w1BV%waak=idxuWn|b69cBv}85x0nt6|*U)TBBD zP}K=^Pw?sEL)%b$d&-Nn$Y1X4eICq#5Eu)jmv0;@kb}wn1Of-5yxCc~KGzq`52r3# zw}yJ5ZO>TT5oClcrrv>-F-_grTAeZj20tND(Od0(3{c!-UB8N5o9_Gu?6ma`;b2Xm zqQMk|_(07Xzq#qoCgU#X>E)$+lIT1r^Wggxi6h7bTBkk?IMLJ5)dNpO#5TFrn5L?# z>Ue%Yp;dbW{7JW4%m>=j@D>LT9?UjLVqj1SV+&49OvL-dzJ479>#)Ashn!83?Ju^| z2cch1F)Hx!oR0ZPtYefK1&X%IVUG`u4>JoWHez;^jQR#o=1Po65-NT&ql>t~V`jJZ zT~19+Er1)Yvz!?+CeGR1yG(b4geT)cB=RJDO@8?h47%<1Vnahi_97-v2#0>` zmpnQ;Iz2O^CL0Y(P~o5s*XP0?78aInLbGntUE#K%E_10&Tl(d#a=C~aT4d(Os@>e& zl*QxtiKb_b1E7dlcX9_e0|ez;eDb0DiJ_Yr#C5{{W(Sl~CDtRU>(AG5k-QfVMg1f9z!`6QUpcJE0M zi)I)TZV)Lu!Yp7EM4?co=jZu6sfZq=CPD4qF?TE$>w?8LwjSWDqx4{Q_4=)DB+9TL zZw95Isdm?_x5Rf$YM-CBwY9nLEH{EKeYX=(A=Is&eBrHm?#lriaA{`HSl&52obYkz z`}e!`3|D8h-LHee2nP|HjQgcg#6^%~+L|jYEEJ&*^Me<}fmoJIgu4L97BWH4PS!_y zwKKslUc9J7sfx#if+}4Dl>Z;|!>L_;9Angt7#Fy!cu8$>;j&h^$KU3YbsTU|atW8(ESN{vQK z26WRbR*{~hl=et*b<)O015~Cz3xhK#U8QDPdV1~=S2;E0K`uLUZEtU<)aVlYGGuhKJd6^z-v<1_K%z8;`~HkjZ2-(1h#k>||J2SSSGVg&6HS z@87z(gs5*22^_#E^b~Yzl`$BM>A1II9X;&g^6=Cy4>_N07kd!1m6DP|E(eo-r(_uR zM662mw=!p|cq!M5)M02k$eS%Qg6AzNEoEL%m?>jpW8;&KM(kSuHrSG581g_L5<(RK zZw*Y2${op+qJBSX>&*Gs#l^)uPfaj+Q48Hr_0!z83>vK~`64mb%?tZ?h$T5WyyX=Y z<5)iu_L&?Bg0Cp{L8Or+<~kR(JT;XQdf<*HBqS(}GN4eFH-4%%FuiYa+`Y|5#b=BS zQ&;^Oy1>^EhY@S%2yMVXroCBiHCW3#C38j+ zx@g5LJ_o^=A>xYJi>puvZ_vw#=xEgil4=@O?ZpjCuG`eQ)X zoIdZ2Xn^%sUgy$vi!Tn5VPNR&>(ei4y_VJ}Bq@0Unh^L6??Wu$1dJly3O@IAJ#$SE z*-&r9w4=_M%9@%e)y|0ug-EI0P-=*tA9c;G$dFtm?H=4BDbEl}6OGiSqDj6&Tsw%o`;!YSnC?}CK1{gwQNCFcYxfRgUxgVAfV<&;TBO1k|B z`|$D`sp5qNu3QThCqW!OwibonmJXh4qz^J_SrqQ9gh_i2R<$ zl1G)2-%4-fql>erC3zES;}fK@T;in}>?(?NV6?}!rjo)D?PEm2@M%)MN*DGe<3Ll{ z?#5vAWLiT0HMP%w1_hmTtSqn}0Xn>+wc;X(KrnY35X$(#9%XJNLsW-$^+5y-q2ia} z3$C=wF6U;ka}49V>BYqxLzJ(PymsXq>a9OweL*Di@9=G#OdbdQy1!MIbJ2RDk5pq3 z`Y8L6>1pdV*uIIfUSmM=77kYy5?k7j`qc6-@#6!%^J10+AUYC3>vtuLcC(gqo?Q-` zA?z+yZ!3ttHb(va8(3{XxntEtTla$6!PsDOJ5xPC_cTW>?fSC)B2LZlR~sx=Jj0<66^A zQla^aCyoTlq_^06&dxYrR-5|JwW2m9EHQf}7IY%pr;W}9_}f;cYpBE^5pnY)T84E@ z66`#PMVfy(&!AmIfrZAg)ufV=k)e{g4|Vr&Q5)&--zx#~NkcCer+ooI;j0qgN-x4q z-`;5fFlCF@$|_Qx0O{rER$g|^HxLT&U0DVWo2ev-xL=74JNAD_1DQ5&@5;qhU0YMr zlreHo^<%gcxQqPq1n^Ht9D_KdPoF-8Y!pWk-!k>I8KUndM@f^~@f?&58$W|M+ZA+*pWr@5nJss4@;a53J@UNL$-CQ0I#yx}fT1hZ6ym?mc?vfA( z9swR9tNG!I()9O7P^g)Zf0%kc>AAwXY5(F06lmoiJkqc>xB-NqFE)zYq#~!|B0+++ zi{L$o5jGdGIKz@1kT`p4l5yZdwwNLFc7MC??Sj#&F5_)ygzparlB^tv+Wb+X0mj$u+hqE`C;W=2GiLXq6WGzM@t`xWwb9`H5Wo4CsCpie(#)ZHyF}KUC zUhmuiE4Ug2sqTfiPLJ22@Yvs~ys+~lRnmb^o{U4YIMNQ6Cho-{`QWs;s$yEQXEErhDgk>WMKMup%bw4As=jQZWrGy1k#V}(9Isku!lFL%A4%_3|Zx37sQ4~ zMiOyy2;fCX-GG#*4#J4B6(l+ZjvRTXI54Qs5YGznawU+~ErT#2cOsA+)par}tEh}a zzaJls5}2#F-mQ_pbNjGRV+R4tf1L#6z#H6*Kx{xrzO1aQPXQV3kb&>nBI$xR4vzru z4<7pD!>iygax_TmAe|Wmi1~wbqdbT{2G6OM>-uypi|T-VMtbmo<7XTg1D)o-6{Mt- z;z7W#IB%UR;4sjEMU?M=74EMDyVth)adw#C3E2bKjB1VU-4F)adZ|sVz!Rz(%VnwI zmW+_)WkKW)y?E5={1Kf^vMj)rPHf~Fd+UT)72-}mLJijX`h?1L)pEHUhr+5VSwN@9 z09GP#oTT&Q_4%Q)Li;j=6t8WA9d)WK3u?Dq@-KTvM`;8Do_<-6_n zXL{e~l2izXc;iaFw^ma6)J7B35&g&y9*DB3ZZx&Gv|3L*e@UWiWW9 zF&UFWAm$lYjKQ2V;gVov)?(ZEBiwwHjmq-WA1kO0#zUA3w;~BcH?{$L;%DG?FR(w% zdmrlk>wlSiAM`|uqY(53gbg|_8QZW1Bp?1z?YEK#+d7d1n$@)yL}V$4ambr6g-Cj? zS;O2hwKiK827i9qk7Q=Xc7Ow>%6=qi=Svb}6$Ce78yg#S?a>F%oIQ(lnVx`1F;+rc zoCz=&c*0|dr9l`tPI*ozr&zpP?81D3Dho4UkwE?zc@tn3rytLBN=H2Hj0Y<~JhQom z7O)I735|SMI7~-(-h|t*#6HU|F0=^fB2Jt*(S$q2!4Y2NMdA{#AwUC%QvMuW@(^q` zi_ece+b2LD)_83@B5B9GUl?ha@7#tU(F|JLEt+#NI60~}0#u3I#@*xNloA%XFI3hW|{z}>N&vJP0R z!AhRoe`mo%3(R0iQw5Y)FcbadQgll2q@ zoNrPx1RmT{W>zs3@+p^)DU$TvaR-Yg3t^l=Nee80&WJB9w$k7dDQjBPB72H`+r;+z zT(d6@oSG7j0Ejj+HwUi7qZqLUP`jI6cI_rDU~e!p_Jbw4V`2%S*tl&_VLddnF=?ufmKB zfybEf5NDp~CBIP`3{M;tT8$f#u=?6Q1aRB+<>7rGaG#0~Z@AeCH<}7ia(y#9^woQi z0Y&^me*vIKSU4(*Y*H>fuCJb;C$2FD3}&twA6K_c$yb7@8nkSKnCs}{3uUVxffD2n zJFy2pI2eaBX-|?*lKewqQF7Au7P8%2X3AR3g`I#UrS8bJG`kcW4#)TU#RfUo<-U6U zOeFN3zyLlAOYNOoMG#v)BKaJ(pf%uFf{15``9R2SH21Iby`q31kuY}Y+iq5*bN%+> zaEg(CZo~oyChtaqRHUS^!pr~QPh^AB$xo_Z4S+cGRu$P7R!zL5Q;NNLpeQWTORS$w z#Q{N?LQAl#&m>$N(R9D#;0y>=%$SowzvcoUqS$qwgZkZ&*8^XvFOv>m4HhSir1|~`cTE7Gsd?kiRIBBr0XM-ALuak6i5B>V zcArIO5PLp^dXT${(b)@>L_t^D4(KM1IRWu3Xu>i-T|7bP?`MJO3Pos1ZAHAnfFfB& z$j<;#YJ3n_rW99;!v2pFQHG|7COu5VQ@X}t@moNz_@I`~qFJAH_jJUUI-r&t2kKP| zB5*-xr8|^Bk{dvt_hv0e7!l&{Wzdsl9xju^a#Il}>WY~iCdPvUQ-*XPk|<0BVRo?K z0)||WE!J+=g7bQU z(PC^h5I2rX6Si*5id8|L^XX{V(6Vu*yO11ptDV~<3DDp27cJipW9$6@a1neBLD(kv zibyF_nHN)aFx^6!i9)W4*#@YgG~|H2mJO?3Z;jL5H|*Db5D$UlC*-moC7L=a6s zo6I$-f&qu*N#5oE@qNy)EEO>rf;Xb;V6=*!^4cTSM?UXgukerZBJ#WSiM;|&X%Q&$!Tdyn%Spkb|f(<(OAzt%^*RqXL3!??XFyKQ0{#F%N5SFo;USI z;eXf_I>Tp9XPx?8{O|8Uq418{2Uu)vL_7U|xsuwW6TzhGlRaU;+`WamODXWpU|WJIwhC*B=4&D2~E`Sd)e@7ZW2>Vbp$$>cqJ=>HXYH+QbkEs=Am z)igA_ZTf&{oY@6gEg&*NeQY?7e-qPtW_?eI;Z5)(TIYVnl*>o`m1EQ%BqwUKF+H_y zG-o`I$~&;WL)P}$i`rECM6U*l_9)-w@mUaPM~Uj7chz!KT8)yr!t|;R-mTW#CYcSa z1cdKB9i!dsX$77A=4lq{87H}^%ibKnpfuk(mvf5M-OTLYPq)tIs8dzFHbR0X4OGVu zE}-?H6MWUnv-kOIE&uHD{5ag^qKcseo9=GB{c^*<{EG6$C5hJLy! zW$fGTHA%h+ek`BhVO8lmmzyOfO_IszpB4Mhw|(mAcy%?(Xz%~| z@~_XEc|;o-t6*DI=zJeN@IkZ}Ly0aJZS`a6)2wo+rl<4ga%!$?b(&fu_8CX3_Y6pS z@MpUmnk(w$d70kZ+iUIM5ZVW9f+mtKJign1(zlS3_jR0W@EeyHBZBlI8bk}=U9s0_ zdz9_|b4}Fur%>YZsRww0kHRr{7TuekSS9Ds7jXQ%JkpFi#cSe+-EkP??Oc9_ZTL~A zc>TtWdOY47el+~R-@2})S--aCa(#Ej$y3TyDxEVu!*9z|3b#-*g)$<)WSvb-JC9B| zpC{w+MMAQqq(sTiPNS%}7=9SS4`oBHV=*NqAM+L*3Mw5u_&}LsK-ghRO4q>aVgPfj z2R^W-Ji)C+t+;$?YXV4EiPR_5BhA!4>QfB}L^cNriTT~S5fMUSVy+gkiEVugDHqgj zi#+Mxzkk&`r<%!`o7;)rBvzG_Slc;-!qu(q?4DicItJ2VLdB*^d}WK}20)!}t~2Y> zS@J9M-hj+@6F0GBU-9NjtcNspT-SUF zQgNem=wF_seXiY^riEkxobKE=~>>n6Fd27q4QgO!i8nS_0A$9jW?;m*_Z7nvl;CD0}UU6c>N15uXCEy<~08h%IrhYblcCl zre*02=ZQbk5$WAqm;Pm4YgYr~yOcXTiL*vh+1F-NY0I*7%*_9?RP_(YE)pt;vLt)P zacZdimW^lY=TleFinUpKuQM$u!TQ*fu4AW*GOX{wSdHFK8)@q{v!PDPTD$z8LHlId zd+TaoSH)!&#m?V;hc@QtE>=@r3z6bVQQ|6-8_7!r&z05u?X=Jl_tGYtiW-`R%(x=5 z%C3Hh>O8@;Vw@CFLldwrH8aE%_VK3Uv>-g=rcBDisytB+|1E8eDgkd3)+?D}?gr=z z-hjgzB+jg;y+P|R|M^T!AW#O8b9Jx~NhViF_-uAq!*fPcRkC-N9V$;&P4h{lG7S%% z2;)H(koiDs-NW4=+oUSgRuXp<_ic)X$-5b z1{N{+W)BZv2C+hopyYo1QOl;D>8>LR=+?F#Qp`d6Ze$5%ayJP^Xus-u^yJ!J#|uiN z59X>Sy{V=`E<;RZGWJY&EK>w4C$E^2ZOE?%A1ztURc*uGffS^TXy981iDyFvjJc`}vI453;DwIo#vVgS%&sOm>OeyZKj$*|rHv1_4l)i->vj z0kW^HMzpdSkG(Jcx8L8tPdo63Ejv(^Ulq<}`LN_MQxba>-SK{{Np52Aq}CdDS^QvW7OYS2_Z8wmcNx9#r!W zIG=T)w8~uHgilTH1i-p` zZ;9Q^n|VwdpdNRYCQVE!YGkymH(eF$cF65;wP<$k%Gh%Q2E%RaVlm#}`G%f$;0=4v#8i~@0nd7@3v@h4aqSULB_-h`lNXs#x` zq3GZjbSxKhw{bj;0$m!mtF7nz&}9ekCJwB*63`2{Uo<-AS9%(|hq=jtU|OFg`|gcL z%dPH%EM3YLJl=_RA$+tVZ^ep#u<|&!+c^Z`PyF7&c2P`u@>I_7Oqouq`HYv^zTmeG z0xoK>GD5pp7D`(Fb%(1wP*Bg2G{{_;_+7lucc{*soe{F%hfovl6Ef;LZy?T``&oy z{c-FTjS&9m{mkAYWv^q;@P@YCG$?ew7uXe>z$6nA^fXoI90Y9lvP2*0%#7R5xy&@F zMQ-d(gFnV5#^l#wPqo&kYFGb4XLPlv3g1 zGLtD+KMd@=Z3HtD7lWUB>k;|O5w$^ePr6Svw~0-(0qr?GpdcT4KfizOpCHbjKNdE+ z56n`#U0G^jh4g;WeDzdeM!9@E+nvqIt`(cP`))lofA-8er+rF>_(HNpsVXlmN*}!^ zor#)Z(u12RnFLqCfA5L<+&fWv{{TCf__Xl#u>1|K3kM8}E{X~Ep1hxFk?`z`{j6)ThfV%I z>l?-Rx&A;}X1kwh6=apX4pw3@56T>AGSK3DTOqZd?}iQCv*JLOi?aD8q4g=~(1d5- zAH~vj4B2Mouj8%v?QK5)e#0VgNuIyZ6<6MfJ9K3=I|IhgD{_+GvKT)Y6H@ucazEeU z;=kxMFggFk9Qy4k^uj;ztg0Qq{eI>Ay69!wpm!KqSA%ay{6&j$9Q)8`PVvgWhQsdrA+I;5m9`bJ2SMr{lyU+T(a<+jwQv*;%`X_#>CG zczcv>+U>n1)FOX1Q0lTVs^u@`rUu=@eVI@G{jB68TK$-AnvQr;X>n#);+M1jx!XRj z|08ko-$cuQ^Fy#e|KH}sDDr0>jxV`rj+}t6KJTJr;9`Ey#X`#Lp#}Uv2@48~@C!=v z3yRzl7LpQ@loFHR6%>>b6m+xe02QwP@c{=%a~n&K|N93HiCZI3nCG7>xY#&YIJ?|) Yc<_J!%uP4sw7wY!i07igGwnE(I) literal 0 HcmV?d00001 diff --git a/docs/img/OTEL - validation process.png b/docs/img/OTEL - validation process.png new file mode 100644 index 0000000000000000000000000000000000000000..ab2571ef2edf3391baa325e88580c59c257b9eba GIT binary patch literal 215556 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%0AcU%=#pO&63p8`Och>^E9MZSgW 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їM_R-WJwjRI)-pGE3`t>b`fNhOmy=d4c<1vj+ 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 0 || len(missingActualVPaths) > 0 { - assert.FailNow(t, "Traces are not equivalent") + t.FailNow("Traces are not equivalent") } } // NotEquiv asserts that two arrays of json.Marshaler are not equivalent. See Equiv for the definition of equivalence. -func NotEquiv(t *testing.T, expected []json.Marshaler, actual []json.Marshaler) { +func NotEquiv(t Testing, expected []json.Marshaler, actual []json.Marshaler) { t.Helper() expectedVPaths, err := vPaths(expected) if err != nil { - assert.FailNow(t, "Failed to convert expected traces to canonical representation", err) + t.FailNow("Failed to convert expected traces to canonical representation", err) } actualVPaths, err := vPaths(actual) if err != nil { - assert.FailNow(t, "Failed to convert actual traces to canonical representation", err) + t.FailNow("Failed to convert actual traces to canonical representation", err) } missingExpectedVPaths := difference(expectedVPaths, actualVPaths) missingActualVPaths := difference(actualVPaths, expectedVPaths) if len(missingExpectedVPaths) == 0 && len(missingActualVPaths) == 0 { - assert.FailNow(t, "Traces should not be equivalent") + t.FailNow("Traces should not be equivalent") } } @@ -224,9 +257,9 @@ func exportAllVPaths(traces map[string]interface{}, currentVPath string, vPaths } } -// nonPositionalIndex returns a string that can be used to identify: -// - a resource, -// - a scope, +// nonPositionalIndex returns a string that can be used to identify: resource, +// scope, event, link, attribute, span, metrics, dataPoints. +// // Note: The string `_` is returned if the key is not supported. func nonPositionalIndex(key string, vMap map[string]interface{}) string { switch key { @@ -240,11 +273,8 @@ func nonPositionalIndex(key string, vMap map[string]interface{}) string { if ok { return sig(scope) } - case "events", "links": - return sig(vMap) - case "attributes": - return sig(vMap) - case "spans": + case "events", "links", "attributes", "spans", "quantileValues", + "filteredAttributes", "exemplars", "dataPoints", "metrics", "logRecords", "values": return sig(vMap) } return "_" @@ -308,8 +338,9 @@ func mapSig(vMap map[string]interface{}) string { sigBuilder.WriteString(",") } - // Special case for attributes, which are sorted by key. - if key == "attributes" { + // Special case for attributes (and filtered attributes), which are + // sorted by key. + if key == "attributes" || key == "filteredAttributes" { attributes, ok := vMap[key].([]interface{}) if ok { attrsSig, done := tryAttributesSig(attributes) @@ -322,9 +353,9 @@ func mapSig(vMap map[string]interface{}) string { } } - // Special case for events and links, which are sorted by non-positional - // index. - if key == "events" || key == "links" { + // Special case for events, links, and exemplars, which are sorted by + // non-positional index. + if key == "events" || key == "links" || key == "exemplars" || key == "values" { items, ok := vMap[key].([]interface{}) if ok { sig, done := itemsSig(key, items) @@ -453,18 +484,18 @@ func jsonifyFromBytes(jsonBytes []byte) (map[string]interface{}, error) { // JSONCanonicalEq compares two JSON objects for equality after converting // them to a canonical form. This is useful for comparing JSON objects that may // have different key orders or array orders. -func JSONCanonicalEq(t *testing.T, expected interface{}, actual interface{}) { +func JSONCanonicalEq(t Testing, expected interface{}, actual interface{}) { t.Helper() expected, err := jsonFrom(expected) - require.NoError(t, err) + t.NoError(err) actual, err = jsonFrom(actual) - require.NoError(t, err) + t.NoError(err) expectedID := CanonicalObjectID(expected) actualID := CanonicalObjectID(actual) - assert.Equal(t, expectedID, actualID) + t.Equal(expectedID, actualID) } // CanonicalObjectID computes a unique ID for an object. diff --git a/pkg/otel/assert/equiv_test.go b/pkg/otel/assert/equiv_test.go index 1924fa79c4..c9c8c52433 100644 --- a/pkg/otel/assert/equiv_test.go +++ b/pkg/otel/assert/equiv_test.go @@ -27,6 +27,7 @@ import ( func TestEquiv(t *testing.T) { t.Parallel() + stdTesting := NewStdUnitTest(t) traces := ptrace.NewTraces() rs := traces.ResourceSpans().AppendEmpty() rs.Resource().Attributes().PutStr("foo1", "bar") @@ -43,7 +44,7 @@ func TestEquiv(t *testing.T) { ptraceotlp.NewExportRequestFromTraces(traces), ptraceotlp.NewExportRequestFromTraces(traces), } - Equiv(t, expectedTraces, actualTraces) + Equiv(stdTesting, expectedTraces, actualTraces) traces = ptrace.NewTraces() rs = traces.ResourceSpans().AppendEmpty() @@ -53,12 +54,13 @@ func TestEquiv(t *testing.T) { actualTraces = []json.Marshaler{ ptraceotlp.NewExportRequestFromTraces(traces), } - NotEquiv(t, expectedTraces, actualTraces) + NotEquiv(stdTesting, expectedTraces, actualTraces) } func TestEquivSortAndMerge(t *testing.T) { t.Parallel() + stdTesting := NewStdUnitTest(t) split_res_and_scope := ptrace.NewTraces() rs := split_res_and_scope.ResourceSpans().AppendEmpty() rs.Resource().Attributes().PutStr("k2", "v2") @@ -187,12 +189,13 @@ func TestEquivSortAndMerge(t *testing.T) { actualTraces := []json.Marshaler{ ptraceotlp.NewExportRequestFromTraces(split_res_and_scope), } - Equiv(t, expectedTraces, actualTraces) + Equiv(stdTesting, expectedTraces, actualTraces) } func TestSingleResScope(t *testing.T) { t.Parallel() + stdTesting := NewStdUnitTest(t) expected := "{\n \"resourceSpans\": [\n {\n \"resource\": {\n \"attributes\": [\n {\n \"key\": \"hostname\",\n \"value\": {\n \"stringValue\": \"host3.mydomain.com\"\n }\n },\n {\n \"key\": \"unique3\",\n \"value\": {\n \"stringValue\": \"uv3\"\n }\n },\n {\n \"key\": \"ip\",\n \"value\": {\n \"stringValue\": \"192.168.0.3\"\n }\n },\n {\n \"key\": \"version\",\n \"value\": {\n \"doubleValue\": 1.5\n }\n },\n {\n \"key\": \"status\",\n \"value\": {\n \"intValue\": \"500\"\n }\n },\n {\n \"key\": \"up\",\n \"value\": {\n \"boolValue\": false\n }\n }\n ]\n },\n \"scopeSpans\": [\n {\n \"scope\": {\n \"name\": \"fake_generator\",\n \"version\": \"1.0.1\"\n },\n \"spans\": [\n {\n \"traceId\": \"6d759c9c5e1a049927ca069a497b0508\",\n \"spanId\": \"90d5ead3745935bd\",\n \"traceState\": \"maiores\",\n \"parentSpanId\": \"\",\n \"kind\": 2,\n \"droppedAttributesCount\": 9,\n \"droppedEventsCount\": 9,\n \"droppedLinksCount\": 6,\n \"status\": {\n \"message\": \"OK\"\n }\n },\n {\n \"traceId\": \"72e8551d2f079f29231aa57088384785\",\n \"spanId\": \"35ce5d0711df60f2\",\n \"parentSpanId\": \"35ce5d0711df60f2\",\n \"name\": \"GET /user-info\",\n \"startTimeUnixNano\": \"1668124800000010667\",\n \"endTimeUnixNano\": \"1668124800000010668\",\n \"droppedAttributesCount\": 8,\n \"events\": [\n {\n \"timeUnixNano\": \"1668124800000010672\"\n },\n {\n \"timeUnixNano\": \"1668124800000010674\",\n \"name\": \"odit\",\n \"droppedAttributesCount\": 2\n },\n {\n \"timeUnixNano\": \"1668124800000010672\",\n \"name\": \"velit\",\n \"attributes\": [\n {\n \"key\": \"attr_0\",\n \"value\": {\n \"stringValue\": \"est\"\n }\n },\n {\n \"key\": \"attr_1\",\n \"value\": {\n \"doubleValue\": 0.017895097521176077\n }\n },\n {\n \"key\": \"attr_2\",\n \"value\": {\n \"stringValue\": \"consectetur\"\n }\n }\n ],\n \"droppedAttributesCount\": 9\n },\n {\n \"name\": \"exercitationem\"\n },\n {\n \"timeUnixNano\": \"1668124800000010672\",\n \"name\": \"soluta\",\n \"droppedAttributesCount\": 9\n },\n {\n \"timeUnixNano\": \"1668124800000010672\",\n \"droppedAttributesCount\": 7\n },\n {}\n ],\n \"links\": [\n {\n \"traceId\": \"72e8551d2f079f29231aa57088384785\",\n \"spanId\": \"\",\n \"traceState\": \"ut\",\n \"attributes\": [\n {\n \"key\": \"attr_0\",\n \"value\": {\n \"intValue\": \"4055508854307121380\"\n }\n },\n {\n \"key\": \"attr_1\",\n \"value\": {\n \"intValue\": \"2603754219448080514\"\n }\n },\n {\n \"key\": \"attr_2\",\n \"value\": {\n \"stringValue\": \"ut\"\n }\n },\n {\n \"key\": \"attr_3\",\n \"value\": {\n \"intValue\": \"542986775976848616\"\n }\n },\n {\n \"key\": \"attr_4\",\n \"value\": {\n \"intValue\": \"5562030613432072994\"\n }\n }\n ],\n \"droppedAttributesCount\": 8\n },\n {\n \"traceId\": \"\",\n \"spanId\": \"\",\n \"traceState\": \"vel\",\n \"droppedAttributesCount\": 6\n }\n ],\n \"status\": {\n \"code\": 1\n }\n }\n ]\n }\n ],\n \"schemaUrl\": \"https://opentelemetry.io/schemas/1.0.0\"\n }\n ]\n }" actual := ptrace.NewTraces() @@ -271,12 +274,13 @@ func TestSingleResScope(t *testing.T) { actualTraces, err := ptraceotlp.NewExportRequestFromTraces(actual).MarshalJSON() assert.NoError(t, err) - EquivFromBytes(t, []byte(expected), actualTraces) + EquivFromBytes(stdTesting, []byte(expected), actualTraces) } func TestNotEquivSortAndMerge(t *testing.T) { t.Parallel() + stdTesting := NewStdUnitTest(t) traces_1 := ptrace.NewTraces() rs := traces_1.ResourceSpans().AppendEmpty() rs.Resource().Attributes().PutStr("k2", "v2") @@ -351,7 +355,7 @@ func TestNotEquivSortAndMerge(t *testing.T) { actualTraces := []json.Marshaler{ ptraceotlp.NewExportRequestFromTraces(traces_1), } - NotEquiv(t, expectedTraces, actualTraces) + NotEquiv(stdTesting, expectedTraces, actualTraces) } func TestNonPositionalIndex(t *testing.T) { diff --git a/pkg/otel/logs/arrow/all_test.go b/pkg/otel/logs/arrow/all_test.go index 82d9bd08e8..7520bb7d36 100644 --- a/pkg/otel/logs/arrow/all_test.go +++ b/pkg/otel/logs/arrow/all_test.go @@ -44,6 +44,7 @@ var DefaultDictConfig = cfg.NewDictionary(math.MaxUint16) func TestLogs(t *testing.T) { t.Parallel() + stdTesting := jsonassert.NewStdUnitTest(t) producerStats := stats.NewProducerStats() pool := memory.NewCheckedAllocator(memory.NewGoAllocator()) defer pool.AssertSize(t, 0) @@ -88,7 +89,7 @@ func TestLogs(t *testing.T) { ,{"body":{"str":"body2","type":1},"dropped_attributes_count":1,"flags":2,"id":1,"observed_time_unix_nano":"1970-01-01 00:00:00.000000004","resource":{"dropped_attributes_count":1,"id":1,"schema_url":"schema2"},"schema_url":"schema2","scope":{"dropped_attributes_count":1,"id":0,"name":"scope2","version":"1.0.2"},"severity_number":2,"severity_text":"severity2","span_id":"qgAAAAAAAAA=","time_unix_nano":"1970-01-01 00:00:00.000000003","trace_id":"qgAAAAAAAAAAAAAAAAAAAA=="} ]` - jsonassert.JSONCanonicalEq(t, expected, actual) + jsonassert.JSONCanonicalEq(stdTesting, expected, actual) for _, relatedRecord := range relatedRecords { switch relatedRecord.PayloadType() { diff --git a/pkg/otel/logs/otlp/logs.go b/pkg/otel/logs/otlp/logs.go index a7bdeb15aa..e0a8555acf 100644 --- a/pkg/otel/logs/otlp/logs.go +++ b/pkg/otel/logs/otlp/logs.go @@ -124,11 +124,10 @@ func LogsFrom(record arrow.Record, relatedData *RelatedData) (plog.Logs, error) // Process log record fields logRecord := logRecordSlice.AppendEmpty() - deltaID, err := arrowutils.U16FromRecord(record, logRecordIDs.ID, row) + deltaID, err := arrowutils.NullableU16FromRecord(record, logRecordIDs.ID, row) if err != nil { return logs, werror.Wrap(err) } - ID := relatedData.LogRecordIDFromDelta(deltaID) timeUnixNano, err := arrowutils.TimestampFromRecord(record, logRecordIDs.TimeUnixNano, row) if err != nil { @@ -229,10 +228,15 @@ func LogsFrom(record arrow.Record, relatedData *RelatedData) (plog.Logs, error) } logRecordAttrs := logRecord.Attributes() - attrs := relatedData.LogRecordAttrMapStore.AttributesByID(ID) - if attrs != nil { - attrs.CopyTo(logRecordAttrs) + + if deltaID != nil { + ID := relatedData.LogRecordIDFromDelta(*deltaID) + attrs := relatedData.LogRecordAttrMapStore.AttributesByID(ID) + if attrs != nil { + attrs.CopyTo(logRecordAttrs) + } } + droppedAttributesCount, err := arrowutils.U32FromRecord(record, logRecordIDs.DropAttributesCount, row) if err != nil { return logs, werror.WrapWithContext(err, map[string]interface{}{"row": row}) diff --git a/pkg/otel/logs/validation_test.go b/pkg/otel/logs/validation_test.go index dc7ad56e75..f7f9a49cee 100644 --- a/pkg/otel/logs/validation_test.go +++ b/pkg/otel/logs/validation_test.go @@ -80,6 +80,8 @@ func CheckEncodeDecode( t *testing.T, expectedRequest plogotlp.ExportRequest, ) { + stdTesting := assert.NewStdUnitTest(t) + // Convert the OTLP logs request to Arrow. pool := memory.NewCheckedAllocator(memory.NewGoAllocator()) defer pool.AssertSize(t, 0) @@ -118,7 +120,7 @@ func CheckEncodeDecode( record.Release() - assert.Equiv(t, []json.Marshaler{expectedRequest}, []json.Marshaler{plogotlp.NewExportRequestFromLogs(logs)}) + assert.Equiv(stdTesting, []json.Marshaler{expectedRequest}, []json.Marshaler{plogotlp.NewExportRequestFromLogs(logs)}) } func MultiRoundOfCheckEncodeMessUpDecode( diff --git a/pkg/otel/metrics/arrow/ehistogram_dp.go b/pkg/otel/metrics/arrow/ehistogram_dp.go index 1c873f7553..48e3e67f32 100644 --- a/pkg/otel/metrics/arrow/ehistogram_dp.go +++ b/pkg/otel/metrics/arrow/ehistogram_dp.go @@ -180,6 +180,7 @@ func (b *EHistogramDataPointBuilder) Build() (record arrow.Record, err error) { // Intermediaries steps may be required to update the schema. for { b.attrsAccu.Reset() + b.exemplarAccumulator.Reset() record, err = b.TryBuild(b.attrsAccu) if err != nil { if record != nil { diff --git a/pkg/otel/metrics/arrow/histogram_dp.go b/pkg/otel/metrics/arrow/histogram_dp.go index a920dc4905..980363289a 100644 --- a/pkg/otel/metrics/arrow/histogram_dp.go +++ b/pkg/otel/metrics/arrow/histogram_dp.go @@ -181,6 +181,7 @@ func (b *HistogramDataPointBuilder) Build() (record arrow.Record, err error) { // Intermediaries steps may be required to update the schema. for { b.attrsAccu.Reset() + b.exemplarAccumulator.Reset() record, err = b.TryBuild(b.attrsAccu) if err != nil { if record != nil { diff --git a/pkg/otel/metrics/arrow/number_data_point.go b/pkg/otel/metrics/arrow/number_data_point.go index ca909bf89a..77d0c61a7b 100644 --- a/pkg/otel/metrics/arrow/number_data_point.go +++ b/pkg/otel/metrics/arrow/number_data_point.go @@ -171,6 +171,7 @@ func (b *DataPointBuilder) Build() (record arrow.Record, err error) { // Intermediaries steps may be required to update the schema. for { b.attrsAccu.Reset() + b.exemplarAccumulator.Reset() record, err = b.TryBuild(b.attrsAccu) if err != nil { if record != nil { diff --git a/pkg/otel/metrics/validation_test.go b/pkg/otel/metrics/validation_test.go index 20e6c29bb1..57e74acb45 100644 --- a/pkg/otel/metrics/validation_test.go +++ b/pkg/otel/metrics/validation_test.go @@ -48,7 +48,7 @@ func TestMetricsEncodingDecoding(t *testing.T) { t.Parallel() metricsGen := MetricsGenerator() - expectedRequest := pmetricotlp.NewExportRequestFromMetrics(metricsGen.GenerateAllKindOfMetrics(100, 100)) + expectedRequest := pmetricotlp.NewExportRequestFromMetrics(metricsGen.GenerateRandomMetrics(50, 100)) CheckEncodeDecode(t, expectedRequest) } @@ -127,6 +127,8 @@ func MetricsGenerator() *datagen.MetricsGenerator { } func CheckEncodeDecode(t *testing.T, expectedRequest pmetricotlp.ExportRequest) { + stdTesting := assert.NewStdUnitTest(t) + // Convert the OTLP metrics request to Arrow. pool := memory.NewCheckedAllocator(memory.NewGoAllocator()) defer pool.AssertSize(t, 0) @@ -165,7 +167,7 @@ func CheckEncodeDecode(t *testing.T, expectedRequest pmetricotlp.ExportRequest) record.Release() - assert.Equiv(t, []json.Marshaler{expectedRequest}, []json.Marshaler{pmetricotlp.NewExportRequestFromMetrics(metrics)}) + assert.Equiv(stdTesting, []json.Marshaler{expectedRequest}, []json.Marshaler{pmetricotlp.NewExportRequestFromMetrics(metrics)}) } // MultiRoundOfCheckEncodeMessUpDecode tests the robustness of the conversion of diff --git a/pkg/otel/traces/arrow/all_test.go b/pkg/otel/traces/arrow/all_test.go index 64a1ea356d..0b1418a62e 100644 --- a/pkg/otel/traces/arrow/all_test.go +++ b/pkg/otel/traces/arrow/all_test.go @@ -245,6 +245,8 @@ func TestLink(t *testing.T) { func TestTraces(t *testing.T) { t.Parallel() + stdTesting := jsonassert.NewStdUnitTest(t) + producerStats := stats.NewProducerStats() pool := memory.NewCheckedAllocator(memory.NewGoAllocator()) defer pool.AssertSize(t, 0) @@ -292,7 +294,7 @@ func TestTraces(t *testing.T) { ,{"dropped_attributes_count":1,"dropped_events_count":1,"dropped_links_count":1,"duration_time_unix_nano":"1ms","id":1,"kind":3,"name":"span2","parent_span_id":"qgAAAAAAAAA=","resource":{"dropped_attributes_count":1,"id":1,"schema_url":"schema2"},"schema_url":"schema2","scope":{"dropped_attributes_count":1,"id":0,"name":"scope2","version":"1.0.2"},"span_id":"qgAAAAAAAAA=","start_time_unix_nano":"1970-01-01 00:00:00.000000003","status":{"code":2,"status_message":"message2"},"trace_id":"qgAAAAAAAAAAAAAAAAAAAA==","trace_state":"key1=value2"} ]` - jsonassert.JSONCanonicalEq(t, expected, actual) + jsonassert.JSONCanonicalEq(stdTesting, expected, actual) for _, relatedRecord := range relatedRecords { switch relatedRecord.PayloadType() { diff --git a/pkg/otel/traces/arrow/traces.go b/pkg/otel/traces/arrow/traces.go index 045b0746be..aa9e1931b2 100644 --- a/pkg/otel/traces/arrow/traces.go +++ b/pkg/otel/traces/arrow/traces.go @@ -204,8 +204,13 @@ func (b *TracesBuilder) Append(traces ptrace.Traces) error { spanLinks := span.Span.Links() ID := spanID - b.ib.Append(ID) - spanID++ + if spanAttrs.Len() == 0 && spanEvents.Len() == 0 && spanLinks.Len() == 0 { + // No related data found + b.ib.AppendNull() + } else { + b.ib.Append(ID) + spanID++ + } // === Process resource and schema URL === resAttrs := span.Resource.Attributes() diff --git a/pkg/otel/traces/otlp/traces.go b/pkg/otel/traces/otlp/traces.go index e80737eecb..7a3eece6f8 100644 --- a/pkg/otel/traces/otlp/traces.go +++ b/pkg/otel/traces/otlp/traces.go @@ -132,11 +132,10 @@ func TracesFrom(record arrow.Record, relatedData *RelatedData) (ptrace.Traces, e // Process span fields span := spanSlice.AppendEmpty() - deltaID, err := arrowutils.U16FromRecord(record, traceIDs.ID, row) + deltaID, err := arrowutils.NullableU16FromRecord(record, traceIDs.ID, row) if err != nil { return traces, werror.Wrap(err) } - ID := relatedData.SpanIDFromDelta(deltaID) traceID, err := arrowutils.FixedSizeBinaryFromRecord(record, traceIDs.TraceID, row) if err != nil { @@ -210,22 +209,27 @@ func TracesFrom(record arrow.Record, relatedData *RelatedData) (ptrace.Traces, e } span.Status().SetCode(ptrace.StatusCode(code)) } - spanAttrs := span.Attributes() - attrs := relatedData.SpanAttrMapStore.AttributesByID(ID) - if attrs != nil { - attrs.CopyTo(spanAttrs) - } - events := relatedData.SpanEventsStore.EventsByID(ID) - eventSlice := span.Events() - for _, event := range events { - event.MoveTo(eventSlice.AppendEmpty()) - } + if deltaID != nil { + ID := relatedData.SpanIDFromDelta(*deltaID) + + spanAttrs := span.Attributes() + attrs := relatedData.SpanAttrMapStore.AttributesByID(ID) + if attrs != nil { + attrs.CopyTo(spanAttrs) + } - links := relatedData.SpanLinksStore.LinksByID(ID) - linkSlice := span.Links() - for _, link := range links { - link.MoveTo(linkSlice.AppendEmpty()) + events := relatedData.SpanEventsStore.EventsByID(ID) + eventSlice := span.Events() + for _, event := range events { + event.MoveTo(eventSlice.AppendEmpty()) + } + + links := relatedData.SpanLinksStore.LinksByID(ID) + linkSlice := span.Links() + for _, link := range links { + link.MoveTo(linkSlice.AppendEmpty()) + } } var tid pcommon.TraceID diff --git a/pkg/otel/traces/validation_test.go b/pkg/otel/traces/validation_test.go index a8ead48059..71fd348cd4 100644 --- a/pkg/otel/traces/validation_test.go +++ b/pkg/otel/traces/validation_test.go @@ -284,6 +284,8 @@ func CheckEncodeDecode( t *testing.T, expectedRequest ptraceotlp.ExportRequest, ) { + stdTesting := assert.NewStdUnitTest(t) + // Convert the OTLP traces request to Arrow. pool := memory.NewCheckedAllocator(memory.NewGoAllocator()) defer pool.AssertSize(t, 0) @@ -322,7 +324,7 @@ func CheckEncodeDecode( record.Release() - assert.Equiv(t, []json.Marshaler{expectedRequest}, []json.Marshaler{ptraceotlp.NewExportRequestFromTraces(traces)}) + assert.Equiv(stdTesting, []json.Marshaler{expectedRequest}, []json.Marshaler{ptraceotlp.NewExportRequestFromTraces(traces)}) } func MultiRoundOfCheckEncodeMessUpDecode( @@ -411,6 +413,7 @@ func TestConversionFromRealData(t *testing.T) { func checkTracesConversion(t *testing.T, expectedRequest ptraceotlp.ExportRequest) { //nolint:unused // only used for testing t.Helper() + stdTesting := assert.NewStdUnitTest(t) pool := memory.NewCheckedAllocator(memory.NewGoAllocator()) defer pool.AssertSize(t, 0) @@ -447,7 +450,7 @@ func checkTracesConversion(t *testing.T, expectedRequest ptraceotlp.ExportReques defer record.Release() - assert.Equiv(t, []json.Marshaler{expectedRequest}, []json.Marshaler{ptraceotlp.NewExportRequestFromTraces(traces)}) + assert.Equiv(stdTesting, []json.Marshaler{expectedRequest}, []json.Marshaler{ptraceotlp.NewExportRequestFromTraces(traces)}) } func traceID(id string) [16]byte { From e961deb9fa86156955e3ee6e0b953e568e7882a7 Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Wed, 9 Aug 2023 17:01:23 -0700 Subject: [PATCH 3/3] Validation test utility for traces; validation processor for on-line validation; minor fixes (#203) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * skeleton span validator * three validation files * three validation files (part 2) * missing files * diagram * WIP validation hacks * both do not mutate data * add the test verifier * Add some HOWTO * Write up the validation connector * edit README * tidy comments * fix test --------- Co-authored-by: Laurent QuĂ©rel --- collector/cmd/otelarrowcol/components.go | 12 +- .../connector/validationconnector/README.md | 137 +++++++ .../validationconnector/validation.go | 360 ++++++++++++++++++ .../validationconnector/validation.png | Bin 0 -> 34376 bytes collector/examples/synthesize/record.yaml | 50 +-- collector/examples/synthesize/replay.yaml | 82 +++- .../gen/exporter/fileexporter/factory.go | 23 +- .../exporter/fileexporter/file_exporter.go | 6 +- .../gen/exporter/otlpexporter/config_test.go | 22 +- .../gen/exporter/otlpexporter/factory.go | 6 +- .../gen/exporter/otlpexporter/factory_test.go | 4 +- .../otlpexporter/internal/arrow/stream.go | 1 - .../otlpexporter/testdata/config.yaml | 1 + .../processor/obfuscationprocessor/config.go | 18 +- .../processor/obfuscationprocessor/factory.go | 52 ++- .../obfuscationprocessor/processor.go | 1 + go.mod | 2 +- pkg/otel/assert/equiv.go | 55 ++- tools/trace_verify/main.go | 85 +++++ 19 files changed, 827 insertions(+), 90 deletions(-) create mode 100644 collector/connector/validationconnector/README.md create mode 100644 collector/connector/validationconnector/validation.go create mode 100644 collector/connector/validationconnector/validation.png create mode 100644 tools/trace_verify/main.go diff --git a/collector/cmd/otelarrowcol/components.go b/collector/cmd/otelarrowcol/components.go index ec25b23125..149ffbb00e 100644 --- a/collector/cmd/otelarrowcol/components.go +++ b/collector/cmd/otelarrowcol/components.go @@ -1,16 +1,18 @@ package main import ( - "github.com/f5/otel-arrow-adapter/collector/gen/exporter/otlpexporter" + "github.com/f5/otel-arrow-adapter/collector/connector/validationconnector" "github.com/f5/otel-arrow-adapter/collector/gen/exporter/fileexporter" + "github.com/f5/otel-arrow-adapter/collector/gen/exporter/otlpexporter" "github.com/f5/otel-arrow-adapter/collector/gen/receiver/otlpreceiver" - "github.com/f5/otel-arrow-adapter/collector/receiver/filereceiver" - "github.com/f5/otel-arrow-adapter/collector/processor/obfuscationprocessor" "github.com/f5/otel-arrow-adapter/collector/processor/experimentprocessor" + "github.com/f5/otel-arrow-adapter/collector/processor/obfuscationprocessor" + "github.com/f5/otel-arrow-adapter/collector/receiver/filereceiver" "github.com/lightstep/telemetry-generator/generatorreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/headerssetterextension" + "go.opentelemetry.io/collector/connector" "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/loggingexporter" "go.opentelemetry.io/collector/exporter/otlphttpexporter" @@ -67,5 +69,9 @@ func components() (otelcol.Factories, error) { return otelcol.Factories{}, err } + factories.Connectors, err = connector.MakeFactoryMap( + validationconnector.NewFactory(), + ) + return factories, nil } diff --git a/collector/connector/validationconnector/README.md b/collector/connector/validationconnector/README.md new file mode 100644 index 0000000000..987c3a8dc8 --- /dev/null +++ b/collector/connector/validationconnector/README.md @@ -0,0 +1,137 @@ +# Validation Connector + +This connector allows verifying that an exporter and receiver pair +produce correct data. + +![Diagram](validation.png) + +## Current status: under development + +Unfortuantely, until +https://github.com/open-telemetry/opentelemetry-collector/issues/8104 +is resolved this component cannot be reliably used. + +## Configuration + +This connector can be used to test any exporter and receiver pair that +are able to propagate metadata using the Colector's +`client.Metadata.Info` mechanism. For example, to test an OTel Arrow +collector configuration, configure a loopback receiver: + +``` +receivers: + otlp/loopback: + protocols: + grpc: + endpoint: 127.0.0.1:4000 + include_metadata: true + arrow: + disabled: false +``` + +Note that the receiver needs to set `include_metadata: true`. + +The exporter should be connected to the loopback receiver port with a +`headers_setter` extension to ensure propagation + +``` +exporters: + otlp/arrow: + endpoint: 127.0.0.1:4000 + wait_for_ready: true + tls: + insecure: true + arrow: + disabled: false + disable_downgrade: true + num_streams: 1 + retry_on_failure: + enabled: false + sending_queue: + enabled: false + auth: + authenticator: headers_setter + +extensions: + headers_setter: + headers: + - key: validation-sequence + from_context: X-Validation-Sequence +``` + +Two validation connectors are initialized, one labeled "verify" and +one labeled "expect". The "expect" connector names the pipeline of +the "verify" conector, as follows: + +``` +connectors: + validation/verify/traces: + validation/expect/traces: + follower: traces/validate + +... + +service: + extensions: [headers_setter] + pipelines: + # The input is routed to the first validation connector. + traces/input: + receivers: [INPUT] + exporters: [validation/expect/traces] + + # This pipeline provides the real/expected input from the first + # validation connector to the second connector and the system under + # test. This pipeline is named as the "follower" of the validation + # connector, above. + traces/validate: + receivers: [validation/expect/traces] + exporters: [validation/verify/traces, otlp/arrow] + + # This pipeline provides the actual input from the system under test + # to the second validation connector. + traces/loop: + receivers: [otlp/loopback] + exporters: [validation/verify/traces] + + # This pipeline continues following validation. + traces/output: + receivers: [validation/verify/traces] + exporters: [OUTPUT1, OUTPUT2, ...] +``` + +### Example + +A complete example of how to use this connector is given in +[../../examples/synthesize/](../../examples/synthesize/README.md) +that uses `filereceiver` and `fileexporter` for its inputs and outputs. + +## Detailed design + +There are always two instances of the validation connector in use. + +The first validation connector will output to the second validation +connector and the exporter-under-test. + +The second validation connector will receive from the +receiver-under-test. + +The second validation connector expects to see the same input twice, +once from the other connector to set an expectation, and once from the +receiver with the actual data. The connector distinguishes these +cases using two kinds of context variable. + +1. The first-stage-to-second-stage context contains a Go Context + variable which does not escape the process or propagate via any + RPC. This variable contains the sequence number as observed by the + first connector. It stores the expected data in its map as a + `ptrace.Traces`, `pmetric.Metrics` or `plog.Logs`. +2. The receiver-to-second-stage context MUST contain a metadata + variable indicating the sequence number of the data item. The + connector will look up the sequence number to find expected + matching data. + +For each expected and actual data item, the support method +`AssertEquiv` library in `../../../pkg/otel/assert/` is used to ensure +that the data is equivalent. This package uses a definition of +equivalence that tolerates reordering of unordered fields, which is +necesary to validate the OTel Arrow components in this repository. diff --git a/collector/connector/validationconnector/validation.go b/collector/connector/validationconnector/validation.go new file mode 100644 index 0000000000..cb8166214a --- /dev/null +++ b/collector/connector/validationconnector/validation.go @@ -0,0 +1,360 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package validationconnector + +import ( + "context" + "encoding/json" + "fmt" + "strconv" + "sync" + + "github.com/f5/otel-arrow-adapter/pkg/otel/assert" + "go.opentelemetry.io/collector/client" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/connector" + + "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/consumer/consumererror" + "go.opentelemetry.io/collector/pdata/plog" + "go.opentelemetry.io/collector/pdata/plog/plogotlp" + "go.opentelemetry.io/collector/pdata/pmetric" + "go.opentelemetry.io/collector/pdata/pmetric/pmetricotlp" + "go.opentelemetry.io/collector/pdata/ptrace" + "go.opentelemetry.io/collector/pdata/ptrace/ptraceotlp" + "go.uber.org/zap" +) + +const ( + typeStr = "validation" +) + +type inputToOutputContext struct{} // value is int64 +type inputToValidateContext struct{} // value is int64 + +type Config struct { + // Follower is the name of a pipeline where the second validation + // connector is a receiver. This should be set only for the first + // validation connector, as it is how they distinguish themselves. + Follower component.ID `mapstructure:"follower"` +} + +// validation is used for any signal. +type validation struct { + // lock protects store and sendSequence. + lock sync.Mutex + + cfg *Config + logger *zap.Logger + + // store is holds all the expected data that has yet to arrive. + store map[int64]any + + // sendSequence is used to generate new sequence numbers. + sendSequence int64 + + // only one of the following fields will be set in any given pipeline + + nextTraces consumer.Traces + nextMetrics consumer.Metrics + nextLogs consumer.Logs +} + +var ( + errUnexpectedConsumer = fmt.Errorf("expected a connector router as consumer") + errMissingFollower = fmt.Errorf("validation input should have validation output as follower") + + asserter = assert.NewStandaloneTest() +) + +func NewFactory() connector.Factory { + return connector.NewFactory( + typeStr, + createDefaultConfig, + connector.WithTracesToTraces(createTracesToTraces, component.StabilityLevelBeta), + connector.WithMetricsToMetrics(createMetricsToMetrics, component.StabilityLevelBeta), + connector.WithLogsToLogs(createLogsToLogs, component.StabilityLevelBeta), + ) +} + +func createDefaultConfig() component.Config { + return &Config{} +} + +func (c *Config) hasFollower() bool { + return c.Follower.Type() != "" +} + +// reorder _was an attempt_ to solve the problem described in +// https://github.com/open-telemetry/opentelemetry-collector/issues/8104, +// however it does not work. This places the follower first in the list +// of components because we want it to receive the data first. +func (v *validation) reorder(ids []component.ID) ([]component.ID, error) { + var ordered []component.ID + + found := false + if v.cfg.hasFollower() { + ordered = append(ordered, v.cfg.Follower) + } + for _, pid := range ids { + if v.cfg.hasFollower() && v.cfg.Follower == pid { + found = true + continue + } + ordered = append(ordered, pid) + } + if v.cfg.hasFollower() && !found { + return nil, errMissingFollower + } + return ordered, nil +} + +// expecting places an expectation by sequence number. +func (v *validation) expecting(seq int64, data any) error { + v.lock.Lock() + defer v.lock.Unlock() + + if v.store[seq] != nil { + return fmt.Errorf("duplicate sequence number received: %d", seq) + } + v.store[seq] = data + return nil +} + +// received calls assert.Equiv for the received data item, assuming we +// have the expectation. +func (v *validation) received(seq int64, data any) error { + v.lock.Lock() + defer v.lock.Unlock() + + expect := v.store[seq] + if expect == nil { + return fmt.Errorf("missing expectation for sequence %d", seq) + } + + if td, ok := data.(ptrace.Traces); ok { + assert.Equiv(asserter, []json.Marshaler{ + ptraceotlp.NewExportRequestFromTraces(expect.(ptrace.Traces)), + }, []json.Marshaler{ + ptraceotlp.NewExportRequestFromTraces(td), + }) + } else if md, ok := data.(pmetric.Metrics); ok { + assert.Equiv(asserter, []json.Marshaler{ + pmetricotlp.NewExportRequestFromMetrics(expect.(pmetric.Metrics)), + }, []json.Marshaler{ + pmetricotlp.NewExportRequestFromMetrics(md), + }) + } else if ld, ok := data.(plog.Logs); ok { + assert.Equiv(asserter, []json.Marshaler{ + plogotlp.NewExportRequestFromLogs(expect.(plog.Logs)), + }, []json.Marshaler{ + plogotlp.NewExportRequestFromLogs(ld), + }) + } else { + return fmt.Errorf("unrecognized data type") + } + + return nil +} + +func newValidation(cfg *Config, logger *zap.Logger) *validation { + return &validation{ + cfg: cfg, + logger: logger, + store: map[int64]any{}, + } +} + +func createTracesToTraces( + ctx context.Context, + set connector.CreateSettings, + cfg component.Config, + nextConsumer consumer.Traces, +) (connector.Traces, error) { + v := newValidation(cfg.(*Config), set.Logger) + + tr, ok := nextConsumer.(connector.TracesRouter) + if !ok { + return nil, errUnexpectedConsumer + } + ordered, err := v.reorder(tr.PipelineIDs()) + if err != nil { + return nil, err + } + next, err := tr.Consumer(ordered...) + if err != nil { + return nil, err + } + v.nextTraces = next + return v, nil +} + +func createMetricsToMetrics( + ctx context.Context, + set connector.CreateSettings, + cfg component.Config, + nextConsumer consumer.Metrics, +) (connector.Metrics, error) { + v := newValidation(cfg.(*Config), set.Logger) + + tr, ok := nextConsumer.(connector.MetricsRouter) + if !ok { + return nil, errUnexpectedConsumer + } + ordered, err := v.reorder(tr.PipelineIDs()) + if err != nil { + return nil, err + } + next, err := tr.Consumer(ordered...) + if err != nil { + return nil, err + } + v.nextMetrics = next + return v, nil +} + +func createLogsToLogs( + ctx context.Context, + set connector.CreateSettings, + cfg component.Config, + nextConsumer consumer.Logs, +) (connector.Logs, error) { + v := newValidation(cfg.(*Config), set.Logger) + + tr, ok := nextConsumer.(connector.LogsRouter) + if !ok { + return nil, errUnexpectedConsumer + } + ordered, err := v.reorder(tr.PipelineIDs()) + if err != nil { + return nil, err + } + next, err := tr.Consumer(ordered...) + if err != nil { + return nil, err + } + v.nextLogs = next + + return v, nil +} + +func (v *validation) Capabilities() consumer.Capabilities { + return consumer.Capabilities{MutatesData: false} +} + +func (v *validation) Start(ctx context.Context, host component.Host) error { + return nil +} + +func (v *validation) Shutdown(ctx context.Context) error { + return nil +} + +func (v *validation) nextSequence() int64 { + v.lock.Lock() + defer v.lock.Unlock() + v.sendSequence++ + return v.sendSequence +} + +func (v *validation) consumeNext(ctx context.Context, data any) error { + var err error + switch { + case v.nextTraces != nil: + err = v.nextTraces.ConsumeTraces(ctx, data.(ptrace.Traces)) + case v.nextMetrics != nil: + err = v.nextMetrics.ConsumeMetrics(ctx, data.(pmetric.Metrics)) + case v.nextLogs != nil: + err = v.nextLogs.ConsumeLogs(ctx, data.(plog.Logs)) + default: + err = fmt.Errorf("unhandled data type") + } + if err != nil { + return consumererror.NewPermanent(err) + } + return nil +} + +// consume is the central logic of the validation connector, both +// instances. +func (v *validation) consume(ctx context.Context, data any) error { + if v.cfg.hasFollower() { + // Here, the first validation connector. + sequence := v.nextSequence() + + // Here, insert a propagating marker that we expect to + // propagate by context headers. + info := client.FromContext(ctx) + + // TODO: the OTel client Metadata doesn't allow itself + // to be copied or modified without an explicit list + // of keys, which is completely bogus and makes the + // intended correct action here impossible. So, clobber + // the metadata and file an issue about the problem. + info.Metadata = client.NewMetadata(map[string][]string{ + "X-Validation-Sequence": []string{ + fmt.Sprint(sequence), + }, + }) + ctx = client.NewContext(ctx, info) + + // Insert a non-propagating context marker for the + // second validation connector. + ctx = context.WithValue(ctx, inputToOutputContext{}, sequence) + + return v.consumeNext(ctx, data) + } + + // TODO: Because of the problem documented in + // https://github.com/open-telemetry/opentelemetry-collector/issues/8104 + // this code does not reliably receive the expectation input before + // the actual value input. We await a solution. + if directExpect := ctx.Value(inputToOutputContext{}); directExpect != nil { + // In this branch, the second validation connector is + // receiving data directly from the first validation + // connector. + sequence := directExpect.(int64) + + v.logger.Debug("Received expectation", zap.Int64("sequence", sequence)) + + // Expected test input. Do not consume. + return v.expecting(sequence, data) + } + + // In this branch, the second validation connector is + // receiving the data from the pipeline under test. + info := client.FromContext(ctx) + seqHdrs := info.Metadata.Get("validation-sequence") + var sequence int64 + if len(seqHdrs) == 1 { + sequence, _ = strconv.ParseInt(seqHdrs[0], 10, 64) + } + if sequence == 0 { + return consumererror.NewPermanent( + fmt.Errorf("missing first validation connector sequence expectation")) + } + + if err := v.received(sequence, data); err != nil { + v.logger.Info("Validation failure", zap.Error(err)) + + // Output validating actual input failed. + return consumererror.NewPermanent(err) + } + + // Success, pass the data. + v.logger.Info("Validation success", zap.Int64("sequence", sequence)) + return v.consumeNext(ctx, data) +} + +func (v *validation) ConsumeMetrics(ctx context.Context, md pmetric.Metrics) error { + return v.consume(ctx, md) +} + +func (v *validation) ConsumeLogs(ctx context.Context, ld plog.Logs) error { + return v.consume(ctx, ld) +} + +func (v *validation) ConsumeTraces(ctx context.Context, td ptrace.Traces) error { + return v.consume(ctx, td) +} diff --git a/collector/connector/validationconnector/validation.png b/collector/connector/validationconnector/validation.png new file mode 100644 index 0000000000000000000000000000000000000000..858dbeb8e8ebf6060a66a2b3eea7123761c1439e GIT binary patch literal 34376 zcmeFZWmuG5zc;L+bV-ABH_|Zl(A{0q4FUs5i1w|u16frgwG2W&osJ}j1d-ECz{%u3?!NCT8^PeBS8103|{`FB-bTs~7 zAMxVg(A@l%jRhGQNFh(r@{5cT&L6iDXg=aT~pl`|~UDLl@ZGjQiaY8p4`h~s3 z+B8ih|7})n)@bm=inPzLb`Evt!S9*GaD&u?!nao;hbc1aZ=CkuGnIeTSM7>TitQHn zzNE|y#-*|>2@~9k{Wcj_uq-Y5lRO3Ex}!et`6TVTUvAo`g+0~FYQYqQhD%A-Q{}Y3 z54}{Vxv4vT(g$=yrvi@-n0`0gL{R<}v#bVRe=HY-LNUxrJ*Vf8gy8-s%(@voVm{sr zXTK+<+h~(Om<5NFYq`n8spi|e5#wt8s*nteKpf~;&7wE% zpml>%==aFJcdVG~=IxGEO_XHyt4nS_O-|c>#cJiv`u=?N&4H7I!?Y#CNqbin6A6W) z-iBSC52Y}v*Zx>&+y?bXU^v_^38~@|S$z z(F5Uu%|qh+XgB{WgR;zI!+hDtvZ}J|)E7Ink|xVfP?BUmn_N+2gA-QhhIjJ~>RdhC zD~TcAYitTvi)garI&1=)Gg|_T6aA`bOtJFhwDc5ODrA@>nE6N9jb|o>zv$gZCvmbH zH#5b*a~b?NU1o!)WqL?IHN+&Zfu`}S`Vdy@2+{=MMZ*f^(eOmQ z_u}o03qM*ls0JI{&S{5k9;}ZZZ_g%Biwm5wd9A#yHmaRc4%ZL6z6@BFLq}&ket-de z`{dVmR@Bh3i`Ivc46b^suBy`*3Obpvi}fsP0jKdF*E4$KdEy>2UAKvNEyS{CJN$M^ zH(OW3(r9PouNyWF2kFAy7v3oDJ5YRR=WkrX!5R{Q+fjE=Nv&nE>z3@Dt(8wW!39GO zKI59cF|M1HT})9Yn06T9jAVe7`g2$mf1I-;Z}5PBlYx@1f7E|;{!JJHPvbD>70!bl zoFCexIVR_{6d6`nO`%0Jhh1k2Z3&*4_$3>NJiyQ6vFzrI(ppdxwl~S7rWGqanB5+l zg=mHqw8Lnk##aPeUt>o!`z+meH-`sV1~x?w2Fs&h4;~UB#7aNZN^rm%{p+=xgEaNZ zRXS(`QXTt}lig}|oejD?Zw_npQm7<_pmGz)`H~_fy}w0C^Vt7h zy}mL==&|f_%uY7gDPM|+9M(pSuMH-fw|XXaB~y#*6@Ga5!q?8Ml^pug66&%$|bd%wF-k) zY<}SY6broS!<#c_;Z&T_ENCvK0ZNbO!@n;Wb0sT z?TsJpt<-1gY_OtuM{d&{J5moZTuhoXFEuzCJhP8U#t829lg?(}=hLc>(m zA2bTHFql^@Pt3b3=r~8j!|aXy@bmjjoZ;<0>(Zg;rK`WqU;FLMrBe~HsFmUqjV>}P zY>VRG-6V&c?ynk;yyJ&r3|vlY%OHGrHa5_^65@4BRqn6f)i2kW^m2Kys)qXhFDU+V7 z;1j^Wq~d^aesX<%IAe&4D`purLM*>FD#?5)*3nw0wHz{87kusBez-AW{@Qi$(Q(vT~g}rvOzXwm_^oS84t+wkq3}3>(ey!^J+N~d#T9Bq%N5se0 z=W=6r?uU4E?aRB9XemwmpJ|3@#2cOVMtDHFk;GbFC{quE1~K&dyLJZTgsK!@;31P> z)c8`XmwuTVOZ^|4z8D&Q+x|bN`-a;YT*i`;lJ=ahgxxY7^_{-Hi$L4PY^c$0!2>G> zYL4!8xn0!w#o6I3ZM6a7;Nr|TqseYC2{lI6#i zMh+FihYr_2YHT_;QgX!17xN{~ja_Vh?E*ajYaj|;NDqgqP4U1Qql2+xQmpo2cR zy!x}B5Akzdc(eX7Td-NGII~1K8K2@|k;`;>K|w*!#la{DYuN2v5s%cstIN|>ljTMy z?POXhLK*v^m*7X+&qzUg^jK;ct^t|f5_G(Mef3A1oG=RczGb;HfWY1Sg8blBN|a$< z;&2+9sM}nPdKRxlz+O5(opgvS`3hV>{nccR7yR!IGN2g8gpdbp zI#&Th*5pO+x?c~L8=(`>hI}8op8>l(_q!O4BWBACMwm9T8nt?@)-5a^>@9aTyL~FI zX$TxlqJf{#%7oS6y*3G8m{|F>Hh6v7bDc;dL3X`Ss+#s91-I{20@kwCb0{w}?4+RG zAy57LBM=l?AZxxW$~b;})n>nwR$DZf%Kzp2aM~0iNDiiTcDQMLn?CH~H{^Xp-Xy}= z?pD*i^hA*w*@!y=SZ`ECg_%Qs|0HJ9nnCA!Ms|~4d=_o5S=r=rgj}@pA!T?tI;gvC z9*a#b+J(}!wngtsWgJG*QLpU=;>++nSGzC47GslfSNfH!q(DV;DK;5AKesJXycti> zV|f;4kcIsrnJ&3>Yr0}|79EeuS=;PzV{G=|L*j$x&dB-HFi}y_l4mKhGKeuW$wM7S z&@%+Ovtq}))iO9;%@sjWq<`I%(t?w39e!yTV0(Lf7{q_G4WD&)jb&#GFRnqYnPI`O z!)WH#^z)HSo@$?`B8pq6JGTAL;SUNP2syvhc=lu#|GQkbTOUOXKMiq57h$x83Q8<8 zg%XNUtYB5bWl&k9{RdYlq9eT|IbDkdW`J*o6s_#G5S>N)adzNc=2dbLN97n>DYN0fU2#sA}hq-??!pdjYEgnK>#SyXe!mIGs z4AsF02VX|c zszDK$z4y7jQTj}(#rJP0)xC?`uEZ~ z%^DpOKaW-!R+q-sq?MigSn%B(r%6yky*$=o)5;SIzY58dO4yi@%SOb~fl{Kk-2UtK zD-ZzpIhR0f+(|>b{U;+=Hb<87b9d;Um9F3+HJ6;i@GH}MON_9Up727+K%cD|tF8{} zz0b{VSyLlo1Oh%=Q)N?;oQY{quTMeQLBqgL*Lr;M`xhv3jM5)_0GLnI0sJ;_(t{it)>|pfai}t&%OE@miqmvLy@5vx$_oiFD ztV0i+kT#VM%VN`!!|5Ev%t_cvr>vJcl5czslYPxvJ!^YkmZH0j7f5mCtD(NkS^tU2 z+TOk+IYb|&wLOCY26bBXiMMEbbq=c8CF#tzQ5Ad{2rxc z@H*rz93u01Z-4ToM1bd3p+rC($TynZP#JcE%9lqw9onjopct+DBgy6=yLA~g3q9dI zxN}(f^eu+x8hh$ou$jB8I<20TTili%O+K#LlA?|H`6S00blnXZ4uICvN#$>#%-cQ%%$Ty^ZE1VQe`X}>I$QE zL0sagzXGJmm*mx#$U}t8fOT??P2`n!;Yqf9EIuNC{1v}EBm*P6p{)i*RFm5$t)M$-*I5JSNL{?%5g)8)x1y7# z!V{^4r~0vt>MS_Yo?b)~vcUAp)XH!iDOeQ%!R`}d*uF=3B;S!`OR_lr`}eQ4DMZvb zsI5)!31}sC-nR{W!Vh*BPAz*PTX~<31qNcWVyw}AICaXa6*&wVdRV>D%#I2KZa3QE z^AXAgfPD%(T)!tQbX^FWMi@%MVIy+>NwM9=DO#xW{5koI8FOSmuEHKz1WS1B+Q7B^^a271B zZHkARkDT=E4A{2{ZHjpWp39oTNj3W35GY5pEw{1rL3?-Wz0@K0@n+t3yW_j@adMDS zrBJ#HS1XM*@fXh#fI*`M=aNbQsHv{&+C3w>Tghyw)PhMP>>hQ_Dix8!Z7M*y&=nj| z8xB?hkW;G$+W`P0ZvwMcNqId>Yi*_s^nV2NmM(O#uTTEL@IwuiwI9&IWu8iFecNub z(^vP8D}L{s?e|>I7+51qlnFetHrCeCcr76rRr&7KQCgs+G!Y9>iMX?0y85UBU|5O~ zq!=yrq3 z_Y#Q8A&*E7SQCL(Q+$9$G%M4-bn-3JL>=!7C`*A%QbVUgk4MXs;u9Sbp=80P#yuwODz>d($#kK zC_v5Q6)$W?1rNW-xZW!K^7zwuzJ#E|2y?!P&UK0|s?yV{v-Z4R&}p2z6|Wq5dwYiu zmCE2&XVryG30G6lq*N-bZK*XtOaaVaD*d|{+2G77uG+Lei}4nDmEwy9<#PU1YE_Q2C(uOkojD{h2&uD1uQkYIb9&7 zdDnZc&Z~b#a)BOxLe)C3ouBj2rne|r^eQQ%wY9ZQV&Wx3UnY-v6Ms1lO~P>~HB7zZ z8b{*IIvah_Yb27}sj6Caw~7xYfcmO(LhJ$7FEkjT@5Mf2RC*`_xN zE3sbT-tA|bny zIYhMmY_B6XKp&eIPVWcs?M|?q_9$3_#~*Y)J7zRr)bWo`0M7T_Z6(5c<0EBWG1#Si zi2$ua$9rtwK`~+1w=etio;%@~DWbCSfv9Ky-pnQ*WsEoa$NiI!(LmEBBZ3b4!=SO= zjsWm5lHTv*M|Aum5ab9N%{5R01XFX0sLmoI8hRNP+iWSnm-MXH+6=o*@o+-a&#SY3g~ z3$T_ZuXI-rUH`b%5O4WtX>xX}Pvh517bAIB^B0Sxco(9#W+R zpye#<)cA8V^e2))l!Fs0gb6WN1dyW~j6_fjAGn5NkaWu4i(-wqepbB01U3jE-Aj6; zRG@x5e|_jOLe@29n@o|Nz_}b3>*Az)K%bpxnIW-S)lv;-c-=55#^}DegOV6O1()i}=%R(HORHY>~8ZY^ae01Jx zt{+y(R(oNp!mpBdMT+WubeRIwF>IQR;P;tcXaeAg$bs45lz@yND?u(Q9SB%aE32|Gvc zh3=lOlc+tguHGf7RV6bt`S!~KJlDT zf=61(gyH^rfRVn}&Osx#l06!RVY(2v($LJFnO?u$7k$$MudJtke! zd2`Lg@tYU2zYNfAf;-{@-td}5Hegf2z8?l}5z6|=N!LzN`8+L#%In;2#MkL(dHgf0#Ue2ztRD@J{r(00X~a@5Yx`Bz+Gx zP|POF1!#|e>2^;a^%U4I2^P=44JOk)QVs^vz_EHf=teVa7`=JozTa5^t}+^@3%}5X zc%0Ri-6)=q{zy+99;~bL@zs~9XK_vdI>jS+7j&Yzeh5`w-d!xB%1GT(AS`0GZ`o2y zhqM9q62#Z{@M9LHXDj&>Ar6hcX5PdXe#eg#vy(spvn+IP(8v?hy$7zRR7j1vYJ>vH z4aJ{c7Y>egZr14}zqp^o)z@zR=-(i!53;O>s5!Y*UUl7oAe|J|I z)qlgyt4VM8Lsl>bXu1ap{`3IAWnrKr#{jE(GL|EZL(W@c)?9UU_ zd!~SK;0Y8B0Dm$99Y-_q^wz+NE&^ff-L3YsXdH5|I7ozk1yFS9r2)Lxuh0s;zUtz& z8hmZj_g(ik9UWch8^3On^DDDvSCBXBjK2HOPyS=-}t+pnw3KYsjTx(7eO z4=#b63v}DyCr{{U*~qT(wcd!dflw0o4L<*^edE`--+v(}5`J}&OefkW=B?)14VaWALeG#`e~h>FY;wfked$ag51dfr!QVWgvkZ z83K4vnnT3-!^dA_m*1DPt;c|U?sHLIf4}$G{qp>HI))#2Efq{0bmxR$oheJXIM2U^ ziy$6nYhTfABEFVy(}stM{AD}=S1Aavk&g5=t3qQ-#;WJrf# zQqSZ@(cc%e>Af3Dbw5Z!{fjTG&Z0e4+}BaFjZa4%gqML0y>Xp|0G2HmkbtlH5RPLx zi;tKT6UZ`B#C^UaD@?I|k|TavGdW#%9+UwrWac*u>b!febsz zMhun%M^Aef1(f@#WIN~8?k?=Lg)v-Ws>lBDwY`nHIyH@--pOC)|E2<4KbSk8mdj_hMynHE8vxDA&z_fpr2*t2u^6a18c&R@G1kn+BDtM$s z@Kzl7eZb@hO@Z@7ivG*yEC`Mkc=uk>1*M>)LV?;zG>}(roXZrlv1?jhi#A|E$R`Rr zBj1gUc?pqSHeriATQQ3nUTa7JHV5LudmN~|b+g!Jip5d*_yplVg-M_()66xxM?eEH zxW@&Ld=x0%Py)z~8r#*cYUBEmApmGAukV`+yG$u0`rX+j$9VhpZ93h684y}MmgnCF zHnOO|BWYZOVZc&l`1H77ofBIz-wG(NL6xq7K)l#~1SV4qZ%C>wb5hC}Gx6p$?p&Q^ zbx;EEvDGW6TH}dW;zQV-C^LHho$Y*OQHauocI^(xCQFqy4=}(~H^&P`N><)bLL?s*$m)SM| z4}cx04N1w^b_3OeJ74Li_Atebm=NkiPYr>oc+3Je5wO2vT7%}XXxy4aEzTI3fxP{@ zr}QxV`cI*r4=Ij^-2}*WCH2ft+nu@EGB)!TchG|BVO6HH?Y^6t1wg&6 zihXR^0ZY-M-X@T_pwHKNIYl{7O@ngWid{4+u_WiSGUz3r+MKS?CcB1WNLcoSNsVCo znPh;b!}~&f*=k7c@A5o$i$)Jvm-Z97)kZv91{3P(%D+HEX@2p*``GXm$V~N$M5wY~ zG2mZ@He}Z{Z#@MBAcDe?cP~8wv2}QLLhnHi0R~nU?QUD{z+w;QSuwsW7R@rDDyWR5 z*26eVgwz7)M|;cWpq=P=`J{pBOOW zxAHt$skhl89yv#qP7fE;;w~8c%dUZX_Vb4E)+r@XQ(o7^O9Hb8NNzyB$7Nxbx{Xak zQkFW}alZiwF={emVHa%!JxG_?stl1=HWXQdd7gaV>B%7FIbwyZa3PHI2Plf&wu~UH z60zWuAE03E0PErW309B<<)acLhv}QrqZ^tUZCZ0#Ngd7*iHxuUDuHS&J`HduXWG!u z3K{K6kby_2l!F@=Us0`y$6oJKon;viotBxh0n1nI$;!%_t7iiGy?}-&8Y`yH#z%w% zx+1W~9Q0b;7jERKW$Ge;1=PX|Bm>j+vGRf3<7UgV{cEB>j+kdI*4&3w$n*1)m*@cj zt2QW*z>IHzR^nq=VVVeHFo{-*Gye-9lsS)aND8K8^}<}DlRRlj!3HP0EL&mzv%#9S z*H@QShrm(cfW5F#3TIW;U`D+}Hdd(+N(I4=Gt}K@Y|;nK|qT_ z7*=Nz$=c^9R0(PBE;i4$fE2kAW+y<4F(_3SqcNJ0Oh-~mK6x#or@4S{h5}pV>e!lO z+38Os`9vpaT;;nH!F!P8LJ`jxeb?CN}n zubt{HyPHCb%d}Emu|_i`6_yUF#=6JK0h6W#i@dTVWBNrCR9WlNhJy9z(amtc-`GVv zP4>EqRox#c!8HBY{p?TCh_YM+5F1^jKAGUE#f^hD+LQvm z2?$#wuYtOT@%xz}Fq?)KFRMS5uIDjhqXtDE<2$4VJu8kH2U%H^h--$D^>?;ChHipN z?2}QWz1*Y?BRR+#)nOFC6?YaCA}T^IbOzKfrsPcVp8ft+Ld6Qa+bR&a?_(ApfvGv# zzx0?q4U}XNMm;KH^1ADlSm6eIB?px3VyadM4D}LQr-%Hu!{N!U`MR+$3@9HAQX)WP z4P^#cgY%;UP8ccy3v`BiqwdsD2Ng|312XHJ$}ZibSaWczZL*%5ZGEP$04{hB z@d&R<_Z4S-Z-2zdp?AmOvJP)hYXZ=AtKU2Tr#R!G0Z%s_M-0{PH~l%R_-pFIT( zQ*rbJU2`!<;a3{f<{W*WD6~eHKbLs|%o1!8c6ym#FRod@)QG^rW?^_H@dq$ZW!zw^ zxMd(1JA=Xbi_fhGtyBwt{0vn3(nA2q)TV%ipy&uNu^GeoLk;J5A3gb)i|X$~rW~h# z+!uoKUTcQ$!=)xr*%n<2StnB~*OS*Plbx9}J{&xkvUDrcf8=2(?)(gXx~(-ENJylo zb2NUhfd0lP%(QNx-C`3;FB3^65vM9gcAO>6JZ=4y61I5oC~o?*U1Fv(=#4(>Be&7eon=@=L(gH9E+xpbpI;--&tN*` z8kF`per1v%WM#`MCBiWA*>C+&A0tNxsMkM8b%ieE$6f1dqN(cb!_ zQ}{N$mD7+$BT`V8wKCgAh+Ag8P-!||=f1m7n&$>wa?Sa3^3fWjS=6k3dX1o;rwX2g zp0fQ?UQTc-TN0dgw%^s8)2eWrpfrM#y-z*JG=kHhSdCC=ev3QDFh{Mv#IFMlr?>x1 zC<9>pYTmmy1tRzS{Mc>x^pY7BZ=hXo<<|mo0f1pKew=dzL^!EJnsHcGQRs|qnkCGt{E)8Lw>|l`Y zT!#y3zrB-`Nk|NN1h@=Dm~}W${16OY7*OCVk;Wzg#8vswy;ypfUAO)iY^<8*;3Sc- zt3jn}1{z>sSYxj~?`GrQlSf@B$c$B-A?f5@oCCI{qswQ?I)YvHSC3AEgH{teimCnR)0)C`CU_^kt{ruI{OgIBi|29rgO2!)~N|wj8h9JsEx2_XLexO3DEywvJf>*X$ zu8g6GY!;%t>4?O=h@3!C!X}8!d~!XjHw{}ru`c%kj_U7fHhuO=0GxuTc$1%Q^(0Kx%aBhq8^k#KQT z-VG;Rwd}o=N(C6=*^q$4$dHQg$}f-rH*Ki`pO7CZMYf}EE`V#%?xVO%0~81t@I+~8 zX?=(>>p>C}0BZjL4NyQ9(NEGF4JJMI?3V|ZC42{8`(mxb&hF*Nj{VTe7I0{E9BVpI z$N84UZTc)+A6tN3o!d=jf&16VNoMTVtu4ec7_QMd2Q;uYk5F~0J?t__v*zA)+tE(g z+aEIsec(6iB$v>8$KX;HU*@IWjRow`f?ei}S8Ch|%p|P;*)#)Eemavf{u?dSaK40S zQ@L6Pz!y(%qk#bt#sR`{4KQ2vy&{NYzFt!0@zq732hmNh7+x;e(s>xAWi_%C8HCID zxe(t>-mS>eXlmrcj2M%{Tls)eq^U+icoCgF?hksJ8tr2T=`)U=5n`Xa?Fd6u0Z&sI zqhZv;-fj6HlULaCIj|ypljtN$?X`wm?TtxuawzvAJhE!qDy>)k01=BMJ zAdt*RpS-fhEsib-Z7CEb31`D}mc<)KQgXmvV^6LrTA8vZhz3@p{V9$+9KIQchoggu z>1RwZi2mlV5G78D^UNKyTkjc^1F7`-x|&+qjxC_-MFvHWtdI%juxi|lKzXk>`u><% zII#DLpPLqpN?bvTn+M@UrzF1ly01dTq1;LD7NlDbMkjDw8H_6?n@F3Av4kVG&-26T zHJkmQ7-vq!8e*@qj@}4mglSFqL7m9PsI>YT0@y{|pXG}bD=n_!F8<3j_YXn{A^!o^ z2v^W-en(b`j}FB?YS}L6bB>vDX*^P@5H$^|QktuD5yp;7s9}{^;r6v$xJiwmm#Yq* z!b!!|qPz9<4ueoBcSiIVF{ttvxq>0eg68yNFA{AoTl!DXeBSkq$n|Y+KCuAdOP9Wwqpv9^EF|#9xkh*lSZ* z)+p$#6goohvSLeE<vkdck;rLM(Liu{*j6SJKjLDT%6rx z>c%;R3ndY9-{VNjp|473HZN$CyjB4n6#M-bVv(GbLJ4$u0xJf|O9 zch$&p%}B_+&}@#=M8`Zd?)Of1_@ArHH%K2ndAox6v4IH@)!Dx&zQ+p7Y(26JlTPW# zg0tW6ei@kAf8@s1br{^>a@<$0LUal+&AA#e=D2BAcg9~A{`c_-B49l51G;hX$GHBG z`?ZbgE+g3*+!hqTRi1kLVdf3yrML=vY7aWrbtk0|LPVHH0gY?ws}(TH9`EgFan`ym%}^i zC%sr0ZdG=!e*kIqONDv9JCJn3Nbio1`O{>=1X*HX?l)?C7Z&Dbjr!`ye;*N>l6KM4 zIumb#*!pj`iN?&e5a*Q0x&p(w4)^#$hwH0CA7)Y}i+K@8`*Z%Z$5rrZT8DmZfB7s~ zW>RhKg*5EV>vEj~v6*uWv*nx^V^V@de^ccWcM?e2j!spZ?QOjeJlL9*EC+}*WmN8U zc|uKUKM_V?N1={5KVyO=ebE>Ji7=zoxt8NujSIPmoJA{`)!V90y8S=9bHv(I|6WXp=4><7r^5EyNIcC1R)bW`_ZDJ*vNZ^#h zd6nHe@tvtw0duoLyD$H~CYp~7h)DM^sFxKtLtMl2sf9ibW2IbJA_tb z*S;|PBf`O_k*dVWy)pNvz-X55;)*AUj8+rSkhcHFOJ=DyO|W$|?sD9ZyPmuPMU^J( zZ)QQA1zAzD4^`)O?)}_qf^rBxj1m>F_>}71k_q5vh(uSzE+h8 zPw&Jo|12|dYe`R-E@;TN9Fod;<^8#e-EcxNr56YObNHOr=qYs2_R<;eyDkp_|0Kn@ zKz6jCGu*c*_SMtR)!d2oih+7MAEIo34->T^hx1fa*eURD#g?)X`SCHKkH230!^XcC z(0 zk68madJ%5QlY6Hmh>M48_i;uz0etyU0 z+j4d5^uR%i6(a>yIn3M1SNZGb?X5rYZF8BeB<8B-t5z>$5v2rz(K+woyv~dQt24T9 zPw}t2_@NJX8SMsAg$3?(!#IFG3fI3gYFsEu}mNDGC`4+ z7z#nPEv<%Py~~hp0{8juksn6lWS^?k-;4hD2`6PFbbm04^>azA@En=?PlKdr^TKdq zr#^9d(4_?b_b%mI;A4{)e=9f6a9yF*eBI>Eu*gi#VUzT~?`ePiZ)`h3tnQJ9yXhXz zBL4??)8S|vKhi+)25%ieuKx~hK$kQ=>WPzihF<;G2;*=3MiF9P z!@r*1w_tAY-v|9a*wCh9q~Y<-q1X8I`G2t~fg{o0oI3m(#{cFP2R~O$cMsmO7xS7m zvP+$0V0MC_sBPF`3ITA zcooecqr&sH(ajFno|LZ}IO7!?_LA<+AOH2 z)8zFFKHuvp)#qBaz6l4u=e#>K6dAruC-DBkLfvY(<96@t(AX0d>wkr#uaLL?2H%3! ztyQ``rr?0@V4b8}_^but;_9hwENkg^v43boD+G*UV$axr@XL0cP*4#)V zTi&1XWz_;s%@wGO>CD7RBqQMXQUod=`kZwz?zBds&U2e1URt^OU|MPduci<`Yv#L0|%BfS*)x)PJ1t& zSv@;wV+v@GjeY+Vp>hKnx}CmvL%PMhW}Od4t@_wlwQ{HxQFf$|((LBQUS7lQcnc$_ z6F6nPFoEZ2>`K@Y!HCEf{dW^w84CAmmQI!DAAdDLwY>(3 z+cxM;uG|-OORV*L`ZAH;GnDGDnj{!how1b6SeO_)zH`wgK1kE7O%GN6qfnt+oz#9v zE*%rsklEUVtc<#P*Ip* zQ%qVc0(D+yxCy_^mgRL@?YK#Zl0qrn3qAcm;C{Q%lQYH< zIL2&hj8RF-5sYT=G!c2ne{ML2HfM~)w@y#QpjXFD%aHd&!pWyauzr0pIHK3ByO8i& zC7y8hp9X@&W&_;w>vO;oYbgo1Idlk8W;K^i5AHDR5K~3H9 zkArr6IYIX+ckXM0GO}~>t-^;+?YgK^wOku;Dqr9hEeCjW!GnT6rk)W(8cNTr_3mec z5V02^In_5oz7{JckN+JNLawv-%PNmS5#@_gKRj6mI9+<~YlTWm$q#Vi+XBxF^+Ph0 zC#<)>Y}EMphZF@T#e*<%C>!vefp0t=jMkf^?r~B&Q<1k~DnxT!UlgF0Ko&JAI@I!WUAbc(q5$;BVLp2H6cm>U7IzaGVcp$HwntowWfPiCvMnI z!MEr?e}3s?JK$Zf*U8{HNnjoFeCYrjsovx;G0*B9r<6 zP7J%9o*PsxJbjX+g=wQUEBF3^^~cBql%V?^SJ^+bXz9Mlwrq9Ly|htwv*QbN5xZeC zmNc7^a=!Fr4DhOhX6I$vEsNHD0^tFt)(O1lDF5YicuV`B`a`z?rRLgY0DX`V7sM=T zu&pVU&}R|#T{FF`pYDGe)LscIsP1F8F!3f8K{pqIIt8i+Jv1sjSA-Kw5z#bQEr1zn zn*3wLMviYr0zB4HZ~)qo?lG7&cWTG#YW%qnW0zl9FZ7iVm~Dv3Y(Z9-b%P_Wu#zYI zAz7_Y&R4vm^8Q}M6H3^ywxR35^Q{=kG*<0}@`O*5qsjJDpw7U(zJLmP-*Z&Zewg=i zc1JXkf}iM|iCez&%ebUvc@3(UkYj%WuKOj5)+d1mqpKi<2E#{fWofM?q(41Spn5Ce zQze!ZYOAOk9Ma!ha8hwUZEG}kpQ5b@{eL^T*i;Z6ZFK?fRrjCLp!a;Q{$3De&Fp*u z!zwV_vNe5SH&}MEbvK?m;>7Rt5VumrK_DSIoOSYoRj86kvqrO3`K%nARZy7PNMdxa zu8@KIhKd2Mc`1$l3*5^gIbCb&xj5)?f!#I|bXle-(**#%FqJ0x-65^V*Tx4~)WxwV&8eemCWwT0x zGecSW&YpIYO1yZ#z>5cpV-4Z&Gn~!Y8sgDs|FFg1Ul0|oMT$#2RWc-xVdaogSzOYr zVZ;!U71H*5(vqv6k?^Z{_sIhhmlLl}t)caSol~VGBEv3^!)EjW!Oc%&K4)L7PkUpN zpZ*EAoB#BWA~vX6HU5dpH8S|~?=$d{0dqu*dCmN`pyYcYKxOa)TRMaAhEoJL!Q|7? zFx8K?ncnSkn#B6a4kdgjtx192O{U4rWYMd+a(^)>w(pt(mzh}CdlDhk7pnrYl6hLRD~Zp<_swh*BI6+ z3J&_+f?@=4Tx*eORn|SUiMo@<{~r-4;kQ-@-lt<&#j(OiE8@~}ZqgGPV^srQ%P>^y zc71;_Sr}vRAJC+w=a<(HJ7xm!{c&F3_(~>`^m!7I%Qs?J2j;kTZ{{&iE9pCVn-4g~ z_dWUrJpVjy&bW$Q>;HX!Z=2Jh0;n`=o(Xa&Za39zqBDot#+p^+>{-M&+r@U0b#0cb z1cJF-XbDpF`$hmF`Z7H_#^8h$f|QzyD=4xK?4fv|nTLm0o~2$>&-r)O#`*40KWE}M z=;d3?zWT;7o-q6kq1yW@jQ9f1Q~s$$t1K#AZl@8vaASMDjMm}e4OBh-6deg!l1N~k zD}Kn5%v3OBc83VU)}=7M?Skj&Rpb(Kjs@4JZ?G)B?Of2Oge{G|VxL+=X|gWNj1u?c&@*_qTD9@(k7)lcL4Gdc-vq|Aaz-aT`D&LxibeHHe|dgu zfFQ9Gnkyxc^&9!xx%`NTI4b~QecI^@R#v%2M_be3Hx()1=ZC3-yXfaLkv?Mx4O|;! zU_$oQm9OL3zYj#5w>yy<+o0WMR8L%y$) zz(jAfy7p-np42YWI}y7@aEJ2sm)dBQTpIo|-y*~;oah~Q5NM_Kn|OVEm`d52<((QK zb_uiBI{~j)FV3QM2~w6jWSW7MSu8qAllE{#DHjp>*8(y=)gn!wsnCr*?k48(fAbMwe?)q{GajC4CqhxKqWf!`kshBTN#XKDW0S^3xwobS1sJN(Jn98^Xpx* z7YyS#YME^J-vqh^YpK+gjNf*+@4~0P4bjzF&g%S0iz3#fVpYbE8NIhxa6lN}FJ|I)8VEZP#Y6C_uzAy)eg_+oNuT|i`JEt_JV`%XFP;3 zn{6@HU}0o20*JD<{Sq!H{2+J-SPiOw3`1E;fZr^&!-p-}7Xk=9!ri+d|0-N^^|-U0 zCo`RQI3{3!w*^vhPj=z$nYeEC8Lzc+vox|&M)5mE!gr7xGr+u=v0U1-88gCy5Tc}h zt@40z8g1(S$mAK=OX?O^y>d=$({T24!fYo1#>_F$IL$NWVIDNnDI{a|oNOA`{4}ov zHlt_MnF2`W9DGMC8Dwx}%{x4E1!pP)Dt1#x7PFF&uQ#5ior0 z);s4xjpDoME_%6Kj_n7NZ&MFWZ&1cpCt|ONQrb^s>yx5b55F&7o9nsKEvL?Pf1d$m z5*SRVJ3>17gfWI)*|id$q9rTIV&f2n9FJIL1j;-??3aoiE?BlmVM1e6a~nb=tF*j# z@3Mjsoq5#=1VaOF*(DxAu=~6!fPJDf&c8vQ|oL3Te z`KOjS@^zbO4Kb+X2>8TgE)%yW263whYufUA*i;W5RVlFiwO>Y3lRhIsgaR4Lg+Tr3 zVuc2)?&uq=Enu_O>Q+<>sO0(k56s&4>s5RzTJT~AVgXtmh){u^aVX$D-A(rmz54y2 z+y*|shaZSEuSh=LlPXut6D?=J&V23DAuQp_m`X0tM&hg71&E^9V5ThpKGiX)q=|sJ zjSODfT^j?s8@5}dVa~aL%ssiqGL z(P`RbzSPA}@n;1l(f)q(k-O`oM^81n0JQ{$K7eG5HBFR&LRdF00=*X_Po zeb-C*8Srq3=Tf;yw2-0cK7P@)q zYN|1oeOYQyI&u@gsa`1!y>Y7$m7R_ZuD9H*>DX14@;`^iX5V8Sa`Pp~?cfzQrQ@PO z>S$}`q6q5SsNRb9>4oK=W;fv!jA#ha#|pfWjXwbu^|lMOtLy6(X2YqVaG3FCAQYbs z@PODqY)CNNU+tHe4JEstAEq?9$b15$Ds#l~lZt|XA26$ytNS;z3C~4?iJsklR^6G% zU6y&40~7>ks9rskIG$JK3&?!qRjb~u--t?GfQmZUu&=Z=qKZxt9_k;Vtwl|9L=efl zy_}$brEuAMf;-B&x@tuaIatt*KO1Smh-5q~haZdLyyO0B<4-l^McquWG!7HP`IjCz zkRA$6DBhfnfhDffS8|?-7eJ+FuDTms-NY#EE9-fPcfV`ti>Qs^jJ_o5Vuprj`;Q#I zK#hZh2B>`R`)aNvER~zgEIIL0+5tfrF0Ze|Pfj!+FT@bk*!9&bs)2zeN{6B2e< z7S+(;-WN-2zuBh(IC;U?^qjXcpgNw+;R?Fzy9tWVz-4X@%}R4{*bc}ihXAAl-NfPr zWeBp*VRZ zu${=yEEGZOJPAsRIE6FnS1k^bAoL&V64@q81u!$p6eZl^cVpjUg3IO|PTTo9npy}e z`^tW0Pc;WsWRUswQ@)Keiuw~wyzoPzkk*va3h$%L**Nh*_LH-eDtf}(TR~aHD-%er zwBZbugOrSN5M5%rv1&KEDye`=FyoN~)!Eg3_lYF^;&0F(aJ%Uzfw@8U*Bp(Ylo(w9 z0W0b=F%M_fFsRQwML&BP-tiVeq{!2z&X34g%r=`1J_V?&J)1z#uJ4v!S@+(_R~&?8 zJq57ED2V+o#6fG9)kKAxVcz4>mQlqBt!lmY`jpp?NvLRZe~=K>zp~oce3%SOGT{!z z%>tyPm6VeA#|xLwMW8!=a((Q(U>`3ude-2*T2uw;Vi8aau^8Q;)jHSTV2yiM6&hup zr3q4z6Z)gzSaO<&KPp+pbVnh?wKnZ*xPwTCm02j{o$FeUE8#6>%pm6C^%v z&LuF`JvC8}hFz|{y<_eVDggIom(Z zLSfh$dS?pa};|xZ|&~YsT>XP@eVy74S9bC7V*UHY3F0{FvF{ z+nX@N#|}W3rJ$5fB5*#bWsD#p{|+LC_rUPQut>5(h4?w2r%3+x3d7-pg@#3(@|}H- zdfAUM`sQzmPNJgY3kO8(d%IsQM}1WU4y0UCP1ufmT>>`sEpfltiEi>sh zzgAoNvwyQ%O4LpkvE&>9Z-6pGjl7|#peI~OVWD#`b$*%gXwPfeY7!sqt5`2=JF zkH$TX5@7~n6`KG#2MqK>rLFu0!GV>h7O$v1o=VEy-Hk#MZcL|H$S5L+ov%M`pTs+O z7n<{!d+zmnspAnT%<5?J0SaS#!}woorQF|+A^)NOH$zSuaL(As&J0m?RT-} zn6Lj8k+utWiz((vT1nelmhCGx{HVBC3?MP_tNx5ByMxL_xRq0R>|cFRmwPdDlabms zTZxt(B(7o~TtK2&u#F*SPJV74OP*KjHq}e+wWE$0D>_Kyq>LUUgVB+tSJ>?SOeK~V zWpaSAc$zy#Vf~3P61F5LLklh$(kg7GisJW~$%=DqKKX!TCgptWi=oa!;*GYY{a}`x zizG9Qpx(}=sWcJ%%4%R z0S<-mxq4x9Z8T-sg^X(rsVKeH$Qv#)sSyfk6RdN*x@d(v<)+!GL3%Gs+}E%vQbAMB zomX`mgT$iJM=GidKhkZAZ!|nGxxJ7^NitkWLbH|a@)VuQme+Pge|uQ`h-qzNrN+R| zUtTRA9iU5CF_HqN90yXZ4~p(UbZ`Hw#2uX2uw7-R)L$BouL}6yOU1$rJd{{DXk6Wm=Gy}bXK0_Pz&P1r53B^v72==T|k z%us1UwZiG=Ox2|2z>70@0zWhiEsiRyDzO86asu7#Tzus)jDq~z=S%nYOTX*64<~Dn z23>7+OSZ2sJv|QH59_vdU573fUCl{iW_KRFAL<^`2I2!b z`ikAa0sjwL-<`R5!c{Li@HYg}Y{bWS8~6msb?8Q){bI78)5K_93$=KIo28|u|Ire+ zy3mt9fqwgYZBEhS3|8 zjRlvv!Dq1fhAL?0^e=h(Wuiy(R^>}}rFK{9=RBlvTXu*>pq1q_wOO!4 zMaohxJx_6S1k@c}5K2hDlvNj)EH3wsmQW5^f}o=PsTdrD2h8x($uf!)G3t=naF$n@ zFt@a5li|9HQP3C3sjTJWO1jab2GaxC4lEERxre6h1f2XwUq(kqR~$F;_DZWyi;hIi zP!cGG38SbE*psy28eCw+%$D_~*NlgDDmmuSG0hzG?eDcqIDS;|?XtaYNwPaxloZR+ z6q%+eD~pxo%tY+ofG@M?$M~ih38uC2gHccI1w_ z+YyLdaCcs77)oIFKO;F6+g_HqV*d#3F}{HxD<Iu>ZBx`00EnhzZ$uh~c_R ziNE98+I_&P$EIfMpl@JGf7L>sto~}RV_;D%)~Q&rGyMKJ$}w{01zhV5_@G+aold+Gxo|Ax5^*MX@c)$ z$PSsHj}6SpS4=(Z)#bP+2#L+b({R6|o(u92+&}wq-+$=plhGR=^p2;1!_)Mgh1nPN z_B7?w%wbre`GHLtTeViNjLYjfjY159lymX_oT7kY90&Hqr&H;+N$-wqB_+Q|>+OHk zb$R1?6-h3=FcaAHtuy|}ZxokLfAxH1nuJz;AxgK|pnv4YS&`iGyyk3*QxgOFmEC*B zl_VU8ba$UvYIJDc6Q{W=hT!;-Yz$9p4Y!udz*J}vng#BjiJqN8=m-rN2H_?+BWP%7 z=vSJ|$TC7&KB##s1yqDN&GvfvME*4OAu~_-{6S#_tT@e`~`? z8_JM9DZ9jG%p*q5jawiQ3Je^bZb;9rP{NJ59LF#s9JPhCoD^A1;I(?KCX3gXA|n6p zDmY&%ivG_XcBP!c*X1XaNmX?)VslWLYm|T)hhI&~L&{~Xef`ce(|du(w2#Q*1U=

7>$si^V!?ym_&QK4SxKjhfsH0@QPeIb?V_VCqGNB9+>r`EM{>NC9Z_>)dX&rA{em$?rbojQx?iJ$^jim#Jzt? zAuEZhk~6%b;1MvkNsmhMI}AELU4lkHd|>H1E3b_-1nb8B8JVRPZ^Qdg84VkIvccIF z>pl20 zrKiW`X;V4v=ABksYm>Wd#<6mvNf%}^+a+@cv9wAb?kKHB{`uUL?>3OB{N+SOQh68k z2BGmI@40TX3roTGv%xA!O1jO|ckQSGZ!(Sci_gwSHfHY*^v*DGwSI$gX)u00N-Fk% z&g?oiUkfm|K&05nJ9+@UDsX!zVQAGfIZL07UpHu=fB?U0Nf;bd;7iZr4^trg_6+_i3M(W*Q3ECzSoMC8`bl>O^>*`hK5YJ;!kF z(mUXI-_fKrZBQpvF-6%I8=_flr#-V!IK(ut)A9%oznbW~k~!mYqj$^apuT7uy1#o# z$n60z@*!-Xx{XJ%Wg|J zK0~qqQ+y!54+mERvXt6Zx(-%!DGGJ=lm{bBvl7N$ z=_aN;5}pKJQMHqZ^^5qc5|7I`%6a8KMtih*j|LkUC}1aMPNE%o#&U*B@1aNKyl>~H ze%@)+6{-IdH8`sARAAq_6!hL)mizTOIDG~V1$TI6ZV_g8d%O8as+k*ScIrdSz8BYR z_-qA@G)a$#In8b92V`%>nG~-tGIh8L5A#jXyF4KQh;=jY31MsQgNfZS|8 z`Ylp1_iYBa5-KbO(jI`4#y~@RTc}+5o4< z&(Dv`r2R1#s3jtIb5&L~*0UJeSZt6|SAfw0Y=chH0iM1GI?v+b`uaMks51(gI)6{) zNH&t5UbL9-p*;-5+k?%g2FFpNHTu z0w(h~0O`WOz|3N&18TznxSR`kMk^m?M7Y7d0RJbgJB8YH;DTm!sT3sCIRVhDT-@Eo zMMZnn)O~+VoxezydpntqcRTQkoj$_aApmZC-#M}sc9LG|E=eTEw-U8t6AYtC)G+e z-g?}!a=I9>SdKI*aHvzZ`SF9u*S}G%lcHm|o@XU16{p*JYJ2mdLh+>RgM0IHu3|kF z6R*c(E9FF>5dk4FR=-HIC2IeQ^^4)V^w)&Mm`n8-h-?sjD?o;!qP)7e=;-bSbYVRy zfb!}Gu&C!^;GX{7t0Y@dfHZiH(}Gck1n?@xN}7jrRRur? z!s~rUq?pR@*=LQ0mjVK&uLDLNt8M-Ut%HNeNN5az(+aH^=I62B3N0yNPRzQ$J@N(= zt~9Xyz8uk+{pg zl}`N7JNjF{02q|6tf3u-qxeREwcD6^&ko70k@%0a{jiOJw96=N zn_V5c6-htJGA9Fe$XZmW+;A#igVRqpuwv8G({UIz1rcv}%tu~G?2cx_6>=nn$$^47 zfH6T>@}I>jeIpWpba^_hXEm8$1r~2@Emw~{Kz9JT8d$y{04WKf}Oj@#Z;6JX^wvbO2DmP9~7`#suZs6rS zKDmFnYY#iH12PBFafL(S^aE<9>Mh_P(b3UMBV%KqJ_p=2Fu#xn37CTKaw&+k3JMAb zDhw>I`r{dWV?p9wK4=gF*u{cfQ zHzVM~^dAq5fU@Tq)uX4t<{*iq7Qgmh7N`S9R$*D` zmPYw!m`+v9+LtiFMfA&!b3%xhn;F&=C|LH@%Fw4&-k!4P~of=9gQ+v^$1*i#ebY-CpmX@=r;;|T$O8rzZmI2 zBY$JB5jqqnx#5c{F)t5tDZG?I{9SsrjKSUO#|Jt-UzK+2;P5gPkR>dbqx)wK9qN_8 z4Oz%(T`nonUR!wXiPP)upLgIg-34hK^0reC<-V=@K6+#GRTKFOjs0F8<}}H$)^QB0 z&S$?snfG>AnN544Nvt^^z0s>1F9K~=J~(hf3TlW|<`%?+C$t21+p_FFX9*D?OryG14MX-_-IDRA>?VYk$g8+@U zlfc{y_Bt>slZ_<3iF7ECjy=dZ%_A*xsXBzJ)JaWpl3qEsFRc&GIem()>-Qc=>eoq9 zlJ{hD5BkZU$?#`s#HmmN8=udyU+?a6O2GBY7L*Ehm)A$l&IdE-7#L%~K+>t?gA9v{n|pL@ z@Z!D4qwNXX_Ql1N8GX>o}juq9#1K_e%fXScnVnIbs&HOv7?VVz|PzQs8OH_aQ-~5 zCs|c`-qkqK--{w}@rYN|%nPw^t!CifEP`w#;#G#~Z5QLb^CHgqJP22`B1T5vm^yet ze)YFaYPG^16SkRGnad)D>amoUV&MfD4lfz^m$o#yJb}RvRkd;=^2b0)z4T=^7(63C zkVHL;;oG$XZYvTVj?HD@_2qLM({3YnZ`SGZh7e~B#MtViiPNy_P~gEgLsb3>BDsZ- zeW&|{Tu~m|BQfWtn%P@$jmliAhAcZgM2a9YmKM6@4HDJc6tF2WA$TTi47qBtP%F0-v<i&4>k+!Ie4AMmq zzzeYni~_{WFH8`(J{C~O5PsI1Y%-j>Xc$|$wz^6d*R{UCuXXDPp2}Ff#0Fl<0IpiU z^$FL*a}I5<(!i@Ez}=qQC;lX}n7eYx7+odX6QkFCZ~Cq$iM}S#Y>`>BaOT4!F{br> zu^h*o5^ZE|1IFa8*A|mLvUTvOFtAaGDpsmDg*aKh^DJMeZ5Xr*v5@3h;xDo3=IYKL zNieMFJq;kiyUzDqdcT6cv+@@zf5LYfl~$0$5i>26vv@>e7RlbrX2T1r%mSv-?k z5MzHR%A41o0ik0XW-D|vH7{CsluO1VDZ^86;--1hpc|~lAFT!S>e41>Me9|#?Y2JI z8Q8aPF~8n;Z$vr|`>>tMMP8GihoUGKrk7=i{Z@M_aL0A~Zaq$8`R-Ai%oVJBh?7pb zBEg^-+#Zv(GWp-B;)j>Nb1C4X;jrTd^bznr*Uin%%a<mn#6ZjjUF{KCBYkpm%28!1TS*%AQ4#yS z9Zfx?-SbYTH4)xy9Tv{W?qwj(z&$aDUvL1CIDV>w6_QB^J)>f zk+2zfYtKgZ8vfN>V3@P@9llikR4!CbLSWl^)#~!ttS1uL>FJO!LWpb54loC$S3ImL0*F3tr&< zmTHILDJ5R>w?6T8f0ha3l{DPTpTUSv+yh%}3cSZk?o4I+TkhaknnBxg>v4WCH=&7G zOxF=vFCG@g%;d=!P6CJ;!IK&f@18V05mJ1rMapbbG>r4N$NaW41JfmM*FT;`>oa_9 z{xB}SJ9ZrO;>;w5uj?t7PT;tU#lVxy3Sbnq0(=m{-;cK{v9L&vD-aGk<2`9Q7z#yk zM{4iEC&nvkk?3`D{xv|V?_fD;%Ybbd_g{WJOW&boTR7N()UKzNw$SicjGDs3i^&;v zH$XY?P|w!{1cWV=T4zbpQ>AZ8x#FxQlImPID5OxGPIm+f?|-4K@0TRJww=b`%OwjW zY{13A|G_VJJF6N!N!q6ad`gqT3vOqFL%qmQ{8k|5$ z$Kluy;CY>P*(B(y!9s%(m%Cxkgn^;SvgL;sm^hc^WC+d>6A(w`mOyCnh%+xG37k=x z-R{fn<>AlPNUQPnUPFK&*tUf>=heDS$ZnOg7zslcIeIhYrfQZzavSjJ)W`pb^MK#$ zR3Yw*V=I=(5KzN}*S-*ohm{b532r!?sSvnEnEd9J5&*;|eav5iNfpLA*!Df2#kv)Y zZL|TsZgX?9^Sd}&Nb9U%1Z>%3SX|$m;S@16YtQ5zy>|W=`5*?P#Y-VQPxBi^6hr=n zue2>T9%c2@N#edxl@G5-Kh!rPM|lEzvbb2}|xvYLq3!!~cJ0rPIm zr1*_J)G(53yTLJu)hrb_sZcvTWcUEG&>zX7T$ya1t%zzOay=I8*E#b1MLkY%&sq2h z28VajN6`bW@+%CE5OA0daPsKpb5~<9s322Z+W6}x57*Rju-c8_VI>63tkf_fH{M| z;j(7c?|8EdYiSI1JG+XLdf4o(#qkL$c9K$3C%=Es*E<$?_`~l+q1iWx2gR!>RMXB} zxy-6)$EKWV0U3zs`ekpIr`RSOi~%%Hv*KN9qprSri$`e(NUbl+#na{QKBYV9Toe8H zWp*(8HPYs6tcsz1<8$YVa7)9-QJ>#7GdMVIs00Y)xcw|ft5T&5B&kb|&E{oJ)2}iw zm7A?Q^T!gOJ)5$aAUbK0Ky2_8URfYxbWCTP_z1L25nTj6&_@ASfCcG zcA5a#D|p)_J_qqhSolw4l~@}@pcXq}0qtPS#=U1+1<_Umh zJfLIhljE_$ZZeO95|!QlwOUTzDS_22W&Z0sO9OJ{J&y<@PcQk>%xwL7wWm_Z6H2^nbVWNq@l0 zre2Z$kE1Xor>e$@Zb~w;*6wccR63N0-d)jH`6g0B_`L5LJ^Y`5Mq3l$((sDQy^hm` z6Q_^+GeD@S#Jd08Vo6C!IXSuNufHDuY4P00lbk`_M3C#%$YBM8;{e(9C;rU3n3-ey z|7#NpgQWq6>_J@1`y`lY#G`?2f?V44t|vDVpf`b>Akp*%28_YiF8^nu+0(6~QrUk@ zp|46{!hcUvOG^s?jP@x#^AYQIDyQosh`g$oz^Zm)>S%ors87Qylc;bX)-R&Jj}B1?aIC@Yf!iX6y^t4 z0+qnx8*-;FSUUmGT!8$DJDOI1&WF(n&!{>nQDsf>74_KQD$zqb6bq(1b0ANsQ}Q^@ zIGc5mgd(I|w&8oN^f{e!-c*U6fL8L5L`LL^|x;BAE2>9rq!^7iCBsi`JiARiC>$qr#;%#H* zTPbQeEcjxPo=vx5=tU<;_l`Mb={S$wKH_e{z?6I$3&RZ;B{cRdg9gL#OESL%ikEa# zT;H-(buszA{wjZ+KzyjbENtZCgkF@*aW!pckkYT_wW)*B#5sFQ|vdi$rN*$ zcc1q=_v$dOJ$q-$GfVR3(@At=^z<8m$SuR1vp9-dbav0Ue=a zMhl`7|&v!WWm#p1y?>>pf1G=N{Pb3R_f$8%?AnP~N#<}du^<6tAol+lm;i&wgNT}T}t>U=6YA6Uaz-=!S0nt zV~}+)MU=j$ZX_;48Mg(A%qQ6eHb}OlMGwOB?w&Ghig~3I2Qm%yk612psTHy_*)PB; zJ`#0%cFLSwISuBI`tPF|6^p-JdYp<1{f>&p=$L@hhC-oIF*?or(f$ml@E}$%-TU>R zqdXj24cdV>IHf?a?BU_j*475(OESHbmq9^6Clol~u#Qnx-{Fa*{u4}=CuZ0d-vl4n>FhI#~ z-J*0$M-rfeLLVf)UZAB7_ih6bT0<rYMM2xTdp>S|6vQBJ32KhfoTb>64FSx6`hvvzqsY2W2lC9 zD5Bp`uRV35qwd8QUz0KIhM5Xn?vMz5XtT%^O@vY{l=LkSAO`j~D>mkBFK^3r=;>G8 z>2KFh#1bBsgh<{2OWgl4&SVd+cn&0t;B_CMOK$G%?QLzTHhbNI7r2?#OZCCK0|*ER z%V6I|nv=!auk zS4|&f8X>9BmzjG}ZeAS`e4)Hw2ZqGTkze{kVus#zAUBS(ofLBB>3qf_5E5gjl;sQB zKH6{|-xo6@oQ1tlVZrF~;-?-W+ zT{5*SBy8+xx?7s88l*Tu1q$r!nB?~T}g;i3A*Fp($*2} zqU1R@*@)E%?z0Bu^BhC=+A*D==^(2_OgDu^-oaJrczH7!(H*eMm7C^OPq}NX+$mo zkQW@PB$T}U_&1U$aNwr0H+|^of7T^EM5&&gqOXKA{d%Sp&Y)0b?i{{9K0hrjO)9~N zwOe%7A~W{?-qsQtdOEQA{%^t7e>F=_K~=f!T=k#e@&BzAP2UQ0f#Lio>?6#M{UdJt zo5B32tW69d%2QNB0byC|pCFnO$VLBN>hs`d|5fX79bEnmqp7C6pq7TmCiXwenjW0o z0X4|HM{y66joy|cV6VJ_N_jt@9qzoe^8)@8_D* h|9{Z`$HwTy`(UINE0Yny`4RXhDJu7-SXlql{{umoSm*!% literal 0 HcmV?d00001 diff --git a/collector/examples/synthesize/record.yaml b/collector/examples/synthesize/record.yaml index 11d6fb278a..2e2756b675 100644 --- a/collector/examples/synthesize/record.yaml +++ b/collector/examples/synthesize/record.yaml @@ -1,55 +1,29 @@ receivers: - otlp/loopback: - protocols: - grpc: - endpoint: 127.0.0.1:4000 - keepalive: - server_parameters: - max_connection_age: 10s - max_connection_age_grace: 10s - arrow: - disabled: false - otlp: - protocols: - grpc: generator: path: ./generator/hipster_shop.yaml exporters: - otlp/arrow: - endpoint: 127.0.0.1:4000 - wait_for_ready: true - tls: - insecure: true - arrow: - disabled: false - num_streams: 1 - max_stream_lifetime: 5s - retry_on_failure: - enabled: false - sending_queue: - enabled: false file/traces: path: ./recorded_traces.json - compression: zstd + compression: format: json file/metrics: path: ./recorded_metrics.json - compression: zstd + compression: format: json logging: + loglevel: info processors: batch: + send_batch_max_size: 15 + send_batch_size: 10 + timeout: 1s obfuscation: - encrypt_key: "some-32-byte-long-key-to-be-safe" - encrypt_round: 128 - # obfuscate all attributes with string values - encrypt_all: true + rounds: 20 + key_length: 256 -# Note: to disable obfuscation, simply remove "obfuscation" from the -# list of processors below. service: pipelines: # This pipeline generates trace data, obfuscates + batches the data, and @@ -57,13 +31,9 @@ service: traces/generate: receivers: [generator] processors: [obfuscation, batch] - exporters: [otlp/arrow, logging] - - traces/loop: - receivers: [otlp/loopback] - exporters: [file/traces] + exporters: [file/traces, logging] metrics: receivers: [generator] processors: [obfuscation, batch] - exporters: [file/metrics, logging] \ No newline at end of file + exporters: [file/metrics, logging] diff --git a/collector/examples/synthesize/replay.yaml b/collector/examples/synthesize/replay.yaml index 55860a9552..5dee7094bc 100644 --- a/collector/examples/synthesize/replay.yaml +++ b/collector/examples/synthesize/replay.yaml @@ -1,17 +1,37 @@ receivers: - otlp: + otlp/loopback: protocols: grpc: + endpoint: 127.0.0.1:4000 + include_metadata: true + arrow: + disabled: false file/traces: path: ./recorded_traces.json - compression: zstd + compression: format: json file/metrics: path: ./recorded_metrics.json - compression: zstd + compression: format: json exporters: + otlp/arrow: + endpoint: 127.0.0.1:4000 + wait_for_ready: true + tls: + insecure: true + arrow: + disabled: false + disable_downgrade: true + num_streams: 1 + retry_on_failure: + enabled: false + sending_queue: + enabled: false + auth: + authenticator: headers_setter + file/traces: path: ./replayed_traces.json format: json @@ -20,16 +40,58 @@ exporters: format: json logging: -processors: - batch: +connectors: + validation/verify/traces: + validation/expect/traces: + follower: traces/validate + + validation/verify/metrics: + validation/expect/metrics: + follower: metrics/validate + +extensions: + headers_setter: + headers: + - key: validation-sequence + from_context: X-Validation-Sequence service: + extensions: [headers_setter] pipelines: - traces: + traces/input: receivers: [file/traces] - processors: [batch] + exporters: [validation/expect/traces] + metrics/input: + receivers: [file/metrics] + exporters: [validation/expect/metrics] + + traces/validate: + receivers: [validation/expect/traces] + exporters: [validation/verify/traces, otlp/arrow] + metrics/validate: + receivers: [validation/expect/metrics] + exporters: [validation/verify/metrics, otlp/arrow] + + traces/loop: + receivers: [otlp/loopback] + exporters: [validation/verify/traces] + metrics/loop: + receivers: [otlp/loopback] + exporters: [validation/verify/metrics] + + traces/output: + receivers: [validation/verify/traces] exporters: [file/traces, logging] + metrics/output: + receivers: [validation/verify/metrics] + exporters: [file/metrics, logging] + + telemetry: + resource: + "service.name": "replayer" metrics: - receivers: [file/metrics] - processors: [batch] - exporters: [file/metrics, logging] \ No newline at end of file + address: 127.0.0.1:8888 + level: detailed + logs: + level: debug + #level: info diff --git a/collector/gen/exporter/fileexporter/factory.go b/collector/gen/exporter/fileexporter/factory.go index aec2a5b250..8c0a635ba6 100644 --- a/collector/gen/exporter/fileexporter/factory.go +++ b/collector/gen/exporter/fileexporter/factory.go @@ -37,7 +37,8 @@ func NewFactory() exporter.Factory { createDefaultConfig, exporter.WithTraces(createTracesExporter, metadata.TracesStability), exporter.WithMetrics(createMetricsExporter, metadata.MetricsStability), - exporter.WithLogs(createLogsExporter, metadata.LogsStability)) + exporter.WithLogs(createLogsExporter, metadata.LogsStability), + ) } func createDefaultConfig() component.Config { @@ -71,6 +72,12 @@ func createTracesExporter( exporterhelper.WithStart(fe.Start), exporterhelper.WithShutdown(fe.Shutdown), exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: false}), + exporterhelper.WithRetry(exporterhelper.RetrySettings{ + Enabled: false, + }), + exporterhelper.WithQueue(exporterhelper.QueueSettings{ + Enabled: false, + }), ) } @@ -98,6 +105,12 @@ func createMetricsExporter( exporterhelper.WithStart(fe.Start), exporterhelper.WithShutdown(fe.Shutdown), exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: false}), + exporterhelper.WithRetry(exporterhelper.RetrySettings{ + Enabled: false, + }), + exporterhelper.WithQueue(exporterhelper.QueueSettings{ + Enabled: false, + }), ) } @@ -125,6 +138,12 @@ func createLogsExporter( exporterhelper.WithStart(fe.Start), exporterhelper.WithShutdown(fe.Shutdown), exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: false}), + exporterhelper.WithRetry(exporterhelper.RetrySettings{ + Enabled: false, + }), + exporterhelper.WithQueue(exporterhelper.QueueSettings{ + Enabled: false, + }), ) } @@ -172,4 +191,4 @@ func buildFileWriter(cfg *Config, logger *zap.Logger) (WriteCloseFlusher, error) // We maintain this map because the Factory is asked trace and metric receivers separately // when it gets CreateTracesReceiver() and CreateMetricsReceiver() but they must not // create separate objects, they must use one Receiver object per configuration. -var exporters = sharedcomponent.NewSharedComponents[*Config, component.Component]() \ No newline at end of file +var exporters = sharedcomponent.NewSharedComponents[*Config, component.Component]() diff --git a/collector/gen/exporter/fileexporter/file_exporter.go b/collector/gen/exporter/fileexporter/file_exporter.go index 63105c1e5e..534a6a3d87 100644 --- a/collector/gen/exporter/fileexporter/file_exporter.go +++ b/collector/gen/exporter/fileexporter/file_exporter.go @@ -124,10 +124,14 @@ func (lw *lineWriter) Close() error { } func (lw *lineWriter) Flush() error { + lw.mutex.Lock() + defer lw.mutex.Unlock() return lw.file.Flush() } func (lw *lineWriter) getFile() io.WriteCloser { + lw.mutex.Lock() + defer lw.mutex.Unlock() return lw.file } @@ -223,4 +227,4 @@ func (e *fileExporter) Shutdown(context.Context) error { close(e.stopTicker) } return e.file.Close() -} \ No newline at end of file +} diff --git a/collector/gen/exporter/otlpexporter/config_test.go b/collector/gen/exporter/otlpexporter/config_test.go index 87707b772f..809902e8e6 100644 --- a/collector/gen/exporter/otlpexporter/config_test.go +++ b/collector/gen/exporter/otlpexporter/config_test.go @@ -79,6 +79,7 @@ func TestUnmarshalConfig(t *testing.T) { Arrow: ArrowSettings{ NumStreams: 2, EnableMixedSignals: true, + MaxStreamLifetime: 2 * time.Hour, }, }, cfg) } @@ -87,17 +88,17 @@ func TestArrowSettingsValidate(t *testing.T) { settings := func(enabled bool, numStreams int, maxStreamLifetime time.Duration) *ArrowSettings { return &ArrowSettings{Disabled: !enabled, NumStreams: numStreams, MaxStreamLifetime: maxStreamLifetime} } - require.NoError(t, settings(true, 1, 10 * time.Second).Validate()) - require.NoError(t, settings(false, 1, 10 * time.Second).Validate()) - require.NoError(t, settings(true, 2, 1 * time.Second).Validate()) - require.NoError(t, settings(true, math.MaxInt, 10 * time.Second).Validate()) + require.NoError(t, settings(true, 1, 10*time.Second).Validate()) + require.NoError(t, settings(false, 1, 10*time.Second).Validate()) + require.NoError(t, settings(true, 2, 1*time.Second).Validate()) + require.NoError(t, settings(true, math.MaxInt, 10*time.Second).Validate()) - require.Error(t, settings(true, 0, 10 * time.Second).Validate()) - require.Contains(t, settings(true, 0, 10 * time.Second).Validate().Error(), "stream count must be") - require.Contains(t, settings(true, 1, -1 * time.Second).Validate().Error(), "max stream life must be") - require.Error(t, settings(false, -1, 10 * time.Second).Validate()) - require.Error(t, settings(false, 1, -1 * time.Second).Validate()) - require.Error(t, settings(true, math.MinInt, 10 * time.Second).Validate()) + require.Error(t, settings(true, 0, 10*time.Second).Validate()) + require.Contains(t, settings(true, 0, 10*time.Second).Validate().Error(), "stream count must be") + require.Contains(t, settings(true, 1, -1*time.Second).Validate().Error(), "max stream life must be") + require.Error(t, settings(false, -1, 10*time.Second).Validate()) + require.Error(t, settings(false, 1, -1*time.Second).Validate()) + require.Error(t, settings(true, math.MinInt, 10*time.Second).Validate()) } func TestDefaultSettingsValid(t *testing.T) { @@ -106,5 +107,4 @@ func TestDefaultSettingsValid(t *testing.T) { // validation always checks that a value is set. cfg.(*Config).Arrow.MaxStreamLifetime = 2 * time.Second require.NoError(t, cfg.(*Config).Validate()) - } diff --git a/collector/gen/exporter/otlpexporter/factory.go b/collector/gen/exporter/otlpexporter/factory.go index 0d1df0ea0e..9a96533a30 100644 --- a/collector/gen/exporter/otlpexporter/factory.go +++ b/collector/gen/exporter/otlpexporter/factory.go @@ -6,10 +6,12 @@ package otlpexporter // import "github.com/f5/otel-arrow-adapter/collector/gen/e import ( "context" "runtime" + "time" arrowpb "github.com/f5/otel-arrow-adapter/api/experimental/arrow/v1" "google.golang.org/grpc" + "github.com/f5/otel-arrow-adapter/collector/gen/exporter/otlpexporter/internal/arrow" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/configcompression" "go.opentelemetry.io/collector/config/configgrpc" @@ -17,7 +19,6 @@ import ( "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exporterhelper" - "github.com/f5/otel-arrow-adapter/collector/gen/exporter/otlpexporter/internal/arrow" ) const ( @@ -49,7 +50,8 @@ func createDefaultConfig() component.Config { WriteBufferSize: 512 * 1024, }, Arrow: ArrowSettings{ - NumStreams: runtime.NumCPU(), + NumStreams: runtime.NumCPU(), + MaxStreamLifetime: time.Hour, }, } } diff --git a/collector/gen/exporter/otlpexporter/factory_test.go b/collector/gen/exporter/otlpexporter/factory_test.go index c4d75c005d..5a4c69d570 100644 --- a/collector/gen/exporter/otlpexporter/factory_test.go +++ b/collector/gen/exporter/otlpexporter/factory_test.go @@ -13,6 +13,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/f5/otel-arrow-adapter/collector/gen/internal/testutil" "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/config/configcompression" "go.opentelemetry.io/collector/config/configgrpc" @@ -20,7 +21,6 @@ import ( "go.opentelemetry.io/collector/config/configtls" "go.opentelemetry.io/collector/exporter/exporterhelper" "go.opentelemetry.io/collector/exporter/exportertest" - "github.com/f5/otel-arrow-adapter/collector/gen/internal/testutil" ) func TestCreateDefaultConfig(t *testing.T) { @@ -34,7 +34,7 @@ func TestCreateDefaultConfig(t *testing.T) { assert.Equal(t, ocfg.QueueSettings, exporterhelper.NewDefaultQueueSettings()) assert.Equal(t, ocfg.TimeoutSettings, exporterhelper.NewDefaultTimeoutSettings()) assert.Equal(t, ocfg.Compression, configcompression.Gzip) - assert.Equal(t, ocfg.Arrow, ArrowSettings{Disabled: false, NumStreams: runtime.NumCPU()}) + assert.Equal(t, ocfg.Arrow, ArrowSettings{Disabled: false, NumStreams: runtime.NumCPU(), MaxStreamLifetime: time.Hour}) } func TestCreateMetricsExporter(t *testing.T) { diff --git a/collector/gen/exporter/otlpexporter/internal/arrow/stream.go b/collector/gen/exporter/otlpexporter/internal/arrow/stream.go index 34a9feb96a..0b8987bc62 100644 --- a/collector/gen/exporter/otlpexporter/internal/arrow/stream.go +++ b/collector/gen/exporter/otlpexporter/internal/arrow/stream.go @@ -166,7 +166,6 @@ func (s *Stream) run(bgctx context.Context, streamClient StreamClientFunc, grpcO // so we can set s.client = nil in case of a delayed Unimplemented. err = s.read(ctx) - // Wait for the writer to ensure that all waiters are known. cancel() ww.Wait() diff --git a/collector/gen/exporter/otlpexporter/testdata/config.yaml b/collector/gen/exporter/otlpexporter/testdata/config.yaml index 0120d78fca..b755ef5c5d 100644 --- a/collector/gen/exporter/otlpexporter/testdata/config.yaml +++ b/collector/gen/exporter/otlpexporter/testdata/config.yaml @@ -29,3 +29,4 @@ arrow: num_streams: 2 disabled: false enable_mixed_signals: true + max_stream_lifetime: "2h" diff --git a/collector/processor/obfuscationprocessor/config.go b/collector/processor/obfuscationprocessor/config.go index 766fc493ac..5d35238012 100644 --- a/collector/processor/obfuscationprocessor/config.go +++ b/collector/processor/obfuscationprocessor/config.go @@ -1,9 +1,19 @@ package obfuscationprocessor type Config struct { - EncryptKey string `mapstructure:"encrypt_key"` - EncryptRound int `mapstructure:"encrypt_round"` - EncryptAll bool `mapstructure:"encrypt_all"` + // Rounds is a Fiestel parameter which determines the + // difficulty of uncovering the original data. Default 10. + Rounds int `mapstructure:"rounds"` + // KeyLength is a Fiestel parameter which determines the + // length of the keyt used to obfuscate. Default 128. + KeyLength int `mapstructure:"key_length"` + + // EncryptAll indicates that all byte-array and string values + // should be obfuscated. + EncryptAll bool `mapstructure:"encrypt_all"` + + // EncryptAttributes indicates a specific list of attributes + // to obfuscate. EncryptAttributes []string `mapstructure:"encrypt_attributes"` -} \ No newline at end of file +} diff --git a/collector/processor/obfuscationprocessor/factory.go b/collector/processor/obfuscationprocessor/factory.go index 0d23c47e9b..653f827c14 100644 --- a/collector/processor/obfuscationprocessor/factory.go +++ b/collector/processor/obfuscationprocessor/factory.go @@ -2,6 +2,9 @@ package obfuscationprocessor import ( "context" + + "crypto/rand" + "github.com/cyrildever/feistel" "github.com/cyrildever/feistel/common/utils/hash" "go.opentelemetry.io/collector/component" @@ -16,7 +19,8 @@ const ( // The stability level of the exporter. stability = component.StabilityLevelAlpha - defaultRound = 10 + defaultRounds = 10 + defaultKeyLength = 128 ) // NewFactory creates a factory for the obfuscation processor. @@ -25,15 +29,23 @@ func NewFactory() processor.Factory { typeStr, createDefaultConfig, processor.WithTraces(createTracesProcessor, stability), + processor.WithLogs(createLogsProcessor, stability), processor.WithMetrics(createMetricsProcessor, stability), ) } -func createDefaultConfig() component.Config { +func newKey(keyLength int) string { + buf := make([]byte, keyLength) + rand.Reader.Read(buf) + return string(buf) +} + +func createDefaultConfig() component.Config { return &Config{ - EncryptRound: defaultRound, + Rounds: defaultRounds, + KeyLength: defaultKeyLength, // encrypt all string attributes by default - EncryptAll: true, + EncryptAll: true, } } @@ -47,7 +59,7 @@ func createMetricsProcessor( processor := &obfuscation{ logger: set.Logger, nextMetrics: next, - encrypt: feistel.NewFPECipher(hash.SHA_256, oCfg.EncryptKey, oCfg.EncryptRound), + encrypt: feistel.NewFPECipher(hash.SHA_256, newKey(oCfg.KeyLength), oCfg.Rounds), encryptAttributes: makeEncryptList(oCfg), encryptAll: oCfg.EncryptAll, } @@ -73,7 +85,7 @@ func createTracesProcessor( processor := &obfuscation{ logger: set.Logger, nextTraces: next, - encrypt: feistel.NewFPECipher(hash.SHA_256, oCfg.EncryptKey, oCfg.EncryptRound), + encrypt: feistel.NewFPECipher(hash.SHA_256, newKey(oCfg.KeyLength), oCfg.Rounds), encryptAttributes: makeEncryptList(oCfg), encryptAll: oCfg.EncryptAll, } @@ -88,6 +100,32 @@ func createTracesProcessor( processorhelper.WithShutdown(processor.Shutdown)) } +// createTracesProcessor creates an instance of obfuscation for processing traces +func createLogsProcessor( + ctx context.Context, + set processor.CreateSettings, + cfg component.Config, + next consumer.Logs, +) (processor.Logs, error) { + oCfg := cfg.(*Config) + processor := &obfuscation{ + logger: set.Logger, + nextLogs: next, + encrypt: feistel.NewFPECipher(hash.SHA_256, newKey(oCfg.KeyLength), oCfg.Rounds), + encryptAttributes: makeEncryptList(oCfg), + encryptAll: oCfg.EncryptAll, + } + return processorhelper.NewLogsProcessor( + ctx, + set, + cfg, + next, + processor.processLogs, + processorhelper.WithCapabilities(processor.Capabilities()), + processorhelper.WithStart(processor.Start), + processorhelper.WithShutdown(processor.Shutdown)) +} + // makeEncryptList sets up a lookup table of span attribute keys which need to be encrypted. func makeEncryptList(c *Config) map[string]struct{} { allowList := make(map[string]struct{}, len(c.EncryptAttributes)) @@ -98,4 +136,4 @@ func makeEncryptList(c *Config) map[string]struct{} { c.EncryptAll = false } return allowList -} \ No newline at end of file +} diff --git a/collector/processor/obfuscationprocessor/processor.go b/collector/processor/obfuscationprocessor/processor.go index cc6ee7586c..83531270a5 100644 --- a/collector/processor/obfuscationprocessor/processor.go +++ b/collector/processor/obfuscationprocessor/processor.go @@ -19,6 +19,7 @@ type obfuscation struct { // Next trace consumer in line nextTraces consumer.Traces nextMetrics consumer.Metrics + nextLogs consumer.Logs encryptAttributes map[string]struct{} encrypt *feistel.FPECipher diff --git a/go.mod b/go.mod index db63b43cfb..70108a5237 100644 --- a/go.mod +++ b/go.mod @@ -31,6 +31,7 @@ require ( go.opentelemetry.io/collector/config/configtelemetry v0.80.0 go.opentelemetry.io/collector/config/configtls v0.80.0 go.opentelemetry.io/collector/confmap v0.80.0 + go.opentelemetry.io/collector/connector v0.80.0 go.opentelemetry.io/collector/consumer v0.80.0 go.opentelemetry.io/collector/exporter v0.80.0 go.opentelemetry.io/collector/exporter/loggingexporter v0.80.0 @@ -137,7 +138,6 @@ require ( go.mongodb.org/mongo-driver v1.11.6 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/collector/config/internal v0.80.0 // indirect - go.opentelemetry.io/collector/connector v0.80.0 // indirect go.opentelemetry.io/collector/featuregate v1.0.0-rcv0013 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.1-0.20230612162650-64be7e574a17 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 // indirect diff --git a/pkg/otel/assert/equiv.go b/pkg/otel/assert/equiv.go index 0107d24324..0ce6d55e14 100644 --- a/pkg/otel/assert/equiv.go +++ b/pkg/otel/assert/equiv.go @@ -32,11 +32,12 @@ import ( // testing framework is not available. type Testing interface { Helper() - FailNow(failureMessage string, msgAndArgs ...interface{}) bool - NoError(err error, msgAndArgs ...interface{}) - Equal(expected, actual interface{}, msgAndArgs ...interface{}) bool + FailNow(failureMessage string, msgAndArgs ...any) bool + NoError(err error, msgAndArgs ...any) + Equal(expected, actual interface{}, msgAndArgs ...any) bool } +// StdUnitTest adapts the Equiv() method for a standard unit test. type StdUnitTest struct { t *testing.T } @@ -49,18 +50,60 @@ func (a *StdUnitTest) Helper() { a.t.Helper() } -func (a *StdUnitTest) FailNow(failureMessage string, msgAndArgs ...interface{}) bool { +func (a *StdUnitTest) FailNow(failureMessage string, msgAndArgs ...any) bool { return assert.FailNow(a.t, failureMessage, msgAndArgs...) } -func (a *StdUnitTest) NoError(err error, msgAndArgs ...interface{}) { +func (a *StdUnitTest) NoError(err error, msgAndArgs ...any) { assert.NoError(a.t, err, msgAndArgs...) } -func (a *StdUnitTest) Equal(expected, actual interface{}, msgAndArgs ...interface{}) bool { +func (a *StdUnitTest) Equal(expected, actual interface{}, msgAndArgs ...any) bool { return assert.Equal(a.t, expected, actual, msgAndArgs...) } +// StandaloneTest adapts the Equiv() method for a standard unit test. +type StandaloneTest struct { +} + +func NewStandaloneTest() Testing { + return &StandaloneTest{} +} + +func (a *StandaloneTest) Helper() { + // n/a +} + +// sprintf is handle's handles `...any` the way the testify library +// does, meaning to expect a printf formating directive in the first +// position and format appropriately. +func sprintf(msgAndArgs ...any) string { + if len(msgAndArgs) == 0 { + return "" // empty + } + if s, ok := msgAndArgs[0].(string); ok { + return fmt.Sprintf(s, msgAndArgs[1:]...) + } + return fmt.Sprint(msgAndArgs...) // fallback to sprint() +} + +func (a *StandaloneTest) FailNow(failureMessage string, msgAndArgs ...any) bool { + panic(fmt.Sprint(failureMessage, ": ", sprintf(msgAndArgs...))) +} + +func (a *StandaloneTest) NoError(err error, msgAndArgs ...any) { + if err != nil { + panic(fmt.Sprint("unexpected error: ", sprintf(msgAndArgs...))) + } +} + +func (a *StandaloneTest) Equal(expected, actual interface{}, msgAndArgs ...any) bool { + if expected != actual { + panic(fmt.Sprint("unexpected mismatch: ", expected, "!=", actual, sprintf(msgAndArgs...))) + } + return true +} + // Equiv asserts that two arrays of json.Marshaler are equivalent. Metrics, logs, and traces requests implement // json.Marshaler and are considered equivalent if they have the same set of vPaths. A vPath is a path to a value // in a json object. For example the vPath "resource.attributes.service.name=myservice" refers to the value "myservice" diff --git a/tools/trace_verify/main.go b/tools/trace_verify/main.go new file mode 100644 index 0000000000..4dfda02e3a --- /dev/null +++ b/tools/trace_verify/main.go @@ -0,0 +1,85 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package main + +import ( + "bufio" + "encoding/json" + "flag" + "log" + "os" + + "github.com/f5/otel-arrow-adapter/pkg/otel/arrow_record" + "github.com/f5/otel-arrow-adapter/pkg/otel/assert" + + "go.opentelemetry.io/collector/pdata/ptrace" + "go.opentelemetry.io/collector/pdata/ptrace/ptraceotlp" +) + +func main() { + flag.Parse() + + producer := arrow_record.NewProducer() + consumer := arrow_record.NewConsumer() + + args := flag.Args() + + args = os.Args[1:] + + asserter := assert.NewStandaloneTest() + + for _, file := range args { + f, err := os.Open(file) + if err != nil { + log.Fatalf("open: %s: %v", file, err) + return + } + scanner := bufio.NewScanner(f) + for scanner.Scan() { + var un ptrace.JSONUnmarshaler + + expected, err := un.UnmarshalTraces([]byte(scanner.Text())) + if err != nil { + log.Fatalf("parse: %v", err) + } + + batch, err := producer.BatchArrowRecordsFromTraces(expected) + if err != nil { + log.Fatalf("produce arrow: %v", err) + } + + received, err := consumer.TracesFrom(batch) + if err != nil { + log.Fatalf("consume arrow: %v", err) + } + if len(received) != 1 { + log.Fatalf("expecting 1 traces: %d", len(received)) + } + + assert.Equiv(asserter, []json.Marshaler{ + ptraceotlp.NewExportRequestFromTraces(expected), + }, []json.Marshaler{ + ptraceotlp.NewExportRequestFromTraces(received[0]), + }) + + log.Printf("Verified %d traces\n", expected.SpanCount()) + } + if err := scanner.Err(); err != nil { + log.Fatalf("read: %v", err) + } + } +}