diff --git a/clients/go/admin/mocks/ExternalPluginServiceClient.go b/clients/go/admin/mocks/ExternalPluginServiceClient.go new file mode 100644 index 000000000..05df34213 --- /dev/null +++ b/clients/go/admin/mocks/ExternalPluginServiceClient.go @@ -0,0 +1,162 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + grpc "google.golang.org/grpc" + + mock "github.com/stretchr/testify/mock" + + service "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service" +) + +// ExternalPluginServiceClient is an autogenerated mock type for the ExternalPluginServiceClient type +type ExternalPluginServiceClient struct { + mock.Mock +} + +type ExternalPluginServiceClient_CreateTask struct { + *mock.Call +} + +func (_m ExternalPluginServiceClient_CreateTask) Return(_a0 *service.TaskCreateResponse, _a1 error) *ExternalPluginServiceClient_CreateTask { + return &ExternalPluginServiceClient_CreateTask{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *ExternalPluginServiceClient) OnCreateTask(ctx context.Context, in *service.TaskCreateRequest, opts ...grpc.CallOption) *ExternalPluginServiceClient_CreateTask { + c_call := _m.On("CreateTask", ctx, in, opts) + return &ExternalPluginServiceClient_CreateTask{Call: c_call} +} + +func (_m *ExternalPluginServiceClient) OnCreateTaskMatch(matchers ...interface{}) *ExternalPluginServiceClient_CreateTask { + c_call := _m.On("CreateTask", matchers...) + return &ExternalPluginServiceClient_CreateTask{Call: c_call} +} + +// CreateTask provides a mock function with given fields: ctx, in, opts +func (_m *ExternalPluginServiceClient) CreateTask(ctx context.Context, in *service.TaskCreateRequest, opts ...grpc.CallOption) (*service.TaskCreateResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *service.TaskCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *service.TaskCreateRequest, ...grpc.CallOption) *service.TaskCreateResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*service.TaskCreateResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *service.TaskCreateRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type ExternalPluginServiceClient_DeleteTask struct { + *mock.Call +} + +func (_m ExternalPluginServiceClient_DeleteTask) Return(_a0 *service.TaskDeleteResponse, _a1 error) *ExternalPluginServiceClient_DeleteTask { + return &ExternalPluginServiceClient_DeleteTask{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *ExternalPluginServiceClient) OnDeleteTask(ctx context.Context, in *service.TaskDeleteRequest, opts ...grpc.CallOption) *ExternalPluginServiceClient_DeleteTask { + c_call := _m.On("DeleteTask", ctx, in, opts) + return &ExternalPluginServiceClient_DeleteTask{Call: c_call} +} + +func (_m *ExternalPluginServiceClient) OnDeleteTaskMatch(matchers ...interface{}) *ExternalPluginServiceClient_DeleteTask { + c_call := _m.On("DeleteTask", matchers...) + return &ExternalPluginServiceClient_DeleteTask{Call: c_call} +} + +// DeleteTask provides a mock function with given fields: ctx, in, opts +func (_m *ExternalPluginServiceClient) DeleteTask(ctx context.Context, in *service.TaskDeleteRequest, opts ...grpc.CallOption) (*service.TaskDeleteResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *service.TaskDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *service.TaskDeleteRequest, ...grpc.CallOption) *service.TaskDeleteResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*service.TaskDeleteResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *service.TaskDeleteRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type ExternalPluginServiceClient_GetTask struct { + *mock.Call +} + +func (_m ExternalPluginServiceClient_GetTask) Return(_a0 *service.TaskGetResponse, _a1 error) *ExternalPluginServiceClient_GetTask { + return &ExternalPluginServiceClient_GetTask{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *ExternalPluginServiceClient) OnGetTask(ctx context.Context, in *service.TaskGetRequest, opts ...grpc.CallOption) *ExternalPluginServiceClient_GetTask { + c_call := _m.On("GetTask", ctx, in, opts) + return &ExternalPluginServiceClient_GetTask{Call: c_call} +} + +func (_m *ExternalPluginServiceClient) OnGetTaskMatch(matchers ...interface{}) *ExternalPluginServiceClient_GetTask { + c_call := _m.On("GetTask", matchers...) + return &ExternalPluginServiceClient_GetTask{Call: c_call} +} + +// GetTask provides a mock function with given fields: ctx, in, opts +func (_m *ExternalPluginServiceClient) GetTask(ctx context.Context, in *service.TaskGetRequest, opts ...grpc.CallOption) (*service.TaskGetResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *service.TaskGetResponse + if rf, ok := ret.Get(0).(func(context.Context, *service.TaskGetRequest, ...grpc.CallOption) *service.TaskGetResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*service.TaskGetResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *service.TaskGetRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} diff --git a/clients/go/admin/mocks/ExternalPluginServiceServer.go b/clients/go/admin/mocks/ExternalPluginServiceServer.go new file mode 100644 index 000000000..34dae1432 --- /dev/null +++ b/clients/go/admin/mocks/ExternalPluginServiceServer.go @@ -0,0 +1,138 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import ( + context "context" + + service "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service" + mock "github.com/stretchr/testify/mock" +) + +// ExternalPluginServiceServer is an autogenerated mock type for the ExternalPluginServiceServer type +type ExternalPluginServiceServer struct { + mock.Mock +} + +type ExternalPluginServiceServer_CreateTask struct { + *mock.Call +} + +func (_m ExternalPluginServiceServer_CreateTask) Return(_a0 *service.TaskCreateResponse, _a1 error) *ExternalPluginServiceServer_CreateTask { + return &ExternalPluginServiceServer_CreateTask{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *ExternalPluginServiceServer) OnCreateTask(_a0 context.Context, _a1 *service.TaskCreateRequest) *ExternalPluginServiceServer_CreateTask { + c_call := _m.On("CreateTask", _a0, _a1) + return &ExternalPluginServiceServer_CreateTask{Call: c_call} +} + +func (_m *ExternalPluginServiceServer) OnCreateTaskMatch(matchers ...interface{}) *ExternalPluginServiceServer_CreateTask { + c_call := _m.On("CreateTask", matchers...) + return &ExternalPluginServiceServer_CreateTask{Call: c_call} +} + +// CreateTask provides a mock function with given fields: _a0, _a1 +func (_m *ExternalPluginServiceServer) CreateTask(_a0 context.Context, _a1 *service.TaskCreateRequest) (*service.TaskCreateResponse, error) { + ret := _m.Called(_a0, _a1) + + var r0 *service.TaskCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *service.TaskCreateRequest) *service.TaskCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*service.TaskCreateResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *service.TaskCreateRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type ExternalPluginServiceServer_DeleteTask struct { + *mock.Call +} + +func (_m ExternalPluginServiceServer_DeleteTask) Return(_a0 *service.TaskDeleteResponse, _a1 error) *ExternalPluginServiceServer_DeleteTask { + return &ExternalPluginServiceServer_DeleteTask{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *ExternalPluginServiceServer) OnDeleteTask(_a0 context.Context, _a1 *service.TaskDeleteRequest) *ExternalPluginServiceServer_DeleteTask { + c_call := _m.On("DeleteTask", _a0, _a1) + return &ExternalPluginServiceServer_DeleteTask{Call: c_call} +} + +func (_m *ExternalPluginServiceServer) OnDeleteTaskMatch(matchers ...interface{}) *ExternalPluginServiceServer_DeleteTask { + c_call := _m.On("DeleteTask", matchers...) + return &ExternalPluginServiceServer_DeleteTask{Call: c_call} +} + +// DeleteTask provides a mock function with given fields: _a0, _a1 +func (_m *ExternalPluginServiceServer) DeleteTask(_a0 context.Context, _a1 *service.TaskDeleteRequest) (*service.TaskDeleteResponse, error) { + ret := _m.Called(_a0, _a1) + + var r0 *service.TaskDeleteResponse + if rf, ok := ret.Get(0).(func(context.Context, *service.TaskDeleteRequest) *service.TaskDeleteResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*service.TaskDeleteResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *service.TaskDeleteRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +type ExternalPluginServiceServer_GetTask struct { + *mock.Call +} + +func (_m ExternalPluginServiceServer_GetTask) Return(_a0 *service.TaskGetResponse, _a1 error) *ExternalPluginServiceServer_GetTask { + return &ExternalPluginServiceServer_GetTask{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *ExternalPluginServiceServer) OnGetTask(_a0 context.Context, _a1 *service.TaskGetRequest) *ExternalPluginServiceServer_GetTask { + c_call := _m.On("GetTask", _a0, _a1) + return &ExternalPluginServiceServer_GetTask{Call: c_call} +} + +func (_m *ExternalPluginServiceServer) OnGetTaskMatch(matchers ...interface{}) *ExternalPluginServiceServer_GetTask { + c_call := _m.On("GetTask", matchers...) + return &ExternalPluginServiceServer_GetTask{Call: c_call} +} + +// GetTask provides a mock function with given fields: _a0, _a1 +func (_m *ExternalPluginServiceServer) GetTask(_a0 context.Context, _a1 *service.TaskGetRequest) (*service.TaskGetResponse, error) { + ret := _m.Called(_a0, _a1) + + var r0 *service.TaskGetResponse + if rf, ok := ret.Get(0).(func(context.Context, *service.TaskGetRequest) *service.TaskGetResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*service.TaskGetResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *service.TaskGetRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} diff --git a/clients/go/admin/mocks/isTaskCreateResponse_Value.go b/clients/go/admin/mocks/isTaskCreateResponse_Value.go new file mode 100644 index 000000000..b692f16f9 --- /dev/null +++ b/clients/go/admin/mocks/isTaskCreateResponse_Value.go @@ -0,0 +1,15 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import mock "github.com/stretchr/testify/mock" + +// isTaskCreateResponse_Value is an autogenerated mock type for the isTaskCreateResponse_Value type +type isTaskCreateResponse_Value struct { + mock.Mock +} + +// isTaskCreateResponse_Value provides a mock function with given fields: +func (_m *isTaskCreateResponse_Value) isTaskCreateResponse_Value() { + _m.Called() +} diff --git a/gen/pb-cpp/flyteidl/service/external_plugin_service.grpc.pb.cc b/gen/pb-cpp/flyteidl/service/external_plugin_service.grpc.pb.cc new file mode 100644 index 000000000..be7a2ec52 --- /dev/null +++ b/gen/pb-cpp/flyteidl/service/external_plugin_service.grpc.pb.cc @@ -0,0 +1,169 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: flyteidl/service/external_plugin_service.proto + +#include "flyteidl/service/external_plugin_service.pb.h" +#include "flyteidl/service/external_plugin_service.grpc.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace flyteidl { +namespace service { + +static const char* ExternalPluginService_method_names[] = { + "/flyteidl.service.ExternalPluginService/CreateTask", + "/flyteidl.service.ExternalPluginService/GetTask", + "/flyteidl.service.ExternalPluginService/DeleteTask", +}; + +std::unique_ptr< ExternalPluginService::Stub> ExternalPluginService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) { + (void)options; + std::unique_ptr< ExternalPluginService::Stub> stub(new ExternalPluginService::Stub(channel)); + return stub; +} + +ExternalPluginService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel) + : channel_(channel), rpcmethod_CreateTask_(ExternalPluginService_method_names[0], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetTask_(ExternalPluginService_method_names[1], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_DeleteTask_(ExternalPluginService_method_names[2], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + {} + +::grpc::Status ExternalPluginService::Stub::CreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::flyteidl::service::TaskCreateResponse* response) { + return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_CreateTask_, context, request, response); +} + +void ExternalPluginService::Stub::experimental_async::CreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_CreateTask_, context, request, response, std::move(f)); +} + +void ExternalPluginService::Stub::experimental_async::CreateTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskCreateResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_CreateTask_, context, request, response, std::move(f)); +} + +void ExternalPluginService::Stub::experimental_async::CreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_CreateTask_, context, request, response, reactor); +} + +void ExternalPluginService::Stub::experimental_async::CreateTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_CreateTask_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskCreateResponse>* ExternalPluginService::Stub::AsyncCreateTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::service::TaskCreateResponse>::Create(channel_.get(), cq, rpcmethod_CreateTask_, context, request, true); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskCreateResponse>* ExternalPluginService::Stub::PrepareAsyncCreateTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::service::TaskCreateResponse>::Create(channel_.get(), cq, rpcmethod_CreateTask_, context, request, false); +} + +::grpc::Status ExternalPluginService::Stub::GetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::flyteidl::service::TaskGetResponse* response) { + return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_GetTask_, context, request, response); +} + +void ExternalPluginService::Stub::experimental_async::GetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetTask_, context, request, response, std::move(f)); +} + +void ExternalPluginService::Stub::experimental_async::GetTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskGetResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetTask_, context, request, response, std::move(f)); +} + +void ExternalPluginService::Stub::experimental_async::GetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetTask_, context, request, response, reactor); +} + +void ExternalPluginService::Stub::experimental_async::GetTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskGetResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetTask_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskGetResponse>* ExternalPluginService::Stub::AsyncGetTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::service::TaskGetResponse>::Create(channel_.get(), cq, rpcmethod_GetTask_, context, request, true); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskGetResponse>* ExternalPluginService::Stub::PrepareAsyncGetTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::service::TaskGetResponse>::Create(channel_.get(), cq, rpcmethod_GetTask_, context, request, false); +} + +::grpc::Status ExternalPluginService::Stub::DeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::flyteidl::service::TaskDeleteResponse* response) { + return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_DeleteTask_, context, request, response); +} + +void ExternalPluginService::Stub::experimental_async::DeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_DeleteTask_, context, request, response, std::move(f)); +} + +void ExternalPluginService::Stub::experimental_async::DeleteTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskDeleteResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_DeleteTask_, context, request, response, std::move(f)); +} + +void ExternalPluginService::Stub::experimental_async::DeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_DeleteTask_, context, request, response, reactor); +} + +void ExternalPluginService::Stub::experimental_async::DeleteTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskDeleteResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_DeleteTask_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskDeleteResponse>* ExternalPluginService::Stub::AsyncDeleteTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::service::TaskDeleteResponse>::Create(channel_.get(), cq, rpcmethod_DeleteTask_, context, request, true); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskDeleteResponse>* ExternalPluginService::Stub::PrepareAsyncDeleteTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::service::TaskDeleteResponse>::Create(channel_.get(), cq, rpcmethod_DeleteTask_, context, request, false); +} + +ExternalPluginService::Service::Service() { + AddMethod(new ::grpc::internal::RpcServiceMethod( + ExternalPluginService_method_names[0], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< ExternalPluginService::Service, ::flyteidl::service::TaskCreateRequest, ::flyteidl::service::TaskCreateResponse>( + std::mem_fn(&ExternalPluginService::Service::CreateTask), this))); + AddMethod(new ::grpc::internal::RpcServiceMethod( + ExternalPluginService_method_names[1], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< ExternalPluginService::Service, ::flyteidl::service::TaskGetRequest, ::flyteidl::service::TaskGetResponse>( + std::mem_fn(&ExternalPluginService::Service::GetTask), this))); + AddMethod(new ::grpc::internal::RpcServiceMethod( + ExternalPluginService_method_names[2], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< ExternalPluginService::Service, ::flyteidl::service::TaskDeleteRequest, ::flyteidl::service::TaskDeleteResponse>( + std::mem_fn(&ExternalPluginService::Service::DeleteTask), this))); +} + +ExternalPluginService::Service::~Service() { +} + +::grpc::Status ExternalPluginService::Service::CreateTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response) { + (void) context; + (void) request; + (void) response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); +} + +::grpc::Status ExternalPluginService::Service::GetTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response) { + (void) context; + (void) request; + (void) response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); +} + +::grpc::Status ExternalPluginService::Service::DeleteTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response) { + (void) context; + (void) request; + (void) response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); +} + + +} // namespace flyteidl +} // namespace service + diff --git a/gen/pb-cpp/flyteidl/service/external_plugin_service.grpc.pb.h b/gen/pb-cpp/flyteidl/service/external_plugin_service.grpc.pb.h new file mode 100644 index 000000000..bd26ab180 --- /dev/null +++ b/gen/pb-cpp/flyteidl/service/external_plugin_service.grpc.pb.h @@ -0,0 +1,587 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: flyteidl/service/external_plugin_service.proto +#ifndef GRPC_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto__INCLUDED +#define GRPC_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto__INCLUDED + +#include "flyteidl/service/external_plugin_service.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace grpc_impl { +class Channel; +class CompletionQueue; +class ServerCompletionQueue; +} // namespace grpc_impl + +namespace grpc { +namespace experimental { +template +class MessageAllocator; +} // namespace experimental +} // namespace grpc_impl + +namespace grpc { +class ServerContext; +} // namespace grpc + +namespace flyteidl { +namespace service { + +// ExternalPluginService defines an RPC Service that allows propeller to send the request to the backend plugin server. +class ExternalPluginService final { + public: + static constexpr char const* service_full_name() { + return "flyteidl.service.ExternalPluginService"; + } + class StubInterface { + public: + virtual ~StubInterface() {} + // Send a task create request to the backend plugin server. + virtual ::grpc::Status CreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::flyteidl::service::TaskCreateResponse* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskCreateResponse>> AsyncCreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskCreateResponse>>(AsyncCreateTaskRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskCreateResponse>> PrepareAsyncCreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskCreateResponse>>(PrepareAsyncCreateTaskRaw(context, request, cq)); + } + // Get job status. + virtual ::grpc::Status GetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::flyteidl::service::TaskGetResponse* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskGetResponse>> AsyncGetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskGetResponse>>(AsyncGetTaskRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskGetResponse>> PrepareAsyncGetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskGetResponse>>(PrepareAsyncGetTaskRaw(context, request, cq)); + } + // Delete the task resource. + virtual ::grpc::Status DeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::flyteidl::service::TaskDeleteResponse* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskDeleteResponse>> AsyncDeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskDeleteResponse>>(AsyncDeleteTaskRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskDeleteResponse>> PrepareAsyncDeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskDeleteResponse>>(PrepareAsyncDeleteTaskRaw(context, request, cq)); + } + class experimental_async_interface { + public: + virtual ~experimental_async_interface() {} + // Send a task create request to the backend plugin server. + virtual void CreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response, std::function) = 0; + virtual void CreateTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskCreateResponse* response, std::function) = 0; + virtual void CreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void CreateTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + // Get job status. + virtual void GetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response, std::function) = 0; + virtual void GetTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskGetResponse* response, std::function) = 0; + virtual void GetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void GetTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskGetResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + // Delete the task resource. + virtual void DeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response, std::function) = 0; + virtual void DeleteTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskDeleteResponse* response, std::function) = 0; + virtual void DeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void DeleteTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskDeleteResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + }; + virtual class experimental_async_interface* experimental_async() { return nullptr; } + private: + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskCreateResponse>* AsyncCreateTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskCreateResponse>* PrepareAsyncCreateTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskGetResponse>* AsyncGetTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskGetResponse>* PrepareAsyncGetTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskDeleteResponse>* AsyncDeleteTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::TaskDeleteResponse>* PrepareAsyncDeleteTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::grpc::CompletionQueue* cq) = 0; + }; + class Stub final : public StubInterface { + public: + Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel); + ::grpc::Status CreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::flyteidl::service::TaskCreateResponse* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskCreateResponse>> AsyncCreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskCreateResponse>>(AsyncCreateTaskRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskCreateResponse>> PrepareAsyncCreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskCreateResponse>>(PrepareAsyncCreateTaskRaw(context, request, cq)); + } + ::grpc::Status GetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::flyteidl::service::TaskGetResponse* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskGetResponse>> AsyncGetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskGetResponse>>(AsyncGetTaskRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskGetResponse>> PrepareAsyncGetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskGetResponse>>(PrepareAsyncGetTaskRaw(context, request, cq)); + } + ::grpc::Status DeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::flyteidl::service::TaskDeleteResponse* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskDeleteResponse>> AsyncDeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskDeleteResponse>>(AsyncDeleteTaskRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskDeleteResponse>> PrepareAsyncDeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskDeleteResponse>>(PrepareAsyncDeleteTaskRaw(context, request, cq)); + } + class experimental_async final : + public StubInterface::experimental_async_interface { + public: + void CreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response, std::function) override; + void CreateTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskCreateResponse* response, std::function) override; + void CreateTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void CreateTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void GetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response, std::function) override; + void GetTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskGetResponse* response, std::function) override; + void GetTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void GetTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskGetResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void DeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response, std::function) override; + void DeleteTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskDeleteResponse* response, std::function) override; + void DeleteTask(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void DeleteTask(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::TaskDeleteResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + private: + friend class Stub; + explicit experimental_async(Stub* stub): stub_(stub) { } + Stub* stub() { return stub_; } + Stub* stub_; + }; + class experimental_async_interface* experimental_async() override { return &async_stub_; } + + private: + std::shared_ptr< ::grpc::ChannelInterface> channel_; + class experimental_async async_stub_{this}; + ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskCreateResponse>* AsyncCreateTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskCreateResponse>* PrepareAsyncCreateTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskCreateRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskGetResponse>* AsyncGetTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskGetResponse>* PrepareAsyncGetTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskGetRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskDeleteResponse>* AsyncDeleteTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::service::TaskDeleteResponse>* PrepareAsyncDeleteTaskRaw(::grpc::ClientContext* context, const ::flyteidl::service::TaskDeleteRequest& request, ::grpc::CompletionQueue* cq) override; + const ::grpc::internal::RpcMethod rpcmethod_CreateTask_; + const ::grpc::internal::RpcMethod rpcmethod_GetTask_; + const ::grpc::internal::RpcMethod rpcmethod_DeleteTask_; + }; + static std::unique_ptr NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions()); + + class Service : public ::grpc::Service { + public: + Service(); + virtual ~Service(); + // Send a task create request to the backend plugin server. + virtual ::grpc::Status CreateTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response); + // Get job status. + virtual ::grpc::Status GetTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response); + // Delete the task resource. + virtual ::grpc::Status DeleteTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response); + }; + template + class WithAsyncMethod_CreateTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithAsyncMethod_CreateTask() { + ::grpc::Service::MarkMethodAsync(0); + } + ~WithAsyncMethod_CreateTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status CreateTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestCreateTask(::grpc::ServerContext* context, ::flyteidl::service::TaskCreateRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::service::TaskCreateResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_GetTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithAsyncMethod_GetTask() { + ::grpc::Service::MarkMethodAsync(1); + } + ~WithAsyncMethod_GetTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetTask(::grpc::ServerContext* context, ::flyteidl::service::TaskGetRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::service::TaskGetResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithAsyncMethod_DeleteTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithAsyncMethod_DeleteTask() { + ::grpc::Service::MarkMethodAsync(2); + } + ~WithAsyncMethod_DeleteTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status DeleteTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestDeleteTask(::grpc::ServerContext* context, ::flyteidl::service::TaskDeleteRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::service::TaskDeleteResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag); + } + }; + typedef WithAsyncMethod_CreateTask > > AsyncService; + template + class ExperimentalWithCallbackMethod_CreateTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithCallbackMethod_CreateTask() { + ::grpc::Service::experimental().MarkMethodCallback(0, + new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::service::TaskCreateRequest, ::flyteidl::service::TaskCreateResponse>( + [this](::grpc::ServerContext* context, + const ::flyteidl::service::TaskCreateRequest* request, + ::flyteidl::service::TaskCreateResponse* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + return this->CreateTask(context, request, response, controller); + })); + } + void SetMessageAllocatorFor_CreateTask( + ::grpc::experimental::MessageAllocator< ::flyteidl::service::TaskCreateRequest, ::flyteidl::service::TaskCreateResponse>* allocator) { + static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::service::TaskCreateRequest, ::flyteidl::service::TaskCreateResponse>*>( + ::grpc::Service::experimental().GetHandler(0)) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_CreateTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status CreateTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void CreateTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template + class ExperimentalWithCallbackMethod_GetTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithCallbackMethod_GetTask() { + ::grpc::Service::experimental().MarkMethodCallback(1, + new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::service::TaskGetRequest, ::flyteidl::service::TaskGetResponse>( + [this](::grpc::ServerContext* context, + const ::flyteidl::service::TaskGetRequest* request, + ::flyteidl::service::TaskGetResponse* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + return this->GetTask(context, request, response, controller); + })); + } + void SetMessageAllocatorFor_GetTask( + ::grpc::experimental::MessageAllocator< ::flyteidl::service::TaskGetRequest, ::flyteidl::service::TaskGetResponse>* allocator) { + static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::service::TaskGetRequest, ::flyteidl::service::TaskGetResponse>*>( + ::grpc::Service::experimental().GetHandler(1)) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_GetTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void GetTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template + class ExperimentalWithCallbackMethod_DeleteTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithCallbackMethod_DeleteTask() { + ::grpc::Service::experimental().MarkMethodCallback(2, + new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::service::TaskDeleteRequest, ::flyteidl::service::TaskDeleteResponse>( + [this](::grpc::ServerContext* context, + const ::flyteidl::service::TaskDeleteRequest* request, + ::flyteidl::service::TaskDeleteResponse* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + return this->DeleteTask(context, request, response, controller); + })); + } + void SetMessageAllocatorFor_DeleteTask( + ::grpc::experimental::MessageAllocator< ::flyteidl::service::TaskDeleteRequest, ::flyteidl::service::TaskDeleteResponse>* allocator) { + static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::service::TaskDeleteRequest, ::flyteidl::service::TaskDeleteResponse>*>( + ::grpc::Service::experimental().GetHandler(2)) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_DeleteTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status DeleteTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void DeleteTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + typedef ExperimentalWithCallbackMethod_CreateTask > > ExperimentalCallbackService; + template + class WithGenericMethod_CreateTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithGenericMethod_CreateTask() { + ::grpc::Service::MarkMethodGeneric(0); + } + ~WithGenericMethod_CreateTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status CreateTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_GetTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithGenericMethod_GetTask() { + ::grpc::Service::MarkMethodGeneric(1); + } + ~WithGenericMethod_GetTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithGenericMethod_DeleteTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithGenericMethod_DeleteTask() { + ::grpc::Service::MarkMethodGeneric(2); + } + ~WithGenericMethod_DeleteTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status DeleteTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template + class WithRawMethod_CreateTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithRawMethod_CreateTask() { + ::grpc::Service::MarkMethodRaw(0); + } + ~WithRawMethod_CreateTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status CreateTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestCreateTask(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_GetTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithRawMethod_GetTask() { + ::grpc::Service::MarkMethodRaw(1); + } + ~WithRawMethod_GetTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetTask(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class WithRawMethod_DeleteTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithRawMethod_DeleteTask() { + ::grpc::Service::MarkMethodRaw(2); + } + ~WithRawMethod_DeleteTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status DeleteTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestDeleteTask(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template + class ExperimentalWithRawCallbackMethod_CreateTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithRawCallbackMethod_CreateTask() { + ::grpc::Service::experimental().MarkMethodRawCallback(0, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this](::grpc::ServerContext* context, + const ::grpc::ByteBuffer* request, + ::grpc::ByteBuffer* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + this->CreateTask(context, request, response, controller); + })); + } + ~ExperimentalWithRawCallbackMethod_CreateTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status CreateTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void CreateTask(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template + class ExperimentalWithRawCallbackMethod_GetTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithRawCallbackMethod_GetTask() { + ::grpc::Service::experimental().MarkMethodRawCallback(1, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this](::grpc::ServerContext* context, + const ::grpc::ByteBuffer* request, + ::grpc::ByteBuffer* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + this->GetTask(context, request, response, controller); + })); + } + ~ExperimentalWithRawCallbackMethod_GetTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void GetTask(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template + class ExperimentalWithRawCallbackMethod_DeleteTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithRawCallbackMethod_DeleteTask() { + ::grpc::Service::experimental().MarkMethodRawCallback(2, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this](::grpc::ServerContext* context, + const ::grpc::ByteBuffer* request, + ::grpc::ByteBuffer* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + this->DeleteTask(context, request, response, controller); + })); + } + ~ExperimentalWithRawCallbackMethod_DeleteTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status DeleteTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void DeleteTask(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template + class WithStreamedUnaryMethod_CreateTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithStreamedUnaryMethod_CreateTask() { + ::grpc::Service::MarkMethodStreamed(0, + new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::service::TaskCreateRequest, ::flyteidl::service::TaskCreateResponse>(std::bind(&WithStreamedUnaryMethod_CreateTask::StreamedCreateTask, this, std::placeholders::_1, std::placeholders::_2))); + } + ~WithStreamedUnaryMethod_CreateTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status CreateTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskCreateRequest* request, ::flyteidl::service::TaskCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedCreateTask(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::service::TaskCreateRequest,::flyteidl::service::TaskCreateResponse>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_GetTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithStreamedUnaryMethod_GetTask() { + ::grpc::Service::MarkMethodStreamed(1, + new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::service::TaskGetRequest, ::flyteidl::service::TaskGetResponse>(std::bind(&WithStreamedUnaryMethod_GetTask::StreamedGetTask, this, std::placeholders::_1, std::placeholders::_2))); + } + ~WithStreamedUnaryMethod_GetTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status GetTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskGetRequest* request, ::flyteidl::service::TaskGetResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedGetTask(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::service::TaskGetRequest,::flyteidl::service::TaskGetResponse>* server_unary_streamer) = 0; + }; + template + class WithStreamedUnaryMethod_DeleteTask : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithStreamedUnaryMethod_DeleteTask() { + ::grpc::Service::MarkMethodStreamed(2, + new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::service::TaskDeleteRequest, ::flyteidl::service::TaskDeleteResponse>(std::bind(&WithStreamedUnaryMethod_DeleteTask::StreamedDeleteTask, this, std::placeholders::_1, std::placeholders::_2))); + } + ~WithStreamedUnaryMethod_DeleteTask() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status DeleteTask(::grpc::ServerContext* context, const ::flyteidl::service::TaskDeleteRequest* request, ::flyteidl::service::TaskDeleteResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedDeleteTask(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::service::TaskDeleteRequest,::flyteidl::service::TaskDeleteResponse>* server_unary_streamer) = 0; + }; + typedef WithStreamedUnaryMethod_CreateTask > > StreamedUnaryService; + typedef Service SplitStreamedService; + typedef WithStreamedUnaryMethod_CreateTask > > StreamedService; +}; + +} // namespace service +} // namespace flyteidl + + +#endif // GRPC_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto__INCLUDED diff --git a/gen/pb-cpp/flyteidl/service/external_plugin_service.pb.cc b/gen/pb-cpp/flyteidl/service/external_plugin_service.pb.cc new file mode 100644 index 000000000..e4b6a79c4 --- /dev/null +++ b/gen/pb-cpp/flyteidl/service/external_plugin_service.pb.cc @@ -0,0 +1,2340 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/service/external_plugin_service.proto + +#include "flyteidl/service/external_plugin_service.pb.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +// @@protoc_insertion_point(includes) +#include + +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fliterals_2eproto ::google::protobuf::internal::SCCInfo<9> scc_info_Literal_flyteidl_2fcore_2fliterals_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2ftasks_2eproto ::google::protobuf::internal::SCCInfo<9> scc_info_TaskTemplate_flyteidl_2fcore_2ftasks_2eproto; +namespace flyteidl { +namespace service { +class TaskCreateRequestDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _TaskCreateRequest_default_instance_; +class TaskCreateResponseDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _TaskCreateResponse_default_instance_; +class TaskGetRequestDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _TaskGetRequest_default_instance_; +class TaskGetResponseDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _TaskGetResponse_default_instance_; +class TaskDeleteRequestDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _TaskDeleteRequest_default_instance_; +class TaskDeleteResponseDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _TaskDeleteResponse_default_instance_; +} // namespace service +} // namespace flyteidl +static void InitDefaultsTaskCreateRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::service::_TaskCreateRequest_default_instance_; + new (ptr) ::flyteidl::service::TaskCreateRequest(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::service::TaskCreateRequest::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<2> scc_info_TaskCreateRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTaskCreateRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto}, { + &scc_info_Literal_flyteidl_2fcore_2fliterals_2eproto.base, + &scc_info_TaskTemplate_flyteidl_2fcore_2ftasks_2eproto.base,}}; + +static void InitDefaultsTaskCreateResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::service::_TaskCreateResponse_default_instance_; + new (ptr) ::flyteidl::service::TaskCreateResponse(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::service::TaskCreateResponse::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_TaskCreateResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTaskCreateResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto}, {}}; + +static void InitDefaultsTaskGetRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::service::_TaskGetRequest_default_instance_; + new (ptr) ::flyteidl::service::TaskGetRequest(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::service::TaskGetRequest::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_TaskGetRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTaskGetRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto}, {}}; + +static void InitDefaultsTaskGetResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::service::_TaskGetResponse_default_instance_; + new (ptr) ::flyteidl::service::TaskGetResponse(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::service::TaskGetResponse::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<1> scc_info_TaskGetResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTaskGetResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto}, { + &scc_info_Literal_flyteidl_2fcore_2fliterals_2eproto.base,}}; + +static void InitDefaultsTaskDeleteRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::service::_TaskDeleteRequest_default_instance_; + new (ptr) ::flyteidl::service::TaskDeleteRequest(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::service::TaskDeleteRequest::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_TaskDeleteRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTaskDeleteRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto}, {}}; + +static void InitDefaultsTaskDeleteResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::service::_TaskDeleteResponse_default_instance_; + new (ptr) ::flyteidl::service::TaskDeleteResponse(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::service::TaskDeleteResponse::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_TaskDeleteResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTaskDeleteResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto}, {}}; + +void InitDefaults_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto() { + ::google::protobuf::internal::InitSCC(&scc_info_TaskCreateRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_TaskCreateResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_TaskGetRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_TaskGetResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_TaskDeleteRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_TaskDeleteResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); +} + +::google::protobuf::Metadata file_level_metadata_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto[6]; +const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto[1]; +constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto = nullptr; + +const ::google::protobuf::uint32 TableStruct_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskCreateRequest, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskCreateRequest, inputs_), + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskCreateRequest, template__), + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskCreateRequest, output_prefix_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskCreateResponse, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskCreateResponse, job_id_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskGetRequest, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskGetRequest, task_type_), + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskGetRequest, job_id_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskGetResponse, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskGetResponse, state_), + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskGetResponse, outputs_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskDeleteRequest, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskDeleteRequest, task_type_), + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskDeleteRequest, job_id_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::TaskDeleteResponse, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ +}; +static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + { 0, -1, sizeof(::flyteidl::service::TaskCreateRequest)}, + { 8, -1, sizeof(::flyteidl::service::TaskCreateResponse)}, + { 14, -1, sizeof(::flyteidl::service::TaskGetRequest)}, + { 21, -1, sizeof(::flyteidl::service::TaskGetResponse)}, + { 28, -1, sizeof(::flyteidl::service::TaskDeleteRequest)}, + { 35, -1, sizeof(::flyteidl::service::TaskDeleteResponse)}, +}; + +static ::google::protobuf::Message const * const file_default_instances[] = { + reinterpret_cast(&::flyteidl::service::_TaskCreateRequest_default_instance_), + reinterpret_cast(&::flyteidl::service::_TaskCreateResponse_default_instance_), + reinterpret_cast(&::flyteidl::service::_TaskGetRequest_default_instance_), + reinterpret_cast(&::flyteidl::service::_TaskGetResponse_default_instance_), + reinterpret_cast(&::flyteidl::service::_TaskDeleteRequest_default_instance_), + reinterpret_cast(&::flyteidl::service::_TaskDeleteResponse_default_instance_), +}; + +::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto = { + {}, AddDescriptors_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto, "flyteidl/service/external_plugin_service.proto", schemas, + file_default_instances, TableStruct_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto::offsets, + file_level_metadata_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto, 6, file_level_enum_descriptors_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto, file_level_service_descriptors_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto, +}; + +const char descriptor_table_protodef_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto[] = + "\n.flyteidl/service/external_plugin_servi" + "ce.proto\022\020flyteidl.service\032\034flyteidl/cor" + "e/literals.proto\032\031flyteidl/core/tasks.pr" + "oto\032\035flyteidl/core/interface.proto\"\204\001\n\021T" + "askCreateRequest\022)\n\006inputs\030\001 \001(\0132\031.flyte" + "idl.core.LiteralMap\022-\n\010template\030\002 \001(\0132\033." + "flyteidl.core.TaskTemplate\022\025\n\routput_pre" + "fix\030\003 \001(\t\"$\n\022TaskCreateResponse\022\016\n\006job_i" + "d\030\001 \001(\t\"3\n\016TaskGetRequest\022\021\n\ttask_type\030\001" + " \001(\t\022\016\n\006job_id\030\002 \001(\t\"e\n\017TaskGetResponse\022" + "&\n\005state\030\001 \001(\0162\027.flyteidl.service.State\022" + "*\n\007outputs\030\002 \001(\0132\031.flyteidl.core.Literal" + "Map\"6\n\021TaskDeleteRequest\022\021\n\ttask_type\030\001 " + "\001(\t\022\016\n\006job_id\030\002 \001(\t\"\024\n\022TaskDeleteRespons" + "e*^\n\005State\022\025\n\021RETRYABLE_FAILURE\020\000\022\025\n\021PER" + "MANENT_FAILURE\020\001\022\013\n\007PENDING\020\002\022\013\n\007RUNNING" + "\020\003\022\r\n\tSUCCEEDED\020\0042\237\002\n\025ExternalPluginServ" + "ice\022Y\n\nCreateTask\022#.flyteidl.service.Tas" + "kCreateRequest\032$.flyteidl.service.TaskCr" + "eateResponse\"\000\022P\n\007GetTask\022 .flyteidl.ser" + "vice.TaskGetRequest\032!.flyteidl.service.T" + "askGetResponse\"\000\022Y\n\nDeleteTask\022#.flyteid" + "l.service.TaskDeleteRequest\032$.flyteidl.s" + "ervice.TaskDeleteResponse\"\000B9Z7github.co" + "m/flyteorg/flyteidl/gen/pb-go/flyteidl/s" + "erviceb\006proto3" + ; +::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto = { + false, InitDefaults_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto, + descriptor_table_protodef_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto, + "flyteidl/service/external_plugin_service.proto", &assign_descriptors_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto, 1014, +}; + +void AddDescriptors_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto() { + static constexpr ::google::protobuf::internal::InitFunc deps[3] = + { + ::AddDescriptors_flyteidl_2fcore_2fliterals_2eproto, + ::AddDescriptors_flyteidl_2fcore_2ftasks_2eproto, + ::AddDescriptors_flyteidl_2fcore_2finterface_2eproto, + }; + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto, deps, 3); +} + +// Force running AddDescriptors() at dynamic initialization time. +static bool dynamic_init_dummy_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto = []() { AddDescriptors_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto(); return true; }(); +namespace flyteidl { +namespace service { +const ::google::protobuf::EnumDescriptor* State_descriptor() { + ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto); + return file_level_enum_descriptors_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto[0]; +} +bool State_IsValid(int value) { + switch (value) { + case 0: + case 1: + case 2: + case 3: + case 4: + return true; + default: + return false; + } +} + + +// =================================================================== + +void TaskCreateRequest::InitAsDefaultInstance() { + ::flyteidl::service::_TaskCreateRequest_default_instance_._instance.get_mutable()->inputs_ = const_cast< ::flyteidl::core::LiteralMap*>( + ::flyteidl::core::LiteralMap::internal_default_instance()); + ::flyteidl::service::_TaskCreateRequest_default_instance_._instance.get_mutable()->template__ = const_cast< ::flyteidl::core::TaskTemplate*>( + ::flyteidl::core::TaskTemplate::internal_default_instance()); +} +class TaskCreateRequest::HasBitSetters { + public: + static const ::flyteidl::core::LiteralMap& inputs(const TaskCreateRequest* msg); + static const ::flyteidl::core::TaskTemplate& template_(const TaskCreateRequest* msg); +}; + +const ::flyteidl::core::LiteralMap& +TaskCreateRequest::HasBitSetters::inputs(const TaskCreateRequest* msg) { + return *msg->inputs_; +} +const ::flyteidl::core::TaskTemplate& +TaskCreateRequest::HasBitSetters::template_(const TaskCreateRequest* msg) { + return *msg->template__; +} +void TaskCreateRequest::clear_inputs() { + if (GetArenaNoVirtual() == nullptr && inputs_ != nullptr) { + delete inputs_; + } + inputs_ = nullptr; +} +void TaskCreateRequest::clear_template_() { + if (GetArenaNoVirtual() == nullptr && template__ != nullptr) { + delete template__; + } + template__ = nullptr; +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int TaskCreateRequest::kInputsFieldNumber; +const int TaskCreateRequest::kTemplateFieldNumber; +const int TaskCreateRequest::kOutputPrefixFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +TaskCreateRequest::TaskCreateRequest() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.service.TaskCreateRequest) +} +TaskCreateRequest::TaskCreateRequest(const TaskCreateRequest& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + output_prefix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.output_prefix().size() > 0) { + output_prefix_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.output_prefix_); + } + if (from.has_inputs()) { + inputs_ = new ::flyteidl::core::LiteralMap(*from.inputs_); + } else { + inputs_ = nullptr; + } + if (from.has_template_()) { + template__ = new ::flyteidl::core::TaskTemplate(*from.template__); + } else { + template__ = nullptr; + } + // @@protoc_insertion_point(copy_constructor:flyteidl.service.TaskCreateRequest) +} + +void TaskCreateRequest::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_TaskCreateRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + output_prefix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + ::memset(&inputs_, 0, static_cast( + reinterpret_cast(&template__) - + reinterpret_cast(&inputs_)) + sizeof(template__)); +} + +TaskCreateRequest::~TaskCreateRequest() { + // @@protoc_insertion_point(destructor:flyteidl.service.TaskCreateRequest) + SharedDtor(); +} + +void TaskCreateRequest::SharedDtor() { + output_prefix_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (this != internal_default_instance()) delete inputs_; + if (this != internal_default_instance()) delete template__; +} + +void TaskCreateRequest::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const TaskCreateRequest& TaskCreateRequest::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_TaskCreateRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + return *internal_default_instance(); +} + + +void TaskCreateRequest::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.service.TaskCreateRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + output_prefix_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (GetArenaNoVirtual() == nullptr && inputs_ != nullptr) { + delete inputs_; + } + inputs_ = nullptr; + if (GetArenaNoVirtual() == nullptr && template__ != nullptr) { + delete template__; + } + template__ = nullptr; + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* TaskCreateRequest::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // .flyteidl.core.LiteralMap inputs = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::core::LiteralMap::_InternalParse; + object = msg->mutable_inputs(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // .flyteidl.core.TaskTemplate template = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::core::TaskTemplate::_InternalParse; + object = msg->mutable_template_(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // string output_prefix = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.service.TaskCreateRequest.output_prefix"); + object = msg->mutable_output_prefix(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool TaskCreateRequest::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.service.TaskCreateRequest) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // .flyteidl.core.LiteralMap inputs = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_inputs())); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.core.TaskTemplate template = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_template_())); + } else { + goto handle_unusual; + } + break; + } + + // string output_prefix = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_output_prefix())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->output_prefix().data(), static_cast(this->output_prefix().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.service.TaskCreateRequest.output_prefix")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.service.TaskCreateRequest) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.service.TaskCreateRequest) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void TaskCreateRequest::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.service.TaskCreateRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.LiteralMap inputs = 1; + if (this->has_inputs()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, HasBitSetters::inputs(this), output); + } + + // .flyteidl.core.TaskTemplate template = 2; + if (this->has_template_()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 2, HasBitSetters::template_(this), output); + } + + // string output_prefix = 3; + if (this->output_prefix().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->output_prefix().data(), static_cast(this->output_prefix().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskCreateRequest.output_prefix"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 3, this->output_prefix(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.service.TaskCreateRequest) +} + +::google::protobuf::uint8* TaskCreateRequest::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.service.TaskCreateRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.LiteralMap inputs = 1; + if (this->has_inputs()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 1, HasBitSetters::inputs(this), target); + } + + // .flyteidl.core.TaskTemplate template = 2; + if (this->has_template_()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 2, HasBitSetters::template_(this), target); + } + + // string output_prefix = 3; + if (this->output_prefix().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->output_prefix().data(), static_cast(this->output_prefix().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskCreateRequest.output_prefix"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 3, this->output_prefix(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.service.TaskCreateRequest) + return target; +} + +size_t TaskCreateRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.service.TaskCreateRequest) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string output_prefix = 3; + if (this->output_prefix().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->output_prefix()); + } + + // .flyteidl.core.LiteralMap inputs = 1; + if (this->has_inputs()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *inputs_); + } + + // .flyteidl.core.TaskTemplate template = 2; + if (this->has_template_()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *template__); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void TaskCreateRequest::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.service.TaskCreateRequest) + GOOGLE_DCHECK_NE(&from, this); + const TaskCreateRequest* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.service.TaskCreateRequest) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.service.TaskCreateRequest) + MergeFrom(*source); + } +} + +void TaskCreateRequest::MergeFrom(const TaskCreateRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.service.TaskCreateRequest) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.output_prefix().size() > 0) { + + output_prefix_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.output_prefix_); + } + if (from.has_inputs()) { + mutable_inputs()->::flyteidl::core::LiteralMap::MergeFrom(from.inputs()); + } + if (from.has_template_()) { + mutable_template_()->::flyteidl::core::TaskTemplate::MergeFrom(from.template_()); + } +} + +void TaskCreateRequest::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.service.TaskCreateRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void TaskCreateRequest::CopyFrom(const TaskCreateRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.service.TaskCreateRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TaskCreateRequest::IsInitialized() const { + return true; +} + +void TaskCreateRequest::Swap(TaskCreateRequest* other) { + if (other == this) return; + InternalSwap(other); +} +void TaskCreateRequest::InternalSwap(TaskCreateRequest* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + output_prefix_.Swap(&other->output_prefix_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + swap(inputs_, other->inputs_); + swap(template__, other->template__); +} + +::google::protobuf::Metadata TaskCreateRequest::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto); + return ::file_level_metadata_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void TaskCreateResponse::InitAsDefaultInstance() { +} +class TaskCreateResponse::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int TaskCreateResponse::kJobIdFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +TaskCreateResponse::TaskCreateResponse() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.service.TaskCreateResponse) +} +TaskCreateResponse::TaskCreateResponse(const TaskCreateResponse& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + job_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.job_id().size() > 0) { + job_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.job_id_); + } + // @@protoc_insertion_point(copy_constructor:flyteidl.service.TaskCreateResponse) +} + +void TaskCreateResponse::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_TaskCreateResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + job_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +TaskCreateResponse::~TaskCreateResponse() { + // @@protoc_insertion_point(destructor:flyteidl.service.TaskCreateResponse) + SharedDtor(); +} + +void TaskCreateResponse::SharedDtor() { + job_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +void TaskCreateResponse::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const TaskCreateResponse& TaskCreateResponse::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_TaskCreateResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + return *internal_default_instance(); +} + + +void TaskCreateResponse::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.service.TaskCreateResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + job_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* TaskCreateResponse::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // string job_id = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.service.TaskCreateResponse.job_id"); + object = msg->mutable_job_id(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool TaskCreateResponse::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.service.TaskCreateResponse) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // string job_id = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_job_id())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->job_id().data(), static_cast(this->job_id().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.service.TaskCreateResponse.job_id")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.service.TaskCreateResponse) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.service.TaskCreateResponse) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void TaskCreateResponse::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.service.TaskCreateResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string job_id = 1; + if (this->job_id().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->job_id().data(), static_cast(this->job_id().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskCreateResponse.job_id"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 1, this->job_id(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.service.TaskCreateResponse) +} + +::google::protobuf::uint8* TaskCreateResponse::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.service.TaskCreateResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string job_id = 1; + if (this->job_id().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->job_id().data(), static_cast(this->job_id().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskCreateResponse.job_id"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 1, this->job_id(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.service.TaskCreateResponse) + return target; +} + +size_t TaskCreateResponse::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.service.TaskCreateResponse) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string job_id = 1; + if (this->job_id().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->job_id()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void TaskCreateResponse::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.service.TaskCreateResponse) + GOOGLE_DCHECK_NE(&from, this); + const TaskCreateResponse* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.service.TaskCreateResponse) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.service.TaskCreateResponse) + MergeFrom(*source); + } +} + +void TaskCreateResponse::MergeFrom(const TaskCreateResponse& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.service.TaskCreateResponse) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.job_id().size() > 0) { + + job_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.job_id_); + } +} + +void TaskCreateResponse::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.service.TaskCreateResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void TaskCreateResponse::CopyFrom(const TaskCreateResponse& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.service.TaskCreateResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TaskCreateResponse::IsInitialized() const { + return true; +} + +void TaskCreateResponse::Swap(TaskCreateResponse* other) { + if (other == this) return; + InternalSwap(other); +} +void TaskCreateResponse::InternalSwap(TaskCreateResponse* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + job_id_.Swap(&other->job_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); +} + +::google::protobuf::Metadata TaskCreateResponse::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto); + return ::file_level_metadata_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void TaskGetRequest::InitAsDefaultInstance() { +} +class TaskGetRequest::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int TaskGetRequest::kTaskTypeFieldNumber; +const int TaskGetRequest::kJobIdFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +TaskGetRequest::TaskGetRequest() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.service.TaskGetRequest) +} +TaskGetRequest::TaskGetRequest(const TaskGetRequest& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + task_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.task_type().size() > 0) { + task_type_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_type_); + } + job_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.job_id().size() > 0) { + job_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.job_id_); + } + // @@protoc_insertion_point(copy_constructor:flyteidl.service.TaskGetRequest) +} + +void TaskGetRequest::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_TaskGetRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + task_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + job_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +TaskGetRequest::~TaskGetRequest() { + // @@protoc_insertion_point(destructor:flyteidl.service.TaskGetRequest) + SharedDtor(); +} + +void TaskGetRequest::SharedDtor() { + task_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + job_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +void TaskGetRequest::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const TaskGetRequest& TaskGetRequest::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_TaskGetRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + return *internal_default_instance(); +} + + +void TaskGetRequest::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.service.TaskGetRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + task_type_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + job_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* TaskGetRequest::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // string task_type = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.service.TaskGetRequest.task_type"); + object = msg->mutable_task_type(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string job_id = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.service.TaskGetRequest.job_id"); + object = msg->mutable_job_id(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool TaskGetRequest::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.service.TaskGetRequest) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // string task_type = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_task_type())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->task_type().data(), static_cast(this->task_type().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.service.TaskGetRequest.task_type")); + } else { + goto handle_unusual; + } + break; + } + + // string job_id = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_job_id())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->job_id().data(), static_cast(this->job_id().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.service.TaskGetRequest.job_id")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.service.TaskGetRequest) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.service.TaskGetRequest) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void TaskGetRequest::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.service.TaskGetRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string task_type = 1; + if (this->task_type().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->task_type().data(), static_cast(this->task_type().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskGetRequest.task_type"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 1, this->task_type(), output); + } + + // string job_id = 2; + if (this->job_id().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->job_id().data(), static_cast(this->job_id().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskGetRequest.job_id"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 2, this->job_id(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.service.TaskGetRequest) +} + +::google::protobuf::uint8* TaskGetRequest::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.service.TaskGetRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string task_type = 1; + if (this->task_type().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->task_type().data(), static_cast(this->task_type().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskGetRequest.task_type"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 1, this->task_type(), target); + } + + // string job_id = 2; + if (this->job_id().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->job_id().data(), static_cast(this->job_id().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskGetRequest.job_id"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->job_id(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.service.TaskGetRequest) + return target; +} + +size_t TaskGetRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.service.TaskGetRequest) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string task_type = 1; + if (this->task_type().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->task_type()); + } + + // string job_id = 2; + if (this->job_id().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->job_id()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void TaskGetRequest::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.service.TaskGetRequest) + GOOGLE_DCHECK_NE(&from, this); + const TaskGetRequest* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.service.TaskGetRequest) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.service.TaskGetRequest) + MergeFrom(*source); + } +} + +void TaskGetRequest::MergeFrom(const TaskGetRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.service.TaskGetRequest) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.task_type().size() > 0) { + + task_type_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_type_); + } + if (from.job_id().size() > 0) { + + job_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.job_id_); + } +} + +void TaskGetRequest::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.service.TaskGetRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void TaskGetRequest::CopyFrom(const TaskGetRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.service.TaskGetRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TaskGetRequest::IsInitialized() const { + return true; +} + +void TaskGetRequest::Swap(TaskGetRequest* other) { + if (other == this) return; + InternalSwap(other); +} +void TaskGetRequest::InternalSwap(TaskGetRequest* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + task_type_.Swap(&other->task_type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + job_id_.Swap(&other->job_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); +} + +::google::protobuf::Metadata TaskGetRequest::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto); + return ::file_level_metadata_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void TaskGetResponse::InitAsDefaultInstance() { + ::flyteidl::service::_TaskGetResponse_default_instance_._instance.get_mutable()->outputs_ = const_cast< ::flyteidl::core::LiteralMap*>( + ::flyteidl::core::LiteralMap::internal_default_instance()); +} +class TaskGetResponse::HasBitSetters { + public: + static const ::flyteidl::core::LiteralMap& outputs(const TaskGetResponse* msg); +}; + +const ::flyteidl::core::LiteralMap& +TaskGetResponse::HasBitSetters::outputs(const TaskGetResponse* msg) { + return *msg->outputs_; +} +void TaskGetResponse::clear_outputs() { + if (GetArenaNoVirtual() == nullptr && outputs_ != nullptr) { + delete outputs_; + } + outputs_ = nullptr; +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int TaskGetResponse::kStateFieldNumber; +const int TaskGetResponse::kOutputsFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +TaskGetResponse::TaskGetResponse() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.service.TaskGetResponse) +} +TaskGetResponse::TaskGetResponse(const TaskGetResponse& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + if (from.has_outputs()) { + outputs_ = new ::flyteidl::core::LiteralMap(*from.outputs_); + } else { + outputs_ = nullptr; + } + state_ = from.state_; + // @@protoc_insertion_point(copy_constructor:flyteidl.service.TaskGetResponse) +} + +void TaskGetResponse::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_TaskGetResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + ::memset(&outputs_, 0, static_cast( + reinterpret_cast(&state_) - + reinterpret_cast(&outputs_)) + sizeof(state_)); +} + +TaskGetResponse::~TaskGetResponse() { + // @@protoc_insertion_point(destructor:flyteidl.service.TaskGetResponse) + SharedDtor(); +} + +void TaskGetResponse::SharedDtor() { + if (this != internal_default_instance()) delete outputs_; +} + +void TaskGetResponse::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const TaskGetResponse& TaskGetResponse::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_TaskGetResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + return *internal_default_instance(); +} + + +void TaskGetResponse::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.service.TaskGetResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + if (GetArenaNoVirtual() == nullptr && outputs_ != nullptr) { + delete outputs_; + } + outputs_ = nullptr; + state_ = 0; + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* TaskGetResponse::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // .flyteidl.service.State state = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual; + ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr); + msg->set_state(static_cast<::flyteidl::service::State>(val)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } + // .flyteidl.core.LiteralMap outputs = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::core::LiteralMap::_InternalParse; + object = msg->mutable_outputs(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool TaskGetResponse::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.service.TaskGetResponse) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // .flyteidl.service.State state = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) { + int value = 0; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + set_state(static_cast< ::flyteidl::service::State >(value)); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.core.LiteralMap outputs = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_outputs())); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.service.TaskGetResponse) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.service.TaskGetResponse) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void TaskGetResponse::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.service.TaskGetResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.service.State state = 1; + if (this->state() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 1, this->state(), output); + } + + // .flyteidl.core.LiteralMap outputs = 2; + if (this->has_outputs()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 2, HasBitSetters::outputs(this), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.service.TaskGetResponse) +} + +::google::protobuf::uint8* TaskGetResponse::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.service.TaskGetResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.service.State state = 1; + if (this->state() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( + 1, this->state(), target); + } + + // .flyteidl.core.LiteralMap outputs = 2; + if (this->has_outputs()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 2, HasBitSetters::outputs(this), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.service.TaskGetResponse) + return target; +} + +size_t TaskGetResponse::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.service.TaskGetResponse) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // .flyteidl.core.LiteralMap outputs = 2; + if (this->has_outputs()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *outputs_); + } + + // .flyteidl.service.State state = 1; + if (this->state() != 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->state()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void TaskGetResponse::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.service.TaskGetResponse) + GOOGLE_DCHECK_NE(&from, this); + const TaskGetResponse* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.service.TaskGetResponse) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.service.TaskGetResponse) + MergeFrom(*source); + } +} + +void TaskGetResponse::MergeFrom(const TaskGetResponse& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.service.TaskGetResponse) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.has_outputs()) { + mutable_outputs()->::flyteidl::core::LiteralMap::MergeFrom(from.outputs()); + } + if (from.state() != 0) { + set_state(from.state()); + } +} + +void TaskGetResponse::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.service.TaskGetResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void TaskGetResponse::CopyFrom(const TaskGetResponse& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.service.TaskGetResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TaskGetResponse::IsInitialized() const { + return true; +} + +void TaskGetResponse::Swap(TaskGetResponse* other) { + if (other == this) return; + InternalSwap(other); +} +void TaskGetResponse::InternalSwap(TaskGetResponse* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + swap(outputs_, other->outputs_); + swap(state_, other->state_); +} + +::google::protobuf::Metadata TaskGetResponse::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto); + return ::file_level_metadata_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void TaskDeleteRequest::InitAsDefaultInstance() { +} +class TaskDeleteRequest::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int TaskDeleteRequest::kTaskTypeFieldNumber; +const int TaskDeleteRequest::kJobIdFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +TaskDeleteRequest::TaskDeleteRequest() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.service.TaskDeleteRequest) +} +TaskDeleteRequest::TaskDeleteRequest(const TaskDeleteRequest& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + task_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.task_type().size() > 0) { + task_type_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_type_); + } + job_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.job_id().size() > 0) { + job_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.job_id_); + } + // @@protoc_insertion_point(copy_constructor:flyteidl.service.TaskDeleteRequest) +} + +void TaskDeleteRequest::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_TaskDeleteRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + task_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + job_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +TaskDeleteRequest::~TaskDeleteRequest() { + // @@protoc_insertion_point(destructor:flyteidl.service.TaskDeleteRequest) + SharedDtor(); +} + +void TaskDeleteRequest::SharedDtor() { + task_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + job_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +void TaskDeleteRequest::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const TaskDeleteRequest& TaskDeleteRequest::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_TaskDeleteRequest_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + return *internal_default_instance(); +} + + +void TaskDeleteRequest::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.service.TaskDeleteRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + task_type_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + job_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* TaskDeleteRequest::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // string task_type = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.service.TaskDeleteRequest.task_type"); + object = msg->mutable_task_type(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string job_id = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.service.TaskDeleteRequest.job_id"); + object = msg->mutable_job_id(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool TaskDeleteRequest::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.service.TaskDeleteRequest) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // string task_type = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_task_type())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->task_type().data(), static_cast(this->task_type().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.service.TaskDeleteRequest.task_type")); + } else { + goto handle_unusual; + } + break; + } + + // string job_id = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_job_id())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->job_id().data(), static_cast(this->job_id().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.service.TaskDeleteRequest.job_id")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.service.TaskDeleteRequest) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.service.TaskDeleteRequest) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void TaskDeleteRequest::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.service.TaskDeleteRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string task_type = 1; + if (this->task_type().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->task_type().data(), static_cast(this->task_type().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskDeleteRequest.task_type"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 1, this->task_type(), output); + } + + // string job_id = 2; + if (this->job_id().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->job_id().data(), static_cast(this->job_id().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskDeleteRequest.job_id"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 2, this->job_id(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.service.TaskDeleteRequest) +} + +::google::protobuf::uint8* TaskDeleteRequest::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.service.TaskDeleteRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string task_type = 1; + if (this->task_type().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->task_type().data(), static_cast(this->task_type().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskDeleteRequest.task_type"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 1, this->task_type(), target); + } + + // string job_id = 2; + if (this->job_id().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->job_id().data(), static_cast(this->job_id().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.TaskDeleteRequest.job_id"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->job_id(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.service.TaskDeleteRequest) + return target; +} + +size_t TaskDeleteRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.service.TaskDeleteRequest) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string task_type = 1; + if (this->task_type().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->task_type()); + } + + // string job_id = 2; + if (this->job_id().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->job_id()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void TaskDeleteRequest::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.service.TaskDeleteRequest) + GOOGLE_DCHECK_NE(&from, this); + const TaskDeleteRequest* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.service.TaskDeleteRequest) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.service.TaskDeleteRequest) + MergeFrom(*source); + } +} + +void TaskDeleteRequest::MergeFrom(const TaskDeleteRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.service.TaskDeleteRequest) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.task_type().size() > 0) { + + task_type_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_type_); + } + if (from.job_id().size() > 0) { + + job_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.job_id_); + } +} + +void TaskDeleteRequest::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.service.TaskDeleteRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void TaskDeleteRequest::CopyFrom(const TaskDeleteRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.service.TaskDeleteRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TaskDeleteRequest::IsInitialized() const { + return true; +} + +void TaskDeleteRequest::Swap(TaskDeleteRequest* other) { + if (other == this) return; + InternalSwap(other); +} +void TaskDeleteRequest::InternalSwap(TaskDeleteRequest* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + task_type_.Swap(&other->task_type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + job_id_.Swap(&other->job_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); +} + +::google::protobuf::Metadata TaskDeleteRequest::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto); + return ::file_level_metadata_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void TaskDeleteResponse::InitAsDefaultInstance() { +} +class TaskDeleteResponse::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +TaskDeleteResponse::TaskDeleteResponse() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.service.TaskDeleteResponse) +} +TaskDeleteResponse::TaskDeleteResponse(const TaskDeleteResponse& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + // @@protoc_insertion_point(copy_constructor:flyteidl.service.TaskDeleteResponse) +} + +void TaskDeleteResponse::SharedCtor() { +} + +TaskDeleteResponse::~TaskDeleteResponse() { + // @@protoc_insertion_point(destructor:flyteidl.service.TaskDeleteResponse) + SharedDtor(); +} + +void TaskDeleteResponse::SharedDtor() { +} + +void TaskDeleteResponse::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const TaskDeleteResponse& TaskDeleteResponse::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_TaskDeleteResponse_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto.base); + return *internal_default_instance(); +} + + +void TaskDeleteResponse::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.service.TaskDeleteResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* TaskDeleteResponse::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + default: { + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool TaskDeleteResponse::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.service.TaskDeleteResponse) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.service.TaskDeleteResponse) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.service.TaskDeleteResponse) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void TaskDeleteResponse::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.service.TaskDeleteResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.service.TaskDeleteResponse) +} + +::google::protobuf::uint8* TaskDeleteResponse::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.service.TaskDeleteResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.service.TaskDeleteResponse) + return target; +} + +size_t TaskDeleteResponse::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.service.TaskDeleteResponse) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void TaskDeleteResponse::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.service.TaskDeleteResponse) + GOOGLE_DCHECK_NE(&from, this); + const TaskDeleteResponse* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.service.TaskDeleteResponse) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.service.TaskDeleteResponse) + MergeFrom(*source); + } +} + +void TaskDeleteResponse::MergeFrom(const TaskDeleteResponse& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.service.TaskDeleteResponse) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + +} + +void TaskDeleteResponse::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.service.TaskDeleteResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void TaskDeleteResponse::CopyFrom(const TaskDeleteResponse& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.service.TaskDeleteResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TaskDeleteResponse::IsInitialized() const { + return true; +} + +void TaskDeleteResponse::Swap(TaskDeleteResponse* other) { + if (other == this) return; + InternalSwap(other); +} +void TaskDeleteResponse::InternalSwap(TaskDeleteResponse* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); +} + +::google::protobuf::Metadata TaskDeleteResponse::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto); + return ::file_level_metadata_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto[kIndexInFileMessages]; +} + + +// @@protoc_insertion_point(namespace_scope) +} // namespace service +} // namespace flyteidl +namespace google { +namespace protobuf { +template<> PROTOBUF_NOINLINE ::flyteidl::service::TaskCreateRequest* Arena::CreateMaybeMessage< ::flyteidl::service::TaskCreateRequest >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::TaskCreateRequest >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::TaskCreateResponse* Arena::CreateMaybeMessage< ::flyteidl::service::TaskCreateResponse >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::TaskCreateResponse >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::TaskGetRequest* Arena::CreateMaybeMessage< ::flyteidl::service::TaskGetRequest >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::TaskGetRequest >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::TaskGetResponse* Arena::CreateMaybeMessage< ::flyteidl::service::TaskGetResponse >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::TaskGetResponse >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::TaskDeleteRequest* Arena::CreateMaybeMessage< ::flyteidl::service::TaskDeleteRequest >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::TaskDeleteRequest >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::TaskDeleteResponse* Arena::CreateMaybeMessage< ::flyteidl::service::TaskDeleteResponse >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::TaskDeleteResponse >(arena); +} +} // namespace protobuf +} // namespace google + +// @@protoc_insertion_point(global_scope) +#include diff --git a/gen/pb-cpp/flyteidl/service/external_plugin_service.pb.h b/gen/pb-cpp/flyteidl/service/external_plugin_service.pb.h new file mode 100644 index 000000000..82d5616c5 --- /dev/null +++ b/gen/pb-cpp/flyteidl/service/external_plugin_service.pb.h @@ -0,0 +1,1403 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/service/external_plugin_service.proto + +#ifndef PROTOBUF_INCLUDED_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto +#define PROTOBUF_INCLUDED_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto + +#include +#include + +#include +#if PROTOBUF_VERSION < 3007000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 3007000 < PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // IWYU pragma: export +#include // IWYU pragma: export +#include +#include +#include "flyteidl/core/literals.pb.h" +#include "flyteidl/core/tasks.pb.h" +#include "flyteidl/core/interface.pb.h" +// @@protoc_insertion_point(includes) +#include +#define PROTOBUF_INTERNAL_EXPORT_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto + +// Internal implementation detail -- do not use these members. +struct TableStruct_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto { + static const ::google::protobuf::internal::ParseTableField entries[] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::google::protobuf::internal::AuxillaryParseTableField aux[] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::google::protobuf::internal::ParseTable schema[6] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::google::protobuf::internal::FieldMetadata field_metadata[]; + static const ::google::protobuf::internal::SerializationTable serialization_table[]; + static const ::google::protobuf::uint32 offsets[]; +}; +void AddDescriptors_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto(); +namespace flyteidl { +namespace service { +class TaskCreateRequest; +class TaskCreateRequestDefaultTypeInternal; +extern TaskCreateRequestDefaultTypeInternal _TaskCreateRequest_default_instance_; +class TaskCreateResponse; +class TaskCreateResponseDefaultTypeInternal; +extern TaskCreateResponseDefaultTypeInternal _TaskCreateResponse_default_instance_; +class TaskDeleteRequest; +class TaskDeleteRequestDefaultTypeInternal; +extern TaskDeleteRequestDefaultTypeInternal _TaskDeleteRequest_default_instance_; +class TaskDeleteResponse; +class TaskDeleteResponseDefaultTypeInternal; +extern TaskDeleteResponseDefaultTypeInternal _TaskDeleteResponse_default_instance_; +class TaskGetRequest; +class TaskGetRequestDefaultTypeInternal; +extern TaskGetRequestDefaultTypeInternal _TaskGetRequest_default_instance_; +class TaskGetResponse; +class TaskGetResponseDefaultTypeInternal; +extern TaskGetResponseDefaultTypeInternal _TaskGetResponse_default_instance_; +} // namespace service +} // namespace flyteidl +namespace google { +namespace protobuf { +template<> ::flyteidl::service::TaskCreateRequest* Arena::CreateMaybeMessage<::flyteidl::service::TaskCreateRequest>(Arena*); +template<> ::flyteidl::service::TaskCreateResponse* Arena::CreateMaybeMessage<::flyteidl::service::TaskCreateResponse>(Arena*); +template<> ::flyteidl::service::TaskDeleteRequest* Arena::CreateMaybeMessage<::flyteidl::service::TaskDeleteRequest>(Arena*); +template<> ::flyteidl::service::TaskDeleteResponse* Arena::CreateMaybeMessage<::flyteidl::service::TaskDeleteResponse>(Arena*); +template<> ::flyteidl::service::TaskGetRequest* Arena::CreateMaybeMessage<::flyteidl::service::TaskGetRequest>(Arena*); +template<> ::flyteidl::service::TaskGetResponse* Arena::CreateMaybeMessage<::flyteidl::service::TaskGetResponse>(Arena*); +} // namespace protobuf +} // namespace google +namespace flyteidl { +namespace service { + +enum State { + RETRYABLE_FAILURE = 0, + PERMANENT_FAILURE = 1, + PENDING = 2, + RUNNING = 3, + SUCCEEDED = 4, + State_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(), + State_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max() +}; +bool State_IsValid(int value); +const State State_MIN = RETRYABLE_FAILURE; +const State State_MAX = SUCCEEDED; +const int State_ARRAYSIZE = State_MAX + 1; + +const ::google::protobuf::EnumDescriptor* State_descriptor(); +inline const ::std::string& State_Name(State value) { + return ::google::protobuf::internal::NameOfEnum( + State_descriptor(), value); +} +inline bool State_Parse( + const ::std::string& name, State* value) { + return ::google::protobuf::internal::ParseNamedEnum( + State_descriptor(), name, value); +} +// =================================================================== + +class TaskCreateRequest final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.service.TaskCreateRequest) */ { + public: + TaskCreateRequest(); + virtual ~TaskCreateRequest(); + + TaskCreateRequest(const TaskCreateRequest& from); + + inline TaskCreateRequest& operator=(const TaskCreateRequest& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + TaskCreateRequest(TaskCreateRequest&& from) noexcept + : TaskCreateRequest() { + *this = ::std::move(from); + } + + inline TaskCreateRequest& operator=(TaskCreateRequest&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const TaskCreateRequest& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const TaskCreateRequest* internal_default_instance() { + return reinterpret_cast( + &_TaskCreateRequest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 0; + + void Swap(TaskCreateRequest* other); + friend void swap(TaskCreateRequest& a, TaskCreateRequest& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline TaskCreateRequest* New() const final { + return CreateMaybeMessage(nullptr); + } + + TaskCreateRequest* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const TaskCreateRequest& from); + void MergeFrom(const TaskCreateRequest& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TaskCreateRequest* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // string output_prefix = 3; + void clear_output_prefix(); + static const int kOutputPrefixFieldNumber = 3; + const ::std::string& output_prefix() const; + void set_output_prefix(const ::std::string& value); + #if LANG_CXX11 + void set_output_prefix(::std::string&& value); + #endif + void set_output_prefix(const char* value); + void set_output_prefix(const char* value, size_t size); + ::std::string* mutable_output_prefix(); + ::std::string* release_output_prefix(); + void set_allocated_output_prefix(::std::string* output_prefix); + + // .flyteidl.core.LiteralMap inputs = 1; + bool has_inputs() const; + void clear_inputs(); + static const int kInputsFieldNumber = 1; + const ::flyteidl::core::LiteralMap& inputs() const; + ::flyteidl::core::LiteralMap* release_inputs(); + ::flyteidl::core::LiteralMap* mutable_inputs(); + void set_allocated_inputs(::flyteidl::core::LiteralMap* inputs); + + // .flyteidl.core.TaskTemplate template = 2; + bool has_template_() const; + void clear_template_(); + static const int kTemplateFieldNumber = 2; + const ::flyteidl::core::TaskTemplate& template_() const; + ::flyteidl::core::TaskTemplate* release_template_(); + ::flyteidl::core::TaskTemplate* mutable_template_(); + void set_allocated_template_(::flyteidl::core::TaskTemplate* template_); + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskCreateRequest) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr output_prefix_; + ::flyteidl::core::LiteralMap* inputs_; + ::flyteidl::core::TaskTemplate* template__; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto; +}; +// ------------------------------------------------------------------- + +class TaskCreateResponse final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.service.TaskCreateResponse) */ { + public: + TaskCreateResponse(); + virtual ~TaskCreateResponse(); + + TaskCreateResponse(const TaskCreateResponse& from); + + inline TaskCreateResponse& operator=(const TaskCreateResponse& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + TaskCreateResponse(TaskCreateResponse&& from) noexcept + : TaskCreateResponse() { + *this = ::std::move(from); + } + + inline TaskCreateResponse& operator=(TaskCreateResponse&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const TaskCreateResponse& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const TaskCreateResponse* internal_default_instance() { + return reinterpret_cast( + &_TaskCreateResponse_default_instance_); + } + static constexpr int kIndexInFileMessages = + 1; + + void Swap(TaskCreateResponse* other); + friend void swap(TaskCreateResponse& a, TaskCreateResponse& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline TaskCreateResponse* New() const final { + return CreateMaybeMessage(nullptr); + } + + TaskCreateResponse* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const TaskCreateResponse& from); + void MergeFrom(const TaskCreateResponse& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TaskCreateResponse* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // string job_id = 1; + void clear_job_id(); + static const int kJobIdFieldNumber = 1; + const ::std::string& job_id() const; + void set_job_id(const ::std::string& value); + #if LANG_CXX11 + void set_job_id(::std::string&& value); + #endif + void set_job_id(const char* value); + void set_job_id(const char* value, size_t size); + ::std::string* mutable_job_id(); + ::std::string* release_job_id(); + void set_allocated_job_id(::std::string* job_id); + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskCreateResponse) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr job_id_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto; +}; +// ------------------------------------------------------------------- + +class TaskGetRequest final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.service.TaskGetRequest) */ { + public: + TaskGetRequest(); + virtual ~TaskGetRequest(); + + TaskGetRequest(const TaskGetRequest& from); + + inline TaskGetRequest& operator=(const TaskGetRequest& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + TaskGetRequest(TaskGetRequest&& from) noexcept + : TaskGetRequest() { + *this = ::std::move(from); + } + + inline TaskGetRequest& operator=(TaskGetRequest&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const TaskGetRequest& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const TaskGetRequest* internal_default_instance() { + return reinterpret_cast( + &_TaskGetRequest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 2; + + void Swap(TaskGetRequest* other); + friend void swap(TaskGetRequest& a, TaskGetRequest& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline TaskGetRequest* New() const final { + return CreateMaybeMessage(nullptr); + } + + TaskGetRequest* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const TaskGetRequest& from); + void MergeFrom(const TaskGetRequest& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TaskGetRequest* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // string task_type = 1; + void clear_task_type(); + static const int kTaskTypeFieldNumber = 1; + const ::std::string& task_type() const; + void set_task_type(const ::std::string& value); + #if LANG_CXX11 + void set_task_type(::std::string&& value); + #endif + void set_task_type(const char* value); + void set_task_type(const char* value, size_t size); + ::std::string* mutable_task_type(); + ::std::string* release_task_type(); + void set_allocated_task_type(::std::string* task_type); + + // string job_id = 2; + void clear_job_id(); + static const int kJobIdFieldNumber = 2; + const ::std::string& job_id() const; + void set_job_id(const ::std::string& value); + #if LANG_CXX11 + void set_job_id(::std::string&& value); + #endif + void set_job_id(const char* value); + void set_job_id(const char* value, size_t size); + ::std::string* mutable_job_id(); + ::std::string* release_job_id(); + void set_allocated_job_id(::std::string* job_id); + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskGetRequest) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr task_type_; + ::google::protobuf::internal::ArenaStringPtr job_id_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto; +}; +// ------------------------------------------------------------------- + +class TaskGetResponse final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.service.TaskGetResponse) */ { + public: + TaskGetResponse(); + virtual ~TaskGetResponse(); + + TaskGetResponse(const TaskGetResponse& from); + + inline TaskGetResponse& operator=(const TaskGetResponse& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + TaskGetResponse(TaskGetResponse&& from) noexcept + : TaskGetResponse() { + *this = ::std::move(from); + } + + inline TaskGetResponse& operator=(TaskGetResponse&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const TaskGetResponse& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const TaskGetResponse* internal_default_instance() { + return reinterpret_cast( + &_TaskGetResponse_default_instance_); + } + static constexpr int kIndexInFileMessages = + 3; + + void Swap(TaskGetResponse* other); + friend void swap(TaskGetResponse& a, TaskGetResponse& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline TaskGetResponse* New() const final { + return CreateMaybeMessage(nullptr); + } + + TaskGetResponse* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const TaskGetResponse& from); + void MergeFrom(const TaskGetResponse& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TaskGetResponse* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // .flyteidl.core.LiteralMap outputs = 2; + bool has_outputs() const; + void clear_outputs(); + static const int kOutputsFieldNumber = 2; + const ::flyteidl::core::LiteralMap& outputs() const; + ::flyteidl::core::LiteralMap* release_outputs(); + ::flyteidl::core::LiteralMap* mutable_outputs(); + void set_allocated_outputs(::flyteidl::core::LiteralMap* outputs); + + // .flyteidl.service.State state = 1; + void clear_state(); + static const int kStateFieldNumber = 1; + ::flyteidl::service::State state() const; + void set_state(::flyteidl::service::State value); + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskGetResponse) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::flyteidl::core::LiteralMap* outputs_; + int state_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto; +}; +// ------------------------------------------------------------------- + +class TaskDeleteRequest final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.service.TaskDeleteRequest) */ { + public: + TaskDeleteRequest(); + virtual ~TaskDeleteRequest(); + + TaskDeleteRequest(const TaskDeleteRequest& from); + + inline TaskDeleteRequest& operator=(const TaskDeleteRequest& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + TaskDeleteRequest(TaskDeleteRequest&& from) noexcept + : TaskDeleteRequest() { + *this = ::std::move(from); + } + + inline TaskDeleteRequest& operator=(TaskDeleteRequest&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const TaskDeleteRequest& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const TaskDeleteRequest* internal_default_instance() { + return reinterpret_cast( + &_TaskDeleteRequest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 4; + + void Swap(TaskDeleteRequest* other); + friend void swap(TaskDeleteRequest& a, TaskDeleteRequest& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline TaskDeleteRequest* New() const final { + return CreateMaybeMessage(nullptr); + } + + TaskDeleteRequest* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const TaskDeleteRequest& from); + void MergeFrom(const TaskDeleteRequest& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TaskDeleteRequest* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // string task_type = 1; + void clear_task_type(); + static const int kTaskTypeFieldNumber = 1; + const ::std::string& task_type() const; + void set_task_type(const ::std::string& value); + #if LANG_CXX11 + void set_task_type(::std::string&& value); + #endif + void set_task_type(const char* value); + void set_task_type(const char* value, size_t size); + ::std::string* mutable_task_type(); + ::std::string* release_task_type(); + void set_allocated_task_type(::std::string* task_type); + + // string job_id = 2; + void clear_job_id(); + static const int kJobIdFieldNumber = 2; + const ::std::string& job_id() const; + void set_job_id(const ::std::string& value); + #if LANG_CXX11 + void set_job_id(::std::string&& value); + #endif + void set_job_id(const char* value); + void set_job_id(const char* value, size_t size); + ::std::string* mutable_job_id(); + ::std::string* release_job_id(); + void set_allocated_job_id(::std::string* job_id); + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskDeleteRequest) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr task_type_; + ::google::protobuf::internal::ArenaStringPtr job_id_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto; +}; +// ------------------------------------------------------------------- + +class TaskDeleteResponse final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.service.TaskDeleteResponse) */ { + public: + TaskDeleteResponse(); + virtual ~TaskDeleteResponse(); + + TaskDeleteResponse(const TaskDeleteResponse& from); + + inline TaskDeleteResponse& operator=(const TaskDeleteResponse& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + TaskDeleteResponse(TaskDeleteResponse&& from) noexcept + : TaskDeleteResponse() { + *this = ::std::move(from); + } + + inline TaskDeleteResponse& operator=(TaskDeleteResponse&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const TaskDeleteResponse& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const TaskDeleteResponse* internal_default_instance() { + return reinterpret_cast( + &_TaskDeleteResponse_default_instance_); + } + static constexpr int kIndexInFileMessages = + 5; + + void Swap(TaskDeleteResponse* other); + friend void swap(TaskDeleteResponse& a, TaskDeleteResponse& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline TaskDeleteResponse* New() const final { + return CreateMaybeMessage(nullptr); + } + + TaskDeleteResponse* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const TaskDeleteResponse& from); + void MergeFrom(const TaskDeleteResponse& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TaskDeleteResponse* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskDeleteResponse) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto; +}; +// =================================================================== + + +// =================================================================== + +#ifdef __GNUC__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif // __GNUC__ +// TaskCreateRequest + +// .flyteidl.core.LiteralMap inputs = 1; +inline bool TaskCreateRequest::has_inputs() const { + return this != internal_default_instance() && inputs_ != nullptr; +} +inline const ::flyteidl::core::LiteralMap& TaskCreateRequest::inputs() const { + const ::flyteidl::core::LiteralMap* p = inputs_; + // @@protoc_insertion_point(field_get:flyteidl.service.TaskCreateRequest.inputs) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::core::_LiteralMap_default_instance_); +} +inline ::flyteidl::core::LiteralMap* TaskCreateRequest::release_inputs() { + // @@protoc_insertion_point(field_release:flyteidl.service.TaskCreateRequest.inputs) + + ::flyteidl::core::LiteralMap* temp = inputs_; + inputs_ = nullptr; + return temp; +} +inline ::flyteidl::core::LiteralMap* TaskCreateRequest::mutable_inputs() { + + if (inputs_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::core::LiteralMap>(GetArenaNoVirtual()); + inputs_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.service.TaskCreateRequest.inputs) + return inputs_; +} +inline void TaskCreateRequest::set_allocated_inputs(::flyteidl::core::LiteralMap* inputs) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(inputs_); + } + if (inputs) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + inputs = ::google::protobuf::internal::GetOwnedMessage( + message_arena, inputs, submessage_arena); + } + + } else { + + } + inputs_ = inputs; + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.TaskCreateRequest.inputs) +} + +// .flyteidl.core.TaskTemplate template = 2; +inline bool TaskCreateRequest::has_template_() const { + return this != internal_default_instance() && template__ != nullptr; +} +inline const ::flyteidl::core::TaskTemplate& TaskCreateRequest::template_() const { + const ::flyteidl::core::TaskTemplate* p = template__; + // @@protoc_insertion_point(field_get:flyteidl.service.TaskCreateRequest.template) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::core::_TaskTemplate_default_instance_); +} +inline ::flyteidl::core::TaskTemplate* TaskCreateRequest::release_template_() { + // @@protoc_insertion_point(field_release:flyteidl.service.TaskCreateRequest.template) + + ::flyteidl::core::TaskTemplate* temp = template__; + template__ = nullptr; + return temp; +} +inline ::flyteidl::core::TaskTemplate* TaskCreateRequest::mutable_template_() { + + if (template__ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::core::TaskTemplate>(GetArenaNoVirtual()); + template__ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.service.TaskCreateRequest.template) + return template__; +} +inline void TaskCreateRequest::set_allocated_template_(::flyteidl::core::TaskTemplate* template_) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(template__); + } + if (template_) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + template_ = ::google::protobuf::internal::GetOwnedMessage( + message_arena, template_, submessage_arena); + } + + } else { + + } + template__ = template_; + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.TaskCreateRequest.template) +} + +// string output_prefix = 3; +inline void TaskCreateRequest::clear_output_prefix() { + output_prefix_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& TaskCreateRequest::output_prefix() const { + // @@protoc_insertion_point(field_get:flyteidl.service.TaskCreateRequest.output_prefix) + return output_prefix_.GetNoArena(); +} +inline void TaskCreateRequest::set_output_prefix(const ::std::string& value) { + + output_prefix_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.service.TaskCreateRequest.output_prefix) +} +#if LANG_CXX11 +inline void TaskCreateRequest::set_output_prefix(::std::string&& value) { + + output_prefix_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.service.TaskCreateRequest.output_prefix) +} +#endif +inline void TaskCreateRequest::set_output_prefix(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + output_prefix_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.service.TaskCreateRequest.output_prefix) +} +inline void TaskCreateRequest::set_output_prefix(const char* value, size_t size) { + + output_prefix_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.service.TaskCreateRequest.output_prefix) +} +inline ::std::string* TaskCreateRequest::mutable_output_prefix() { + + // @@protoc_insertion_point(field_mutable:flyteidl.service.TaskCreateRequest.output_prefix) + return output_prefix_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* TaskCreateRequest::release_output_prefix() { + // @@protoc_insertion_point(field_release:flyteidl.service.TaskCreateRequest.output_prefix) + + return output_prefix_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void TaskCreateRequest::set_allocated_output_prefix(::std::string* output_prefix) { + if (output_prefix != nullptr) { + + } else { + + } + output_prefix_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), output_prefix); + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.TaskCreateRequest.output_prefix) +} + +// ------------------------------------------------------------------- + +// TaskCreateResponse + +// string job_id = 1; +inline void TaskCreateResponse::clear_job_id() { + job_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& TaskCreateResponse::job_id() const { + // @@protoc_insertion_point(field_get:flyteidl.service.TaskCreateResponse.job_id) + return job_id_.GetNoArena(); +} +inline void TaskCreateResponse::set_job_id(const ::std::string& value) { + + job_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.service.TaskCreateResponse.job_id) +} +#if LANG_CXX11 +inline void TaskCreateResponse::set_job_id(::std::string&& value) { + + job_id_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.service.TaskCreateResponse.job_id) +} +#endif +inline void TaskCreateResponse::set_job_id(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + job_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.service.TaskCreateResponse.job_id) +} +inline void TaskCreateResponse::set_job_id(const char* value, size_t size) { + + job_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.service.TaskCreateResponse.job_id) +} +inline ::std::string* TaskCreateResponse::mutable_job_id() { + + // @@protoc_insertion_point(field_mutable:flyteidl.service.TaskCreateResponse.job_id) + return job_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* TaskCreateResponse::release_job_id() { + // @@protoc_insertion_point(field_release:flyteidl.service.TaskCreateResponse.job_id) + + return job_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void TaskCreateResponse::set_allocated_job_id(::std::string* job_id) { + if (job_id != nullptr) { + + } else { + + } + job_id_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), job_id); + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.TaskCreateResponse.job_id) +} + +// ------------------------------------------------------------------- + +// TaskGetRequest + +// string task_type = 1; +inline void TaskGetRequest::clear_task_type() { + task_type_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& TaskGetRequest::task_type() const { + // @@protoc_insertion_point(field_get:flyteidl.service.TaskGetRequest.task_type) + return task_type_.GetNoArena(); +} +inline void TaskGetRequest::set_task_type(const ::std::string& value) { + + task_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.service.TaskGetRequest.task_type) +} +#if LANG_CXX11 +inline void TaskGetRequest::set_task_type(::std::string&& value) { + + task_type_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.service.TaskGetRequest.task_type) +} +#endif +inline void TaskGetRequest::set_task_type(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + task_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.service.TaskGetRequest.task_type) +} +inline void TaskGetRequest::set_task_type(const char* value, size_t size) { + + task_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.service.TaskGetRequest.task_type) +} +inline ::std::string* TaskGetRequest::mutable_task_type() { + + // @@protoc_insertion_point(field_mutable:flyteidl.service.TaskGetRequest.task_type) + return task_type_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* TaskGetRequest::release_task_type() { + // @@protoc_insertion_point(field_release:flyteidl.service.TaskGetRequest.task_type) + + return task_type_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void TaskGetRequest::set_allocated_task_type(::std::string* task_type) { + if (task_type != nullptr) { + + } else { + + } + task_type_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), task_type); + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.TaskGetRequest.task_type) +} + +// string job_id = 2; +inline void TaskGetRequest::clear_job_id() { + job_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& TaskGetRequest::job_id() const { + // @@protoc_insertion_point(field_get:flyteidl.service.TaskGetRequest.job_id) + return job_id_.GetNoArena(); +} +inline void TaskGetRequest::set_job_id(const ::std::string& value) { + + job_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.service.TaskGetRequest.job_id) +} +#if LANG_CXX11 +inline void TaskGetRequest::set_job_id(::std::string&& value) { + + job_id_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.service.TaskGetRequest.job_id) +} +#endif +inline void TaskGetRequest::set_job_id(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + job_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.service.TaskGetRequest.job_id) +} +inline void TaskGetRequest::set_job_id(const char* value, size_t size) { + + job_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.service.TaskGetRequest.job_id) +} +inline ::std::string* TaskGetRequest::mutable_job_id() { + + // @@protoc_insertion_point(field_mutable:flyteidl.service.TaskGetRequest.job_id) + return job_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* TaskGetRequest::release_job_id() { + // @@protoc_insertion_point(field_release:flyteidl.service.TaskGetRequest.job_id) + + return job_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void TaskGetRequest::set_allocated_job_id(::std::string* job_id) { + if (job_id != nullptr) { + + } else { + + } + job_id_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), job_id); + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.TaskGetRequest.job_id) +} + +// ------------------------------------------------------------------- + +// TaskGetResponse + +// .flyteidl.service.State state = 1; +inline void TaskGetResponse::clear_state() { + state_ = 0; +} +inline ::flyteidl::service::State TaskGetResponse::state() const { + // @@protoc_insertion_point(field_get:flyteidl.service.TaskGetResponse.state) + return static_cast< ::flyteidl::service::State >(state_); +} +inline void TaskGetResponse::set_state(::flyteidl::service::State value) { + + state_ = value; + // @@protoc_insertion_point(field_set:flyteidl.service.TaskGetResponse.state) +} + +// .flyteidl.core.LiteralMap outputs = 2; +inline bool TaskGetResponse::has_outputs() const { + return this != internal_default_instance() && outputs_ != nullptr; +} +inline const ::flyteidl::core::LiteralMap& TaskGetResponse::outputs() const { + const ::flyteidl::core::LiteralMap* p = outputs_; + // @@protoc_insertion_point(field_get:flyteidl.service.TaskGetResponse.outputs) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::core::_LiteralMap_default_instance_); +} +inline ::flyteidl::core::LiteralMap* TaskGetResponse::release_outputs() { + // @@protoc_insertion_point(field_release:flyteidl.service.TaskGetResponse.outputs) + + ::flyteidl::core::LiteralMap* temp = outputs_; + outputs_ = nullptr; + return temp; +} +inline ::flyteidl::core::LiteralMap* TaskGetResponse::mutable_outputs() { + + if (outputs_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::core::LiteralMap>(GetArenaNoVirtual()); + outputs_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.service.TaskGetResponse.outputs) + return outputs_; +} +inline void TaskGetResponse::set_allocated_outputs(::flyteidl::core::LiteralMap* outputs) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(outputs_); + } + if (outputs) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + outputs = ::google::protobuf::internal::GetOwnedMessage( + message_arena, outputs, submessage_arena); + } + + } else { + + } + outputs_ = outputs; + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.TaskGetResponse.outputs) +} + +// ------------------------------------------------------------------- + +// TaskDeleteRequest + +// string task_type = 1; +inline void TaskDeleteRequest::clear_task_type() { + task_type_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& TaskDeleteRequest::task_type() const { + // @@protoc_insertion_point(field_get:flyteidl.service.TaskDeleteRequest.task_type) + return task_type_.GetNoArena(); +} +inline void TaskDeleteRequest::set_task_type(const ::std::string& value) { + + task_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.service.TaskDeleteRequest.task_type) +} +#if LANG_CXX11 +inline void TaskDeleteRequest::set_task_type(::std::string&& value) { + + task_type_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.service.TaskDeleteRequest.task_type) +} +#endif +inline void TaskDeleteRequest::set_task_type(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + task_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.service.TaskDeleteRequest.task_type) +} +inline void TaskDeleteRequest::set_task_type(const char* value, size_t size) { + + task_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.service.TaskDeleteRequest.task_type) +} +inline ::std::string* TaskDeleteRequest::mutable_task_type() { + + // @@protoc_insertion_point(field_mutable:flyteidl.service.TaskDeleteRequest.task_type) + return task_type_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* TaskDeleteRequest::release_task_type() { + // @@protoc_insertion_point(field_release:flyteidl.service.TaskDeleteRequest.task_type) + + return task_type_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void TaskDeleteRequest::set_allocated_task_type(::std::string* task_type) { + if (task_type != nullptr) { + + } else { + + } + task_type_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), task_type); + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.TaskDeleteRequest.task_type) +} + +// string job_id = 2; +inline void TaskDeleteRequest::clear_job_id() { + job_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& TaskDeleteRequest::job_id() const { + // @@protoc_insertion_point(field_get:flyteidl.service.TaskDeleteRequest.job_id) + return job_id_.GetNoArena(); +} +inline void TaskDeleteRequest::set_job_id(const ::std::string& value) { + + job_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.service.TaskDeleteRequest.job_id) +} +#if LANG_CXX11 +inline void TaskDeleteRequest::set_job_id(::std::string&& value) { + + job_id_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.service.TaskDeleteRequest.job_id) +} +#endif +inline void TaskDeleteRequest::set_job_id(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + job_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.service.TaskDeleteRequest.job_id) +} +inline void TaskDeleteRequest::set_job_id(const char* value, size_t size) { + + job_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.service.TaskDeleteRequest.job_id) +} +inline ::std::string* TaskDeleteRequest::mutable_job_id() { + + // @@protoc_insertion_point(field_mutable:flyteidl.service.TaskDeleteRequest.job_id) + return job_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* TaskDeleteRequest::release_job_id() { + // @@protoc_insertion_point(field_release:flyteidl.service.TaskDeleteRequest.job_id) + + return job_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void TaskDeleteRequest::set_allocated_job_id(::std::string* job_id) { + if (job_id != nullptr) { + + } else { + + } + job_id_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), job_id); + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.TaskDeleteRequest.job_id) +} + +// ------------------------------------------------------------------- + +// TaskDeleteResponse + +#ifdef __GNUC__ + #pragma GCC diagnostic pop +#endif // __GNUC__ +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + + +// @@protoc_insertion_point(namespace_scope) + +} // namespace service +} // namespace flyteidl + +namespace google { +namespace protobuf { + +template <> struct is_proto_enum< ::flyteidl::service::State> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::flyteidl::service::State>() { + return ::flyteidl::service::State_descriptor(); +} + +} // namespace protobuf +} // namespace google + +// @@protoc_insertion_point(global_scope) + +#include +#endif // PROTOBUF_INCLUDED_flyteidl_2fservice_2fexternal_5fplugin_5fservice_2eproto diff --git a/gen/pb-go/flyteidl/service/admin.swagger.json b/gen/pb-go/flyteidl/service/admin.swagger.json index 75700b081..242f84f47 100644 --- a/gen/pb-go/flyteidl/service/admin.swagger.json +++ b/gen/pb-go/flyteidl/service/admin.swagger.json @@ -2490,7 +2490,7 @@ "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/adminTaskCreateResponse" + "$ref": "#/definitions/flyteidladminTaskCreateResponse" } } }, @@ -2500,7 +2500,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/adminTaskCreateRequest" + "$ref": "#/definitions/flyteidladminTaskCreateRequest" } } ], @@ -5033,24 +5033,6 @@ }, "description": "Compute task attributes which include values derived from the TaskSpec, as well as plugin-specific data\nand task metadata." }, - "adminTaskCreateRequest": { - "type": "object", - "properties": { - "id": { - "$ref": "#/definitions/coreIdentifier", - "title": "id represents the unique identifier of the task.\n+required" - }, - "spec": { - "$ref": "#/definitions/adminTaskSpec", - "title": "Represents the specification for task.\n+required" - } - }, - "title": "Represents a request structure to create a revision of a task.\nSee :ref:`ref_flyteidl.admin.Task` for more details" - }, - "adminTaskCreateResponse": { - "type": "object", - "description": "Represents a response structure if task creation succeeds." - }, "adminTaskExecutionClosure": { "type": "object", "properties": { @@ -7534,6 +7516,24 @@ }, "description": "Encapsulates all details for a single node execution entity.\nA node represents a component in the overall workflow graph. A node launch a task, multiple tasks, an entire nested\nsub-workflow, or even a separate child-workflow execution.\nThe same task can be called repeatedly in a single workflow but each node is unique." }, + "flyteidladminTaskCreateRequest": { + "type": "object", + "properties": { + "id": { + "$ref": "#/definitions/coreIdentifier", + "title": "id represents the unique identifier of the task.\n+required" + }, + "spec": { + "$ref": "#/definitions/adminTaskSpec", + "title": "Represents the specification for task.\n+required" + } + }, + "title": "Represents a request structure to create a revision of a task.\nSee :ref:`ref_flyteidl.admin.Task` for more details" + }, + "flyteidladminTaskCreateResponse": { + "type": "object", + "description": "Represents a response structure if task creation succeeds." + }, "flyteidladminTaskExecution": { "type": "object", "properties": { diff --git a/gen/pb-go/flyteidl/service/external_plugin_service.pb.go b/gen/pb-go/flyteidl/service/external_plugin_service.pb.go new file mode 100644 index 000000000..5d61ac453 --- /dev/null +++ b/gen/pb-go/flyteidl/service/external_plugin_service.pb.go @@ -0,0 +1,555 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: flyteidl/service/external_plugin_service.proto + +package service + +import ( + context "context" + fmt "fmt" + core "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core" + proto "github.com/golang/protobuf/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package + +// The state of the execution is used to control its visibility in the UI/CLI. +type State int32 + +const ( + State_RETRYABLE_FAILURE State = 0 + State_PERMANENT_FAILURE State = 1 + State_PENDING State = 2 + State_RUNNING State = 3 + State_SUCCEEDED State = 4 +) + +var State_name = map[int32]string{ + 0: "RETRYABLE_FAILURE", + 1: "PERMANENT_FAILURE", + 2: "PENDING", + 3: "RUNNING", + 4: "SUCCEEDED", +} + +var State_value = map[string]int32{ + "RETRYABLE_FAILURE": 0, + "PERMANENT_FAILURE": 1, + "PENDING": 2, + "RUNNING": 3, + "SUCCEEDED": 4, +} + +func (x State) String() string { + return proto.EnumName(State_name, int32(x)) +} + +func (State) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_74cbdb08eef5b1d1, []int{0} +} + +// Represents a request structure to create task. +type TaskCreateRequest struct { + // The inputs required to start the execution. All required inputs must be + // included in this map. If not required and not provided, defaults apply. + // +optional + Inputs *core.LiteralMap `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"` + // Template of the task that encapsulates all the metadata of the task. + Template *core.TaskTemplate `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` + // Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) + OutputPrefix string `protobuf:"bytes,3,opt,name=output_prefix,json=outputPrefix,proto3" json:"output_prefix,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TaskCreateRequest) Reset() { *m = TaskCreateRequest{} } +func (m *TaskCreateRequest) String() string { return proto.CompactTextString(m) } +func (*TaskCreateRequest) ProtoMessage() {} +func (*TaskCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_74cbdb08eef5b1d1, []int{0} +} + +func (m *TaskCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TaskCreateRequest.Unmarshal(m, b) +} +func (m *TaskCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TaskCreateRequest.Marshal(b, m, deterministic) +} +func (m *TaskCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_TaskCreateRequest.Merge(m, src) +} +func (m *TaskCreateRequest) XXX_Size() int { + return xxx_messageInfo_TaskCreateRequest.Size(m) +} +func (m *TaskCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_TaskCreateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_TaskCreateRequest proto.InternalMessageInfo + +func (m *TaskCreateRequest) GetInputs() *core.LiteralMap { + if m != nil { + return m.Inputs + } + return nil +} + +func (m *TaskCreateRequest) GetTemplate() *core.TaskTemplate { + if m != nil { + return m.Template + } + return nil +} + +func (m *TaskCreateRequest) GetOutputPrefix() string { + if m != nil { + return m.OutputPrefix + } + return "" +} + +// Represents a create response structure. +type TaskCreateResponse struct { + JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TaskCreateResponse) Reset() { *m = TaskCreateResponse{} } +func (m *TaskCreateResponse) String() string { return proto.CompactTextString(m) } +func (*TaskCreateResponse) ProtoMessage() {} +func (*TaskCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_74cbdb08eef5b1d1, []int{1} +} + +func (m *TaskCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TaskCreateResponse.Unmarshal(m, b) +} +func (m *TaskCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TaskCreateResponse.Marshal(b, m, deterministic) +} +func (m *TaskCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_TaskCreateResponse.Merge(m, src) +} +func (m *TaskCreateResponse) XXX_Size() int { + return xxx_messageInfo_TaskCreateResponse.Size(m) +} +func (m *TaskCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_TaskCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_TaskCreateResponse proto.InternalMessageInfo + +func (m *TaskCreateResponse) GetJobId() string { + if m != nil { + return m.JobId + } + return "" +} + +// A message used to fetch a job state from backend plugin server. +type TaskGetRequest struct { + // A predefined yet extensible Task type identifier. + TaskType string `protobuf:"bytes,1,opt,name=task_type,json=taskType,proto3" json:"task_type,omitempty"` + // The unique id identifying the job. + JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TaskGetRequest) Reset() { *m = TaskGetRequest{} } +func (m *TaskGetRequest) String() string { return proto.CompactTextString(m) } +func (*TaskGetRequest) ProtoMessage() {} +func (*TaskGetRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_74cbdb08eef5b1d1, []int{2} +} + +func (m *TaskGetRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TaskGetRequest.Unmarshal(m, b) +} +func (m *TaskGetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TaskGetRequest.Marshal(b, m, deterministic) +} +func (m *TaskGetRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_TaskGetRequest.Merge(m, src) +} +func (m *TaskGetRequest) XXX_Size() int { + return xxx_messageInfo_TaskGetRequest.Size(m) +} +func (m *TaskGetRequest) XXX_DiscardUnknown() { + xxx_messageInfo_TaskGetRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_TaskGetRequest proto.InternalMessageInfo + +func (m *TaskGetRequest) GetTaskType() string { + if m != nil { + return m.TaskType + } + return "" +} + +func (m *TaskGetRequest) GetJobId() string { + if m != nil { + return m.JobId + } + return "" +} + +// Response to get an individual task state. +type TaskGetResponse struct { + // The state of the execution is used to control its visibility in the UI/CLI. + State State `protobuf:"varint,1,opt,name=state,proto3,enum=flyteidl.service.State" json:"state,omitempty"` + // The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a + // Structured dataset pointing to the query result table. + // +optional + Outputs *core.LiteralMap `protobuf:"bytes,2,opt,name=outputs,proto3" json:"outputs,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TaskGetResponse) Reset() { *m = TaskGetResponse{} } +func (m *TaskGetResponse) String() string { return proto.CompactTextString(m) } +func (*TaskGetResponse) ProtoMessage() {} +func (*TaskGetResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_74cbdb08eef5b1d1, []int{3} +} + +func (m *TaskGetResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TaskGetResponse.Unmarshal(m, b) +} +func (m *TaskGetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TaskGetResponse.Marshal(b, m, deterministic) +} +func (m *TaskGetResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_TaskGetResponse.Merge(m, src) +} +func (m *TaskGetResponse) XXX_Size() int { + return xxx_messageInfo_TaskGetResponse.Size(m) +} +func (m *TaskGetResponse) XXX_DiscardUnknown() { + xxx_messageInfo_TaskGetResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_TaskGetResponse proto.InternalMessageInfo + +func (m *TaskGetResponse) GetState() State { + if m != nil { + return m.State + } + return State_RETRYABLE_FAILURE +} + +func (m *TaskGetResponse) GetOutputs() *core.LiteralMap { + if m != nil { + return m.Outputs + } + return nil +} + +// A message used to delete a task. +type TaskDeleteRequest struct { + // A predefined yet extensible Task type identifier. + TaskType string `protobuf:"bytes,1,opt,name=task_type,json=taskType,proto3" json:"task_type,omitempty"` + // The unique id identifying the job. + JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TaskDeleteRequest) Reset() { *m = TaskDeleteRequest{} } +func (m *TaskDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*TaskDeleteRequest) ProtoMessage() {} +func (*TaskDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_74cbdb08eef5b1d1, []int{4} +} + +func (m *TaskDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TaskDeleteRequest.Unmarshal(m, b) +} +func (m *TaskDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TaskDeleteRequest.Marshal(b, m, deterministic) +} +func (m *TaskDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_TaskDeleteRequest.Merge(m, src) +} +func (m *TaskDeleteRequest) XXX_Size() int { + return xxx_messageInfo_TaskDeleteRequest.Size(m) +} +func (m *TaskDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_TaskDeleteRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_TaskDeleteRequest proto.InternalMessageInfo + +func (m *TaskDeleteRequest) GetTaskType() string { + if m != nil { + return m.TaskType + } + return "" +} + +func (m *TaskDeleteRequest) GetJobId() string { + if m != nil { + return m.JobId + } + return "" +} + +// Response to delete a task. +type TaskDeleteResponse struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TaskDeleteResponse) Reset() { *m = TaskDeleteResponse{} } +func (m *TaskDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*TaskDeleteResponse) ProtoMessage() {} +func (*TaskDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_74cbdb08eef5b1d1, []int{5} +} + +func (m *TaskDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TaskDeleteResponse.Unmarshal(m, b) +} +func (m *TaskDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TaskDeleteResponse.Marshal(b, m, deterministic) +} +func (m *TaskDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_TaskDeleteResponse.Merge(m, src) +} +func (m *TaskDeleteResponse) XXX_Size() int { + return xxx_messageInfo_TaskDeleteResponse.Size(m) +} +func (m *TaskDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_TaskDeleteResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_TaskDeleteResponse proto.InternalMessageInfo + +func init() { + proto.RegisterEnum("flyteidl.service.State", State_name, State_value) + proto.RegisterType((*TaskCreateRequest)(nil), "flyteidl.service.TaskCreateRequest") + proto.RegisterType((*TaskCreateResponse)(nil), "flyteidl.service.TaskCreateResponse") + proto.RegisterType((*TaskGetRequest)(nil), "flyteidl.service.TaskGetRequest") + proto.RegisterType((*TaskGetResponse)(nil), "flyteidl.service.TaskGetResponse") + proto.RegisterType((*TaskDeleteRequest)(nil), "flyteidl.service.TaskDeleteRequest") + proto.RegisterType((*TaskDeleteResponse)(nil), "flyteidl.service.TaskDeleteResponse") +} + +func init() { + proto.RegisterFile("flyteidl/service/external_plugin_service.proto", fileDescriptor_74cbdb08eef5b1d1) +} + +var fileDescriptor_74cbdb08eef5b1d1 = []byte{ + // 525 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xc1, 0x6e, 0xda, 0x40, + 0x10, 0x05, 0x52, 0x20, 0x4c, 0x9a, 0x94, 0xac, 0x8a, 0x4a, 0x48, 0x2b, 0x51, 0xa7, 0x87, 0xa8, + 0x55, 0x6c, 0x95, 0x1c, 0xa2, 0x1e, 0x09, 0xb8, 0x08, 0x89, 0x58, 0x68, 0x81, 0x03, 0x3d, 0xd4, + 0x32, 0x30, 0xb8, 0x4e, 0x1c, 0x7b, 0x6b, 0xaf, 0xab, 0xf0, 0x35, 0xbd, 0xf4, 0x43, 0xab, 0xf5, + 0xda, 0x0e, 0x90, 0x96, 0x43, 0x8e, 0x9e, 0x79, 0xf3, 0xe6, 0xcd, 0x9b, 0x59, 0x83, 0xba, 0x74, + 0x57, 0x1c, 0x9d, 0x85, 0xab, 0x85, 0x18, 0xfc, 0x72, 0xe6, 0xa8, 0xe1, 0x03, 0xc7, 0xc0, 0xb3, + 0x5c, 0x93, 0xb9, 0x91, 0xed, 0x78, 0x66, 0x12, 0x57, 0x59, 0xe0, 0x73, 0x9f, 0x54, 0x53, 0xbc, + 0x9a, 0xc4, 0x1b, 0x6f, 0x33, 0x86, 0xb9, 0x1f, 0xa0, 0xe6, 0x3a, 0x1c, 0x03, 0xcb, 0x0d, 0x25, + 0xbe, 0x71, 0xb2, 0x99, 0xe5, 0x56, 0x78, 0x97, 0xa6, 0xde, 0x6d, 0xa6, 0x1c, 0x8f, 0x63, 0xb0, + 0xb4, 0xd2, 0x4e, 0xca, 0x9f, 0x3c, 0x1c, 0x8f, 0xad, 0xf0, 0xae, 0x13, 0xa0, 0xc5, 0x91, 0xe2, + 0xcf, 0x08, 0x43, 0x4e, 0x3e, 0x43, 0xc9, 0xf1, 0x58, 0xc4, 0xc3, 0x7a, 0xbe, 0x99, 0x3f, 0x3f, + 0x68, 0x9d, 0x64, 0x03, 0xa8, 0x82, 0x45, 0x1d, 0xc8, 0xf6, 0x37, 0x16, 0xa3, 0x09, 0x90, 0x5c, + 0xc1, 0x3e, 0xc7, 0x7b, 0xe6, 0x5a, 0x1c, 0xeb, 0x85, 0xb8, 0xe8, 0x74, 0xab, 0x48, 0xb4, 0x19, + 0x27, 0x10, 0x9a, 0x81, 0xc9, 0x19, 0x1c, 0xfa, 0x11, 0x67, 0x11, 0x37, 0x59, 0x80, 0x4b, 0xe7, + 0xa1, 0xbe, 0xd7, 0xcc, 0x9f, 0x57, 0xe8, 0x4b, 0x19, 0x1c, 0xc6, 0x31, 0xe5, 0x13, 0x90, 0x75, + 0x95, 0x21, 0xf3, 0xbd, 0x10, 0x49, 0x0d, 0x4a, 0xb7, 0xfe, 0xcc, 0x74, 0x16, 0xb1, 0xcc, 0x0a, + 0x2d, 0xde, 0xfa, 0xb3, 0xfe, 0x42, 0xe9, 0xc2, 0x91, 0x00, 0xf7, 0x90, 0xa7, 0xf3, 0x9c, 0x42, + 0x45, 0x78, 0x62, 0xf2, 0x15, 0xc3, 0x04, 0xbb, 0x2f, 0x02, 0xe3, 0x15, 0x5b, 0x67, 0x29, 0xac, + 0xb3, 0x44, 0xf0, 0x2a, 0x63, 0x49, 0xfa, 0x5d, 0x40, 0x31, 0xe4, 0x62, 0x40, 0x41, 0x71, 0xd4, + 0x7a, 0xa3, 0x6e, 0xaf, 0x49, 0x1d, 0x89, 0x34, 0x95, 0x28, 0x72, 0x09, 0x65, 0x39, 0x44, 0x98, + 0x38, 0xb2, 0xc3, 0xc6, 0x14, 0xa9, 0xf4, 0xe4, 0x3e, 0xba, 0xe8, 0xe2, 0xe3, 0x3e, 0x9e, 0xa3, + 0xff, 0xb5, 0xb4, 0x2c, 0x25, 0x92, 0x23, 0x7c, 0xfc, 0x0e, 0xc5, 0x58, 0x23, 0xa9, 0xc1, 0x31, + 0xd5, 0xc7, 0x74, 0xda, 0xbe, 0x1e, 0xe8, 0xe6, 0xd7, 0x76, 0x7f, 0x30, 0xa1, 0x7a, 0x35, 0x27, + 0xc2, 0x43, 0x9d, 0xde, 0xb4, 0x0d, 0xdd, 0x18, 0x67, 0xe1, 0x3c, 0x39, 0x80, 0xf2, 0x50, 0x37, + 0xba, 0x7d, 0xa3, 0x57, 0x2d, 0x88, 0x0f, 0x3a, 0x31, 0x0c, 0xf1, 0xb1, 0x47, 0x0e, 0xa1, 0x32, + 0x9a, 0x74, 0x3a, 0xba, 0xde, 0xd5, 0xbb, 0xd5, 0x17, 0xad, 0xdf, 0x05, 0xa8, 0xe9, 0xc9, 0x6d, + 0x0f, 0xe3, 0xd3, 0x1e, 0x49, 0x6b, 0xc8, 0x14, 0x40, 0xae, 0x4f, 0xa8, 0x22, 0x67, 0x4f, 0xbd, + 0x7b, 0x72, 0x86, 0x8d, 0x0f, 0xbb, 0x41, 0x72, 0x24, 0x25, 0x47, 0x86, 0x50, 0xee, 0x21, 0x8f, + 0x79, 0x9b, 0xff, 0x2e, 0x79, 0xbc, 0x85, 0xc6, 0xfb, 0x1d, 0x88, 0x8c, 0x71, 0x0a, 0x20, 0x8d, + 0xdb, 0x25, 0x76, 0x63, 0x47, 0xff, 0x13, 0xbb, 0xe9, 0xbf, 0x92, 0xbb, 0xfe, 0xf2, 0xed, 0xca, + 0x76, 0xf8, 0x8f, 0x68, 0xa6, 0xce, 0xfd, 0x7b, 0x2d, 0xae, 0xf1, 0x03, 0x5b, 0xcb, 0x9e, 0xa9, + 0x8d, 0x9e, 0xc6, 0x66, 0x17, 0xb6, 0xaf, 0x6d, 0xff, 0x34, 0x66, 0xa5, 0xf8, 0xcd, 0x5e, 0xfe, + 0x0d, 0x00, 0x00, 0xff, 0xff, 0x18, 0xdb, 0xdc, 0xc4, 0x4f, 0x04, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// ExternalPluginServiceClient is the client API for ExternalPluginService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ExternalPluginServiceClient interface { + // Send a task create request to the backend plugin server. + CreateTask(ctx context.Context, in *TaskCreateRequest, opts ...grpc.CallOption) (*TaskCreateResponse, error) + // Get job status. + GetTask(ctx context.Context, in *TaskGetRequest, opts ...grpc.CallOption) (*TaskGetResponse, error) + // Delete the task resource. + DeleteTask(ctx context.Context, in *TaskDeleteRequest, opts ...grpc.CallOption) (*TaskDeleteResponse, error) +} + +type externalPluginServiceClient struct { + cc *grpc.ClientConn +} + +func NewExternalPluginServiceClient(cc *grpc.ClientConn) ExternalPluginServiceClient { + return &externalPluginServiceClient{cc} +} + +func (c *externalPluginServiceClient) CreateTask(ctx context.Context, in *TaskCreateRequest, opts ...grpc.CallOption) (*TaskCreateResponse, error) { + out := new(TaskCreateResponse) + err := c.cc.Invoke(ctx, "/flyteidl.service.ExternalPluginService/CreateTask", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *externalPluginServiceClient) GetTask(ctx context.Context, in *TaskGetRequest, opts ...grpc.CallOption) (*TaskGetResponse, error) { + out := new(TaskGetResponse) + err := c.cc.Invoke(ctx, "/flyteidl.service.ExternalPluginService/GetTask", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *externalPluginServiceClient) DeleteTask(ctx context.Context, in *TaskDeleteRequest, opts ...grpc.CallOption) (*TaskDeleteResponse, error) { + out := new(TaskDeleteResponse) + err := c.cc.Invoke(ctx, "/flyteidl.service.ExternalPluginService/DeleteTask", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ExternalPluginServiceServer is the server API for ExternalPluginService service. +type ExternalPluginServiceServer interface { + // Send a task create request to the backend plugin server. + CreateTask(context.Context, *TaskCreateRequest) (*TaskCreateResponse, error) + // Get job status. + GetTask(context.Context, *TaskGetRequest) (*TaskGetResponse, error) + // Delete the task resource. + DeleteTask(context.Context, *TaskDeleteRequest) (*TaskDeleteResponse, error) +} + +// UnimplementedExternalPluginServiceServer can be embedded to have forward compatible implementations. +type UnimplementedExternalPluginServiceServer struct { +} + +func (*UnimplementedExternalPluginServiceServer) CreateTask(ctx context.Context, req *TaskCreateRequest) (*TaskCreateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateTask not implemented") +} +func (*UnimplementedExternalPluginServiceServer) GetTask(ctx context.Context, req *TaskGetRequest) (*TaskGetResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTask not implemented") +} +func (*UnimplementedExternalPluginServiceServer) DeleteTask(ctx context.Context, req *TaskDeleteRequest) (*TaskDeleteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteTask not implemented") +} + +func RegisterExternalPluginServiceServer(s *grpc.Server, srv ExternalPluginServiceServer) { + s.RegisterService(&_ExternalPluginService_serviceDesc, srv) +} + +func _ExternalPluginService_CreateTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TaskCreateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ExternalPluginServiceServer).CreateTask(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/flyteidl.service.ExternalPluginService/CreateTask", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ExternalPluginServiceServer).CreateTask(ctx, req.(*TaskCreateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ExternalPluginService_GetTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TaskGetRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ExternalPluginServiceServer).GetTask(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/flyteidl.service.ExternalPluginService/GetTask", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ExternalPluginServiceServer).GetTask(ctx, req.(*TaskGetRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ExternalPluginService_DeleteTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TaskDeleteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ExternalPluginServiceServer).DeleteTask(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/flyteidl.service.ExternalPluginService/DeleteTask", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ExternalPluginServiceServer).DeleteTask(ctx, req.(*TaskDeleteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _ExternalPluginService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "flyteidl.service.ExternalPluginService", + HandlerType: (*ExternalPluginServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateTask", + Handler: _ExternalPluginService_CreateTask_Handler, + }, + { + MethodName: "GetTask", + Handler: _ExternalPluginService_GetTask_Handler, + }, + { + MethodName: "DeleteTask", + Handler: _ExternalPluginService_DeleteTask_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "flyteidl/service/external_plugin_service.proto", +} diff --git a/gen/pb-go/flyteidl/service/external_plugin_service.swagger.json b/gen/pb-go/flyteidl/service/external_plugin_service.swagger.json new file mode 100644 index 000000000..adb2d6d0b --- /dev/null +++ b/gen/pb-go/flyteidl/service/external_plugin_service.swagger.json @@ -0,0 +1,1154 @@ +{ + "swagger": "2.0", + "info": { + "title": "flyteidl/service/external_plugin_service.proto", + "version": "version not set" + }, + "schemes": [ + "http", + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": { + "BlobTypeBlobDimensionality": { + "type": "string", + "enum": [ + "SINGLE", + "MULTIPART" + ], + "default": "SINGLE" + }, + "ContainerArchitecture": { + "type": "string", + "enum": [ + "UNKNOWN", + "AMD64", + "ARM64", + "ARM_V6", + "ARM_V7" + ], + "default": "UNKNOWN", + "description": "Architecture-type the container image supports." + }, + "DataLoadingConfigLiteralMapFormat": { + "type": "string", + "enum": [ + "JSON", + "YAML", + "PROTO" + ], + "default": "JSON", + "description": "- JSON: JSON / YAML for the metadata (which contains inlined primitive values). The representation is inline with the standard json specification as specified - https://www.json.org/json-en.html\n - PROTO: Proto is a serialized binary of `core.LiteralMap` defined in flyteidl/core", + "title": "LiteralMapFormat decides the encoding format in which the input metadata should be made available to the containers.\nIf the user has access to the protocol buffer definitions, it is recommended to use the PROTO format.\nJSON and YAML do not need any protobuf definitions to read it\nAll remote references in core.LiteralMap are replaced with local filesystem references (the data is downloaded to local filesystem)" + }, + "IOStrategyDownloadMode": { + "type": "string", + "enum": [ + "DOWNLOAD_EAGER", + "DOWNLOAD_STREAM", + "DO_NOT_DOWNLOAD" + ], + "default": "DOWNLOAD_EAGER", + "description": "- DOWNLOAD_EAGER: All data will be downloaded before the main container is executed\n - DOWNLOAD_STREAM: Data will be downloaded as a stream and an End-Of-Stream marker will be written to indicate all data has been downloaded. Refer to protocol for details\n - DO_NOT_DOWNLOAD: Large objects (offloaded) will not be downloaded", + "title": "Mode to use for downloading" + }, + "IOStrategyUploadMode": { + "type": "string", + "enum": [ + "UPLOAD_ON_EXIT", + "UPLOAD_EAGER", + "DO_NOT_UPLOAD" + ], + "default": "UPLOAD_ON_EXIT", + "description": "- UPLOAD_ON_EXIT: All data will be uploaded after the main container exits\n - UPLOAD_EAGER: Data will be uploaded as it appears. Refer to protocol specification for details\n - DO_NOT_UPLOAD: Data will not be uploaded, only references will be written", + "title": "Mode to use for uploading" + }, + "ResourcesResourceEntry": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/ResourcesResourceName", + "description": "Resource name." + }, + "value": { + "type": "string", + "title": "Value must be a valid k8s quantity. See\nhttps://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go#L30-L80" + } + }, + "description": "Encapsulates a resource name and value." + }, + "ResourcesResourceName": { + "type": "string", + "enum": [ + "UNKNOWN", + "CPU", + "GPU", + "MEMORY", + "STORAGE", + "EPHEMERAL_STORAGE" + ], + "default": "UNKNOWN", + "description": "Known resource names.\n\n - EPHEMERAL_STORAGE: For Kubernetes-based deployments, pods use ephemeral local storage for scratch space, caching, and for logs." + }, + "RuntimeMetadataRuntimeType": { + "type": "string", + "enum": [ + "OTHER", + "FLYTE_SDK" + ], + "default": "OTHER" + }, + "SchemaColumnSchemaColumnType": { + "type": "string", + "enum": [ + "INTEGER", + "FLOAT", + "STRING", + "BOOLEAN", + "DATETIME", + "DURATION" + ], + "default": "INTEGER" + }, + "SchemaTypeSchemaColumn": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "A unique name -within the schema type- for the column" + }, + "type": { + "$ref": "#/definitions/SchemaColumnSchemaColumnType", + "description": "The column type. This allows a limited set of types currently." + } + } + }, + "SecretMountType": { + "type": "string", + "enum": [ + "ANY", + "ENV_VAR", + "FILE" + ], + "default": "ANY", + "description": " - ANY: Default case, indicates the client can tolerate either mounting options.\n - ENV_VAR: ENV_VAR indicates the secret needs to be mounted as an environment variable.\n - FILE: FILE indicates the secret needs to be mounted as a file." + }, + "SqlDialect": { + "type": "string", + "enum": [ + "UNDEFINED", + "ANSI", + "HIVE", + "OTHER" + ], + "default": "UNDEFINED", + "description": "The dialect of the SQL statement. This is used to validate and parse SQL statements at compilation time to avoid\nexpensive runtime operations. If set to an unsupported dialect, no validation will be done on the statement.\nWe support the following dialect: ansi, hive." + }, + "StructuredDatasetTypeDatasetColumn": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A unique name within the schema type for the column." + }, + "literal_type": { + "$ref": "#/definitions/coreLiteralType", + "description": "The column type." + } + } + }, + "coreBinary": { + "type": "object", + "properties": { + "value": { + "type": "string", + "format": "byte" + }, + "tag": { + "type": "string" + } + }, + "description": "A simple byte array with a tag to help different parts of the system communicate about what is in the byte array.\nIt's strongly advisable that consumers of this type define a unique tag and validate the tag before parsing the data." + }, + "coreBlob": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/coreBlobMetadata" + }, + "uri": { + "type": "string" + } + }, + "description": "Refers to an offloaded set of files. It encapsulates the type of the store and a unique uri for where the data is.\nThere are no restrictions on how the uri is formatted since it will depend on how to interact with the store." + }, + "coreBlobMetadata": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/coreBlobType" + } + } + }, + "coreBlobType": { + "type": "object", + "properties": { + "format": { + "type": "string", + "title": "Format can be a free form string understood by SDK/UI etc like\ncsv, parquet etc" + }, + "dimensionality": { + "$ref": "#/definitions/BlobTypeBlobDimensionality" + } + }, + "title": "Defines type behavior for blob objects" + }, + "coreContainer": { + "type": "object", + "properties": { + "image": { + "type": "string", + "title": "Container image url. Eg: docker/redis:latest" + }, + "command": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Command to be executed, if not provided, the default entrypoint in the container image will be used." + }, + "args": { + "type": "array", + "items": { + "type": "string" + }, + "description": "These will default to Flyte given paths. If provided, the system will not append known paths. If the task still\nneeds flyte's inputs and outputs path, add $(FLYTE_INPUT_FILE), $(FLYTE_OUTPUT_FILE) wherever makes sense and the\nsystem will populate these before executing the container." + }, + "resources": { + "$ref": "#/definitions/coreResources", + "description": "Container resources requirement as specified by the container engine." + }, + "env": { + "type": "array", + "items": { + "$ref": "#/definitions/coreKeyValuePair" + }, + "description": "Environment variables will be set as the container is starting up." + }, + "config": { + "type": "array", + "items": { + "$ref": "#/definitions/coreKeyValuePair" + }, + "description": "Allows extra configs to be available for the container.\nTODO: elaborate on how configs will become available.\nDeprecated, please use TaskTemplate.config instead." + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/coreContainerPort" + }, + "title": "Ports to open in the container. This feature is not supported by all execution engines. (e.g. supported on K8s but\nnot supported on AWS Batch)\nOnly K8s" + }, + "data_config": { + "$ref": "#/definitions/coreDataLoadingConfig", + "title": "BETA: Optional configuration for DataLoading. If not specified, then default values are used.\nThis makes it possible to to run a completely portable container, that uses inputs and outputs\nonly from the local file-system and without having any reference to flyteidl. This is supported only on K8s at the moment.\nIf data loading is enabled, then data will be mounted in accompanying directories specified in the DataLoadingConfig. If the directories\nare not specified, inputs will be mounted onto and outputs will be uploaded from a pre-determined file-system path. Refer to the documentation\nto understand the default paths.\nOnly K8s" + }, + "architecture": { + "$ref": "#/definitions/ContainerArchitecture" + } + } + }, + "coreContainerPort": { + "type": "object", + "properties": { + "container_port": { + "type": "integer", + "format": "int64", + "description": "Number of port to expose on the pod's IP address.\nThis must be a valid port number, 0 \u003c x \u003c 65536." + } + }, + "description": "Defines port properties for a container." + }, + "coreDataLoadingConfig": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "format": "boolean", + "title": "Flag enables DataLoading Config. If this is not set, data loading will not be used!" + }, + "input_path": { + "type": "string", + "title": "File system path (start at root). This folder will contain all the inputs exploded to a separate file.\nExample, if the input interface needs (x: int, y: blob, z: multipart_blob) and the input path is '/var/flyte/inputs', then the file system will look like\n/var/flyte/inputs/inputs.\u003cmetadata format dependent -\u003e .pb .json .yaml\u003e -\u003e Format as defined previously. The Blob and Multipart blob will reference local filesystem instead of remote locations\n/var/flyte/inputs/x -\u003e X is a file that contains the value of x (integer) in string format\n/var/flyte/inputs/y -\u003e Y is a file in Binary format\n/var/flyte/inputs/z/... -\u003e Note Z itself is a directory\nMore information about the protocol - refer to docs #TODO reference docs here" + }, + "output_path": { + "type": "string", + "title": "File system path (start at root). This folder should contain all the outputs for the task as individual files and/or an error text file" + }, + "format": { + "$ref": "#/definitions/DataLoadingConfigLiteralMapFormat", + "title": "In the inputs folder, there will be an additional summary/metadata file that contains references to all files or inlined primitive values.\nThis format decides the actual encoding for the data. Refer to the encoding to understand the specifics of the contents and the encoding" + }, + "io_strategy": { + "$ref": "#/definitions/coreIOStrategy" + } + }, + "description": "This configuration allows executing raw containers in Flyte using the Flyte CoPilot system.\nFlyte CoPilot, eliminates the needs of flytekit or sdk inside the container. Any inputs required by the users container are side-loaded in the input_path\nAny outputs generated by the user container - within output_path are automatically uploaded." + }, + "coreEnumType": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Predefined set of enum values." + } + }, + "description": "Enables declaring enum types, with predefined string values\nFor len(values) \u003e 0, the first value in the ordered list is regarded as the default value. If you wish\nTo provide no defaults, make the first value as undefined." + }, + "coreError": { + "type": "object", + "properties": { + "failed_node_id": { + "type": "string", + "description": "The node id that threw the error." + }, + "message": { + "type": "string", + "description": "Error message thrown." + } + }, + "description": "Represents an error thrown from a node." + }, + "coreIOStrategy": { + "type": "object", + "properties": { + "download_mode": { + "$ref": "#/definitions/IOStrategyDownloadMode", + "title": "Mode to use to manage downloads" + }, + "upload_mode": { + "$ref": "#/definitions/IOStrategyUploadMode", + "title": "Mode to use to manage uploads" + } + }, + "title": "Strategy to use when dealing with Blob, Schema, or multipart blob data (large datasets)" + }, + "coreIdentifier": { + "type": "object", + "properties": { + "resource_type": { + "$ref": "#/definitions/coreResourceType", + "description": "Identifies the specific type of resource that this identifier corresponds to." + }, + "project": { + "type": "string", + "description": "Name of the project the resource belongs to." + }, + "domain": { + "type": "string", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project." + }, + "name": { + "type": "string", + "description": "User provided value for the resource." + }, + "version": { + "type": "string", + "description": "Specific version of the resource." + } + }, + "description": "Encapsulation of fields that uniquely identifies a Flyte resource." + }, + "coreIdentity": { + "type": "object", + "properties": { + "iam_role": { + "type": "string", + "description": "iam_role references the fully qualified name of Identity \u0026 Access Management role to impersonate." + }, + "k8s_service_account": { + "type": "string", + "description": "k8s_service_account references a kubernetes service account to impersonate." + }, + "oauth2_client": { + "$ref": "#/definitions/coreOAuth2Client", + "description": "oauth2_client references an oauth2 client. Backend plugins can use this information to impersonate the client when\nmaking external calls." + } + }, + "description": "Identity encapsulates the various security identities a task can run as. It's up to the underlying plugin to pick the\nright identity for the execution environment." + }, + "coreK8sObjectMetadata": { + "type": "object", + "properties": { + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional labels to add to the pod definition." + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional annotations to add to the pod definition." + } + }, + "description": "Metadata for building a kubernetes object when a task is executed." + }, + "coreK8sPod": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/coreK8sObjectMetadata", + "description": "Contains additional metadata for building a kubernetes pod." + }, + "pod_spec": { + "$ref": "#/definitions/protobufStruct", + "title": "Defines the primary pod spec created when a task is executed.\nThis should be a JSON-marshalled pod spec, which can be defined in\n- go, using: https://github.com/kubernetes/api/blob/release-1.21/core/v1/types.go#L2936\n- python: using https://github.com/kubernetes-client/python/blob/release-19.0/kubernetes/client/models/v1_pod_spec.py" + }, + "data_config": { + "$ref": "#/definitions/coreDataLoadingConfig", + "title": "BETA: Optional configuration for DataLoading. If not specified, then default values are used.\nThis makes it possible to to run a completely portable container, that uses inputs and outputs\nonly from the local file-system and without having any reference to flytekit. This is supported only on K8s at the moment.\nIf data loading is enabled, then data will be mounted in accompanying directories specified in the DataLoadingConfig. If the directories\nare not specified, inputs will be mounted onto and outputs will be uploaded from a pre-determined file-system path. Refer to the documentation\nto understand the default paths.\nOnly K8s" + } + }, + "description": "Defines a pod spec and additional pod metadata that is created when a task is executed." + }, + "coreKeyValuePair": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "required." + }, + "value": { + "type": "string", + "description": "+optional." + } + }, + "description": "A generic key value pair." + }, + "coreLiteral": { + "type": "object", + "properties": { + "scalar": { + "$ref": "#/definitions/coreScalar", + "description": "A simple value." + }, + "collection": { + "$ref": "#/definitions/coreLiteralCollection", + "description": "A collection of literals to allow nesting." + }, + "map": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of strings to literals." + }, + "hash": { + "type": "string", + "title": "A hash representing this literal.\nThis is used for caching purposes. For more details refer to RFC 1893\n(https://github.com/flyteorg/flyte/blob/master/rfc/system/1893-caching-of-offloaded-objects.md)" + } + }, + "description": "A simple value. This supports any level of nesting (e.g. array of array of array of Blobs) as well as simple primitives." + }, + "coreLiteralCollection": { + "type": "object", + "properties": { + "literals": { + "type": "array", + "items": { + "$ref": "#/definitions/coreLiteral" + } + } + }, + "description": "A collection of literals. This is a workaround since oneofs in proto messages cannot contain a repeated field." + }, + "coreLiteralMap": { + "type": "object", + "properties": { + "literals": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/coreLiteral" + } + } + }, + "description": "A map of literals. This is a workaround since oneofs in proto messages cannot contain a repeated field." + }, + "coreLiteralType": { + "type": "object", + "properties": { + "simple": { + "$ref": "#/definitions/coreSimpleType", + "description": "A simple type that can be compared one-to-one with another." + }, + "schema": { + "$ref": "#/definitions/coreSchemaType", + "description": "A complex type that requires matching of inner fields." + }, + "collection_type": { + "$ref": "#/definitions/coreLiteralType", + "description": "Defines the type of the value of a collection. Only homogeneous collections are allowed." + }, + "map_value_type": { + "$ref": "#/definitions/coreLiteralType", + "description": "Defines the type of the value of a map type. The type of the key is always a string." + }, + "blob": { + "$ref": "#/definitions/coreBlobType", + "description": "A blob might have specialized implementation details depending on associated metadata." + }, + "enum_type": { + "$ref": "#/definitions/coreEnumType", + "description": "Defines an enum with pre-defined string values." + }, + "structured_dataset_type": { + "$ref": "#/definitions/coreStructuredDatasetType", + "title": "Generalized schema support" + }, + "union_type": { + "$ref": "#/definitions/coreUnionType", + "description": "Defines an union type with pre-defined LiteralTypes." + }, + "metadata": { + "$ref": "#/definitions/protobufStruct", + "description": "This field contains type metadata that is descriptive of the type, but is NOT considered in type-checking. This might be used by\nconsumers to identify special behavior or display extended information for the type." + }, + "annotation": { + "$ref": "#/definitions/coreTypeAnnotation", + "description": "This field contains arbitrary data that might have special semantic\nmeaning for the client but does not effect internal flyte behavior." + }, + "structure": { + "$ref": "#/definitions/coreTypeStructure", + "description": "Hints to improve type matching." + } + }, + "description": "Defines a strong type to allow type checking between interfaces." + }, + "coreOAuth2Client": { + "type": "object", + "properties": { + "client_id": { + "type": "string", + "title": "client_id is the public id for the client to use. The system will not perform any pre-auth validation that the\nsecret requested matches the client_id indicated here.\n+required" + }, + "client_secret": { + "$ref": "#/definitions/coreSecret", + "title": "client_secret is a reference to the secret used to authenticate the OAuth2 client.\n+required" + } + }, + "description": "OAuth2Client encapsulates OAuth2 Client Credentials to be used when making calls on behalf of that task." + }, + "coreOAuth2TokenRequest": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "name indicates a unique id for the token request within this task token requests. It'll be used as a suffix for\nenvironment variables and as a filename for mounting tokens as files.\n+required" + }, + "type": { + "$ref": "#/definitions/coreOAuth2TokenRequestType", + "title": "type indicates the type of the request to make. Defaults to CLIENT_CREDENTIALS.\n+required" + }, + "client": { + "$ref": "#/definitions/coreOAuth2Client", + "title": "client references the client_id/secret to use to request the OAuth2 token.\n+required" + }, + "idp_discovery_endpoint": { + "type": "string", + "title": "idp_discovery_endpoint references the discovery endpoint used to retrieve token endpoint and other related\ninformation.\n+optional" + }, + "token_endpoint": { + "type": "string", + "title": "token_endpoint references the token issuance endpoint. If idp_discovery_endpoint is not provided, this parameter is\nmandatory.\n+optional" + } + }, + "description": "OAuth2TokenRequest encapsulates information needed to request an OAuth2 token.\nFLYTE_TOKENS_ENV_PREFIX will be passed to indicate the prefix of the environment variables that will be present if\ntokens are passed through environment variables.\nFLYTE_TOKENS_PATH_PREFIX will be passed to indicate the prefix of the path where secrets will be mounted if tokens\nare passed through file mounts." + }, + "coreOAuth2TokenRequestType": { + "type": "string", + "enum": [ + "CLIENT_CREDENTIALS" + ], + "default": "CLIENT_CREDENTIALS", + "description": "Type of the token requested.\n\n - CLIENT_CREDENTIALS: CLIENT_CREDENTIALS indicates a 2-legged OAuth token requested using client credentials." + }, + "corePrimitive": { + "type": "object", + "properties": { + "integer": { + "type": "string", + "format": "int64" + }, + "float_value": { + "type": "number", + "format": "double" + }, + "string_value": { + "type": "string" + }, + "boolean": { + "type": "boolean", + "format": "boolean" + }, + "datetime": { + "type": "string", + "format": "date-time" + }, + "duration": { + "type": "string" + } + }, + "title": "Primitive Types" + }, + "coreResourceType": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED", + "description": "Indicates a resource type within Flyte.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects" + }, + "coreResources": { + "type": "object", + "properties": { + "requests": { + "type": "array", + "items": { + "$ref": "#/definitions/ResourcesResourceEntry" + }, + "description": "The desired set of resources requested. ResourceNames must be unique within the list." + }, + "limits": { + "type": "array", + "items": { + "$ref": "#/definitions/ResourcesResourceEntry" + }, + "description": "Defines a set of bounds (e.g. min/max) within which the task can reliably run. ResourceNames must be unique\nwithin the list." + } + }, + "description": "A customizable interface to convey resources requested for a container. This can be interpreted differently for different\ncontainer engines." + }, + "coreRetryStrategy": { + "type": "object", + "properties": { + "retries": { + "type": "integer", + "format": "int64", + "description": "Number of retries. Retries will be consumed when the job fails with a recoverable error.\nThe number of retries must be less than or equals to 10." + } + }, + "description": "Retry strategy associated with an executable unit." + }, + "coreRuntimeMetadata": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/RuntimeMetadataRuntimeType", + "description": "Type of runtime." + }, + "version": { + "type": "string", + "description": "Version of the runtime. All versions should be backward compatible. However, certain cases call for version\nchecks to ensure tighter validation or setting expectations." + }, + "flavor": { + "type": "string", + "description": "+optional It can be used to provide extra information about the runtime (e.g. python, golang... etc.)." + } + }, + "description": "Runtime information. This is loosely defined to allow for extensibility." + }, + "coreScalar": { + "type": "object", + "properties": { + "primitive": { + "$ref": "#/definitions/corePrimitive" + }, + "blob": { + "$ref": "#/definitions/coreBlob" + }, + "binary": { + "$ref": "#/definitions/coreBinary" + }, + "schema": { + "$ref": "#/definitions/coreSchema" + }, + "none_type": { + "$ref": "#/definitions/coreVoid" + }, + "error": { + "$ref": "#/definitions/coreError" + }, + "generic": { + "$ref": "#/definitions/protobufStruct" + }, + "structured_dataset": { + "$ref": "#/definitions/coreStructuredDataset" + }, + "union": { + "$ref": "#/definitions/coreUnion" + } + } + }, + "coreSchema": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/coreSchemaType" + } + }, + "description": "A strongly typed schema that defines the interface of data retrieved from the underlying storage medium." + }, + "coreSchemaType": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "$ref": "#/definitions/SchemaTypeSchemaColumn" + }, + "description": "A list of ordered columns this schema comprises of." + } + }, + "description": "Defines schema columns and types to strongly type-validate schemas interoperability." + }, + "coreSecret": { + "type": "object", + "properties": { + "group": { + "type": "string", + "title": "The name of the secret group where to find the key referenced below. For K8s secrets, this should be the name of\nthe v1/secret object. For Confidant, this should be the Credential name. For Vault, this should be the secret name.\nFor AWS Secret Manager, this should be the name of the secret.\n+required" + }, + "group_version": { + "type": "string", + "title": "The group version to fetch. This is not supported in all secret management systems. It'll be ignored for the ones\nthat do not support it.\n+optional" + }, + "key": { + "type": "string", + "title": "The name of the secret to mount. This has to match an existing secret in the system. It's up to the implementation\nof the secret management system to require case sensitivity. For K8s secrets, Confidant and Vault, this should\nmatch one of the keys inside the secret. For AWS Secret Manager, it's ignored.\n+optional" + }, + "mount_requirement": { + "$ref": "#/definitions/SecretMountType", + "title": "mount_requirement is optional. Indicates where the secret has to be mounted. If provided, the execution will fail\nif the underlying key management system cannot satisfy that requirement. If not provided, the default location\nwill depend on the key management system.\n+optional" + } + }, + "description": "Secret encapsulates information about the secret a task needs to proceed. An environment variable\nFLYTE_SECRETS_ENV_PREFIX will be passed to indicate the prefix of the environment variables that will be present if\nsecrets are passed through environment variables.\nFLYTE_SECRETS_DEFAULT_DIR will be passed to indicate the prefix of the path where secrets will be mounted if secrets\nare passed through file mounts." + }, + "coreSecurityContext": { + "type": "object", + "properties": { + "run_as": { + "$ref": "#/definitions/coreIdentity", + "description": "run_as encapsulates the identity a pod should run as. If the task fills in multiple fields here, it'll be up to the\nbackend plugin to choose the appropriate identity for the execution engine the task will run on." + }, + "secrets": { + "type": "array", + "items": { + "$ref": "#/definitions/coreSecret" + }, + "description": "secrets indicate the list of secrets the task needs in order to proceed. Secrets will be mounted/passed to the\npod as it starts. If the plugin responsible for kicking of the task will not run it on a flyte cluster (e.g. AWS\nBatch), it's the responsibility of the plugin to fetch the secret (which means propeller identity will need access\nto the secret) and to pass it to the remote execution engine." + }, + "tokens": { + "type": "array", + "items": { + "$ref": "#/definitions/coreOAuth2TokenRequest" + }, + "description": "tokens indicate the list of token requests the task needs in order to proceed. Tokens will be mounted/passed to the\npod as it starts. If the plugin responsible for kicking of the task will not run it on a flyte cluster (e.g. AWS\nBatch), it's the responsibility of the plugin to fetch the secret (which means propeller identity will need access\nto the secret) and to pass it to the remote execution engine." + } + }, + "description": "SecurityContext holds security attributes that apply to tasks." + }, + "coreSimpleType": { + "type": "string", + "enum": [ + "NONE", + "INTEGER", + "FLOAT", + "STRING", + "BOOLEAN", + "DATETIME", + "DURATION", + "BINARY", + "ERROR", + "STRUCT" + ], + "default": "NONE", + "description": "Define a set of simple types." + }, + "coreSql": { + "type": "object", + "properties": { + "statement": { + "type": "string", + "title": "The actual query to run, the query can have templated parameters.\nWe use Flyte's Golang templating format for Query templating.\nRefer to the templating documentation.\nhttps://docs.flyte.org/projects/cookbook/en/latest/auto/integrations/external_services/hive/hive.html#sphx-glr-auto-integrations-external-services-hive-hive-py\nFor example,\ninsert overwrite directory '{{ .rawOutputDataPrefix }}' stored as parquet\nselect *\nfrom my_table\nwhere ds = '{{ .Inputs.ds }}'" + }, + "dialect": { + "$ref": "#/definitions/SqlDialect" + } + }, + "description": "Sql represents a generic sql workload with a statement and dialect." + }, + "coreStructuredDataset": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "title": "String location uniquely identifying where the data is.\nShould start with the storage location (e.g. s3://, gs://, bq://, etc.)" + }, + "metadata": { + "$ref": "#/definitions/coreStructuredDatasetMetadata" + } + } + }, + "coreStructuredDatasetMetadata": { + "type": "object", + "properties": { + "structured_dataset_type": { + "$ref": "#/definitions/coreStructuredDatasetType", + "description": "Bundle the type information along with the literal.\nThis is here because StructuredDatasets can often be more defined at run time than at compile time.\nThat is, at compile time you might only declare a task to return a pandas dataframe or a StructuredDataset,\nwithout any column information, but at run time, you might have that column information.\nflytekit python will copy this type information into the literal, from the type information, if not provided by\nthe various plugins (encoders).\nSince this field is run time generated, it's not used for any type checking." + } + } + }, + "coreStructuredDatasetType": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "$ref": "#/definitions/StructuredDatasetTypeDatasetColumn" + }, + "description": "A list of ordered columns this schema comprises of." + }, + "format": { + "type": "string", + "description": "This is the storage format, the format of the bits at rest\nparquet, feather, csv, etc.\nFor two types to be compatible, the format will need to be an exact match." + }, + "external_schema_type": { + "type": "string", + "description": "This is a string representing the type that the bytes in external_schema_bytes are formatted in.\nThis is an optional field that will not be used for type checking." + }, + "external_schema_bytes": { + "type": "string", + "format": "byte", + "description": "The serialized bytes of a third-party schema library like Arrow.\nThis is an optional field that will not be used for type checking." + } + } + }, + "coreTaskMetadata": { + "type": "object", + "properties": { + "discoverable": { + "type": "boolean", + "format": "boolean", + "description": "Indicates whether the system should attempt to lookup this task's output to avoid duplication of work." + }, + "runtime": { + "$ref": "#/definitions/coreRuntimeMetadata", + "description": "Runtime information about the task." + }, + "timeout": { + "type": "string", + "description": "The overall timeout of a task including user-triggered retries." + }, + "retries": { + "$ref": "#/definitions/coreRetryStrategy", + "description": "Number of retries per task." + }, + "discovery_version": { + "type": "string", + "description": "Indicates a logical version to apply to this task for the purpose of discovery." + }, + "deprecated_error_message": { + "type": "string", + "description": "If set, this indicates that this task is deprecated. This will enable owners of tasks to notify consumers\nof the ending of support for a given task." + }, + "interruptible": { + "type": "boolean", + "format": "boolean" + }, + "cache_serializable": { + "type": "boolean", + "format": "boolean", + "title": "Indicates whether the system should attempt to execute discoverable instances in serial to avoid duplicate work" + }, + "generates_deck": { + "type": "boolean", + "format": "boolean", + "description": "Indicates whether the task will generate a Deck URI when it finishes executing." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Arbitrary tags that allow users and the platform to store small but arbitrary labels" + }, + "pod_template_name": { + "type": "string", + "description": "pod_template_name is the unique name of a PodTemplate k8s resource to be used as the base configuration if this\ntask creates a k8s Pod. If this value is set, the specified PodTemplate will be used instead of, but applied\nidentically as, the default PodTemplate configured in FlytePropeller." + } + }, + "title": "Task Metadata" + }, + "coreTaskTemplate": { + "type": "object", + "properties": { + "id": { + "$ref": "#/definitions/coreIdentifier", + "description": "Auto generated taskId by the system. Task Id uniquely identifies this task globally." + }, + "type": { + "type": "string", + "description": "A predefined yet extensible Task type identifier. This can be used to customize any of the components. If no\nextensions are provided in the system, Flyte will resolve the this task to its TaskCategory and default the\nimplementation registered for the TaskCategory." + }, + "metadata": { + "$ref": "#/definitions/coreTaskMetadata", + "description": "Extra metadata about the task." + }, + "interface": { + "$ref": "#/definitions/coreTypedInterface", + "description": "A strongly typed interface for the task. This enables others to use this task within a workflow and guarantees\ncompile-time validation of the workflow to avoid costly runtime failures." + }, + "custom": { + "$ref": "#/definitions/protobufStruct", + "description": "Custom data about the task. This is extensible to allow various plugins in the system." + }, + "container": { + "$ref": "#/definitions/coreContainer" + }, + "k8s_pod": { + "$ref": "#/definitions/coreK8sPod" + }, + "sql": { + "$ref": "#/definitions/coreSql" + }, + "task_type_version": { + "type": "integer", + "format": "int32", + "description": "This can be used to customize task handling at execution time for the same task type." + }, + "security_context": { + "$ref": "#/definitions/coreSecurityContext", + "description": "security_context encapsulates security attributes requested to run this task." + }, + "config": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Metadata about the custom defined for this task. This is extensible to allow various plugins in the system\nto use as required.\nreserve the field numbers 1 through 15 for very frequently occurring message elements" + } + }, + "description": "A Task structure that uniquely identifies a task in the system\nTasks are registered as a first step in the system." + }, + "coreTypeAnnotation": { + "type": "object", + "properties": { + "annotations": { + "$ref": "#/definitions/protobufStruct", + "description": "A arbitrary JSON payload to describe a type." + } + }, + "description": "TypeAnnotation encapsulates registration time information about a type. This can be used for various control-plane operations. TypeAnnotation will not be available at runtime when a task runs." + }, + "coreTypeStructure": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "title": "Must exactly match for types to be castable" + } + }, + "description": "Hints to improve type matching\ne.g. allows distinguishing output from custom type transformers\neven if the underlying IDL serialization matches." + }, + "coreTypedInterface": { + "type": "object", + "properties": { + "inputs": { + "$ref": "#/definitions/coreVariableMap" + }, + "outputs": { + "$ref": "#/definitions/coreVariableMap" + } + }, + "description": "Defines strongly typed inputs and outputs." + }, + "coreUnion": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/coreLiteral" + }, + "type": { + "$ref": "#/definitions/coreLiteralType" + } + }, + "description": "The runtime representation of a tagged union value. See `UnionType` for more details." + }, + "coreUnionType": { + "type": "object", + "properties": { + "variants": { + "type": "array", + "items": { + "$ref": "#/definitions/coreLiteralType" + }, + "description": "Predefined set of variants in union." + } + }, + "description": "Defines a tagged union type, also known as a variant (and formally as the sum type).\n\nA sum type S is defined by a sequence of types (A, B, C, ...), each tagged by a string tag\nA value of type S is constructed from a value of any of the variant types. The specific choice of type is recorded by\nstoring the varaint's tag with the literal value and can be examined in runtime.\n\nType S is typically written as\nS := Apple A | Banana B | Cantaloupe C | ...\n\nNotably, a nullable (optional) type is a sum type between some type X and the singleton type representing a null-value:\nOptional X := X | Null\n\nSee also: https://en.wikipedia.org/wiki/Tagged_union" + }, + "coreVariable": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/coreLiteralType", + "description": "Variable literal type." + }, + "description": { + "type": "string", + "title": "+optional string describing input variable" + } + }, + "description": "Defines a strongly typed variable." + }, + "coreVariableMap": { + "type": "object", + "properties": { + "variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/coreVariable" + }, + "description": "Defines a map of variable names to variables." + } + }, + "title": "A map of Variables" + }, + "coreVoid": { + "type": "object", + "description": "Used to denote a nil/null/None assignment to a scalar value. The underlying LiteralType for Void is intentionally\nundefined since it can be assigned to a scalar of any LiteralType." + }, + "flyteidlserviceTaskCreateResponse": { + "type": "object", + "properties": { + "job_id": { + "type": "string" + } + }, + "description": "Represents a create response structure." + }, + "protobufListValue": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufValue" + }, + "description": "Repeated field of dynamically typed values." + } + }, + "description": "`ListValue` is a wrapper around a repeated field of values.\n\nThe JSON representation for `ListValue` is JSON array." + }, + "protobufNullValue": { + "type": "string", + "enum": [ + "NULL_VALUE" + ], + "default": "NULL_VALUE", + "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." + }, + "protobufStruct": { + "type": "object", + "properties": { + "fields": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/protobufValue" + }, + "description": "Unordered map of dynamically typed values." + } + }, + "description": "`Struct` represents a structured data value, consisting of fields\nwhich map to dynamically typed values. In some languages, `Struct`\nmight be supported by a native representation. For example, in\nscripting languages like JS a struct is represented as an\nobject. The details of that representation are described together\nwith the proto support for the language.\n\nThe JSON representation for `Struct` is JSON object." + }, + "protobufValue": { + "type": "object", + "properties": { + "null_value": { + "$ref": "#/definitions/protobufNullValue", + "description": "Represents a null value." + }, + "number_value": { + "type": "number", + "format": "double", + "description": "Represents a double value." + }, + "string_value": { + "type": "string", + "description": "Represents a string value." + }, + "bool_value": { + "type": "boolean", + "format": "boolean", + "description": "Represents a boolean value." + }, + "struct_value": { + "$ref": "#/definitions/protobufStruct", + "description": "Represents a structured value." + }, + "list_value": { + "$ref": "#/definitions/protobufListValue", + "description": "Represents a repeated `Value`." + } + }, + "description": "`Value` represents a dynamically typed value which can be either\nnull, a number, a string, a boolean, a recursive struct value, or a\nlist of values. A producer of value is expected to set one of that\nvariants, absence of any variant indicates an error.\n\nThe JSON representation for `Value` is JSON value." + }, + "serviceState": { + "type": "string", + "enum": [ + "RETRYABLE_FAILURE", + "PERMANENT_FAILURE", + "PENDING", + "RUNNING", + "SUCCEEDED" + ], + "default": "RETRYABLE_FAILURE", + "description": "The state of the execution is used to control its visibility in the UI/CLI." + }, + "serviceTaskDeleteResponse": { + "type": "object", + "description": "Response to delete a task." + }, + "serviceTaskGetResponse": { + "type": "object", + "properties": { + "state": { + "$ref": "#/definitions/serviceState", + "description": "The state of the execution is used to control its visibility in the UI/CLI." + }, + "outputs": { + "$ref": "#/definitions/coreLiteralMap", + "title": "The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a\nStructured dataset pointing to the query result table.\n+optional" + } + }, + "description": "Response to get an individual task state." + } + } +} diff --git a/gen/pb-go/flyteidl/service/flyteadmin/README.md b/gen/pb-go/flyteidl/service/flyteadmin/README.md index 538a3e478..d108b0511 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/README.md +++ b/gen/pb-go/flyteidl/service/flyteadmin/README.md @@ -176,8 +176,6 @@ Class | Method | HTTP request | Description - [AdminSystemMetadata](docs/AdminSystemMetadata.md) - [AdminTask](docs/AdminTask.md) - [AdminTaskClosure](docs/AdminTaskClosure.md) - - [AdminTaskCreateRequest](docs/AdminTaskCreateRequest.md) - - [AdminTaskCreateResponse](docs/AdminTaskCreateResponse.md) - [AdminTaskExecutionClosure](docs/AdminTaskExecutionClosure.md) - [AdminTaskExecutionEventRequest](docs/AdminTaskExecutionEventRequest.md) - [AdminTaskExecutionEventResponse](docs/AdminTaskExecutionEventResponse.md) @@ -318,6 +316,8 @@ Class | Method | HTTP request | Description - [ExecutionMetadataExecutionMode](docs/ExecutionMetadataExecutionMode.md) - [FlyteidladminDynamicWorkflowNodeMetadata](docs/FlyteidladminDynamicWorkflowNodeMetadata.md) - [FlyteidladminNodeExecution](docs/FlyteidladminNodeExecution.md) + - [FlyteidladminTaskCreateRequest](docs/FlyteidladminTaskCreateRequest.md) + - [FlyteidladminTaskCreateResponse](docs/FlyteidladminTaskCreateResponse.md) - [FlyteidladminTaskExecution](docs/FlyteidladminTaskExecution.md) - [FlyteidladminTaskNodeMetadata](docs/FlyteidladminTaskNodeMetadata.md) - [FlyteidladminWorkflowNodeMetadata](docs/FlyteidladminWorkflowNodeMetadata.md) diff --git a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml index 4116e07c7..92996d1d6 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml +++ b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml @@ -2193,13 +2193,13 @@ paths: name: "body" required: true schema: - $ref: "#/definitions/adminTaskCreateRequest" + $ref: "#/definitions/flyteidladminTaskCreateRequest" x-exportParamName: "Body" responses: 200: description: "A successful response." schema: - $ref: "#/definitions/adminTaskCreateResponse" + $ref: "#/definitions/flyteidladminTaskCreateResponse" /api/v1/tasks/{id.project}/{id.domain}: get: tags: @@ -15736,20 +15736,6 @@ definitions: sql: dialect: {} statement: "statement" - adminTaskCreateRequest: - type: "object" - properties: - id: - title: "id represents the unique identifier of the task.\n+required" - $ref: "#/definitions/coreIdentifier" - spec: - title: "Represents the specification for task.\n+required" - $ref: "#/definitions/adminTaskSpec" - title: "Represents a request structure to create a revision of a task.\nSee :ref:`ref_flyteidl.admin.Task`\ - \ for more details" - adminTaskCreateResponse: - type: "object" - description: "Represents a response structure if task creation succeeds." adminTaskExecutionClosure: type: "object" properties: @@ -65752,6 +65738,20 @@ definitions: output_data: literals: {} deck_uri: "deck_uri" + flyteidladminTaskCreateRequest: + type: "object" + properties: + id: + title: "id represents the unique identifier of the task.\n+required" + $ref: "#/definitions/coreIdentifier" + spec: + title: "Represents the specification for task.\n+required" + $ref: "#/definitions/adminTaskSpec" + title: "Represents a request structure to create a revision of a task.\nSee :ref:`ref_flyteidl.admin.Task`\ + \ for more details" + flyteidladminTaskCreateResponse: + type: "object" + description: "Represents a response structure if task creation succeeds." flyteidladminTaskExecution: type: "object" properties: diff --git a/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go b/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go index 1fcd56030..1ad9e1f58 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go @@ -298,15 +298,15 @@ AdminServiceApiService Create and upload a :ref:`ref_flyteidl.admin.Task&#x * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param body -@return AdminTaskCreateResponse +@return FlyteidladminTaskCreateResponse */ -func (a *AdminServiceApiService) CreateTask(ctx context.Context, body AdminTaskCreateRequest) (AdminTaskCreateResponse, *http.Response, error) { +func (a *AdminServiceApiService) CreateTask(ctx context.Context, body FlyteidladminTaskCreateRequest) (FlyteidladminTaskCreateResponse, *http.Response, error) { var ( localVarHttpMethod = strings.ToUpper("Post") localVarPostBody interface{} localVarFileName string localVarFileBytes []byte - localVarReturnValue AdminTaskCreateResponse + localVarReturnValue FlyteidladminTaskCreateResponse ) // create path and map variables @@ -366,7 +366,7 @@ func (a *AdminServiceApiService) CreateTask(ctx context.Context, body AdminTaskC } if localVarHttpResponse.StatusCode == 200 { - var v AdminTaskCreateResponse + var v FlyteidladminTaskCreateResponse err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); if err != nil { newErr.error = err.Error() diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_create_request.go b/gen/pb-go/flyteidl/service/flyteadmin/model_flyteidladmin_task_create_request.go similarity index 89% rename from gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_create_request.go rename to gen/pb-go/flyteidl/service/flyteadmin/model_flyteidladmin_task_create_request.go index 0c36189c4..ab5fca2a4 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_create_request.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_flyteidladmin_task_create_request.go @@ -9,7 +9,7 @@ package flyteadmin -type AdminTaskCreateRequest struct { +type FlyteidladminTaskCreateRequest struct { Id *CoreIdentifier `json:"id,omitempty"` Spec *AdminTaskSpec `json:"spec,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_create_response.go b/gen/pb-go/flyteidl/service/flyteadmin/model_flyteidladmin_task_create_response.go similarity index 88% rename from gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_create_response.go rename to gen/pb-go/flyteidl/service/flyteadmin/model_flyteidladmin_task_create_response.go index 5c692db5c..caffded16 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_create_response.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_flyteidladmin_task_create_response.go @@ -10,5 +10,5 @@ package flyteadmin // Represents a response structure if task creation succeeds. -type AdminTaskCreateResponse struct { +type FlyteidladminTaskCreateResponse struct { } diff --git a/gen/pb-go/flyteidl/service/openapi.go b/gen/pb-go/flyteidl/service/openapi.go index 5216ad8ef..8d953b0d7 100644 --- a/gen/pb-go/flyteidl/service/openapi.go +++ b/gen/pb-go/flyteidl/service/openapi.go @@ -78,7 +78,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x23\x37\x96\x2f\x0c\xff\x3f\x9f\x02\xb7\xe6\x46\xd8\xee\xd1\xe2\x76\xcf\xf4\xdb\xa1\x89\x1b\xef\x43\x4b\xac\xb2\xae\xb5\xb5\x16\x7b\xfc\x0c\x27\x68\x30\x13\x24\xd1\xca\x04\xb2\x01\xa4\x54\x74\x47\x7f\xf7\x27\x70\xb0\x24\x72\x23\x93\x8b\x24\xaa\x9c\x33\x11\x6d\x15\x33\x13\xeb\xc1\xc1\x59\x7f\xe7\x1f\xff\x82\xd0\x07\xf9\x8c\x67\x33\x22\x3e\x9c\xa0\x0f\xdf\x1d\x7d\xfb\xe1\x40\xff\x46\xd9\x94\x7f\x38\x41\xfa\x39\x42\x1f\x14\x55\x09\xd1\xcf\xa7\xc9\x42\x11\x1a\x27\xc7\x92\x88\x27\x1a\x91\x63\x1c\xa7\x94\x1d\x65\x82\x2b\x0e\x1f\x22\xf4\xe1\x89\x08\x49\x39\xd3\xaf\xdb\x3f\x11\xe3\x0a\x49\xa2\x3e\xfc\x0b\x42\xff\x84\xe6\x65\x34\x27\x29\x91\x1f\x4e\xd0\x7f\x9b\x8f\xe6\x4a\x65\xae\x01\xfd\xb7\xd4\xef\xfe\x0f\xbc\x1b\x71\x26\xf3\xd2\xcb\x38\xcb\x12\x1a\x61\x45\x39\x3b\xfe\x9b\xe4\xac\x78\x37\x13\x3c\xce\xa3\x8e\xef\x62\x35\x97\xc5\x1c\x8f\x71\x46\x8f\x9f\xfe\x78\x8c\x23\x45\x9f\xc8\x38\xc1\x39\x8b\xe6\xe3\x2c\xc1\x4c\x1e\xff\x83\xc6\x7a\x8e\x7f\x23\x91\xfa\x27\xfc\x23\xe6\x29\xa6\xcc\xfc\xcd\x70\x4a\xfe\xe9\xdb\x41\xe8\xc3\x8c\xa8\xe0\x9f\x7a\xb6\x79\x9a\x62\xb1\xd0\x2b\xf2\x91\xa8\x68\x8e\xd4\x9c\x20\xd3\x0f\x72\x4b\xc4\xa7\x08\xa3\x13\x41\xa6\x27\xbf\x0a\x32\x1d\xbb\x85\x3e\x32\x0b\x7c\x01\xa3\xb9\x49\x30\xfb\xf5\xc8\x2e\x13\xb4\xcc\x33\x22\x60\x6e\xe7\xb1\x6e\xfd\x13\x51\x03\x68\xb6\x78\x3f\x7c\x5b\x10\x99\x71\x26\x89\x2c\x0d\x0f\xa1\x0f\xdf\x7d\xfb\x6d\xe5\x27\x84\x3e\xc4\x44\x46\x82\x66\xca\xee\xe5\x00\xc9\x3c\x8a\x88\x94\xd3\x3c\x41\xae\xa5\x70\x30\x66\xaa\x7a\x63\x71\xad\x31\x84\x3e\xfc\x6f\x41\xa6\xba\x9d\x7f\x3d\x8e\xc9\x94\x32\xaa\xdb\x95\x86\x7e\x82\xd1\x96\xbe\xfa\xe7\xbf\x34\xfd\xfd\xcf\x60\x46\x19\x16\x38\x25\x8a\x88\x62\xc7\xcd\xff\x55\xe6\xa2\xf7\x48\x77\x5e\xec\x63\x75\xe0\x95\xd9\x5e\xe1\x94\xe8\x3d\xd1\x3b\x65\xbf\x80\xbf\x05\x91\x3c\x17\x11\x41\x13\x92\x70\x36\x93\x48\xf1\xda\x1a\x50\x68\x41\x93\x57\xf5\x89\x20\x7f\xcf\xa9\x20\x7a\xaf\x94\xc8\x49\xe5\xa9\x5a\x64\x30\x48\xa9\x04\x65\xb3\x70\x29\xfe\x79\xd0\x69\x6a\x86\x2a\xd7\x98\x99\xf9\xa0\x75\x62\x23\x36\x70\xaf\x44\x98\xa1\x09\x41\xfa\x2c\xd2\x98\x08\x12\x23\x2c\x11\x46\x32\x9f\x48\xa2\xd0\x33\x55\x73\xca\xf4\xbf\x33\x12\xd1\x29\x8d\xdc\x9a\xed\xcf\xda\xc0\x9f\xcb\x57\xe6\x41\x12\xa1\x07\xfe\x44\x63\x12\xa3\x27\x9c\xe4\x04\x4d\xb9\x28\x2d\xcf\xd1\x88\xdd\xcf\xf5\x3a\xa4\x13\xca\xe0\xe4\xe9\xb5\x74\x14\xf2\x6f\x6e\xb9\xfe\x0d\xe9\xfe\x50\xce\xe8\xdf\x73\x92\x2c\x10\x8d\x09\x53\x74\x4a\x89\xac\xb6\xf6\x6f\x1c\xfa\xc7\x09\x3a\x44\x7a\x9d\x89\x50\xb0\xde\x9c\x29\xf2\x59\x49\x74\x88\x12\xfa\x48\xd0\x57\x17\x54\x2a\x34\xb8\x39\xff\xea\x00\x7d\x65\xce\x0b\x02\xde\xf4\xd5\x2b\xac\xb0\xff\xfb\x7f\x82\xa3\xa7\xf0\xac\x7a\xe8\x3e\x0c\xf4\x69\xbe\x33\x57\x43\xd1\xc2\xff\xfc\x4b\xd8\x8e\xdd\xaf\xe5\xfc\xb6\x60\xb6\x96\xd3\x76\xe5\xaf\xb0\x4c\x65\xd6\x2a\xf5\x0e\x6d\xcb\x59\x75\xbb\x55\xd6\x2a\xdf\x17\x6f\xd5\x53\x78\x69\xfe\xba\x0d\x73\xc5\x0a\xa8\x1e\x53\x66\x0e\x89\x3f\x33\x42\xea\x73\xe2\xa8\x77\x4f\x58\xca\x36\xbc\x36\x98\x59\xc0\x6e\x1d\x17\x0d\x56\x65\x0f\xe7\x9d\xd0\x94\xae\xda\xdf\x73\x16\x6b\x91\xcb\x32\x3b\x96\xa7\x13\x22\xf4\x32\x38\xb6\x07\xb3\x9d\x68\x36\xa8\x72\xc1\x48\xdc\x61\x9a\x7f\xcf\x89\x58\x2c\x99\xe7\x14\x27\xb2\x6d\xa2\x94\x29\xa2\xe5\xdb\xca\xe3\x29\x17\x29\x56\xf6\x85\x3f\xff\xfb\xba\x0b\xa1\xf8\x23\x59\xb5\xff\xe7\x66\x37\x23\x2c\x81\x0c\xd2\x3c\x51\x34\x4b\x08\xca\xf0\x8c\x48\xbb\x22\x79\xa2\xe4\x01\xbc\xa6\x65\x6a\x22\x0e\xfd\x0d\x04\x3d\xb8\x9b\x37\x97\xf0\x0b\x9a\x7a\x01\x92\x91\xcf\x0a\x5a\x1a\x31\xb8\x7b\x61\x89\xc2\x1b\xe5\x05\x96\x72\x33\x9a\x91\x5c\xa8\xf1\x64\x71\xf4\x48\x6a\xfd\xb6\x52\x0e\x66\x08\x2b\x25\xe8\x24\x57\x44\xcf\x5b\xb7\xe1\xee\x4e\x60\x8f\xe6\x82\xee\xc2\x1a\xde\x6e\xc2\x31\x15\x24\x82\xb9\xad\x73\x60\xfc\x57\x7a\xde\x5a\x7f\x59\x98\xd9\x3f\x92\x05\xc8\x23\x0d\x2b\xe0\xb7\x7c\xc4\x46\x0c\x1d\xa2\xb3\xe1\xdd\xe9\xf0\xea\xec\xfc\xea\xd3\x09\xfa\x7e\x81\x62\x32\xc5\x79\xa2\x0e\xd0\x94\x92\x24\x96\x08\x0b\x02\x4d\x92\x58\xcb\x1c\x7a\x30\x84\xc5\x94\xcd\x10\x17\x31\x11\x2f\xb7\x8c\x95\xa7\x84\xe5\x69\xe5\x5e\x81\xdf\x8b\xd1\x57\xbe\xd0\x22\x86\x7f\x54\x7a\xf2\x3f\xb5\x05\x86\x19\xeb\xbe\x83\xd6\x5e\x4d\xa8\x89\xe6\x34\x89\x05\x61\xc7\x0a\xcb\xc7\x31\xf9\x4c\xa2\xdc\xdc\xc9\xff\x28\xff\x30\xd6\x92\x29\x8f\x49\xf9\x97\xd2\x3f\x0a\x51\x68\xed\x4f\xbd\x96\xba\xf6\x97\xa0\xd3\x76\xfb\x0e\x7e\xa1\x71\xe3\xdb\xf0\xcb\x8a\x39\xb8\x77\x96\x0c\xd6\xbd\xd2\x3a\x2a\xf7\x82\x95\xf8\x1a\xdf\x11\x44\x89\xc5\x18\x2b\x45\xd2\x4c\xad\xa9\xaf\x63\x94\x68\xb9\x72\x99\x1c\x79\xc5\x63\x32\x74\xfd\xfd\x8a\x8c\x38\x4b\x62\x34\x59\x58\xae\x35\x25\x82\xb0\x88\xb4\xb7\x70\x8f\xe5\x63\xd1\xc2\x2a\x61\xb4\xd4\x9f\xfc\xc8\x85\xfe\xfc\x3d\x08\xa4\xa5\x81\xbf\x86\x4c\xba\xe9\x89\xfb\xe2\x2c\x04\x1b\xf2\x8f\xde\x9e\xb0\xfd\x4a\x76\xb5\x3e\x70\x81\xe4\x42\x2a\x92\xae\xb4\x43\xbc\x9f\x85\xb0\x17\xc4\xbe\x0e\xb8\x72\x47\xfd\x0e\x4e\x7d\xf9\xc6\xed\x8f\xf7\x1a\x4b\xb6\x2b\x2b\xe2\xbe\xcf\xd3\xf9\x70\x96\x4f\xf5\xce\x6d\x5f\xe0\xc4\x78\x17\xd3\x2c\xc9\x82\xbb\x1e\xe4\x0b\x99\x1b\x5a\xf7\xca\xad\xf6\x18\x06\xb0\x42\xd1\x2c\xdb\xa1\xfd\xf9\xd3\x9f\x86\x16\x1a\x63\x8e\x53\x73\x2a\x03\x63\x15\x8a\xb8\x30\xb2\x60\x6c\xcf\xbb\xd1\x35\x07\xf7\x83\xbb\xe1\xfd\x09\x1a\xa0\x18\x2b\xac\x0f\xb8\x20\x99\x20\x92\x30\x05\x7a\xbc\xfe\x5e\x2d\x50\xca\x63\x92\x18\x8d\xf3\xa3\x96\x7c\xd1\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x54\x22\x9c\x48\x8e\xb0\x23\x2b\x12\xbb\x26\x30\x8b\x1d\x6b\xc1\x28\xe2\x69\x46\x13\x6f\x83\xf7\xc6\x15\xca\x62\xfa\x44\xe3\x1c\x27\x88\x4f\x34\x57\xd1\x1a\xf2\xf0\x89\x30\x95\xe3\x24\x59\x20\x9c\x24\xc8\x76\xeb\x5e\x40\x72\xce\xf3\x24\xd6\xed\xba\x51\x4a\x9a\xd2\x04\x0b\xad\x82\x9b\xd1\x5e\xdb\xb6\xd0\xfd\x9c\xf8\xb1\xc2\xb8\xf4\x6a\xa6\xf8\x91\x48\x44\x15\xca\xb8\x94\x74\x92\x14\x67\xfe\xe1\x1c\xc1\xb8\x4f\x2f\xce\x41\x9f\x8f\x14\xe2\x86\x87\xba\xce\xad\xfd\xc6\xf5\x98\x62\xc6\x08\x74\xcc\xd5\x9c\x08\xdb\xbd\x7d\xf9\xad\x55\xf3\x87\xab\xbb\x9b\xe1\xe9\xf9\xc7\xf3\xe1\x59\x5d\x37\xbf\x1f\xdc\xfd\x58\xff\xf5\xe7\xeb\xdb\x1f\x3f\x5e\x5c\xff\x5c\x7f\x72\x31\x78\xb8\x3a\xfd\x61\x7c\x73\x31\xb8\xaa\x3f\xb4\x64\xd5\x59\xcd\x0f\x47\xb6\xe6\xd9\xea\x6d\x9a\x2f\x65\xd3\x3c\xf8\x72\x8d\x9a\x53\x9a\x80\x0e\xda\xd9\xa0\xe9\x6d\x08\xf6\x4b\x94\x61\x29\x8d\x64\x64\x46\x70\x34\x62\x97\x5c\x68\x06\x36\xe5\x9a\x47\x68\xe9\x49\x89\x3c\x52\x94\xcd\xfc\x47\x27\x68\x94\x7f\xfb\xed\x9f\xa2\x0b\xca\x1e\xe1\x2f\xb2\x8f\x8b\xd3\x5b\x7c\x7b\x8b\xef\xef\xcb\xe2\xab\x45\x9f\xe3\xd0\xd0\xbb\xdb\x90\x21\x2d\x5c\xb0\x2c\x57\x20\x4a\xf0\x5c\xe9\x3f\x75\x97\x40\x1e\x4b\x02\x87\xba\x19\x14\x3f\x11\xe5\x5f\xd4\xa2\xcd\x7b\xb0\x23\xfe\xcc\xc5\xe3\x34\xe1\xcf\x7e\xe0\x9f\x88\xd2\x63\xbf\xb5\xbd\xf4\xa1\x44\x7d\x28\xd1\xdb\x86\x12\xed\x95\x31\xef\xe5\x99\x5f\xd9\xf2\x67\x38\x60\x8b\x27\xab\xd5\x51\xd5\xe2\x87\x0a\xdc\x4c\xaf\xc2\x35\xcb\xce\x9c\x15\x9c\xb3\xf4\xf2\x7b\xe1\x9e\xa5\x41\xbf\x3e\xe7\xfc\x5d\xf8\x5b\x7a\x77\xca\x86\x0b\xf5\x2e\x19\x6c\xc7\xbb\xe3\xd5\x9c\x21\x2f\xcf\xf0\x6b\xb1\x0d\xeb\x04\x33\xac\x11\xbd\xd0\x39\x5c\x61\x45\x7c\x42\x63\x40\x42\x53\x04\x42\x3d\xe4\xa0\x31\xc6\x60\xbb\xa0\x82\x4d\xef\xa6\xee\x61\x02\x9f\x88\x2a\xbd\xfc\x5e\xee\xa6\xd2\xa0\x5f\xff\x6e\xfa\x9d\x46\x07\xf4\xe1\x00\x2f\xb8\x74\x5f\xfa\x8d\xb6\xbf\x0e\xff\xdf\x81\x87\xbf\x77\xe9\xaf\xb5\x46\x5f\x96\x0f\xff\x4b\x75\xda\xbf\x4f\x2f\x7d\xef\x96\xef\xdd\xf2\x6f\xe1\x3f\x79\x7f\x6e\xf9\x97\x55\x4f\x8b\xe3\x35\x76\xb4\x60\xf5\xb5\xe0\x50\xfe\xb3\x83\x93\x06\xfe\x72\x2a\xdf\xba\x41\xe3\xad\x3a\xdc\x59\x31\xbe\x21\x1c\xa1\x5f\x2d\x21\xad\x50\xe7\x6a\xdf\xbd\x07\x75\xae\x3e\xe8\x97\xd7\xe1\xde\x8c\xf9\xbe\xd0\xe5\xf9\x4e\xd8\xc0\xfa\xb7\xe5\x17\x2c\x93\xf7\xb2\xf8\xcb\x67\xe3\xef\xcd\x84\xde\x8f\xec\xfd\x06\x17\x6f\xc7\x5b\x77\xe7\x39\x59\x0d\xd7\x6c\x70\x3b\xad\xca\xb0\xaa\x7e\x4d\x89\xfc\xee\x5d\xde\xb7\xaf\x91\x64\xd5\x5f\xb8\xfd\x85\x6b\x9b\xea\x2f\xdc\x2f\xf8\xc2\xdd\x3b\xf8\x9b\xbd\x89\x00\xed\x83\xc8\x7b\x60\x8c\x3e\x86\x7c\x87\x8b\xd3\xc7\x90\xf7\x31\xe4\xbf\xb3\x18\xf2\x6d\xb4\xa7\x4d\xb1\x28\xdf\x42\x8f\xea\xd5\xa8\x5e\x8d\x0a\x7f\xef\xd5\xa8\x5e\x8d\xea\xd5\xa8\x2f\x1c\x45\xb4\xd7\xa1\xba\x2f\x44\xaf\x43\x75\x5e\xaa\x5e\x87\x5a\xb2\x38\xbd\x0e\xd5\xeb\x50\xbf\x2f\x1d\x8a\x3c\x11\xa6\x24\x24\xa3\x85\x1a\xc5\x87\x8c\xcb\x76\x4d\x28\xe4\x0e\x0d\x5a\x10\xb4\x59\x4e\x0a\x83\xc0\xa5\x5f\xd1\x1c\x4b\xc4\xa3\x28\x17\x95\x33\x50\xd5\x83\x4e\x05\xc1\x8a\x40\x0b\xfa\xc3\xf7\xa0\xff\xd4\xa7\xfb\x5a\x31\xf8\x13\x1e\xd7\xa8\xdd\x1c\x84\xa6\x27\xcb\xe5\x91\x9d\x4d\xfd\xef\x39\xe9\xa6\xfe\xbd\x20\x51\x2b\x2c\x1f\x77\x4c\xd4\xa5\x5c\x8b\x8d\x88\x1a\x5a\x78\x2f\x44\x5d\x9f\xee\xef\x86\xa8\x9b\xa6\xbe\x0f\x44\xfd\x6c\xf3\xf8\x77\x4c\xd8\x35\x78\x80\x8d\x88\xdb\xb7\xf2\x5e\x08\xbc\x79\xda\xbf\x1b\x22\x6f\x9b\xfe\xdb\x12\xba\x4f\x91\xec\x4c\xe2\xf7\x82\xce\x66\x5a\xcd\x00\x0d\x4f\x93\xe2\xea\x1a\x41\x45\x52\xe0\x4a\xb2\xf6\xaf\xbe\x07\x92\xf6\x83\x35\x63\xff\xdd\xd0\x72\x6d\xde\x7b\x42\xc4\xc7\x82\x44\xfc\x09\xea\x85\x75\x23\xe6\x5b\x02\x14\x0c\xfc\x3a\x13\xe4\x89\xf2\x5c\x26\x8b\x43\x91\x33\xe4\x98\x3f\xf2\xcd\x1b\x6b\xf5\x33\x4d\x12\xc4\x99\xd6\xbf\x14\x16\xca\x3d\xd6\xfa\xb7\xe0\x29\x9c\x8a\x04\x4b\x85\x1e\x19\x7f\x66\x68\x8a\x69\x92\x0b\x82\x32\x4e\x99\x3a\x1a\xb1\x73\x86\x6e\xcd\x18\x21\x6f\xe0\x00\xe5\x52\x9f\xa5\x08\x33\xc6\x15\x8a\xe6\x98\xcd\x08\xc2\x6c\x61\x13\x70\x0b\xca\x40\x5c\xa0\x3c\x8b\xb1\x56\x7c\xe7\xa4\x1a\xa5\xe7\xc7\x08\xe6\x3b\x2a\x11\x95\x88\x7c\x56\x82\xa4\x24\x59\xe8\x3e\x34\xed\x2b\x8e\xec\xfa\x98\xa1\xda\x74\x3e\x22\x04\x17\x12\x32\x0e\x26\x8b\xdf\x30\x53\x94\x11\x04\x8a\x92\x34\xa6\xb9\x43\x74\xc1\x25\x98\x6d\x7e\xfc\x8b\x44\x51\x92\x4b\x45\xc4\x01\x9a\xe4\x33\xa9\x35\xc5\x2c\xc1\x6a\xca\x45\xaa\x47\x48\x99\x54\x78\x42\x13\xaa\x16\x07\x28\xc5\xd1\xdc\xb4\x05\x6b\x20\x0f\x46\x2c\xe6\xcf\x4c\x2a\x41\xb0\xef\xdd\x3d\x44\x5f\x87\xcf\x0c\x01\xc8\x6f\x0e\x20\xed\x90\xa6\x5a\xdd\x0d\x86\x5f\xec\xb8\xd9\x13\xdd\x08\x89\xd1\x84\x44\x38\x97\xd6\xc3\xa0\xc4\x02\x91\xcf\x73\x9c\x4b\xd8\x3b\x3d\x3d\x9b\xb3\x11\xf1\x34\x4b\x88\x22\x88\x4e\x91\x12\x94\xc4\x08\xcf\x30\xd5\x4b\x77\x47\x96\x80\xa0\x7b\xa2\xb7\x1b\x68\xa9\xfe\x57\x50\xbf\x53\x2e\x08\x8a\x89\xc2\x34\x59\xea\x75\xb2\xdf\xf6\x5c\xee\x3d\x71\xb9\xf2\x86\xef\x05\x9b\x33\x20\xfe\x3b\xb8\xb4\x99\x35\xdd\x47\x38\xd9\xf2\xfe\xbe\xb5\x83\xea\x69\xfb\x7d\xd1\xb6\xd9\xb5\xfd\x21\xee\x57\x8b\xc1\xee\x5e\xd1\xa2\xa8\x66\xf1\xae\x68\xfa\x35\xc2\x02\x7a\x87\x73\xef\x70\x6e\x5d\x99\xf7\xe9\x70\xde\x1b\x8f\x51\xef\x73\x7e\x21\x9f\x33\x95\xbd\xd3\xb9\x77\x3a\x77\x5d\xa0\xde\xe9\xdc\x3b\x9d\xdf\xaf\xd3\xf9\x25\x71\x9f\x77\x8a\xee\xfc\xae\x44\xeb\x5e\xac\xee\xc5\xea\x1e\xc2\xd9\x4f\x6d\x57\x2c\xcc\x7d\xfd\x21\x26\x09\x51\xa4\xdd\x9e\x45\x44\xaa\xb5\x05\x73\x3d\x53\xa6\xe5\xb8\x99\x20\x52\x6e\xcb\x90\x7c\xc3\xef\x93\x2d\xf9\xe1\xf7\x50\xf3\x3d\x9f\xea\xf9\xd4\x26\x53\xdb\x1f\xd3\x6c\x70\x98\x5f\xcb\x36\xeb\xf9\x6f\x96\xb7\x4b\x7f\x0f\xc6\x0d\x59\xf8\x45\x0d\x85\x6b\xa9\x5d\x71\x7f\xb8\x2d\x9d\x6f\xc9\x8f\x4d\x5f\xef\x93\x19\x9b\xb1\xf7\x9c\xb8\xe7\xc4\x3d\x27\x7e\xdf\x9c\xd8\x9d\xe4\x37\x75\x91\x19\x3f\xdd\x38\x4b\x30\x1b\xd3\x58\x1e\xff\xa3\xd0\xe5\x5f\xca\x43\xa6\x0f\x54\x6c\x52\x4c\x7d\x4a\xa7\xf8\x55\x7f\x92\x14\x06\x73\x8f\x99\xb9\xc2\x89\x66\x6c\xec\x37\x09\x66\xe7\xf1\xbb\xf0\xa3\x35\xce\xfe\x35\x7c\x6a\xdb\xf0\x71\xac\xc0\xd3\x81\x29\x33\x26\xbc\x22\xaf\xb6\x64\xa0\xdc\x8f\x13\xbe\x0d\x57\x0f\x26\x16\x30\x76\xc7\xaf\x83\x45\xd9\xbf\x69\xf7\x7e\x9d\x3e\x97\xb0\xf7\x5c\x74\x9c\x70\xef\xb9\xd8\x5f\xcf\xc5\x5b\xb9\x23\x5f\xf9\x78\xbe\x96\x58\xd7\x3d\x08\xdf\x44\xab\x41\x50\x6b\x9e\x25\x1c\xc7\xcb\x5c\x31\x85\xe0\x15\x82\xa3\xac\x8c\xc4\x2f\x3e\x7b\x0f\xc2\x5a\x31\xda\xdf\x59\x24\x5f\x7d\xe2\xfb\xa2\xa5\xbc\x62\x28\x5f\x33\x89\xaf\xa1\x92\xbc\x0f\xfc\xd4\x62\xbc\x7d\x68\x5f\x6f\x51\x7a\x7b\x8b\x52\x1f\xda\xd7\xab\x80\x7b\xa6\x02\xf6\xa1\x7d\x7d\x68\x5f\xaf\x20\x2f\x9f\x76\xaf\x20\x7f\x11\xa1\x7d\x9d\x44\xed\x17\xc4\xde\xdc\x5e\xe8\xee\x65\x6e\xf7\x5e\x2f\x73\xf7\x32\xf7\x17\x2a\x73\xef\xc7\x0a\xf7\x02\x77\x2f\x70\xf7\x02\x77\x2f\x70\xf7\x02\xf7\xce\x97\xb1\x17\xb8\x5f\xb3\x40\x67\xb3\xd4\xbd\x22\xc9\xe6\xbd\xfa\x72\x7a\x71\xbb\x17\xb7\xf7\x5b\xdc\xde\x9b\x09\xbd\x9f\x32\x8f\xdd\xe6\xd3\x17\x29\xef\x8b\x94\xf7\x45\xca\x5f\xbc\x48\xb9\xfb\xba\x43\xc6\x87\x3d\x5c\x0a\xab\x5c\x1a\xc0\x47\x41\x66\x54\x2a\x60\xff\x5d\xe4\x95\xd5\x89\x1e\xef\x55\x4e\xe9\x53\x3d\xfc\xd3\x5e\x6a\xe9\xa5\x96\xdf\xa9\xd4\xb2\x47\xb1\x60\x7b\x91\xb1\x92\x62\x15\xcd\xf1\x24\x21\x63\x6f\xf4\x91\x5d\xf5\xe0\x0b\x2a\x95\x44\x51\x2e\x15\x4f\xdb\x2f\x97\x4b\xd7\xc3\xc0\x77\x70\xca\xd9\x94\xce\x72\x73\xb7\x18\x70\xce\xe0\x44\x17\x92\xe0\x22\x23\xab\x3c\x55\x0d\xad\xbf\x8b\x6b\xa9\x79\xe8\xaf\x75\x3b\xad\x23\xb8\x17\x46\x3e\x2b\x75\x6b\x59\x6b\x7c\x3b\xbc\xbb\x7e\xb8\x3d\x1d\x9e\xa0\x41\x96\x25\xd4\xd8\xdd\x0d\x29\xd0\xdf\xf4\xa4\x90\xc2\xf2\xb1\xd8\x4b\x61\xc8\xdc\x60\xd8\x82\xa1\x5f\xcb\xc6\xe8\x10\x9d\x5e\x3c\xdc\xdd\x0f\x6f\x5b\x1a\xb4\x84\x02\x79\xab\x24\xcd\x12\xac\x48\x8c\x1e\xf3\x09\x11\x8c\x68\x69\xc7\x22\xdd\x16\xe6\x7f\xd3\xe8\xf0\xbf\x86\xa7\x0f\xf7\xe7\xd7\x57\xe3\xbf\x3e\x0c\x1f\x86\x27\xc8\x51\x9c\x6e\x56\x8f\x4b\x8f\x22\x5e\x30\x9c\x6a\x0d\x44\xff\x50\x64\xca\xfe\x3d\x27\x39\x41\x58\x4a\x3a\x63\x29\x01\x44\xe0\x52\x8b\x6e\xc0\x17\x83\xef\x87\x17\xe5\x96\xe7\x24\x84\xdf\x45\x09\x9e\x90\xc4\xfa\x23\xc0\xc4\xae\x09\x3d\x80\x2a\x36\x8e\x8a\xdc\xac\xea\x5f\x1f\x06\x17\xe7\xf7\xbf\x8c\xaf\x3f\x8e\xef\x86\xb7\x3f\x9d\x9f\x0e\xc7\x56\xaa\x3c\x1d\xe8\x7e\x4b\x3d\x59\xe1\x13\xfd\x3d\xc7\x89\xd6\x4e\xf8\xd4\xe1\xf1\xa2\xe7\x39\x61\x28\x67\x40\x71\x46\xe5\xd1\x7a\x90\xef\x54\x9f\x32\x33\xa3\x9b\x8b\x87\x4f\xe7\x57\xe3\xeb\x9f\x86\xb7\xb7\xe7\x67\xc3\x13\x74\x47\x12\x50\x0a\xdc\xa2\xc3\x2e\x66\x49\x3e\xa3\x0c\xd1\x34\x4b\x88\x5e\x0d\x6c\xb3\x89\xe7\xf8\x89\x72\x61\x8f\xee\x8c\x3e\x11\x66\xd6\x11\xce\x2c\xb4\xef\x84\xef\x71\xb0\x74\xd7\x57\x1f\xcf\x3f\x9d\xa0\x41\x1c\xfb\x39\x48\x68\xa3\x44\x39\x0e\xd6\xf9\xb0\x3c\x6c\xcd\x1c\xa0\x7b\x43\x44\xfc\x89\x08\x41\x63\x52\xa1\xa3\xc1\xdd\xdd\xf9\xa7\xab\xcb\xe1\xd5\x3d\xac\x98\x12\x3c\x91\x68\xce\x9f\xc1\x94\x0d\x33\x04\x0b\xf7\x13\xa6\x09\x74\xe6\x36\x8b\x33\xf4\x3c\xa7\xe0\xfe\x00\x60\x66\xdf\xb3\xd1\xcf\x44\xce\xde\xdc\x3a\x5b\x3a\x78\x75\xb5\xa5\x7a\x92\xea\x6f\x54\x8e\xc5\xb2\x17\x4a\x54\x5e\x7f\x71\x15\xb5\xd6\xbf\xa8\x90\x5b\xbb\xb2\x56\xa3\x97\xf6\x99\x16\x7b\xdd\x59\x57\x2b\xaf\xe1\xeb\x5d\xb3\x44\x09\x1a\xc9\x97\x85\x7a\x12\x39\x53\x34\x25\xc8\x76\x66\x0f\xe7\x0e\xe1\x9f\x2e\x4d\xc3\xef\xe1\x82\xad\x95\x72\xf8\x44\x94\x1d\x7e\xaf\x02\xf6\x2a\xe0\x7e\xa8\x80\xef\x2d\xdb\x3f\x26\x59\xbd\xc3\xca\xc4\xe0\x1d\xe3\xf5\xaa\x05\x69\x18\x7b\xa2\xb5\xa8\x26\xe4\x89\x24\x20\xe5\x29\x81\xb5\xd2\x68\x65\x97\x89\x20\xf8\x51\x0b\x7c\x31\x7f\x0e\x25\x97\x06\xe4\x7e\xb4\x9b\x5b\xb8\x4b\x10\xc7\x9f\xbe\x7b\xbd\xcb\x42\x2f\x77\xfc\x1a\x25\xbc\x6f\x21\x48\x66\x29\x46\x60\x90\x60\xff\xab\xb5\x04\xaf\xb8\x2d\x82\x2f\xde\xc3\x45\x11\x0e\x77\x8f\xb4\xae\xdb\x50\x09\x76\x2c\x34\x25\x0a\xc7\x58\x61\x7d\x68\x66\x44\x1d\xa1\x6b\x06\xcf\xee\xb1\x7c\x3c\x40\xee\xca\xd3\x6c\xa5\xb0\x32\xbc\x42\x6a\xfd\x3b\x31\xe0\xaf\xcf\xc7\xfb\xeb\xbb\xbf\xbe\x9b\x57\xa6\x0f\xf3\x6c\x59\xe1\x5d\x5d\x8c\x6b\xf9\xbc\x76\x77\x7f\x99\x16\xdf\xef\x15\xf6\xba\x4e\xae\x9d\x5e\x68\xa6\x72\x56\x7f\x5b\x99\xff\xeb\x6f\xab\xfe\xb6\xea\x6f\xab\x3d\x58\xe1\x37\x77\x18\x36\x70\xf7\x37\xf5\x18\xae\xd2\x4e\x37\x86\xbc\x2b\xb4\xd1\x75\x40\xef\x7e\xed\x8a\x6d\x57\x7c\x43\xdf\x87\x8f\x30\x98\xe4\x6b\xa4\xb5\xed\xf4\x32\x37\xf9\x22\xbd\x7e\xfa\x82\x37\x7e\x8f\x40\xb8\x53\x04\xc2\xfd\x98\xeb\x8b\xa4\xc0\xbd\x8d\xc5\xf4\xed\xd3\xde\x7a\xa8\xc1\x3e\xb1\xab\x4f\xec\x82\xdf\x7b\xa8\xc1\xdd\x51\xeb\xcb\x4a\xd7\x3c\x26\xe3\x4a\x94\x80\xff\xe7\xb8\xea\xf9\x29\x3d\x09\xdd\x40\xa5\x07\x45\xa6\x1b\xb4\x4e\xe3\x5d\x16\x91\xba\xe2\x31\xe9\x1c\x49\x50\x7a\x79\xcf\x65\x70\x37\x4f\x23\x8b\x97\x06\xfe\xc2\x92\x78\xcb\x96\x7f\x89\x86\x9d\x06\x02\xee\xad\x3c\x2b\x17\xea\x4b\x8d\x2f\x28\x38\xd4\x3b\xf2\x54\x74\x63\xe3\x2e\xa6\x71\xdc\xc2\xcc\x9b\x9f\x7b\x96\xde\xfc\xf8\x65\x30\x83\xba\x73\x74\x30\xab\x84\x6f\xbf\x0f\xbb\x4a\x38\xe2\xd7\xb0\xac\x2c\xdd\xfb\x2f\x8e\xab\x2f\xa3\xe4\x9e\xb7\x77\x5c\xae\x2f\x95\xc3\xf7\x10\x3f\xcb\x6c\x1d\x3d\x86\x4e\x6f\x6a\xd9\x9f\x09\xf7\xa6\x96\x77\x6d\x6a\x31\x2e\xda\x71\x86\x05\x61\xaa\x41\xa4\xae\x5e\x27\xf0\x7a\x88\xb9\xe0\xa4\x0e\x68\x00\x69\x89\x16\xd9\x0b\xd9\x5f\x55\x5f\x96\xed\xc5\x0a\x06\x41\x26\xe4\xf1\x3f\x8a\xbf\xbd\xb0\x5e\xaa\x00\xb1\x24\x3a\xc9\x60\xfd\x4b\x7d\x47\xe7\x36\x50\x69\xfb\x5c\x49\xac\x4a\xa2\x20\x04\x51\xaf\x8c\x67\xba\x31\x6f\xbf\xaf\x14\xc9\xda\xa0\x5f\x37\xb6\xa9\xbe\xf1\xdd\x0e\x90\xdb\x19\x6a\xd2\xfd\x82\x9c\x32\x2d\x8d\xf2\x69\x71\x31\x48\xf4\x4c\x93\x04\x10\x45\x20\xe3\xb1\xed\x06\xf8\xdd\x45\x3c\xb4\xee\xfc\x9b\xc6\x3d\x34\x71\x87\x26\x96\xd0\xc5\x9e\xba\xab\x9c\x69\x47\x6c\x90\xce\x0a\xda\xd0\x0a\x03\xec\x97\xc1\x09\x3e\x11\xf5\x5a\x6c\x60\xd3\xb3\xbf\xf4\xdc\x0b\x32\x25\x82\xb0\x88\xec\xa1\xb7\x7d\x9d\x30\x90\x9f\xcd\x24\x6d\x0c\x88\x87\x12\x08\xa7\xaa\xb8\xd5\xd3\x4a\xa2\x6e\x9f\x49\xde\x67\x92\xf7\x99\xe4\xd5\xa3\xde\x67\x92\xf7\x99\xe4\x8d\x39\x10\x31\x49\x88\x22\xad\x52\xc5\x19\x3c\x7e\x2b\xa9\xc2\xf4\xfe\x65\x08\x16\x66\x2e\xbd\x6c\xf1\xbb\xd1\x2c\xdc\x86\xef\x85\x66\x61\xce\xda\x2a\xf3\x43\xe9\xc7\x86\x10\xeb\x57\x37\x49\x6c\xc2\x34\x4a\x76\x89\x33\x78\xfd\x5d\xb2\x8e\xea\xd0\x7b\x1b\x05\x0a\xb6\xee\xe5\x38\x49\xed\x08\x74\x9b\xb8\xf5\x18\xbe\xdf\x79\xef\x0b\x07\x6d\xa3\xfb\x7d\xe5\xa3\x1b\x27\xa5\xec\x8b\xc5\xe6\x0b\xe2\x91\xbd\xf5\xe6\x8d\x73\x25\x6a\xcc\xf0\xdd\x4e\xb7\x37\x56\xf5\xc6\xaa\xde\x58\xd5\x1b\xab\x7a\x63\x15\xea\x8d\x55\x6b\x1b\xab\xbe\x20\x99\xaa\x37\x5c\xf5\x62\xd5\xee\xa6\xbb\xaf\x5a\xe6\x3e\x59\xeb\x3a\xa3\xa4\x17\x39\x54\x2b\x23\xef\xed\xb4\x7f\x5d\x11\x72\x7f\xe3\x46\xf0\x7e\xf8\x95\x7c\x69\x96\xb4\x4d\x60\xb1\xdb\xd1\x2f\x36\xae\xb8\x2f\x1d\xda\xb8\x56\x7d\xd8\xf3\x92\xc5\xe9\xc3\x9e\xfb\xb0\xe7\xbd\x0b\x7b\xde\xb9\xb2\x92\x71\xb9\x0c\x90\xc8\x94\xce\x5a\x9a\xff\xec\xee\x6c\x48\x34\x02\x52\x30\x28\xc7\x31\xc9\x12\xbe\x00\x4b\xca\x92\xeb\xdc\x75\x71\x53\x93\xa8\xf7\xfd\x46\x77\x23\x7f\x2d\x9d\x63\x5f\x64\xd2\x62\xde\x7b\x21\x85\x1e\xff\xa3\x92\xce\xdf\x09\x2f\x93\x21\xf2\x99\x4a\xb8\x95\x56\x13\xf6\x88\x35\x3f\x09\x4a\x17\xda\x7b\x70\x92\xab\x20\x77\x4f\x6a\xc1\x2a\x23\x42\x2d\x82\x37\x49\x9a\xa9\xc5\x7f\x8e\x18\x55\xde\xc3\x46\x67\x8c\x0b\xc3\xd5\xf4\xc7\x73\xcc\xe2\x84\x08\x7d\xa9\xba\x76\x22\xcc\x18\x57\x20\x6e\xc0\x0c\x62\xf4\x44\xb1\x11\x4e\x06\x37\xe7\x9d\xfd\xcc\xef\xe8\x74\xbd\x76\xb1\xba\x15\x77\xdd\xa7\x84\x4f\xa0\x82\x65\x5e\xd6\xe9\x75\x03\xbd\x67\xb4\xb4\x73\x6f\xc5\x10\x14\x96\x8f\x55\xe0\x90\x72\x16\xfa\x78\x29\x94\xc8\x8a\x77\x4b\x18\xf3\xcb\x5f\xad\xc0\x8d\x94\x9f\x59\x00\x12\x78\x0c\x43\xae\x8e\xc3\xfd\x18\x76\xe8\x7e\x2b\x5a\x76\xbf\xb8\xd2\xdd\xf0\xa3\x20\x4a\x2c\xc6\x58\x29\xcd\x64\x76\x89\x71\x72\x8f\xe5\x63\x67\x8c\x93\xd2\xcb\x7b\xce\x72\x4a\x18\x27\xe5\x81\xbf\x38\xcb\xe9\x48\x9d\x2b\x38\xd3\xfb\xcb\x8f\xef\x7a\xd6\xd6\x98\xf8\xef\x25\x57\xbe\x1b\xef\x59\x65\xa6\x7d\x8f\x79\xf3\xcb\x98\xe9\xde\x8c\xb0\xc2\xcf\xbf\xc4\x93\x5b\xbe\x9d\xfa\x23\xba\x6c\x8d\xbe\xb8\x42\xb8\x15\xa1\x63\xc5\xdc\xde\x49\x41\xdc\xaa\xdc\xb4\xeb\x51\xbd\x8c\x99\x3b\xd8\x8d\x75\x62\x80\xce\xcb\x68\xe5\xfe\x0c\xb9\xa8\xa0\xa2\xf4\xec\x1c\x12\xad\xa9\x0c\x13\xe2\x23\x2e\x8c\xe4\x15\xdb\x33\x6b\xcc\x76\x06\xcc\xf7\x04\x0d\x50\x6c\x6b\xf3\x0b\x92\x09\x22\x09\x53\x46\xd5\x36\xf5\xae\x5c\x79\x7f\xca\xac\x85\xe8\x0c\x2b\x7c\x8a\x15\x4e\xf8\xec\x08\x0d\x7c\x61\x7f\x2a\x11\x4e\x24\x47\xd8\x11\x0e\x89\x5d\x13\x98\xc5\x8e\x3d\x60\x14\xf1\x34\xa3\x89\x47\x6a\xf7\x56\x7c\xca\x62\xfa\x44\xe3\x1c\x27\x1e\x19\x7b\xc4\x86\x4f\x84\xa9\x1c\x54\x38\x9c\x24\xc8\x76\xeb\x5e\x08\xf4\x73\x37\x4a\x49\x53\x9a\x60\x81\x14\xb7\xa3\xbd\xb6\x6d\xa1\xfb\x39\xf1\x63\x75\x28\xe0\x28\xc5\x8f\x44\x22\xaa\x50\xc6\xa5\xa4\x93\xa4\x38\xc6\x0f\xe7\x08\xc6\x7d\x7a\x71\x0e\xa6\xd1\x48\x21\x6e\xf8\xa0\xeb\xdc\xfa\x09\x5c\x8f\x29\x66\x8c\x40\xc7\x5c\xcd\x89\xb0\xdd\xdb\x97\xdf\xda\xca\xf9\xd6\x18\xd1\xed\x16\xd3\x70\x64\x6f\xa7\x74\x76\xd6\x38\xbb\xaa\x9b\xdd\x74\xcd\x76\x45\xf3\x05\xbc\xb4\xdd\xb5\xc1\x0b\x2a\xcb\xea\xe0\xbb\x70\xd9\x96\x46\xfc\x1a\xf8\x68\xbf\x53\x45\xb0\xd7\x02\x5f\x64\xdd\xbe\x54\x15\x70\xcf\xf5\xbf\x1e\xd9\xad\x47\xb1\xef\x03\x30\x76\xb8\x38\x7d\x00\x46\x1f\x80\xf1\xc5\x06\x60\xb4\x6b\x13\x34\xde\x3a\x5d\x6f\xcd\x0a\x52\xde\x28\x20\x7e\x05\x51\x0a\xcb\xc7\xae\x35\xa5\xb4\xa8\x7c\x1e\xbf\x0b\xa9\xbe\x71\xc2\xaf\x21\xdd\xf7\x75\x8a\x76\x5a\xa7\x68\xef\xa6\xdd\x0b\x7e\xbd\xe0\xd7\xcb\x36\x1d\x27\xdc\xcb\x36\xfb\x2b\xdb\xbc\x95\xc2\xf2\x25\x41\xe8\x6a\xe1\xa9\x94\x19\xb3\x34\xc0\xd6\xc0\xd1\x80\x7b\x20\xcf\x12\x8e\xe3\x55\x41\x38\xbf\xa2\x42\xae\x59\x22\x9a\x99\x76\xf5\x07\xef\x41\x32\xd3\xe3\x34\x23\xfe\xdd\xc4\xd2\x86\x53\x7e\xd3\x30\x5a\xa0\x57\x08\x1e\x2b\x05\xa1\xbd\x94\xd6\x51\xa5\xe1\x4e\x0a\x86\xfc\xee\xbd\x50\xf1\x6b\xa8\x13\x5f\xb0\x43\xa0\x37\xfa\xff\x3e\x0b\x9d\xef\x8d\x94\xda\xab\x72\x7d\x16\x65\x6f\xc4\xef\x15\xdd\x5e\xd1\xdd\xf9\x32\xee\x93\xa2\xfb\x86\x12\xb5\x49\x0b\x79\x91\xb2\x85\x9b\xc9\xd6\xbd\x68\xdd\x8b\xd6\xbd\x68\xfd\xc5\x8a\xd6\xfb\xb1\xc2\xbd\x5c\xdd\xcb\xd5\xbd\x5c\xdd\xcb\xd5\xbd\x5c\xbd\xf3\x65\xec\xe5\xea\x8a\x5c\x0d\x7f\xb9\xb4\xe8\x75\x85\xec\xce\xc2\x75\x87\x1c\xe8\xf7\x22\x59\xf7\x52\x75\x2f\x55\xef\xb7\x54\xbd\x37\x13\xfa\xf2\x12\x1f\xfb\xd4\xc1\x3e\x75\xb0\x4f\x1d\x7c\x8b\xd4\x41\xc7\x4b\x96\x49\x28\x75\xc1\xe2\xa7\x1a\x07\xda\x5b\xd9\xa2\x18\xed\xa6\x61\x1d\xbb\x5a\x6a\x07\x2c\xbf\x49\x65\xa9\xd2\x6f\xae\xa1\x3d\xaa\x37\x75\xe0\xa4\x05\xcd\x28\xdc\xf8\x56\x23\x82\xfd\x6c\xdf\x7c\x5f\xe0\xdf\xf5\x51\xf7\xf5\xa6\x50\xb0\x6b\x7d\xbd\xa9\x17\x9c\xb7\x3b\x5c\x2b\x66\xee\x68\xd4\xd8\x78\xdf\xe9\xb4\xdf\x3c\x40\xae\xfd\xa4\xbf\x69\xb8\x5c\xe3\x4d\x52\x4b\xd6\x39\xfe\x47\xe3\x45\xf1\x06\x65\xb6\xd6\xbe\x1d\x3e\x11\xf5\xa5\x5c\x0d\x7d\x99\xad\xbe\x1e\xc4\x8e\xa6\xbb\x11\xeb\x7f\xb7\xb3\xed\x8b\x8a\xf5\x45\xc5\xfa\xa2\x62\x7d\x51\xb1\xbe\xa8\x18\xfa\x9d\x17\x15\x5b\x5b\x7c\x34\xe3\xf8\x52\x24\xc8\xbe\xa8\x58\x2f\x44\xee\x6e\xba\xbf\x2f\x21\x72\x0f\x2d\x08\x7b\x51\x3d\xcd\x5b\x10\xde\x1c\xe7\xc3\x8d\xa4\x2b\xd6\x87\x5b\xd0\x1e\xef\xc3\xfe\x5f\x8f\xf7\xd1\xe3\x7d\xb4\xcc\xba\x0f\x66\xed\xf1\x3e\x50\x1f\xae\xd9\x87\x6b\xee\x73\xb8\x66\x87\x6d\xec\xf1\x3e\x3a\x8a\x73\x2f\x84\xf9\xe1\x64\xae\xb5\x70\x3f\x7e\xae\x2b\x1a\x7b\x2b\xa5\xb9\xb1\xfe\xce\xf0\x3f\xaa\xd3\xde\x0b\x95\xe4\x15\x71\x40\x9a\xe8\xba\xb3\x02\xf2\x3e\xf0\x40\xdc\x68\xfb\xc4\xc5\x3e\xc4\x7a\xff\x43\xac\xf7\x2e\x71\x71\x6f\x24\xd9\x5e\xdd\xeb\x73\x17\xfb\xdc\xc5\x5e\x19\xee\x95\xe1\x9d\x2f\xe3\x3e\x29\xc3\x6f\x2c\x61\xbf\x20\x2e\xc8\x76\xb2\x76\x2f\x6a\x9b\xf7\x7a\x51\xbb\x17\xb5\xbf\x50\x51\x7b\x3f\x56\xb8\x97\xb3\x7b\x39\xbb\x97\xb3\x7b\x39\xbb\x97\xb3\x77\xbe\x8c\xbd\x9c\xfd\x6a\x38\x21\x4d\xc2\x76\xc7\x7c\x9b\xf7\x24\x69\xf7\x52\x76\x2f\x65\xef\xb7\x94\xbd\x37\x13\xea\x31\x43\x7a\xcc\x90\x1e\x33\xa4\xc7\x0c\xd9\x48\xbe\xf9\x17\x7b\x2c\x3f\x04\x37\xb1\xbf\xb2\x3f\x7c\x9f\xf0\xc9\xfd\x22\x23\xfa\xbf\x67\x34\x25\x4c\x82\x34\x4a\xd5\x22\x94\x67\x5a\x56\xbe\xbe\xe6\x1f\xee\xce\xaf\x3e\x5d\x84\xd9\x34\x1f\x2e\x1f\x2e\xee\xcf\x6f\x06\xb7\x7e\x5d\xfc\xac\xc2\xb5\xb0\xdf\x95\x44\x32\x4b\xf2\xb7\x44\xeb\x9e\x70\x6a\xee\x14\x56\xb9\xdc\x6c\x64\xb7\xc3\xbb\xe1\xed\x4f\x90\x0d\x34\x3e\x3b\xbf\x1b\x7c\x7f\x51\x22\x88\xd2\xf3\xc1\xe9\x5f\x1f\xce\x6f\xdb\x9f\x0f\xff\xeb\xfc\xee\xfe\xae\xed\xe9\xed\xf0\x62\x38\xb8\x6b\xff\xfa\xe3\xe0\xfc\xe2\xe1\x76\xb8\x74\x3d\x96\x8e\x76\xb9\x12\x22\x61\x91\x20\xce\x1f\x45\x96\x6b\x88\x62\x0d\x91\x17\x1f\x1d\x3b\x6c\xea\xeb\x04\x3d\x58\x9d\x9e\xda\xc6\x0d\x83\x0d\x1a\x32\xca\x48\x4c\x25\x9e\x24\x24\xae\xb5\xe4\xd6\xb0\xad\x25\x5c\x1a\xd4\xb3\xd6\x9e\xbd\xc8\xa9\x79\x5e\x64\x78\x01\x82\x1c\x45\x45\x58\xdc\xd0\x87\xd9\x87\xd6\x1e\x98\xe6\x5d\xf4\x89\x94\x7a\x8a\x72\x21\x08\x53\xc9\x02\x91\xcf\x54\x2a\x59\x6b\xd4\x6d\x5f\x5b\xb3\xf6\x4e\xf5\x0d\xce\xb1\x44\x13\x42\x58\x79\xfc\x82\x24\x04\xcb\x86\x31\xdb\xdd\xef\xb6\x2c\x7e\xaf\xac\x35\xc6\x5c\x46\x53\x4c\x93\x5c\x90\xca\x69\xe1\x69\x86\x05\x95\x9c\x0d\x3f\xeb\xbb\x4c\x1f\xe4\x6b\xf8\x9c\x8b\xcd\x4e\xcc\xf0\xaf\x21\x05\x5f\x95\xff\xf9\xe9\xbe\xfc\xaf\xd2\x99\xbf\xb8\x2f\xff\x6b\x39\xad\x07\x0d\x57\x29\xfb\x10\x7d\xba\x3f\x41\x9f\x20\xc4\x49\xa0\xfb\x39\x36\x14\x7b\x71\x7f\x82\x2e\x88\x94\xf0\x4b\xf1\xb1\xa2\x2a\x81\xb9\x7d\x4f\x19\x16\x0b\xe4\xa6\x6f\x12\x5d\x71\x34\x47\xc4\x2f\x4d\x75\xf1\xd8\xdf\x72\x06\xaa\x7b\xb1\x7a\x17\x7c\x46\x23\x9c\x6c\xb7\x88\x83\xab\x12\x1f\xb8\xbe\x5d\xba\x14\xe1\xdb\xf5\xb5\x18\x5c\x9d\x41\x12\xa9\x1b\x6a\xc3\xcc\xaf\x88\xd4\x44\x12\x71\x16\x5b\x2f\x8d\xbe\xfd\x17\x81\x50\xff\x37\x0e\x89\xb8\xb9\xa4\x6c\xa6\x5b\x44\xc7\xe8\xfa\x76\xc4\xae\x45\x6c\x0c\xa1\x44\x4b\xc3\x86\xe6\xa8\x44\x8c\x2b\x44\xd3\x8c\x0b\x85\x99\xd2\x8a\x00\x88\x01\x76\x45\x0c\x07\x38\xe5\x69\x9a\x2b\xac\x0f\x5a\x6d\x51\x99\x31\x87\xdc\x11\x75\x1e\x83\x6b\xa5\x61\x0d\x8d\x9c\x50\xcc\x25\x13\xba\x7d\x2d\xa3\x94\x75\x68\x1a\xd7\x54\x59\xd7\x04\x16\x02\x97\xa5\x89\x0f\x54\x91\xb4\xfa\x7e\xc7\x20\xcf\x7f\x36\x1a\x08\x4e\x4d\x52\x05\x11\x03\x11\xcd\xa9\x22\x91\xd2\x47\x70\x23\x9a\x78\xb8\xfa\xf1\xea\xfa\xe7\x50\x82\xf8\x30\xb8\x3c\xfb\xf3\xbf\x97\x7e\xb8\xbd\xac\xfd\x30\xfe\xe9\xcf\xb5\x5f\xfe\x7f\x4b\xe9\xa9\xda\x53\x4d\xcf\x0f\xe6\x72\x08\x22\x35\xd8\x84\xdd\x54\x11\x4d\xf1\x8c\x20\x99\x67\x9a\x02\xe4\x51\x79\x7f\xb5\x48\x79\xc1\x71\x4c\xd9\xcc\x64\x80\x5e\x50\x45\x04\x4e\x2e\x71\xf6\xd1\xd9\xaf\x37\x58\x9d\xff\x7b\x57\xca\xd7\xfd\xf0\xcb\xe0\x32\xcc\xf8\xfd\x70\x73\x7b\x7d\x7f\xbd\x74\xd6\xa5\x16\xea\xc7\x48\x3f\x3e\x81\xff\x45\xc7\x48\xb7\xee\x25\xdf\x94\x28\xac\x35\x02\xf4\xb5\x49\x9a\xf3\x89\x34\x94\x25\x70\x6a\x32\x41\x53\x0a\x57\x8a\xb1\xe0\x7d\x63\x84\x6b\xaf\x3d\xf8\x73\x63\x3e\x00\x6d\xd9\x5d\xca\x2c\xc6\x22\x46\x7f\x93\xd5\xf4\x71\x30\x1c\x9b\x1f\x48\x8c\x0e\xd1\x5c\xa9\x4c\x9e\x1c\x1f\x3f\x3f\x3f\x1f\xe9\xb7\x8f\xb8\x98\x1d\xeb\x3f\x0e\x09\x3b\x9a\xab\x34\x31\xe9\xf2\x7a\x15\x4e\xd0\x8d\xe0\xfa\x0a\x01\x05\x9d\x08\x8a\x13\xfa\x1b\x89\xd1\xc4\xf0\x3f\x3e\x45\xbf\x46\x5c\x90\xa3\x62\x63\xac\x51\xc9\xde\x23\xd6\xf0\x74\xac\x5f\x6a\x60\x26\xd5\xfd\x44\x31\x89\x68\x6c\xc5\x0c\xc2\x22\x0e\x96\x47\xe3\xab\xd0\xed\xb9\x4c\x43\xad\xd1\x64\xb9\x2a\x96\x33\x50\x56\x70\x4c\x82\x6c\x77\xc5\xcb\x04\xa7\x15\x9f\x73\xa3\xb6\xe6\x5a\x45\xd7\x77\x2b\x86\x5b\xd5\xbd\x9a\xe9\x09\x47\x3c\x41\x93\x7c\x3a\x25\x22\x74\x48\x1f\x68\x6d\x86\x4a\x24\x48\xc4\xd3\x14\x24\x06\xfd\x55\x2e\x0d\x55\xc3\x8a\xd9\xd1\x1e\x8d\x18\xec\xbf\x56\x73\x80\x02\x62\x0e\xac\x8e\x11\x12\x23\xcc\x16\xa6\x9b\x49\x3e\x0d\xdb\x37\x30\x14\x38\x46\x54\x8d\xd8\x20\x49\x90\x20\x29\x57\x24\xc8\xa1\x04\xe7\x59\x79\xc1\x81\x45\x0a\x92\x25\x38\x22\xb1\xa1\x87\x84\x47\x38\x41\x53\x9a\x10\xb9\x90\x8a\xa4\x61\x03\x5f\x83\xad\x46\xaf\x19\x95\x28\xe6\xcf\x2c\xe1\xd8\xce\xa3\xfa\xd9\x37\xe5\xd3\x38\x74\x10\x01\x43\x21\xb8\x80\xff\xf9\x91\xb2\x78\x67\x1c\xea\xe1\x6e\x78\x1b\xfe\xfb\xee\x97\xbb\xfb\xe1\xe5\x7a\xdc\xc7\x53\x16\x0c\x0f\x74\xf8\x13\x74\x67\x16\x81\x0b\x2d\x11\x89\x96\x49\x5d\x5a\x52\x2a\x7e\xe0\xf1\x86\xdc\xf7\x72\x70\xf5\x30\x28\x71\x94\xbb\xd3\x1f\x86\x67\x0f\x15\x7d\xc0\xce\xaf\x24\xc3\x1b\xf5\x2f\xfc\xed\xf4\x87\xf3\x8b\xb3\x71\x83\xc2\xf8\xe1\x76\x78\x7a\xfd\xd3\xf0\xb6\xd0\xed\x1a\x97\xa8\x32\x98\x2a\xb3\xba\x37\x4c\x69\xce\x63\x34\x59\x34\x03\x42\x68\xc9\x39\x01\x5f\x6c\x01\x89\x62\x5a\x3d\x01\xde\xe4\xb0\x39\x8a\x2f\x52\x1e\x93\x03\xfb\x0e\x20\x69\x18\xe3\x8a\x91\x98\x9b\x1b\xd6\xbd\x63\x16\x18\x2a\x0c\xc8\x85\x5f\xb8\x13\x34\x40\x52\xbf\x98\xeb\x43\x2d\xe8\x6c\x06\x86\xc3\xca\x50\x4d\x6b\xf6\x53\x58\x5e\xf8\xce\xec\x7f\x26\x38\x9c\x73\xdd\xad\xb5\x38\x7b\xab\x84\xf9\x10\x50\x57\xca\x2d\x0a\x0c\x06\x87\x86\xa1\xb9\xcd\xd2\x8b\xd0\xba\x5e\xe6\x3c\x1a\x7b\x91\x3e\x5c\xc0\xb6\xa4\xb1\x77\x66\x82\x3c\x51\x9e\x07\x9f\x5a\x60\x8f\xd2\x8e\x37\x36\x5f\x2c\x00\x2c\x9b\x31\x8a\x54\x9a\xf1\xe4\xd1\xd8\x82\x66\x61\x4f\xd0\xc2\x54\xf0\xb4\xa1\x8d\xf2\x31\x39\xbf\xbe\x53\x02\x2b\x32\x5b\x9c\x59\x96\xb1\xf9\xf1\x38\xbb\xfe\xf9\xea\xe2\x7a\x70\x36\x1e\x0e\x3e\x95\x4f\xbc\x7f\x72\x77\x7f\x3b\x1c\x5c\x96\x1f\x8d\xaf\xae\xef\xc7\xee\x8d\xa5\x24\xdf\xd2\x41\xfd\x9e\x2e\xbf\x78\x82\x34\xcb\x05\xd6\xe8\x00\xef\x02\xfe\x38\x21\x53\x2e\x0c\x9f\x4f\x5d\xe8\x82\x15\x61\xdc\xda\x5a\x5d\xac\x32\x8b\x13\xb0\x8c\x35\x35\x69\xac\xde\x4a\x10\x9c\xc2\x3d\x81\x19\x1a\xb2\xf8\xf0\x7a\x7a\x78\x67\x7e\x4c\xb1\x78\x24\xc2\x7f\xfa\x2c\xa8\x52\x84\x95\x54\x3a\xec\x86\xec\x95\xc4\xa2\x83\x23\x74\xab\xf9\xbe\x7e\xdf\x5f\x6a\x9a\xd8\x63\xa2\x30\x4d\xa4\x1d\x6c\x69\x5d\x4f\xd0\x05\x16\xb3\xc2\x0e\xf7\x35\x9f\x4e\x4d\x63\xdf\x98\x61\xe8\x3b\xac\x34\x8b\x06\xde\xab\x49\xc3\xdd\x8b\xd0\x9f\x7d\xd9\xcb\xc3\x75\xaa\x7a\xc8\xb6\xa3\xa9\x87\x1b\x58\x71\xa3\xb1\x97\x74\x43\xfb\xa4\x81\xd6\x60\xe2\xe6\xf1\xf2\x4b\xa6\xb9\xed\x3a\x39\x95\x5f\x6c\x20\x27\x93\x4b\xa5\x77\x7e\xaa\xb5\xcd\x06\x5a\x22\x9f\xa9\x35\x18\x84\xe3\xae\x90\x50\xd1\x0c\x98\x57\x71\x96\x11\x2c\x64\xd3\x6e\x97\xc5\xc0\x96\xbd\x37\x3d\x85\x7d\xd8\x4d\x76\xfd\x1c\x20\xce\xc0\xe0\xe0\x85\x88\x0a\x45\x76\xa0\x01\xd3\x56\x8d\x02\x6e\x00\x6d\xe9\xda\x22\x1b\x5d\x52\xa9\x95\x46\xf3\xe3\xf7\x16\x72\x69\x33\x82\xf8\x38\x38\xbf\xa8\x08\x17\xe3\xb3\xe1\xc7\xc1\xc3\xc5\x72\x33\x61\xe9\xbb\xea\x16\xa3\x43\xa4\x9f\x97\xfd\xe6\x74\x6a\xee\x0c\x07\x1c\x65\x54\x5a\xc2\xc0\x68\x65\xa1\x6a\x8c\xbd\x3a\x26\x59\xc2\x17\x29\x61\x60\xe2\x29\xdd\x84\x7a\x3d\xa7\x98\xda\xab\x25\x18\x2c\x58\x71\xac\xd9\x0d\xae\xb1\x43\x87\x56\x45\x62\x7f\xf3\x96\xc1\xaa\x2a\xac\xfb\xc6\x78\xcf\xec\x7f\xee\x14\x56\x1b\x9e\xb1\xc1\xe9\xfd\xf9\x4f\xc3\xb2\x7e\x78\xfa\xc3\xf9\x4f\x4d\x52\xcd\xf8\xd3\xf0\x6a\x78\x3b\xb8\x5f\x21\x9c\x54\x9a\x6c\x12\x4e\xa4\x1e\x70\xd5\x7b\x4a\xa5\x8f\x08\x8a\x0c\xe4\x15\xa2\x4a\xa2\x27\x2a\xe9\x84\x02\x40\x98\xf5\x44\x3e\x9c\x03\x67\x7d\xc2\x09\x8d\xa9\x5a\x38\xf1\xc5\xf4\x5b\xde\x47\xcd\x49\x6d\xfb\xc6\xec\x10\xfa\x27\xc1\xca\x67\x36\xc7\x4d\xfa\x04\x81\x6e\xfb\x04\x4a\x5b\xf0\x19\xd3\x82\x34\x9b\x11\x61\x86\x03\xde\x97\x70\x2c\xc1\x73\x3d\xaa\x50\x58\x29\x56\xcd\x0b\xad\x33\xc2\x88\x00\x10\x38\xdf\x89\x11\xa4\x04\x61\x5f\x69\x99\x2b\x4b\x68\x44\x55\xb2\x40\x11\xd8\xb0\xc0\x9c\x99\x62\x86\x67\x56\x38\x00\x35\xa7\x42\x12\x7f\x35\x28\x6a\xd7\x53\x6b\xda\xbf\xa7\x64\xc3\x63\xf6\x70\x75\x36\xfc\x78\x7e\x55\x26\x81\x1f\xce\x3f\x95\x44\xd8\xcb\xe1\xd9\xf9\x43\xe9\x36\xd7\x92\xec\x72\xb9\xbe\xda\x6c\xc3\x51\xf4\x2f\x9d\xa0\x33\xf3\xe9\x89\x5e\xdc\x06\x88\x38\xaf\xfc\x56\xd6\xe1\xd6\x85\xe4\xb9\x3f\x86\x4c\x89\x46\xbf\x44\x57\x13\x92\xf5\x41\x96\x6c\x48\xcd\xa1\x0a\xb5\xbe\xaf\xaa\x4e\xe5\xea\x94\xdd\x8b\x10\x74\x79\x54\x58\x96\xc2\x18\x06\x30\x1a\xb4\x19\xb1\x1a\xdc\x5a\x05\xc3\xfe\x09\x5c\xd4\x69\x2e\x95\x71\x25\x02\x71\xa2\xc7\xbf\x48\xbd\xa0\xe0\x6a\x3c\x42\x77\x84\x8c\x98\xb3\x1e\xcc\xa8\x9a\xe7\x93\xa3\x88\xa7\xc7\x05\x3e\xe1\x31\xce\x68\x8a\xb5\x24\x4d\xc4\xe2\x78\x92\xf0\xc9\x71\x8a\xa5\x22\xe2\x38\x7b\x9c\x41\x04\x8c\x73\xa7\x1e\xfb\x66\x67\xfc\x5f\x2f\xfe\xf4\xed\xe1\xc5\x5f\xbe\xfd\x50\xb7\x90\xb5\xed\xff\x90\x45\x38\x93\x79\x62\x23\xe6\x44\xb8\x36\xee\xc8\xe7\x64\xd5\x7e\x5f\x95\xb7\x6b\x3b\xfd\xf5\xf4\xe6\xa1\x64\xb1\x2e\xff\xf3\x72\x78\x79\x7d\xfb\x4b\x89\x53\xde\x5f\xdf\x0e\x3e\x95\x18\xea\xf0\xe6\x87\xe1\xe5\xf0\x76\x70\x31\x76\x0f\xb7\xb1\xbd\xfd\xc8\xf8\x33\x2b\x2f\x8d\x74\x1c\xb0\xd6\xd3\x09\xfa\xc8\x05\xfa\xd1\xef\xe4\xe1\x04\x4b\xb8\x62\xdc\x9d\x25\x0f\x50\xc6\x63\x60\xbc\x88\x64\x73\x92\x12\x81\x13\x6b\x33\x90\x8a\x0b\x3c\x33\x37\xbd\x8c\x04\x56\xd1\x1c\xc9\x0c\x47\xe4\x00\x45\x40\x0d\xb3\x03\xd8\x14\x50\xb5\xf8\xac\x6a\xe7\xbb\xcd\x99\xa2\x29\x71\x2a\xb8\xfd\xe7\xbd\xd9\x8c\x0d\x36\xe7\xfa\xfe\x87\xb2\xb0\xf7\xf1\xe2\x97\xfb\xe1\xf8\xee\xec\xc7\xa5\xeb\x69\x3e\x2b\x8d\xec\x0e\x02\x90\x4e\x79\x92\xa7\x2c\xfc\x7b\xf3\xb1\x9d\x5f\xdd\x0f\x3f\x55\x47\x77\x3d\xb8\x2f\x53\xc6\x6d\x39\xc0\xed\xc3\xf7\xd7\xd7\x17\xc3\x92\x4b\xf8\xc3\xd9\xe0\x7e\x78\x7f\x7e\x59\xa2\x9f\xb3\x87\x5b\x83\x46\xb8\x6c\x9a\x6e\x04\x0d\x13\xd5\xd3\x0a\xa7\xb9\x6b\x56\xd8\x89\x13\x0d\x6c\x40\xb9\x39\xcb\x87\x01\xdc\x8e\x09\x07\x03\xab\xce\xa1\x37\xa9\x46\x66\xa4\x8d\xec\x50\x95\xb7\x09\xb5\xb3\xe3\xa5\x1b\xbd\x8c\x2b\xdf\xfb\x21\x18\x28\x50\xa3\x6c\xe3\x24\xe1\xcf\x26\x94\x37\xa5\xfa\x56\xb6\xc0\x68\xfa\x15\x59\x78\x08\x8f\x1a\x38\x5e\x79\x5b\x48\x24\x88\xba\xe4\x39\x53\x9b\x93\xdc\xe0\xaa\xc4\x77\x86\x57\x3f\x8d\x7f\x1a\x94\x29\xf0\xfc\x62\x39\xab\x09\x9b\x68\xb8\x8a\x07\x57\xbf\xf8\x4b\x18\x02\xbe\x0f\xbc\x86\x6a\x64\xd7\x28\xa1\x5a\xec\x8d\xb0\xd6\x5e\x13\x90\x68\x10\xa1\x60\x72\x48\xf5\xe4\x20\xc0\x34\x33\xfe\x24\xc3\x9f\xcc\x20\x4f\xdc\x1f\x95\xf6\x24\xac\x0b\x58\x53\x5d\x3c\x3d\xb4\x63\xb5\x6a\x86\x08\x7b\xa2\x82\x03\x9e\x2d\x7a\xc2\x82\x6a\x69\xdc\xb4\xac\xe7\x7a\x02\xff\xbb\x5e\x9b\x60\x18\xad\x30\xae\x3b\x2e\xd4\x99\x0f\xe4\xdd\xcc\x1a\xd2\x14\xd0\x5a\x0f\x65\x6d\x36\x74\xd4\xbf\x6d\xd8\x9c\x2d\x03\x7e\xcb\x13\xfe\x7b\x72\x46\x71\xa2\x19\xc0\xee\xe4\xc5\xc1\xd5\xdd\x79\x59\x7e\x2c\xab\x19\x01\x5f\xde\x58\x5e\x04\x43\xa5\x19\xb9\x53\x26\xee\xfe\x7a\x61\xb4\x0b\x00\x3d\x36\xe7\x36\x50\x2c\x40\x00\x72\x28\x28\x19\x16\xb2\xf2\x85\x44\x00\x84\x56\x04\x5c\xe9\x3b\x0b\xc2\x99\x9e\x38\x8d\x47\x8c\x7c\xce\x08\x93\x10\x1c\x60\xee\xb3\xc2\xd7\x2e\x8f\xd0\xf9\x14\x58\x82\x7e\x9d\xa1\x9c\x59\x07\x98\xbe\x70\xcd\x20\x0f\xb4\x28\x6b\x87\xe0\x35\x44\x30\xbc\x30\xe2\x82\xa5\x8a\xc1\x8f\xd8\xcf\xde\x89\x06\x8f\xa6\x5c\x33\x20\xbd\x8b\xb6\xbd\x13\x84\x99\xa4\x07\x48\x2b\x2c\xd5\x3d\x85\xd4\x01\xad\x50\xda\x10\x2e\xcd\x69\xec\x9f\xaf\x7f\x0d\xd4\xe2\x84\xc3\xcb\xa0\xf9\x2e\xa8\x5c\x05\x2d\xa2\x71\x62\x3c\x26\xe3\xee\x77\x42\xc4\x05\xb1\x7e\x96\xb5\xaf\x81\x55\x8c\xfd\x1e\xcb\xc7\x9a\xef\xe1\x9c\x49\x85\x59\x44\x4e\x13\x2c\x37\x0c\x42\x72\x36\x8e\x83\xb2\xc4\x71\x7b\xfb\x70\x73\x7f\xfe\xfd\x0a\x2e\x5f\xfd\xb8\x1e\x06\x14\x25\xb9\x73\xcf\x4d\x04\xc7\x31\xd2\xec\x73\xc6\x8d\x2b\xd0\x0a\xfe\x05\xf4\xb7\xc9\xeb\xf1\x01\x95\x25\xd8\xf1\x22\x1d\xc1\xda\x39\x42\x57\x02\xb5\x0b\x81\x22\xbd\x12\x28\x30\x79\xb8\xad\x06\xcf\xa2\x29\x48\x62\xad\x5b\x59\x82\xd5\x94\x8b\xd4\x70\xf9\xd2\xa4\x4d\xe3\xcb\x1b\xa5\x4c\x11\x21\xf2\x4c\x51\x87\xe5\x5e\x95\x52\xa1\xc2\x3b\x9f\x5d\x12\x29\xf1\x8c\x6c\xe3\x80\x6e\x52\x1e\xee\x7e\x0a\xff\x09\x0e\xe6\x2e\xb2\x7f\x69\x84\x2e\xf2\xdd\xd1\xd3\x35\xfb\x68\x02\x79\x6e\x78\x42\xa3\x0d\x03\xee\x3e\x0e\xce\x2f\xc6\xe7\x97\x5a\x89\x1f\xdc\x0f\x2f\x4a\xa2\x04\x3c\x1b\x7c\xbc\x1f\xde\x5a\x10\xeb\xc1\xf7\x17\xc3\xf1\xd5\xf5\xd9\xf0\x6e\x7c\x7a\x7d\x79\x73\x31\x5c\x11\x99\xd3\xda\x78\xdd\xba\x5a\x7d\xf5\xa4\xf6\x0b\xec\xb0\xe6\x65\xa1\xbd\x0c\xb2\xc6\x30\x4d\xc0\x09\xce\x8d\x33\x1c\x23\xc6\x63\x02\x3f\x4b\x67\x9d\xf1\xc8\xd1\xe8\x5c\x7d\x95\x24\x08\xe7\x8a\xa7\x18\xbc\x36\xc9\x62\xc4\xf0\x44\xb3\x56\x9c\x24\x41\x78\x97\xc8\x19\xd3\x2c\x56\x37\x66\x20\xda\xa3\x84\x68\x76\x9e\x05\xc9\x7e\xd6\x6f\x30\xa5\x0c\x22\x6d\x53\x2c\x1e\x8d\x9b\xa9\xe8\xb2\x38\x14\x12\x61\x39\x62\x7a\x5c\xc4\x1a\x86\xba\xac\xf0\x49\xa7\xb7\x5a\x57\x27\xc5\x8f\x44\xaf\x4a\x9a\x47\x73\x94\x09\x3e\x13\x44\x4a\x6b\x5b\x8e\x30\x33\x01\x08\xf6\x75\x7d\x0d\x8d\x18\xe3\x7a\x29\x9c\x09\x3b\x26\x19\x61\x31\x61\x11\x35\x69\x7d\xe0\xbb\xf7\xa6\xcd\x99\xc0\xd9\x1c\x49\x0e\x4e\x6f\x58\x76\xb0\x5f\x99\x8f\xdc\x4d\x66\x66\x6c\x1e\x87\x16\x68\x91\x6b\x3e\x71\x0d\x72\xa2\x59\x65\xf8\xd8\x5d\x86\xce\xed\x62\xec\x80\x69\x96\x10\x65\xc0\xfa\x61\xc9\x61\x33\xf4\x5a\x97\xf6\x43\x6f\x53\xd3\x26\xe8\x0b\xdb\x8d\x19\x4b\x3b\xa2\xa3\x06\xcb\xb6\x3d\x52\xe8\x07\xcc\xe2\x44\xb7\xe2\x7c\x18\xe5\xb3\x08\xa9\x28\x03\x4d\x35\xee\x34\x6e\x73\x8b\x46\x38\x97\xdb\x5c\xa3\x95\x5c\x4c\x63\x15\x3c\x2c\x82\x42\x80\xbc\x6d\x22\x26\xac\x6e\xa6\x59\x24\x4e\xb8\x5d\x25\xf3\x7a\x6e\xea\x3f\x21\x18\x4d\xcb\x35\x9b\x09\xca\x22\x9a\xe1\x64\x23\xdd\xaf\x12\x8c\x6f\x63\xdc\xbf\xa6\x53\x4d\x3e\xdf\xd4\xdc\xb6\x8a\x88\x14\x12\x94\xed\x30\xfd\x16\xae\x61\x49\xb2\x59\x0d\x44\x16\xd1\x24\x58\xf0\xdc\xf8\xe3\x60\x5d\x48\xdc\x70\x54\x8f\x9a\xb6\x5b\x9f\x0c\x5c\x0e\x80\xde\x60\xb3\x4d\xe4\x4f\xdb\xfa\x55\x5a\xb1\xbd\x9b\x60\x3c\x9c\xdc\x34\xb7\xd9\xb4\x03\xc1\xc3\x7f\x2e\xa3\x9d\x4b\x9c\x69\x9a\xb1\xb0\xfd\xb8\x98\xa3\x55\x92\x6c\x55\x30\x17\x3f\x13\xf8\xce\x7d\x5e\x48\xf7\xdd\x28\x96\xd0\x06\x40\xd5\x3b\x29\xc5\x10\x04\x39\xe6\x96\xc6\xa7\xb9\x96\x65\x11\x86\x28\x04\xf4\x35\x39\x9a\x1d\x21\x57\x84\xe1\x00\x0d\x6e\x6e\x86\x57\x67\x07\x88\xa8\xe8\x1b\x17\xb3\x68\x03\x96\x46\x4c\x71\x2b\xad\x2c\x5c\x01\x8d\x94\x88\x19\x29\xcd\xd9\x45\x37\x41\xa8\xf2\x8c\x4a\x65\xc3\x67\x35\x5f\x09\x4a\x9d\xd0\xb4\x2a\x66\x1b\x0a\xc9\xd5\x7c\x1b\xd2\xc0\x52\xe6\xa9\xd6\x65\xc7\x14\xa7\x63\xc1\x93\x6d\x98\xc2\x19\x4c\x05\xd4\x65\x9f\x9e\x4f\x71\x8a\x74\xb3\x36\x14\xc4\xbb\x1c\xbd\x48\xa7\x05\x23\xcd\x97\xf5\xbd\x19\xdc\x5b\xce\xfb\x60\xe3\xd1\xa8\x0b\x81\x80\xf4\xfd\x16\x56\x51\x98\x8d\xc7\xd6\x52\x3f\xc6\x51\xa4\x55\xee\x1d\x4f\x2a\xa8\x9f\xe3\x5c\x02\xb6\xa3\x17\x9b\xe6\x2a\x3a\x77\xc3\xcc\x34\x07\x83\x60\x60\x7d\xe5\x4a\x1e\xd1\xa2\xfd\x86\x7e\x27\x8b\x5a\xaf\xae\xc2\xcd\x83\xf4\x26\x15\x73\x09\x4b\x02\x3b\x29\x4d\x85\x1c\x35\x27\x0b\x34\xc7\x4f\xa4\xd4\xa5\x4b\x88\xd1\x0d\x2f\x78\x2e\x9a\x18\xdd\x88\x9d\x91\x4c\x10\x2d\xe9\x57\x1d\x28\x9e\xa6\x6f\xcb\x94\xd8\xd3\x75\x4f\xd7\xef\x9e\xae\x4f\x4d\xa1\xa4\x81\x2f\x8c\xb5\x95\x00\x67\x1a\x1b\x67\x9c\x27\xe3\x0e\x36\x91\xee\x2b\x5e\xf2\x84\x55\xca\x46\x01\x24\x00\xcf\x41\x3e\x2a\x5d\x9b\x5c\xdf\x75\x41\x8a\xad\x1d\xde\x92\x65\x70\x2e\xb3\xa0\x5e\xce\x36\xe7\xbd\xa9\x95\x65\x2d\xa1\x17\x17\x73\x4e\x8d\x7c\xe3\xdd\x65\x61\xfd\xd3\xd2\x61\x72\xa2\x08\x65\xb5\x6a\x6c\x86\x9e\xf5\x02\x1b\xb9\xe3\xef\x39\x57\x58\x7e\x73\x34\x62\x5a\x88\x7a\x24\x0b\x63\x6e\xd5\x62\xca\x1f\xb4\x2c\x7e\x28\x09\x93\x10\xee\xfd\x07\xe3\x9e\xd3\x24\xee\xcc\xd5\x46\x35\x35\x45\xe0\x20\xe8\xda\xf7\x02\x21\xba\xb6\x51\x2b\x25\x15\x01\xd0\x20\xe7\x9b\xb9\xd8\x67\x66\xf8\x33\xa2\x20\xc5\x5a\x51\x05\x3a\x53\x6c\xaa\xcc\xd5\x86\xbe\xd2\x74\x65\xa8\x42\x70\xf0\x93\xc4\xf9\x76\x8c\x5f\xd6\xdb\x58\xc9\x19\xbd\xb6\x70\x67\x63\xde\x8f\x9d\xdd\x28\x12\xbc\x56\xba\x0d\x4b\x64\x76\x7a\x62\xd8\x81\xf3\x5f\x13\x76\xf4\x4c\x1f\x69\x46\x62\x8a\x21\x02\x5e\xff\xeb\x58\xcf\xeb\x5f\x4f\x6f\xaf\xaf\xc6\x45\x26\xcf\x7f\x8e\xd8\x20\x91\xdc\x67\x29\x20\xc6\x99\x0f\xb7\xcf\x04\x71\x22\xa1\x9d\x0b\x58\x5d\x0b\x33\xe2\x88\xb5\x8d\x20\xe6\x91\x3c\xc2\xcf\xf2\x08\xa7\xf8\x37\xce\xc0\x95\x3e\x80\x3f\x4f\x13\x9e\xc7\x3f\x63\x15\xcd\x8f\xe1\x5c\xab\x63\xf2\x44\x98\x32\x6e\x2a\xbd\x5c\x31\x24\xef\x4a\x88\xd6\xff\x57\x3d\xe6\x22\xa9\x48\x6a\x4d\x36\x22\x99\x42\xff\x8f\x20\x13\xce\x55\xf3\x25\xc5\xa7\x53\x49\xd6\xba\x90\x0a\x25\xed\xee\x1a\xfd\xe5\xcf\xdf\xfe\x51\x93\xd0\x26\x6b\x7c\x7e\x77\x3d\xd6\xdf\xff\xeb\x99\xfd\x5e\xae\xc1\xee\xae\xb3\x82\xb5\x39\xe2\x31\x81\xf3\x39\x83\xdb\x4f\x80\xf3\x02\xd8\x1b\x90\x43\xb1\x8f\x4d\xdc\xed\xac\xd4\xfa\x76\x2a\xdb\x46\x8b\x09\x2a\x76\x30\x47\x74\x88\x18\x47\xa9\x89\x35\xc5\x0c\xfd\xfb\x8f\xdf\x37\x6f\x60\x2e\xe8\x46\x1d\x52\x0b\xd7\x10\x74\x29\xe9\x6f\x44\x22\x4d\x35\x9a\x8a\x79\xaa\xbb\x16\x44\xce\x79\x12\xa3\x67\x02\x6a\x92\x8d\x03\xf5\x5a\xb9\x20\x23\x16\x36\x01\x21\x87\x08\x27\x8a\xcf\x08\xdc\xd5\x4e\x51\x53\x44\x68\x51\xc5\x64\x69\x28\x2e\xc8\x81\x81\xfa\xba\xfb\x93\x8b\xad\x86\x69\xc2\x23\x97\xd4\x62\x4d\x72\xf1\xa4\x79\xe6\xd3\xaa\xe9\x15\xb5\xdb\xf0\xab\x9b\x6c\xcd\xb6\xcd\x4b\x63\x93\x50\xac\x0d\xab\xba\x33\xcd\x83\xa1\x11\x67\xe3\x84\xb2\xc7\x8d\x36\xe3\xda\x89\x72\xba\x05\xbb\x66\xba\x45\x6f\xe7\x36\x16\x90\x35\xce\xc7\xc7\x3c\x49\x4c\x6a\x4b\xb8\x3d\x20\x77\x99\x75\x03\x61\x20\x33\x39\xa0\x24\xb6\x7e\x2f\xab\x09\x0b\xc2\x20\xe0\x6d\xc4\x26\x0b\xeb\xb3\x95\x07\x48\xe6\xd1\xdc\x65\xe6\x45\x9c\x49\x2d\x46\x73\x81\x22\x9e\xa6\xa6\xb8\x29\x23\x48\x71\x9e\x48\x1b\xed\xce\x0e\x15\x8e\xd4\x88\x15\xfd\xad\x38\x79\xa6\x02\xd2\x76\xa9\x7b\xdd\x5d\x3a\x45\xa5\xa5\xa5\x02\x37\x8d\x43\xcc\x06\x30\x82\x19\x4f\x54\x80\xfe\xc0\xeb\x67\xc9\x6c\x58\x8b\x66\x20\xe7\x5c\xa8\x71\xdc\xc8\x73\x56\x12\x4d\x95\x11\x32\x72\x98\x40\xd0\x30\x7f\xd2\xc2\x3f\x79\xf6\xc6\xd7\x65\x43\xd0\x54\xbd\x6c\x04\xdd\x8e\xd1\xd2\x91\xad\x4b\x82\x2d\x6b\x65\x10\x3c\xa2\x72\x4c\xf8\xaa\x31\xde\xc1\x57\xa7\xfa\xa3\xa5\x8b\x57\x3d\x77\x4e\x08\xe2\x71\x01\x36\x67\xee\x75\x9b\x11\xb2\x6c\x4d\x2d\x74\xc2\xcb\x65\x8e\x2e\x9b\xca\x43\xd9\x92\xab\xc7\x02\x26\x7b\x49\x40\xd6\xc4\x62\x42\x95\xc0\xa2\x84\x14\xe2\xf5\x41\x49\xb0\x80\xf8\xac\x11\x33\xb8\x71\x46\x53\x88\x51\x4c\x25\x24\x88\xc0\x5d\x1a\x38\xc3\x50\x37\x25\xb0\x72\xb4\x8b\x3c\x47\x13\x7f\x0e\x81\x65\x05\x69\x38\x66\xa7\x3b\xf2\xf8\x58\x5a\x3f\xe3\x51\x5e\x08\x72\x11\x48\xb8\x16\x53\x07\x51\x26\xe9\x6c\xae\x10\x65\xd6\xee\x88\x93\x19\x17\x54\xcd\x53\x79\x80\x26\xb9\xd4\x5a\xa8\x09\x56\x33\xf1\x28\x44\x45\x9d\xb8\xd0\xb6\x49\xc4\x71\xa5\xc1\xba\x8a\xb2\x01\x69\x74\x3b\x94\xc3\xca\x5d\xb1\x82\x70\x06\x1e\x67\xb0\xda\x06\x85\xba\x8d\x06\x9e\x12\x99\x38\x40\xee\x90\x9d\xa0\x0a\x48\xdb\x39\x00\x54\xc8\x9d\x79\x29\x5e\xa3\x10\x17\x32\xc9\xa0\x82\xb8\xd8\x6d\x90\xbc\xca\xc8\x94\x06\xbd\xc9\x3b\x9d\xd2\x4c\x35\x06\x6e\xd5\x5d\x45\xb7\x01\xe6\x4f\xb7\xc5\x86\x64\x2c\xa0\x66\x40\x6a\x1b\xb1\x3b\x42\xda\x81\xdc\x6a\x7b\x6f\x4a\xe3\xc2\x14\x6c\xa2\xc7\x72\x92\xdf\xc6\x89\x7d\x36\xbc\x3b\xbd\x3d\xbf\x31\x90\x13\xd7\xb7\x97\x83\xfb\x71\x83\x5f\xbb\xe1\xad\xcb\xc1\xed\x8f\x67\xab\x5f\xfb\xe1\xbe\x9c\x95\xdd\xf0\xca\xed\xdd\xf2\x64\x8e\x0e\x43\x6c\x48\x0a\x6b\xec\xe7\x04\x65\x0b\x35\xe7\xcc\x87\x28\xc4\x25\xde\x74\x88\x4c\x46\xb0\x82\x10\x22\x21\x55\x83\xe3\xf0\x1e\xe2\x72\x56\x4b\x98\xe5\xcd\x32\x30\x6c\x3b\x15\x8d\xd6\x38\x91\x9f\x12\x3e\x01\xbf\x75\x5e\x2a\x71\xbb\x24\x02\x7d\xcb\x78\x9f\x33\x2a\xb3\x04\x2f\x6a\x3d\xac\xba\x72\xae\x70\x4a\x20\xe2\xb8\xc0\x8f\x73\xc9\x22\x7a\x67\x20\x81\xc9\xdf\xeb\x74\x0a\x99\x4c\x8a\x62\x45\xd0\x84\xa8\x67\xc8\x9b\x73\xbf\x7a\x5b\xaa\x0b\x18\x91\x47\x23\x06\xe6\x9c\x91\x5e\xe4\x38\x87\x68\xbf\xd1\x87\x03\x34\xfa\x10\x93\x27\x92\xf0\x4c\xef\xbc\xfe\xa1\xe5\x92\x19\xa6\x98\x26\x57\x5c\x79\xcb\xdc\x36\xfb\x29\x48\x44\x33\x90\xcc\xc7\x44\xb7\xfb\x7a\x82\x47\x89\x92\x1d\x3b\x83\x31\x20\x1c\xc7\x5a\xc9\x06\x56\xe6\x86\x57\x84\x00\xb1\x60\xea\xa5\x5a\x99\xeb\x88\x14\xde\xfc\x6d\x7a\x0c\xdb\x2c\x9b\x3d\x1b\x77\xc0\x3b\x86\x5f\x49\xc9\x70\xa1\x38\xbe\xe3\x8e\x5a\xc7\x43\x9b\x8e\xd1\xea\x81\xae\x1e\x40\xbd\x16\x6b\x08\xcc\x7e\x80\x77\xfa\xbb\x95\x82\xa6\xbf\x6d\xa3\xb0\x24\x3b\x88\x8c\x36\xb7\xb9\x9a\x4e\x4d\x56\x8e\x38\x4a\xb8\x2c\x43\x9d\x74\x1e\xf4\xa9\xfd\x74\xd9\xb8\x87\xa1\xb3\x58\x5f\xeb\x6b\xf9\xa3\x1b\x16\xbe\x82\xe5\x67\xd8\x84\xb2\x0e\x0e\xfb\xf6\x01\xa2\x10\x2c\x07\xf2\x74\x52\x24\x7e\xb3\x18\x15\x56\xec\x11\x2b\x42\x0e\x24\x7a\x26\x09\x44\x29\x45\x3c\xcd\xc0\x42\x6b\x87\x6b\x5b\x22\xb1\x09\xf8\x3c\x40\x3c\x57\xba\x31\x93\x52\xe1\x6c\x70\x36\x5f\xa3\xb0\x5a\x1b\xd7\x89\x8d\x5d\xf6\xb8\xc0\x86\xd6\x0d\x2b\xa4\x0c\x7d\x22\x0a\x5a\x01\xdc\xf5\x70\x82\x20\xe6\x55\x23\xe0\x9a\xd7\x7e\x8b\x13\x65\x67\xb2\xc6\xce\x17\xb8\x17\xdf\x27\x7c\xb2\x5c\xc7\x83\xc6\xd1\xc3\xed\xb9\x33\x28\x15\xe1\x2f\x01\xf8\x6c\xc9\x21\x34\xbc\xb9\x1d\x9e\x0e\xee\x87\x67\x47\xe8\x41\x12\xbd\x3c\x7e\xba\x90\x1e\xeb\x25\x4a\x33\x72\x0b\xa4\xc1\xa4\x22\xb8\x4d\x8f\x25\x42\x94\x92\x58\x57\x30\x8e\x32\xca\xc6\x72\xc2\x06\x8c\x0b\x6a\xed\x2c\x80\x0b\x53\x9d\xa7\x0d\xac\x5a\x75\x02\x21\xcc\x65\xfc\x7e\x82\x8c\xcc\x78\xd3\x7a\x60\xd5\x2a\xf2\x29\x07\x64\xbd\xf4\x64\xe0\x68\xa9\x39\xa1\x02\x75\x9a\x96\x21\xaa\x71\xf7\x39\x05\x11\xca\x97\x38\x5b\x9e\x3d\x88\x9f\x4b\x44\x6b\x24\x99\xc0\xf5\xfa\xd2\xe7\xc0\xb1\xb5\xb1\x61\x85\xdb\x4f\xb0\xf0\x47\x18\xde\xea\xf9\xa6\x09\xd8\x97\xce\xc6\x11\x4e\xac\x32\x08\x1b\x86\x28\x11\x9c\x1d\xf8\x85\x32\x54\xba\x12\x0f\xd0\x94\x7e\xb6\x8d\x16\xe1\xc9\xee\xd5\xc0\x5f\xdd\x12\x0e\x37\xc7\xf5\x33\xb5\x86\xd8\x70\x03\xdf\x2f\x0d\xcf\xe2\x52\x69\xa9\x4b\x4b\xae\x82\x44\x5c\xe8\x9b\x02\xba\x2d\x8c\xc8\xab\x44\x06\x85\x85\x5e\x94\xba\x51\x7d\xd9\xe9\x2f\x4a\x48\xc4\x58\x91\x43\x45\x57\xe6\xaf\xda\x14\x07\x48\x86\xc0\x2a\x40\x73\x2a\x6e\x9e\x09\x99\x61\xe6\x22\x6b\x5b\x86\xeb\xae\xbc\x2d\x58\x95\x96\x60\x31\x64\xf7\x80\x7c\x05\x99\x1b\xa5\x71\xc8\x0c\xd6\x73\xe9\x38\x6c\xf0\xc2\x3e\x2c\xdb\x33\xf6\xb1\x14\x2d\x83\xcd\xb3\x78\x9f\x06\x9b\x60\xa9\x90\x1d\x53\x9b\x26\x19\x48\xf8\x2f\x6b\x43\x2b\xa9\x66\x5d\xcd\x67\x9a\x84\xca\x4a\x08\x01\xc3\xb6\x74\xb0\x17\x06\xe4\x23\x25\x62\xe6\x04\x61\x53\x49\xd7\x9f\x6d\x5b\x52\xd7\xdd\x12\x21\x33\x81\x18\xeb\x7a\xd3\x47\x68\xc0\x6a\x70\x47\x2e\xac\xa6\xb4\x5e\xe6\x4e\xc2\xc9\x33\x5e\x48\x94\x09\x83\x0c\x62\x02\xaf\xdd\xe4\x21\xde\xb1\xfc\x91\xf7\x64\x2b\x17\xf9\x8e\x40\x95\x5e\x1d\xf3\xe4\xe4\xde\xf1\x0b\x78\x62\x2a\x41\xc1\x5e\x20\x2f\x9a\x2b\x54\xcd\x0e\xac\x4e\x91\x71\x34\xc7\x6c\x46\xc6\xce\x46\xb6\x89\xb6\xa4\xdb\x39\x85\x66\xce\x6c\x2b\xcd\x97\xd3\x8d\x51\x98\x6c\xf9\x0e\xf3\xaa\xb7\xff\xe8\x43\x20\x15\x9e\x11\x64\x46\xd4\xc9\xaa\x58\x0a\xf8\xb1\x58\xb1\xa0\x27\xd8\x56\x87\xe5\x20\xe8\x36\xe1\x1d\x22\x57\x2e\xf0\x84\x24\x6f\xe3\xf8\x86\xae\xad\x6d\x15\x9c\x2d\x26\x98\x9b\xa0\x67\x30\xc7\x56\x58\x86\x35\xbe\x8a\xbc\x29\xb4\x7b\xd9\x3c\x4b\xc5\xab\xb7\x98\xa8\x2b\xf5\xb0\xc9\x54\xdb\x0a\x40\x84\xd7\x5e\x50\x28\xa1\xc9\x3e\x12\x5e\x7f\x55\x93\xe0\x66\x03\x09\xea\x35\xb4\x8c\x63\xeb\x82\x0d\x2b\xa7\xb2\x71\x8e\x78\xc7\x22\x66\xe7\x53\xc4\x38\x23\x88\xca\xe2\x65\x55\xce\x66\xf1\x08\x2b\x5a\xc4\x37\xc6\x17\x5f\x64\xc9\xd7\xce\x79\x69\x4b\x4b\x91\xfb\xee\x6d\x03\x2e\x3d\x97\x11\xad\xa8\x62\xb1\x00\x84\x46\xc3\x87\xcb\x32\xdd\xca\x71\xee\x5c\xe0\xbe\x77\x00\x9c\x41\xa0\xa5\xe2\x08\xc4\xc8\xca\xe0\x90\x81\xb1\xb4\x2f\xd9\x8f\x2c\xca\xc8\x88\x79\xcb\x06\x10\x22\x95\x28\xc5\x19\xb8\x64\x18\x57\xc5\x57\x06\x35\x47\xf9\x2d\x3c\x70\x82\xb8\x34\x25\x90\x5a\x56\x60\x95\x69\xc7\x5d\xbf\xc5\xba\x96\xd1\x09\x1d\xb2\xea\x8c\x3e\x11\xe6\x68\xfa\xc0\x9d\x09\x3d\x28\xd7\x69\xb2\x38\xc4\x10\x25\x4a\xe2\xd0\x70\xbd\x9c\x23\x19\x83\xcc\x3e\xd8\x23\xbb\x2f\xd9\x7d\x63\x14\x84\xc1\xb8\x2a\x81\x93\xbb\xb8\xde\x90\x4a\x2d\xec\xaa\x49\xe4\xc5\x12\xfd\x81\x71\xf5\x87\x00\x98\xd6\x19\x2f\xe0\x53\x67\x82\x3a\xa8\x55\xdc\x80\x43\x6b\x09\x07\xe1\x00\x20\x69\xe5\xca\x6f\xeb\xda\x2d\xe2\x96\x5f\x54\x1a\x1d\xd6\x93\x98\xda\x4a\x16\xf5\x0e\x57\x54\xbd\x16\xaa\x06\x4f\x53\x15\xad\x38\xe9\x25\x43\xa7\x5c\xe5\x61\xf5\x7b\xd1\xc9\xb3\x5a\x4b\xe8\xde\x86\xda\xd2\xce\x81\x2f\x2b\x30\x6c\x9b\xed\x12\x9b\xa4\xe9\xb5\xc9\xe5\xa2\x1c\x79\x64\xab\x18\xb4\x80\xb4\x1e\x8d\xd8\x47\x2e\xec\x15\x2c\x2d\x4c\xfc\x04\x47\x8f\x87\x84\xc5\x08\xe7\x6a\x6e\xc0\x52\xad\x5f\x61\x61\xa9\x41\x4b\x1a\x40\x36\x1e\x09\x81\xca\x08\x8b\xd8\x15\x2c\x78\xe2\x6e\x14\x23\x16\x34\x02\x40\xf4\x50\xa7\x07\x2a\x8d\xb6\xa9\x9a\x44\x6a\xfd\xaa\x6d\x2d\x9a\x6a\x68\xd6\x2a\x68\x2e\x3f\x67\xa5\x9a\xa0\x00\xa1\x0f\xf1\x29\x7c\x5a\x5f\x9d\x73\x67\x6d\x74\xfa\x9d\xa6\xe7\xba\x17\xe2\xc0\x6a\x14\xc6\x24\x65\x67\xa0\x25\x9d\x6f\x1d\xaf\x2d\x81\xbe\x4e\x73\x01\xd1\x96\x4d\x6d\x7e\x1d\xcd\x69\x52\xf8\x2e\xbe\x39\xf0\xc3\xd4\x4d\x26\xe4\x89\x24\x06\x72\x3c\x12\x10\x58\x6d\xac\x86\xdf\xa2\xff\x63\xea\x4a\xa2\x3f\x8e\xd8\x27\x60\xc3\x49\xb2\x00\x40\x44\xdf\x32\x56\x95\x66\x1e\x1b\x07\xa0\x6c\x26\x07\x2a\x0f\xc4\xec\xf5\x1c\x3f\x91\x11\x73\xcd\xfc\x1f\xf4\x88\xfe\x0d\xfd\xb1\x4d\xbd\x73\xf1\xd1\x2f\x6c\xe7\xf8\x18\x44\x1f\x07\xb7\x9c\x65\x94\x96\xdf\x38\x33\x48\xc9\x08\xd9\x00\x8c\xe0\x71\x8d\x29\x7b\xe2\x51\x2d\x08\x3f\x3c\xb5\x58\x10\xa6\xc6\x8c\xc7\x64\x4c\x1a\x5c\x9a\x4b\x98\x84\x16\x02\xae\x78\x4c\x56\x3a\x24\x3d\x33\xfd\x19\x4c\x37\x32\x9f\xf8\xed\x80\xfc\x6c\x9f\x8c\xeb\xad\x0f\x65\x4a\x6b\x1e\xb9\x07\x0f\xdd\x64\xdc\x9b\x3a\x53\x5d\x94\xdf\x01\x5c\x08\x76\x00\xcd\x0e\xbd\x04\x2b\x97\xc2\x5a\x3d\x8e\x55\x47\x80\x7e\x59\xcf\xdc\x5e\x56\x01\x2c\x2a\x94\xae\x10\x74\x46\xb5\xfc\xde\xdd\x61\x0b\x9c\x70\x13\x6f\x86\xc1\x88\xec\xe4\xce\x28\x96\xc2\xe1\x64\x1c\x7a\xfa\x2b\x9c\x90\x13\x9e\x57\x05\x78\xbb\x00\x54\x86\xc9\xb5\x56\x56\x5f\x68\x3e\x3c\x33\x09\x5c\x64\x4e\x4d\xca\xf4\xe0\xf4\x02\xe9\xd3\xc1\x53\x83\x2b\x04\x8b\x96\xab\x39\x17\xf4\xb7\xd6\x04\x93\x76\x19\xbd\xf0\xb4\x16\xf9\x38\x66\x9c\x65\x69\x1d\x88\xd5\x88\x14\xaa\xa4\x95\x34\xe9\x4c\x68\x92\x03\x84\xa6\x66\xb3\xd3\x3c\x31\xb8\xfb\x11\x17\xb1\x29\x7c\x2d\x4b\xd9\x3f\x10\x45\xe9\xc4\x7b\xac\x7c\x83\xd4\x22\x0d\x5a\x64\x7f\x63\xc1\x59\x2a\x80\xfe\x35\x27\xf9\x8e\x12\xa8\xde\x34\xe4\xf4\x1e\xcf\x64\x11\x43\x6a\xd6\x46\xf3\xe6\x62\x7d\xff\xae\x67\x2a\x83\x94\x43\x67\x59\xf4\x08\x3e\x46\x25\x37\x75\x1d\xd7\xb2\xe8\xdc\x1a\xe4\xf2\x1d\x98\x74\x5e\x23\x9e\xa3\x2e\x23\x35\xb0\x1f\x4b\x7e\x4f\x3e\x01\xaf\xca\x22\x5e\xc8\x4e\xe2\x20\xe0\x2b\xd2\xc7\x0b\x9a\x4c\x36\x60\x72\x75\xa1\x7a\x69\x50\x6b\x61\x40\xf1\x6c\xad\x21\x17\x56\x71\x88\x9a\x7f\x16\x14\x00\xbe\x16\xc5\xcb\xbe\x84\xa9\xbb\x2e\x42\x1e\xa3\xa5\x14\x23\xd6\x42\x5c\x87\x5b\xc2\x45\x33\x8f\x5f\xc3\x00\x61\x1b\x2a\x77\x5d\xf7\xdb\xb7\x9d\x08\xc3\x92\xf6\xf5\x48\xd4\xd1\x3d\x56\x1e\x06\x5f\xc8\xe1\x6d\x0c\x88\x5e\xb4\x79\xbd\x93\xe1\xc9\x71\x1c\xe1\x68\xde\x3a\xa9\x09\xe7\x09\xc1\xac\x4d\x7a\x6d\x7c\x5c\x3d\x22\x06\x9b\x12\x58\x77\x92\x00\x40\xab\x5b\x02\x5b\xd4\xaf\x10\xdf\x59\x0c\xc0\xda\x86\x87\x1b\x24\x0e\x37\x50\x45\x98\xb3\xfc\x50\x36\x4b\x48\x75\xad\x2c\x02\xfa\x81\xed\x24\x89\xf2\x24\xa8\xea\x97\x11\xa1\x47\xad\x97\xf8\x89\x30\xad\x33\xd8\x71\x38\x67\xc6\xb3\xcb\x67\xf5\xb5\x7c\x0e\x7c\xd7\xce\x9f\x06\x49\x63\xf1\x88\xc1\xc1\xe5\xe5\xc3\xaa\x69\x55\x6a\x35\x23\xb4\x4b\x6d\x7c\x3a\x03\x21\x62\xed\xe3\x79\x57\x36\x13\xaf\x7d\x26\x4d\xdf\x63\x88\x31\xd8\xda\xb5\x16\xb8\x5f\x8a\x4c\x7b\xb3\xb1\x0e\x4d\xe9\x95\x8c\xc8\x10\xb5\x51\x06\x79\x09\x82\x36\xda\xd0\x7c\x5e\xf4\x2e\x29\xaa\x17\xb8\xdb\xa0\xe3\x50\x96\xba\xaa\x3b\x3a\x9e\xc1\x3a\xb9\xec\xdc\x5e\xd8\x88\xdb\xb2\xcb\xd6\xa7\x67\x14\x61\x8e\xb6\x3e\xa7\x12\x18\x92\xcb\x21\x25\xf8\x67\xa3\x61\x53\x69\x2c\x60\xae\x4a\x41\x9a\xa9\x85\x2d\x6a\x05\xf7\x62\x98\x92\x69\x00\xbb\x9a\xdc\xc3\xd5\x3b\x32\x2e\x39\x88\x9b\x3a\x83\x8e\xac\x59\xa1\xb1\x49\xb7\xd0\x21\x00\x44\x25\xe1\xbe\x2d\x1a\xc4\xd4\x07\x1d\xe3\xa4\xd5\x96\xb5\x03\xa6\x09\x59\x92\x45\x92\xbd\xc5\xee\x54\x22\x27\x9a\x77\xe1\x24\xa9\xcc\x0b\x43\x36\xab\xf2\x35\xc2\x26\x45\x21\xd3\xee\xce\xea\x04\x4f\xc8\x5a\xee\xe9\x0b\xf3\xc1\x52\x2a\x82\x57\x20\xd5\x34\xcb\x92\x45\x37\xd4\xa6\x30\xf4\xae\x11\xe3\x6a\xd5\xc0\x42\x64\xac\xa5\x77\x53\x19\x5d\x6a\xb3\x21\x4a\x12\xe5\x82\xaa\xc5\xd8\x1a\xfd\xba\x33\xad\x3b\xfb\xe5\xa9\xfd\xb0\x8b\x46\x7d\x82\x5c\x7f\xce\xc8\x08\xf7\x94\xa0\xa6\x00\x8a\x9d\x42\x97\xed\xd6\x5a\x72\x23\xf6\xcd\xb2\x85\x75\xe0\x3b\xdd\x86\xaa\xbb\xd8\x74\x78\xb6\xb0\xc2\x98\x4f\x1d\xac\x4d\xf7\x85\xad\x56\x9c\x58\xc3\x5a\xea\xd0\x73\x33\x41\xb9\xb0\x85\x1d\xba\x04\xb5\xa5\xf8\xf3\x38\xc3\x02\x27\x09\x49\xa8\x4c\x37\xb7\xed\xfe\xe9\xbb\xa5\xa3\x3d\x35\x05\x48\xa4\x2d\xe7\xf3\x99\xa6\x79\x8a\x58\x9e\x4e\xac\x94\x8b\xe5\x63\x88\x5d\xe8\x32\xad\x0d\x04\x8f\x1b\x60\x29\xdf\x5b\x04\x68\x94\x23\x16\xe0\x12\x5b\x53\x05\x8e\xe6\x94\x3c\x01\x6a\xa2\x60\x44\xca\x23\x74\xc5\x15\x39\x41\x97\x38\xbb\x07\x41\xcd\x54\x04\x9c\x19\xeb\x38\x96\x48\x4b\xad\x39\xa3\xea\x60\xc4\x2c\x98\xb1\x5b\x95\xe3\x88\x33\x03\x68\x19\xc1\xc2\xfa\x26\xc0\xdc\xeb\x90\x1d\x95\xcb\x4b\xa3\xb2\x65\xb1\x05\x7e\x1e\x07\xd1\xab\x63\x93\x1d\xb0\x06\x1d\xdf\xe2\x67\x13\xaf\x0d\x15\xf0\xcd\xd7\x4b\x24\x77\x1b\x10\x65\x0b\xc0\x18\x1c\x57\x17\x38\xc2\x2d\x98\x80\x2f\x5d\x65\xa2\x53\xbf\xa6\x47\xe4\x08\x7d\x9f\xf0\x89\x3c\x40\xd2\x63\x1e\xbb\x02\xfd\xf2\xc0\x38\xa8\xe0\xdf\x26\x93\xe7\x1b\xb7\xfa\x05\xdf\x87\xaa\x6d\x53\xfa\xd9\x60\x18\xc8\x3f\x9d\x1c\x1f\xa7\x8b\xc3\x49\x1e\x3d\x12\xa5\xff\x02\x99\xa2\x71\x85\x1c\x00\x10\x6e\x82\x13\x5a\xb5\x3a\x75\x28\xa2\x4e\x14\x69\x41\xec\x24\x01\xd8\x6b\x7d\xa5\xfb\xba\x98\x0e\xb9\x86\xb3\xe6\xa2\x7f\x76\xca\x22\x6f\x3b\x5e\x25\xbc\xdc\xd7\xd1\x56\x4c\xdd\xcf\x10\xa6\x77\x9a\xe0\x59\x45\x65\x59\x43\x49\xb9\x4e\xa9\xa5\x22\x3d\x77\x88\xb7\xd0\xa7\xac\x1c\x65\xf6\x95\x73\x47\x82\x5b\xd1\xba\x5b\x8e\x46\x6c\x20\xd1\x33\x31\xe5\x3c\x21\xa5\x0c\xbc\x13\x39\x95\x73\x9f\x50\x06\xf6\x52\x68\xd4\xa0\x99\x9a\xa4\x77\xab\x38\x3a\xcd\xca\xf9\x6f\xac\x06\x8a\x13\x49\x0e\x74\xc3\x80\x68\xe5\x02\x09\xd1\xb3\xc0\x59\x46\xc4\x88\x59\x64\x4a\xc0\x5f\xe6\xdc\x06\x89\xb4\x45\x93\xf7\x1a\xe5\x7e\x69\x94\x83\x4a\x68\x39\x54\xb8\x4d\x41\xe9\x91\x45\x21\x3f\x67\x9f\xf2\x2a\x67\xe9\x6a\x06\x30\x5e\xf8\x38\xe6\x44\x06\x86\x67\xe4\xed\x47\x09\x9d\x12\x7d\x63\x8e\x98\x5e\xfa\xd0\x48\x6e\x30\x7d\x1d\xc4\xaf\xee\x34\x12\x5c\x4a\x1b\x2d\x6e\xda\x59\x9e\xf3\xb3\x45\xf9\x30\x03\x4c\x6c\x0a\xf7\x57\x0b\x89\x05\xcf\x5c\x49\x31\xfb\xb0\xb9\x9e\x7b\x5b\x53\x2b\x0b\x88\x15\x6b\xb1\x46\x09\xb1\xe3\xd3\x8b\x73\x5f\x37\xa7\xd2\x75\xbd\x86\x58\x08\xe6\xdc\x5e\x45\xac\x3e\xe3\xa0\x9e\x58\xa5\x89\x25\x15\xc5\x56\x6f\x56\x39\x46\x75\x1b\xa4\xae\xca\xd6\xaf\xba\xb3\x2a\x34\xb3\x2a\x94\x7a\x47\xdb\xd4\xc2\x0a\x23\x10\x72\x5e\xda\x2b\x0c\xc2\x82\x7e\x4b\x2a\x9c\x66\x61\x9a\xa0\x83\x2a\xb4\xd3\x34\x47\xad\x8d\x71\xbf\x2a\x84\x72\x84\x4d\x04\x46\x75\x70\xb5\xad\x58\xcf\x4b\x73\x6f\x91\x99\x77\x11\x7a\xfb\x7a\x79\xb7\xc9\xa2\x88\x34\x93\x56\xde\x70\x55\x7f\x5b\x6c\xd5\x13\xe2\x51\xa8\x5b\x37\x74\xdb\xc4\x3a\x8f\x56\x23\x08\x96\x36\x84\x00\xf2\xcf\x2a\xb9\x29\x6b\x98\x34\xfd\x98\x4d\x06\xeb\xa1\xc7\x7d\x0f\xae\x1a\x5b\xca\x28\x72\x07\x91\x0a\x41\x9e\x88\x00\xda\xb1\x71\x2a\xac\x7c\x54\x71\x22\x08\x8e\x17\xc1\x8a\x78\x27\xb9\xe9\x19\x4c\x3a\x92\xa6\x5a\xe9\x04\x71\x9a\xf1\x43\x9e\x39\x39\xbb\xf4\x16\x80\xf6\xd3\xa9\xbe\xb1\x02\x17\xbb\xfe\x82\x1d\x92\xcf\x54\x2a\xad\x97\x34\xc4\x17\xba\x46\xe0\x96\x86\x52\x3e\x73\x62\x6f\xb8\xd1\x87\xc1\xf7\xd7\xb7\xf7\xc3\xb3\xd1\x87\x22\xa2\xdc\xa5\x4c\x79\x10\x1a\x87\x29\xce\xd9\x88\xf9\x20\x50\x8f\xb9\x0a\x7b\x89\x70\x1c\x17\x88\xd7\x56\xf1\x31\x72\xc6\x52\x8e\x1c\x9c\x8a\x95\xe1\x9f\x4b\x9a\x79\x80\xbc\x99\x7d\x3d\x59\x4b\xdc\x3d\xa5\x93\x63\xb2\x7f\x96\xa4\x69\xec\xe8\xb2\x09\xe1\x22\x95\xd1\x0f\x89\x72\x78\x66\x8c\x3c\x3b\xf9\x1e\x6e\xe7\x63\x6c\x2e\xe1\xf5\xb8\x9d\xdb\x90\x0d\x36\xf5\x23\xfd\x4c\xe2\xdb\x16\xa9\x6a\x27\x59\x18\x9d\xa2\xd7\x1a\x77\x21\x67\x74\x1d\x2d\xd5\x4f\xe5\x41\x7f\xd7\x9d\x2d\x5d\x17\x28\x50\x05\xa2\x23\xc0\x39\x2a\x84\x51\x44\x84\xc2\x94\xa1\x29\x1c\x6c\x16\x2d\x10\x60\x71\x10\xf0\xbb\x7e\x87\x52\xca\x20\xdb\x7d\xd9\xd2\x3e\x94\xe7\xb1\x4e\x29\xff\xf3\xab\x87\xfb\x92\xa8\xfa\xc3\xf5\x43\xb9\x8e\xf4\xe0\x97\xa5\xb2\x6a\xa5\x85\x65\x01\x2e\xc1\x14\x8b\xcc\x39\x0b\x6c\xe9\x57\xa6\x69\xa2\x9f\x88\xfa\x49\xf3\x65\xce\x76\x11\x56\x6e\xe5\x2c\x70\x38\x91\xf1\x93\x69\x78\x0d\x32\xb0\x43\x59\x92\x3b\xe0\x24\x39\xe8\x01\xd9\x1e\xc2\x44\xf6\x23\x53\x31\x79\xa0\x9b\x03\x95\xd1\x05\x68\x69\x7d\x89\x33\xbd\x5c\x06\x5e\xd0\x61\x12\x06\xcd\xf1\xa9\xf9\xb8\x23\x42\x53\x10\x26\xac\xdb\x2a\x96\x12\x0d\x6e\xce\x1b\xd6\xfa\xa2\x6a\x93\xff\xb2\xca\x3b\x24\xde\x3d\xb0\xeb\xca\x0e\x41\xbe\xd7\x5e\x14\x75\xb0\x33\xdd\xae\x9e\x83\xf1\xa2\xde\x94\x5d\xb3\xfb\x80\x5e\xd9\x24\xcf\x96\xf2\x38\x57\x00\x55\xae\x97\xda\x54\x2c\xc3\x9a\x28\x32\xe1\x80\x6c\x5c\x7d\x88\x9c\x52\x0f\xda\x3c\x08\x91\x54\xb8\x29\x20\x69\x9d\xb5\x3b\x43\x97\x29\x66\xd3\x05\x5e\xe6\x27\x43\xd1\x1e\x7d\x00\xf0\x14\x5c\x81\x32\x17\x6c\x69\x93\x81\xc3\xe9\x86\xd4\xb6\x1e\x22\x4d\x31\x3e\x67\x4f\xb4\xd8\xac\x38\xc3\x56\x29\x06\x09\xdf\x21\x87\x37\x15\x9a\x3a\x1a\xb1\x20\x02\x40\x1a\x99\x5c\x9f\x11\x07\xd6\x0f\x15\x20\x19\x00\xbd\x42\xd6\x83\xbf\x99\x4b\x3b\x50\xcd\x39\x56\xf3\x32\xdc\x7e\xad\x1f\x7b\x3a\xe5\x1c\xbb\xcc\x2e\xa7\xde\xdb\xc0\xaa\xd0\xf8\x01\xed\x05\x00\xdb\xb6\x63\xb0\xef\x81\x46\x8d\x83\xf2\x4d\x41\x36\x70\xcc\x89\x64\x5f\x29\x9f\x3b\x47\x13\x5b\x22\x00\x57\xed\xad\x5a\xe4\xc0\xd4\xb6\xbc\xfc\x80\xef\x00\xee\x66\x5d\xa9\x36\x38\x56\x2b\x6d\x28\xce\x69\x06\x94\x10\x06\x77\x40\xa7\x6d\xd8\x34\x9f\x33\x12\x6d\x82\xc9\x71\x83\x05\x4e\x89\x22\x62\x59\x7c\x47\xb9\xb8\x2a\xc4\x2e\xb8\x1d\xb4\xfd\x9a\x5d\x34\xc8\xf3\xd5\x12\x05\x5e\xf5\xba\x58\x85\xb1\xe1\x67\xb1\x16\x9c\x90\x9e\xc6\x4f\x16\x6a\x7f\xcd\x59\xd8\x7e\x8a\x69\xd8\xf0\x95\x00\x52\x65\xdb\x39\xbd\x0e\xb6\xc4\x7d\x0d\xa5\xa1\x14\x7f\xb1\x27\xa0\x12\xab\x47\xd9\x86\x26\xb1\x8a\x97\xee\x84\x77\xbb\x90\x71\x97\x93\x58\x39\x54\xa5\x60\x74\xa0\x12\x90\xf7\x0d\xb0\x42\x33\x22\x04\x08\x2d\x4d\x21\x67\x81\x1f\xc5\xe2\x85\x15\xd6\x46\x2b\x59\x55\x8b\xad\x54\x96\x6b\x05\x8f\xdb\x55\xb6\x7c\x2f\xd1\xec\x5a\xa2\x59\xc3\xb6\x67\xa8\x93\x88\x0a\x70\x87\x2d\x82\x6a\x33\xae\xcb\x13\x84\x64\x0e\x7b\x45\xda\x4a\x8a\x70\xf5\x53\xe6\xff\x55\xe6\xe0\x8e\xa8\x43\x52\x6d\xca\x52\x3b\x0a\xfc\x23\xe0\x1e\x49\x42\x69\xc0\x06\x2a\xc0\x68\x4d\x5c\x99\x31\x41\x9f\x5f\x19\xef\x0a\x64\x8b\x2e\x78\x8e\x9e\xa9\xd4\xba\xf0\x88\x41\xe0\x95\x37\x55\x2b\x8e\xcc\x8b\x07\xf0\x16\xe4\x95\xcb\x7c\x92\x52\x85\x70\x30\xc3\x92\xbd\xec\xc0\x9e\x67\xfd\x01\xcc\xb8\x31\x71\xb9\x09\xf3\x64\xc5\xa1\xd9\xc0\xf8\x53\x34\xb2\x6d\x6e\x72\x10\x24\xfa\xb2\xd9\xc9\x81\xc6\x13\x6a\x98\x8d\x67\xae\x4f\x4f\x46\xcd\xd6\x06\x8b\xc2\x08\x50\x99\x54\xaa\xca\xdd\x62\xb1\x17\x57\xa4\x26\x17\x1b\xd1\x29\x37\xb9\x78\x7d\x17\xc9\xc9\x6d\x65\x7b\x96\x25\xab\xb9\x4f\x5a\x8c\xb3\x2e\x09\x52\x71\x17\x89\x1c\x4a\x4a\x37\xad\x92\xd2\xbe\xc1\x44\x15\x11\xd6\x9b\xc7\xeb\xae\xa3\x0e\x16\x09\x2f\x21\x15\x05\xf9\x6b\x65\x90\x0d\x52\xe5\xfc\x8c\x2b\x48\x52\x88\xa0\xa4\x71\x2d\x71\x6e\xc4\x9a\x25\x90\xe5\x3c\x71\xdb\x98\xf7\x9d\xc2\x49\x05\xe7\xcf\xcd\xc2\x5a\xb4\x7e\xf6\x51\x43\x46\x59\xb6\xc5\x89\xab\x22\x66\xe1\x7f\x6a\x51\x40\x40\xf0\xd8\x24\x83\xb3\xe1\x54\x76\x8c\x48\x5f\x79\x2e\xec\xa5\xbb\x43\xd5\xae\xc6\x9d\x3b\x07\xf0\x7b\x19\xd9\x72\x63\x17\x81\xea\xd4\xf8\x8a\x1b\x71\x93\xa2\x8b\x80\xd2\xb8\x33\x6c\xc9\x6a\xba\xb7\x6e\xfc\x00\x5c\x8f\x76\xe8\xd8\x84\x61\x78\xc4\xe3\xca\x96\x94\x26\x6c\x8b\x59\xbf\xc0\xa4\xd7\x2d\x94\x19\xb8\xc2\x84\x0d\x9f\xa4\xa1\xdd\x00\x2a\x64\xda\xa8\xb3\x0a\x1f\xf6\xa2\x5d\xce\x62\x22\x18\xc1\x6a\xfe\x7a\x41\xeb\xa7\xdb\x1a\xa7\x5f\x2d\x80\xfd\x74\x27\x55\x92\x2b\x41\xe1\x6b\xc6\x83\xaf\x11\x5c\x5d\xd4\xcc\xac\x29\x8e\x4d\xd5\xe9\x0b\x4c\x8f\x75\xa8\x74\xab\xb8\xf6\x66\x65\xee\x65\x22\xfc\x1b\xac\x3e\xb5\xd8\x7e\x7d\xd8\xc3\x4a\xa3\x2b\x96\xe4\x8b\x08\xa5\x7f\xf9\xe8\xee\x65\x35\x4d\xf3\x20\xe0\x1b\x0a\xcb\x2a\x4c\x99\xe5\x5e\xcb\x62\xbc\xb5\x44\x99\xe2\xa6\xb0\xee\xbd\x4f\x18\xf8\xe2\xf3\x05\xfa\xe8\xf1\x3e\x7a\xbc\x8f\x1e\x5f\x2b\x7a\x7c\x99\x99\xd1\x7b\xbe\xa0\xc6\x5b\xa9\x32\x87\x59\xc7\x15\xda\xda\xe6\x51\xdd\xce\x52\x17\x86\xc4\xd8\x5f\xec\x0f\x8d\x51\x31\xb5\xcf\xaa\xb3\x0d\xad\x86\x6c\x51\x35\xbe\x63\x11\x27\x16\x3e\xcb\xc6\xac\x96\xad\x3c\xcb\x0c\x92\x23\xf6\x03\x7f\x26\x4f\x44\x1c\x20\xac\x50\xca\xb5\x92\x1e\x44\xa1\x00\xc1\x95\x90\x98\x4d\xb4\x01\x46\x57\x38\x25\xb1\xa9\xb3\x15\x44\xb6\x59\xb3\xa8\x75\x68\x36\xa1\x44\x02\xe0\xa1\xd9\x06\x17\x9d\x30\x62\x26\xda\xcc\x44\x38\xc1\x9d\x4c\xdd\xc4\x80\xae\xff\xe0\xdd\xad\x7f\x38\x42\xf7\xfa\x1e\xa0\xb2\x3c\xde\x00\x34\xaa\x6d\x6c\x23\x36\x13\x3c\xcf\xbc\xa5\x8a\x4f\x4c\xc1\x45\x03\x38\x5d\x77\xb7\xc2\x60\x9c\xaf\x35\xc2\xb1\xd6\x78\x97\x13\xce\x9b\x04\x22\x6e\x84\xbc\x12\x12\x90\xe6\x12\x3e\xba\xca\x46\x3b\x1b\x2f\x69\x80\x37\xb1\x0c\x3f\xfa\x85\x5c\xb8\x67\x44\x82\xed\xc5\xdb\xb6\x4b\xe9\xaf\xe5\x14\xeb\xc6\x71\x2e\xb3\x3c\x7a\xef\x80\xb3\xa0\x37\x67\x6f\x17\x9d\xdb\xc8\x2a\x93\x5b\x67\xf9\xf1\x8b\xd9\x24\x3b\x07\x50\xb6\xf1\x8b\x9b\x5c\x64\x1c\x24\x9e\x64\xe1\xb2\xcd\x2d\x40\x55\xc6\xb3\xdc\x44\x8f\xd1\x30\x98\xa8\x91\xb2\xa9\x54\x97\x58\x45\x73\xcd\xdf\x0b\xa0\xa6\x1d\x45\xd5\x15\x5c\xf9\x65\xed\x94\x0d\x33\x38\x0d\x7b\x6f\x31\xdc\x77\xb0\x5b\x9b\xfb\xd5\x45\x58\xbb\x1b\x3b\xd5\xfd\x95\x6a\xc9\x07\xd6\x47\xf7\x89\x7d\xa2\x27\xba\x8a\x8a\x56\x8d\xbf\x1b\x6d\x95\x0b\x05\xed\x3c\x5e\x6f\x0b\xe4\x8b\x33\x8b\x33\x54\xbc\x68\xeb\x02\xb6\x38\xd9\x37\x2c\xf4\x6d\xbd\x27\x50\x39\xbe\xb0\x6b\xa6\x38\xd3\xc2\xba\xe2\xfa\x96\x14\x33\x23\x2f\x9a\xfa\x93\x08\xa3\x5c\x50\x77\xf6\x2b\xa9\xac\xed\xd4\x01\x76\xc0\xe3\xb0\x10\x4c\x84\x83\x1a\x59\xc6\xad\x8e\x23\x95\x63\x1f\xfe\x07\x34\xe1\x4a\xef\x9a\xb4\x5d\xe7\xbe\x16\x4e\x8c\x6a\xd8\xd3\x95\x84\xbd\xc5\x2e\xe3\x26\x58\xb6\x4e\x27\x8d\xb2\x59\x80\xe9\xd6\x6c\x8b\xed\x02\xd9\xde\xf8\x65\x37\xd8\xf9\xc6\x4f\x9d\xec\xb3\xc9\xb7\x4b\x30\x67\x5a\x3f\x5f\x25\xc0\x96\x42\x9d\x6d\xb8\xa9\x95\x9e\x42\xb4\x3d\x6b\x27\x03\xd0\x4c\x0a\xee\x70\x6c\xa5\xa9\xff\xf4\x7f\x99\x12\x3f\x66\x69\xfe\x13\x71\x31\x62\xe6\xf7\x03\x0f\xaf\xaf\x5f\x28\x70\x2b\x71\x4a\x0a\x64\x3f\x51\xc6\x00\x03\x24\x04\x8b\xe1\x64\x30\x4a\x3d\xba\xb8\x1e\xc3\x63\x3e\x21\x82\x11\x3d\x34\x97\x33\xed\x99\x59\x8a\x19\x9e\x01\x22\xea\x01\xc4\x9f\x81\xb8\x5a\x88\xfc\x86\xa4\x4d\x99\x36\xe0\x56\x9a\x59\xda\x94\xcb\xa2\xda\x24\xf4\x69\x44\x59\x0b\xc8\x58\x04\x31\x34\x53\xff\xad\xed\x7f\x33\x89\xfd\x7e\x70\xf7\xe3\xf8\x76\x78\x77\xfd\x70\x7b\x5a\x12\xdb\x4f\x2f\x1e\xee\xee\x87\xb7\x8d\xcf\x8a\x74\xc5\xbf\x3e\x0c\x1f\x5a\x1e\xb9\x06\x2e\x06\xdf\x0f\x4b\xa5\x5b\xff\xfa\x30\xb8\x38\xbf\xff\x65\x7c\xfd\x71\x7c\x37\xbc\xfd\xe9\xfc\x74\x38\xbe\xbb\x19\x9e\x9e\x7f\x3c\x3f\x1d\xe8\x2f\xc3\x77\x6f\x2e\x1e\x3e\x9d\x5f\x8d\x5d\x70\x6f\xf8\xe8\xe7\xeb\xdb\x1f\x3f\x5e\x5c\xff\x3c\x0e\xba\xbc\xbe\xfa\x78\xfe\xa9\x69\x16\x83\xbb\xbb\xf3\x4f\x57\x97\xc3\xab\xe5\x25\x62\x9b\x57\xa3\xb5\xfa\x64\x70\x91\x05\xc6\x99\x40\x4c\x9a\x2c\x2c\x69\xd3\xdf\xc0\x45\x70\x63\xe8\xf1\xf0\xc0\xfd\x65\x0a\xba\x1e\x6a\x16\xe8\xbc\x4f\x05\xf7\x18\x31\xef\x1e\xf4\x97\x2a\x14\xf4\xb6\xd9\xa7\xa5\xd1\x9e\xa0\x01\x9c\x15\x50\x18\x4a\x9d\x02\xe6\x84\x1f\xa9\x73\x28\x23\x53\xac\x3f\xa5\xe0\x5b\x46\x87\xa8\xba\xe1\xe5\x06\xed\x9c\x60\x08\xd6\x3b\x16\x2f\x3b\x0d\xb2\x9a\xd8\x0a\x94\x72\x82\x1c\x87\x26\x46\x6d\x37\x90\x99\x0b\x86\x53\x1a\x99\x1f\x2a\xa8\x91\xa8\x40\x48\xa8\xb6\x58\x22\xb0\x72\xcb\x73\x82\x7e\xfc\x4b\x31\x28\xf0\x14\x58\x03\x41\x5e\x2b\x04\x66\x1f\x88\xdc\xac\xea\x2a\xf2\x2c\xf5\xe4\x8e\xb9\x35\xe1\xc2\xb9\xb5\xf5\x62\xc1\xad\x93\xb3\x00\x25\xa9\xe4\xe3\xd1\xc7\xdb\xcc\xa8\x42\xe3\x27\xe8\x0e\x10\x1a\x64\xa1\xba\xeb\x5d\xcc\x92\x7c\x46\x19\xa2\x69\x96\x90\xa2\xd2\xf0\x84\xcc\xf1\x13\xe5\x0e\x75\xdf\x14\x27\x80\x75\xb4\xa2\x15\x3a\x44\xad\x07\xe5\x04\x0d\xe2\x58\x96\x19\x5c\x89\x72\x1c\xcb\x3c\x2c\x0f\x3b\x04\x36\x62\xb1\x67\x9b\x15\x3a\x2a\x8e\x1c\xac\xd8\xee\x31\x28\xea\xec\xb0\x7c\xf7\x6e\x85\xa7\x2a\x1f\xc7\x8e\x94\xc7\x1b\x09\x03\xf7\x58\x3e\x3a\xd6\xbc\x4a\x20\x70\x68\x20\xdb\xf5\x68\x61\x41\xba\x76\xea\x57\x76\x0c\x07\x6d\xb3\x3e\x5b\xc1\x6c\x57\x74\xe9\x66\x9c\x54\x2a\x0e\x75\xee\xaf\x54\xb1\xa8\xb1\xb3\x9d\x7a\x55\x9a\xa5\x31\x38\x92\x63\x4f\xff\x6b\xcc\xe3\x06\x3e\xbd\xf6\x5f\x2e\x15\xd9\xc6\xc1\xba\xad\xeb\x6b\xa9\xe5\x69\x5a\x7f\xcb\x52\x3a\xdc\x11\x2a\x4d\x77\x61\x10\xf0\xe2\x69\x04\x6e\x35\x4c\x99\xad\x22\x42\xbc\xdf\xc7\xd5\xcd\xd5\xe7\xd8\x57\xb6\xc2\x13\xfe\x54\x52\x2e\x53\x22\x25\x6e\xc1\xac\x08\x4c\x62\xdb\x30\x06\x7f\x42\xed\x87\x1d\xe9\xc9\x9d\xc9\x7b\xfd\xd5\x32\xa3\xcf\x6d\xa8\x19\xbb\x89\x6a\x81\x35\x76\xf1\xac\xe8\xda\x64\xb5\x69\xfe\x72\x50\x84\xac\x70\x11\x44\xf2\xb4\xb9\x59\x3a\x9a\xd5\xaa\x0b\xd6\x58\x1c\x26\x74\x95\xad\x1f\xe9\x12\xb4\xbe\x31\x90\xaf\xf5\x5f\xe0\xf2\xfa\xac\x41\x75\x25\xbf\x62\x58\x38\xd7\xd4\x88\x07\x9b\x5b\x68\x4b\x3d\x40\xd8\x24\x13\x16\xd2\x94\xcc\xa3\xb9\xf1\xe6\xe8\x2b\xe3\x60\xc4\x9e\x83\x0d\x29\x85\xdb\x0e\xc2\x96\x00\x04\xf1\xb3\x3e\x6e\xf4\xa9\x14\xc4\x0c\x22\x23\x85\x88\xda\x80\x10\x8c\xe3\xad\xa8\x7a\xb3\x82\xc0\x83\xfd\xda\x82\xd4\x37\x28\x71\xd6\x50\x85\xbf\xa9\xd0\x99\x9f\x5b\x50\x5f\x6c\x0b\x4d\xb9\xeb\x10\x82\x12\x67\x4d\x23\xd8\x41\x85\xb3\x57\x45\x25\xf6\x49\x91\x26\x87\x36\x9d\x58\x98\x02\x3d\x5d\xb7\xda\xff\xe6\x66\xf4\x6f\xc6\xef\x90\xb7\xe0\x5a\x04\xad\x79\x60\x62\x74\xa8\x65\x56\x97\x6f\x6d\x03\x1e\x24\x3a\x34\x60\x67\x5f\x41\x3c\xe3\xe0\xe6\xfc\xab\x03\xf4\x55\x98\xd3\xf5\xd5\x46\x07\xd0\x8e\xdb\x56\x39\x03\x6d\xaa\x14\xd8\x5f\x3e\x76\xb0\x57\x95\x93\x68\xf7\xcc\x1e\x44\xd4\x76\x0e\xf5\x97\xa5\x6f\xc0\x09\x0c\x55\xbb\x8c\x9f\xd4\x87\x15\x5b\x17\x90\x91\x71\xa9\x6c\x58\xbb\x78\xc4\x26\x8b\xaa\x93\xe7\xc0\x7b\x79\x3a\x9f\xd2\xad\x2b\x51\xe9\xf6\xea\x49\xc0\x3b\x0e\x77\x5d\x7e\x1f\xac\x48\x2b\x1e\x98\xc8\x66\x3e\x0d\xb8\x58\x5b\x34\x40\x1f\x27\xde\x34\xab\x92\xbd\xcc\x2d\x66\xe3\xa6\xac\x92\x7f\xde\x1b\xb9\x75\x08\xae\x1e\x34\xad\x88\x8d\xab\x6f\x11\xae\x7b\x2a\x7b\x59\x2a\xdb\x45\x5e\x41\x79\x70\xeb\x5f\xa0\xa7\x46\x8e\x0b\x9a\x71\x06\x57\xad\x4c\x78\x06\x5f\x2a\x57\xb6\xba\xce\xe7\x9a\x3e\xdf\x60\x4d\x56\x3b\x7d\xef\x4c\xe0\x80\x71\xbb\xd6\xc7\x5a\x1d\xea\x40\xd9\xda\x29\x9c\x9a\x1c\x42\x45\x53\x72\x80\x38\x4b\x16\x41\xb0\x83\x3d\xaf\x40\x6e\x26\x16\x68\x4e\xa8\x70\x9d\x58\x98\xb9\xb5\x92\xce\xd7\x94\xc6\xdb\x68\x64\x8b\x48\x93\xab\xc1\xe5\xf0\x6c\x3c\xbc\xba\x3f\xbf\xff\xa5\x01\x42\xb0\xfc\xd8\xa1\x08\x06\x2f\xdc\xfd\x72\x77\x3f\xbc\x1c\x7f\x1a\x5e\x0d\x6f\x07\xf7\x2b\x10\x06\x97\x75\xd6\x86\x5e\x97\xcb\x26\xf5\x6d\x1d\x04\x3b\x67\xe6\x6d\xe8\xbd\x8e\x33\x18\x74\x42\x49\x0b\xd6\xa0\x49\xb0\x67\x31\x11\x28\x26\x4f\x24\xe1\x59\x61\x56\x6d\x5c\xb0\x00\x84\xb0\xa1\xfd\x65\x40\x84\xd0\x66\x75\x8d\x4f\x90\x29\x51\x15\x54\xe9\xf4\x0d\x82\xc8\x87\x05\x61\x5f\x29\x44\x3e\x67\x09\x8d\xa8\x0a\x12\xf0\xb8\xb0\xee\x15\xe3\x3e\x84\x28\xd0\x15\xc4\xb5\xb3\x68\x94\x9d\xeb\xfc\xa1\x27\xbd\xae\xed\xfb\x13\xe5\x41\xb1\x56\xd6\x3d\xd9\x81\x62\xdf\xe2\x34\xae\x61\x76\x6d\x30\xba\x97\x30\x0f\xd4\x33\x61\x6c\x12\x5d\x0b\x9e\x57\xf3\x20\x57\xdf\x86\xcb\xe2\x64\x4a\xe7\x7a\x79\xa0\x4c\x37\x4a\x7d\xe3\x70\x97\x52\x3d\xc0\x1d\xe0\x5b\xd8\x18\xf1\x35\x03\x16\x6a\x65\x2e\x98\x89\xed\xc4\x48\x90\x94\x2b\xad\x80\x99\x88\x80\x03\x2d\x54\x51\x9c\xd0\xdf\x00\x09\x4a\x90\xa3\x20\x82\x02\x12\xed\xe2\x30\xe2\xd2\xa2\x34\x1c\x8d\xd8\xd9\xf0\xe6\x76\x78\xaa\x19\xd2\x11\x7a\x90\x00\xf2\x54\x9a\xfa\x99\x25\x6f\x23\x8e\x85\x91\x0c\x94\x49\x45\x70\x5b\x30\x18\x11\x82\x8b\xee\xfc\xc1\xf7\x37\x84\xef\x9a\xc9\x1b\x9e\x95\x6c\x53\xce\x00\x70\xd5\x5a\xcc\x35\x88\xcd\xdf\x79\xea\xd3\x2d\x7e\x2e\xad\x48\x08\x72\x01\x92\x48\x79\xd5\x5f\x70\xb5\x01\xc3\xb1\xfb\xfc\x4a\x7d\xde\xc0\xb7\xcb\xe6\x79\x0f\x21\x76\x52\x15\x80\x90\x06\x33\xd2\x17\xeb\xa8\xcc\xb3\x55\x54\x14\x6f\x01\x88\x51\x21\xfd\x09\x99\x61\x86\x44\xce\x58\x05\x21\x34\xb4\xb4\xd5\x83\x66\xd6\x3d\xaa\x7a\xcd\x70\xca\x73\x06\x4a\x03\x84\xb1\x36\x0c\x46\x66\x84\xa9\x15\x83\x79\x2b\xb8\x93\xca\x50\xf7\x17\xf1\xa4\x61\xa0\x6d\xa0\x27\x4d\xfe\x24\xa8\x18\xbb\xde\xb5\xec\x82\xf2\x4a\x4e\x25\x7d\xa8\xfc\xfd\xdc\xac\x65\x63\xf9\xb8\x75\x77\xf7\x58\x3e\xae\xee\x2a\x26\xd1\xe3\xba\x97\x4d\x35\x03\x32\xb1\x05\x77\x6b\xc6\xbe\x85\x7e\x6a\x2b\x4a\x40\x9d\xe5\xe8\x11\xfd\x70\x7f\x79\x81\xa6\x54\xcb\xbd\xfa\x5a\xb9\xc2\x5a\xc6\x7e\x10\x89\x2f\x62\x6f\x64\x90\x5c\x24\xfe\xee\x85\x8d\x77\xa2\x54\x20\x25\xe8\x1b\x0d\xcf\x88\x33\xf6\x0a\x8b\x69\x57\xa9\x28\x21\x30\x8b\x79\x6a\xe6\x71\x2c\xf3\xe9\x94\x7e\x3e\x52\x58\x7c\xd3\xb2\x1e\x26\xaa\x62\xfc\x37\x3e\x19\xeb\x11\x6d\x79\x11\x37\x35\x87\x6c\x1d\x58\xbf\x6c\x76\x66\x67\xe6\xdd\xff\xcb\x27\x90\x53\x9e\x09\x0e\x38\x7b\xe0\x9d\xb3\x91\x0a\xf6\x15\x47\x49\x47\xc8\x25\x2a\x95\xa0\x44\x22\x2e\x04\xb1\xa9\xe8\xa6\x24\x62\x86\x85\xa2\x60\xad\x75\x50\x24\x25\x80\xf4\x62\x8b\xc2\x4a\xc5\x73\x5c\x80\x11\x4f\x08\x01\x07\x4f\x46\x93\xf5\x94\xde\xd3\x92\x6f\xb2\x72\x02\x6d\xe4\xa9\x45\xa7\x04\x83\xcc\x4a\x11\x6b\xf8\x44\x98\xda\x89\x7e\x02\x4d\x34\x24\xc7\x77\xf3\x32\x98\xca\x84\xe7\x67\xc5\xe5\xe6\x2b\xe4\x07\x51\x4d\x4a\x60\xb8\xe7\x6d\x42\x92\x75\xa9\xb7\x39\xfa\x9f\x3a\xfb\x8e\xe1\xd5\xfa\xba\xac\x08\x8d\xb7\xab\x5d\x54\x28\x2e\xc2\x5a\x1d\xba\xfb\x86\x70\x39\x92\x18\x2b\x46\x00\xd3\x60\x95\xd3\xea\x9e\x9b\x3e\x35\x6d\x55\xba\x5c\xb9\xe5\x1b\x60\xc3\x94\x9a\xf9\x44\x20\x75\x72\x17\x81\xe8\xeb\xa4\xc8\xc3\x40\x1e\x44\x02\x21\xd4\x4b\xad\x58\xa6\x3a\xb2\xe6\x7c\x5e\xb2\xc3\x1d\x64\x74\x33\x18\x2d\x34\x92\x4c\x10\xa8\xd7\x7f\x82\x6e\x12\xa2\x25\xaf\x5c\x4b\x5f\x79\x92\x38\x1c\xad\xe5\xd2\xe1\x5a\xd8\x6f\x2f\x3e\xaf\x40\xf7\x58\x32\x31\x87\x23\xb7\x7c\x66\xc1\x1a\xec\x1e\xd8\x20\x58\x5f\x30\x21\x83\x21\xb1\xac\x45\x02\x87\x5f\x98\xb8\x59\x30\x25\xe1\xd2\x45\x46\x7f\xd3\xec\x57\x10\x39\xe7\xad\xc9\x84\xe1\x6c\x5f\x66\x0e\x6e\x29\x5f\x70\x12\xee\x3e\x6c\x8b\xab\xee\x20\xd7\x54\xee\xc0\x92\x88\xb3\x6c\x8a\xbe\x00\x80\x8f\xfe\xb0\xa8\xa6\xf6\x6e\xb5\x43\x83\x5b\xb2\x30\xb5\x85\x08\x63\x85\xeb\xa2\x50\x66\x16\xc6\xf7\xea\x3f\x2f\x0c\xc8\x45\x4a\x00\x55\xb2\x28\x96\x85\xf4\x5d\xbb\x1e\x97\xb5\x89\x23\x45\x13\x7a\xc0\xcd\xac\xcd\x62\xff\x83\xc8\x6b\xc3\x82\x64\x09\x1b\xcd\x6e\xb1\x99\x72\xa3\x3a\xd6\xce\x40\xb7\x75\x81\x81\x44\x5b\x88\x1d\x2f\xe5\x09\x2b\x51\x4b\x69\x02\x3d\xda\xd6\xfa\x68\x5b\xb6\x10\x84\xa7\x3d\xc0\xc6\x53\x02\x92\xe1\x0b\x67\x57\xf5\x92\xb7\x06\xea\x55\x59\x4a\xa5\xdd\xe9\x94\x92\x54\xfa\x42\x9f\xfb\xb3\x2d\xbd\x65\x7a\x32\x8b\x31\x24\x79\x6e\x13\x31\x53\x9a\xbf\xb1\xf4\x43\x9b\x24\x46\x26\xa3\xdf\x60\x01\xdb\xb5\xf3\x5e\x8e\x0c\x0b\xc2\xd4\x88\xdd\xea\x51\x98\x2f\x8a\xa8\x89\xa2\xd0\x3f\x29\xca\x62\x4e\x11\xb6\x5f\xc1\xa2\xb7\x05\xad\xc9\xb1\x79\x09\xd4\xc8\x17\x4c\x3c\xff\xde\xbc\x63\x70\x00\x2c\x0e\x8e\x9e\x2a\x9d\x16\x2a\xb7\x16\xf6\xa2\x39\x85\x34\xfc\x98\x48\x7b\x79\x50\x65\x71\x16\xbc\xa8\x9c\x13\x87\x48\x0c\x9f\x79\xfe\xd5\xc4\x5c\x9d\x52\xcf\x9c\x31\x4d\x8e\x58\xd0\xc7\x12\x00\x4b\xa3\x58\x6f\x28\xf6\xc3\x3e\xd3\xd8\x3b\xa9\xe0\x9f\x66\x87\xb8\xa0\x33\xca\x82\x1a\x37\x76\x7a\x29\xce\xc0\x14\x6b\xce\x20\x9f\xfa\xfb\xe7\xde\x66\x04\x1c\xc1\x88\xff\xfb\xbf\xfe\xe7\x88\xb6\x79\x2a\xe4\xd8\xae\xc0\x3e\xec\xe4\x7a\xdb\x12\xee\x7c\x80\xac\xd1\x82\xd8\x10\xe8\x9f\xb2\x94\xe5\x50\xfc\x6a\x2f\x37\x4d\x34\x5c\xcd\x8d\x6b\xb6\x4c\xee\xe0\xc7\x10\xf9\xf2\x5b\x36\x60\x71\x85\xf3\xbe\xf0\xd0\x06\x01\xb2\xae\x6e\x82\x09\x6c\xd4\xed\x57\x2e\x94\x0a\x83\x0a\x00\xee\xb6\x09\x24\x9c\x63\xf9\x72\xd1\x22\x8d\xc5\x68\x8c\x81\x37\xbc\x23\x57\xc5\x8d\x98\x41\x9a\x04\x44\xbd\x2b\xb9\x24\xc2\x1c\x68\x8f\x84\x64\x89\x27\x84\xef\x83\xb0\xc1\x15\xee\x2f\x92\x62\xba\x56\x88\xbb\x7e\xbf\x19\x5c\xb0\x64\xff\xc6\x33\x22\xc6\x71\x5e\x8a\x67\x5e\xd5\xf6\x8d\xfe\xe8\x2c\x57\x8b\xd5\xed\xcb\x04\x47\x8f\xeb\x00\x3a\xea\xf7\x5b\x9a\x5d\x2d\x18\x06\x51\x27\x65\xe1\xb0\x05\x2e\x91\x54\xe0\x12\x6d\x18\x64\x49\x6b\x87\x8b\x86\x41\xc1\xf1\x40\xb8\xb7\x37\x91\x01\x75\x86\x91\xa3\x49\x5e\x58\x39\x3c\x4c\x7e\x7c\x34\x62\x1f\x4d\x9d\x09\x50\x3c\xcc\x00\x22\xc8\x41\x21\x9f\x33\x2e\x49\x29\x29\xaa\x01\xfa\xde\x26\x35\xda\x61\x34\xcb\xa4\x95\x82\xef\x5b\x89\xa4\x6f\x0e\x7c\x59\xdf\xf0\xfa\x94\x9b\x29\x70\x2b\xa9\x27\xa2\x19\xd5\xb4\x33\x6e\x3c\x69\xeb\x4f\xbd\x6b\xe5\x94\x22\xcc\x08\x20\x90\x54\xb2\x38\x40\x7e\x7a\x15\x82\x48\xc8\x13\x01\x0b\x2f\x8c\x31\x2c\x70\x50\x36\x35\xb5\xb0\x93\x55\x07\xa8\xc8\x48\x04\xb6\x80\xe2\xea\x08\xca\x79\x5b\x4d\xb4\x58\xce\x48\xd9\x3a\x79\xaa\x29\x56\x62\x0d\x29\x74\x10\x16\x7a\x58\x10\x85\xc8\x67\x45\x6c\x9d\xc2\x7b\x97\xde\x56\x8f\x88\x47\xcd\x19\x3a\xed\x22\xd2\xee\xa9\xa2\x36\x11\x9b\xd4\xec\xf2\xf7\x62\x77\xef\xdb\x7c\xb6\x39\x66\xb1\x4d\xd2\xb4\xb2\xb4\x96\x29\x60\x76\xc6\x0e\xe4\xc3\xd7\x6d\xaa\x61\x80\x90\x6d\xda\x34\x50\xde\x70\x91\x39\xbd\x48\x4b\xe6\xe0\xf1\xe7\x42\x0b\xa8\x39\x53\x34\xd1\xc4\x61\xc7\xa0\xb5\xe6\x9c\x79\x8c\x3a\x08\xb6\x6e\x83\x41\xa3\x52\x52\x36\x1b\xdb\x95\x74\xf9\x86\xdd\x2e\x86\x32\x4d\x5d\x9a\xa6\xcc\x8f\xdf\xbb\x86\x96\xdb\x79\x0d\x59\x03\x44\x95\xcb\x74\x04\xc1\x9a\x71\x37\x19\x8b\x2d\xe6\x12\x24\xc7\x34\x36\x4b\x41\x4d\x39\x5c\x98\xe8\x3a\x46\x0a\x10\xeb\xea\xd0\x02\xc5\x15\x22\x6d\xf6\xa2\xc9\x49\x82\xe0\x71\xd5\x92\x9e\x29\x5b\xd3\x32\xcf\x99\x17\xd1\x6c\xbd\x23\x9f\x7c\x5e\xc9\xf0\xc4\xae\x3b\x1b\x21\x8f\x93\x64\x82\xa3\x47\xaf\x6c\x78\x95\x9b\x0b\x87\x17\xaf\x05\x54\x28\x88\x65\x88\x4b\x0f\x34\x02\xe9\x26\x74\x60\x19\x70\x19\x3b\xec\xa2\x73\xb3\x6a\x16\x1d\xcb\xa0\x09\x99\xd1\x9b\x70\xfb\x98\x64\x09\x5f\xa4\x2d\xf7\x59\x35\xab\x6d\x9b\xe0\x91\xb6\xa4\xba\x9d\x5e\x65\x15\xa6\xb7\xf6\x65\x56\x4b\x91\xd9\x01\xd4\xd1\x1a\x5c\xf2\x53\xc2\x27\x60\xe5\xb3\x5a\xb6\x4b\xfb\x08\xb2\x0f\xaa\xe7\x79\xdd\x64\x94\xea\x89\xa4\x32\x4b\xf0\x62\x59\x0f\x26\x0d\xe2\x65\xf7\xcd\xa4\xcd\xaf\x36\x82\x75\x0f\x20\x6e\xfc\xfc\x25\xc0\x6b\x2f\x9c\x24\x60\xde\x35\xfc\xab\x62\x4c\x32\xf9\x67\x47\xc6\x6f\xaa\xf8\x88\x29\x3c\x73\x9b\x6b\x85\x4b\xfe\xcc\x88\x90\x73\x9a\x95\x0a\xe5\x6d\x1d\xb1\x6c\x29\xda\xfe\xc7\xc4\xe7\xae\xc1\x3b\x79\x76\x68\x40\x33\x34\x7d\xc8\x0c\x47\x85\xf1\x2f\x4a\xb0\x94\x74\xba\x08\xb0\x2e\x7c\xf0\x27\x64\x14\x95\xb5\xe5\xa0\x36\x55\x13\xa3\x31\xe3\xdb\x4d\xb2\xf7\xf6\x89\x6e\x0f\xe5\xe3\x47\xe3\x10\x54\x4c\xdf\x27\x75\x60\x13\x77\x53\x5b\x80\x93\x56\x10\x52\x93\xd5\xbe\x59\x72\xf6\x52\x3c\x9a\x76\x33\x42\x21\x4c\xda\x61\x5b\x45\xc6\x63\x50\x84\xf8\x2c\xaa\x94\xdd\x07\x9b\xaf\x15\x27\x67\xfe\xd4\xc4\xe9\xf1\x2b\x20\xcd\xbf\xf8\xf8\x00\xc9\xad\x70\x9f\xba\xd0\xc5\x19\x49\xc8\x4e\x82\x80\x37\x20\x92\xaa\x87\x3d\x20\x8f\xa5\xa4\x51\xe0\xcb\xaf\x36\x2e\x6c\x10\x9b\xdc\x82\x1e\xd3\x3c\xf4\x9f\xcd\x40\x6d\x78\x72\xd3\x2e\x82\xfd\x0b\x56\xb9\xab\xee\xd2\x04\x43\x67\x5a\xb0\x24\x57\x74\x53\xa2\xab\xa2\x53\x2f\xaf\xec\x23\xa9\xbd\x71\x14\x6f\x6d\x5c\x9f\x48\x97\x88\x83\x95\x07\x60\x23\x0e\x54\xe7\xd3\xdd\xe8\xc2\xfa\x09\x15\x47\x33\xa2\x4c\x4d\x72\x5f\x78\xfd\x3d\xd1\xc4\xce\x72\x10\x76\xb4\xfa\xcd\x87\x7c\xbd\x53\x7b\x47\x94\x74\x57\x42\x0d\xd9\xcf\x6e\xce\x1e\x6e\xc1\x7e\x1c\x4b\x23\xb8\x7e\xf1\x72\xcb\xd6\x79\xfb\x76\x64\x36\x7b\xfd\x77\x24\x50\x99\x39\xc6\xf6\x0b\x9f\xa9\x5e\xc2\x68\xc2\x25\x5c\x3b\xb3\x46\x6f\xcf\xf5\xaa\xa4\xfd\xa5\x8b\x5e\xeb\xd3\x78\x75\x54\x05\x75\xf7\xf2\xe0\x7a\xf2\xa0\xc3\x7d\xdc\xc3\xcb\xbf\xed\x18\xec\xe7\xfd\xb3\x07\xc2\x61\xed\x4a\xdc\x9d\x88\xf8\x8e\xc8\x64\x2f\x24\xc5\xda\x56\xbc\x96\xbc\x78\xe8\x80\x77\x0a\x18\x9b\xfd\xdd\xa2\xfd\x38\xc9\xb7\xd6\x0d\xf4\x72\x17\xec\x6a\x7a\xd9\x09\x7d\x00\x06\x25\x86\x54\xdd\xdc\x16\xb5\x80\xc3\x1b\x84\x8c\xd5\x7c\x0f\x2b\x82\xf1\xec\xf0\x3a\x85\xe1\xd5\x96\xf3\x25\xb6\xd7\xe6\x65\x75\xde\xdc\x97\x24\xb5\x75\xc7\xb2\x0b\x1d\xe5\x85\xbd\x38\x96\x1a\x83\x0f\xfa\x98\xd8\x6e\xb7\x68\x03\xda\x8b\xdb\xb2\x5d\x1e\xb2\xa6\x8a\x5f\xdb\x67\x96\xbb\xb4\xb3\x71\x26\xc8\x94\x7e\xde\x48\x14\xbf\x81\x4f\xad\x7a\xa9\x97\xb9\x52\x43\x0c\xdc\x33\x50\x73\x2c\x88\xdb\xb3\x2b\x6d\xeb\x0c\x8d\x58\x91\xac\x67\x33\xf5\x1e\xc9\x02\x71\x51\xfa\x69\x53\x5c\xc2\xdd\xd7\x3b\x33\xfb\x3a\x57\x2a\x93\x27\xc7\xc7\x33\xaa\xe6\xf9\xe4\x28\xe2\xa9\x09\x37\xe7\x62\x66\xfe\x38\xa6\x52\xe6\x44\x1e\x7f\xf7\xc7\x3f\x16\x5b\x3c\xc1\xd1\xe3\xcc\x20\xbd\xd4\xfd\x4e\xe5\x2d\x27\x58\x6e\x17\xd9\xe3\xb2\xaa\x5e\x38\xbb\x36\xe8\xc6\xe5\x33\x16\x65\xf4\x83\xe8\x51\x53\x31\x4c\x2a\x5c\xd4\x4f\x80\x54\x39\x3d\x4d\x34\xc7\x59\x46\x58\xbb\xd9\xc1\xe4\x3e\x6e\xc1\x7a\x5c\xf6\xa4\x1d\x21\xf9\x9c\x25\x98\x95\x11\x01\xa0\x18\x90\x20\x11\x61\xca\x66\xab\x17\x35\x84\x81\x1a\x0d\x2a\x8d\xe1\xff\xeb\xe5\x6d\xc0\x1c\xa9\x2c\xaa\x69\xb9\xe1\xd8\xca\x96\xae\xde\x21\x0e\x96\xae\x5a\x4d\xb4\x58\x3b\xe2\x56\x6d\x59\xde\xdc\x5d\xbd\xa6\xf4\xfa\x55\x56\x04\x67\x63\xf2\x59\x33\x39\xb9\x29\x86\xd4\x83\x24\x12\x0d\x7e\xbe\x43\x72\xc1\x14\xfe\x7c\x82\x2e\x29\x03\x01\xf6\x07\x9e\x0b\x89\xce\xf0\xe2\x90\x4f\x0f\x53\xce\xd4\x1c\x5d\xc2\xff\xda\x9f\x9e\x09\x79\x44\xbf\x10\x2c\x2c\x7f\xb0\xd5\xc8\x7c\x61\x6b\x4d\x42\x22\x67\x12\x91\x27\x7d\x42\xff\xf8\x1f\x28\x35\x2d\x9f\xa0\x6f\x8f\xff\xf8\x1f\xe8\x0f\xf0\xff\xff\x7f\xf4\x87\x16\x4d\x7f\x3d\x14\x2a\xa8\x59\x7b\x5b\x76\xe7\x1e\x54\x56\x6a\x83\x32\xde\xa7\x82\x17\x3b\xd5\xd8\xf2\x23\x8d\x1e\xf9\x74\x3a\xd6\x84\x61\x72\xcb\xc6\x58\xd4\x10\x8c\x37\x84\xf4\xa4\xb6\xe8\xb0\xa0\x06\xe9\xde\x95\x35\xb1\x9d\x1a\x10\x02\xc7\xae\x65\x5e\x14\x5d\x85\x20\xa2\x52\x21\x5b\x2a\xe1\x2b\x12\x6b\xae\xba\xce\xe9\x70\xd6\x3d\x97\x8f\xec\x2c\x38\x21\x68\x47\x58\x48\xdb\x07\xfe\x85\x51\xac\x26\xd0\xc7\x2e\x64\xe3\x71\xa8\x85\xd7\x7e\x31\x31\x93\x30\xb5\xb7\x8a\x97\x94\xb5\xce\x57\x87\x4a\xde\x71\xb1\x95\xbe\xf5\x48\x6a\x31\xdb\x1d\x4b\xf8\xb8\xf2\xad\x61\x49\x77\x48\x5a\xe6\xc2\x43\xeb\x1a\xbb\x88\x2d\xf4\xb7\xda\x8a\x49\x85\x09\x2e\xeb\x76\xe8\xf5\xd4\xcf\xfc\x27\xab\x86\x09\x91\x66\xee\xed\xa2\x84\x19\x8c\x56\x8b\x48\x9a\x25\x36\x8c\xb8\x01\x7f\x6f\xd5\x86\xde\x79\xc8\x05\x68\x1c\xc2\x1e\x21\xe5\x83\x39\xc9\xd6\xe6\xb4\x37\xef\x67\x2e\x22\x72\xca\xb7\x0b\x7b\x4d\x28\xab\xc5\xcb\x77\xaf\x8e\xe3\x57\xef\xc2\xd6\x41\x72\x10\xb5\x3c\x2e\x94\x05\xe3\x16\xb0\x85\x11\x02\x6c\xcc\xf2\x6c\x00\x63\x6d\x17\xf0\x8b\x35\xb8\xfe\x2d\xb8\xb6\x31\x1c\x17\x0c\xcf\x55\x7b\xa8\x14\x79\x10\x58\xf3\xc2\x0d\x11\x2b\x4d\xd9\x9e\x03\x24\x30\xc4\x41\xaa\x39\x66\xc6\xa4\x30\xc5\x11\x65\xb3\x83\x00\xac\x10\x80\x03\x42\x0e\xdc\x44\x17\xf7\x58\x3e\xee\x36\xb6\x6f\xeb\x32\x86\x34\x2e\x4a\x69\x59\x78\x11\xe3\x4b\xa0\x35\xa4\x36\x85\xe5\x63\x1b\xbe\x4e\x0d\xdc\x6b\xc9\xe8\xfc\x52\x38\x48\xb0\x65\xe3\x73\x89\xc8\x24\x54\x61\x00\xb9\xdf\x15\xb0\xb5\x50\x7f\x2e\x97\x0c\x7b\x2c\x8e\x2a\xc6\xe5\x92\xf1\xcb\x39\x17\x6a\xbc\x21\x3a\x68\x35\x99\x9a\x91\xc3\x04\x60\x3d\xf8\x13\x11\x4f\x94\x3c\x97\x41\x36\xd7\xa1\x45\x63\xa7\x0a\x02\xd9\x00\x85\x31\xcd\x38\x64\xad\x4c\x51\x8a\xd9\xc2\xf0\x26\x7d\x9e\xb1\x7c\x94\xbe\x9c\x27\x92\x29\x4e\x92\x03\x24\x48\x2e\x4d\x39\x59\x49\x92\xe9\xa1\x2b\x88\x10\xa3\x84\xcf\x68\x84\x13\x34\x49\x78\xf4\x28\x47\x4c\xdf\xcd\x6c\x66\xf8\x42\x26\x78\x44\xa4\x0c\x84\x99\x22\x4f\xda\x66\xaf\x41\x2d\x4f\x45\x44\x4a\x19\x95\x8a\x46\x4e\x4a\x29\xa0\x09\x4c\xe5\xe6\x08\x83\x15\x16\x72\x01\x61\xb8\x5a\xb8\x22\x06\xa2\x31\x67\xb6\x74\x0e\xdc\x90\x16\x79\xcd\xc5\x65\xb7\x1d\xa0\x1d\x00\xc9\x39\x0a\x19\xab\xf2\x81\x5c\x71\xa4\x4e\xed\x67\x70\x8c\x97\x91\xc0\x6d\xf9\x44\x79\x82\xf4\x27\xad\x04\x6e\x03\x61\xdc\x3e\xea\xbc\x24\x2c\xf8\x60\xec\x3d\xc3\xb5\x82\x21\xb7\xa0\x59\xad\xa2\x69\xbd\x8a\x20\x65\x40\xb5\xa6\xaa\xa3\x9a\xb2\x28\xc9\x63\x5f\xaf\x4f\xdf\xba\x4f\x9a\x48\xdc\xf2\xe8\xb5\xd7\x77\xf3\x01\xc2\x12\x3d\x93\x24\xd1\xff\x35\x41\xe7\x87\x1e\x3e\x5f\xb3\x64\x53\xe2\x00\x3a\x71\x5c\xba\x95\xa2\x60\x12\x7b\x52\x66\xd6\xdf\xdb\xeb\x72\xe6\x95\x92\x99\x5e\x9e\x35\x39\xb4\x5e\xe9\x56\xa8\xd1\xd2\xd8\xca\x64\x0b\x16\x84\xf6\x41\xb5\x0b\x2b\x25\x03\xa2\x68\xca\xb0\x37\x14\x07\x4f\x9f\x68\x51\x52\xd9\xf6\xb6\xd4\xc0\xa8\x67\xd4\xc9\xba\x18\x12\xc5\xc6\x16\xf3\xca\x54\x6a\x48\x15\xd4\xd4\xe2\x37\x13\x02\x35\x21\x8f\x22\x42\xe2\xc6\xf8\x64\x3d\xa2\xbd\x83\xd2\xbc\xc1\x6a\x6e\x40\x0f\x52\xae\x4c\x45\x4f\x03\xa5\xe9\x2c\x9f\x06\x7b\x71\x92\xf0\x09\x5c\x48\x80\xb2\xe9\x92\xa6\x83\x84\x4b\x33\x6f\x12\xa3\xaf\x83\xfb\xc5\x03\x72\x7c\xd3\x8c\xf9\x58\x5a\x91\x3d\x40\xd8\xac\x9a\x5c\x5b\x71\x36\xcb\x45\xe9\x8e\xd0\x4d\x05\x45\x26\x2c\xea\x8e\xab\x98\x62\x07\xb5\x2d\x7c\x1b\x54\xce\xca\x24\x5e\x6e\x87\xd6\x44\xe5\x2c\xf5\xb9\x03\x54\xce\xca\x3c\x5b\xb2\x3a\xf8\xec\x45\xb3\xd1\xf5\xa4\x2e\x78\xf7\x14\x41\x83\x66\x66\x44\xbc\x12\x09\xba\x03\xb9\x68\x22\xc4\xfd\x42\x1c\xad\x94\x6e\x7c\x5b\xc4\xd1\xca\x60\xf6\x19\x71\xb4\x32\xd4\xfd\x45\x1c\x6d\x18\x68\x07\xc4\x51\x13\xf6\x31\xd6\x44\xdd\x8d\x29\x40\xca\xd3\x24\x9f\xde\xc1\xbd\xbb\x74\x8c\xa7\x26\xa4\xc4\x5c\x63\x4e\x94\xb4\x00\xdc\x30\x5a\x9b\x1d\xdb\x16\x28\x57\x71\x4f\xad\x4b\x7b\xde\x2f\x4b\xa5\x31\x24\xac\xe7\x90\x39\x08\xfd\x20\x60\xa1\x8e\x70\x66\xd1\x06\xda\xea\xe2\xec\x4f\x5e\xf5\x7a\x60\xae\x00\x94\x58\x62\xf5\x9d\x60\xce\x2e\x2b\xa5\x25\xe6\xfc\xd9\x4a\x8e\x40\x7e\x86\x18\x5b\x49\x0f\x3a\x1d\x5b\x9b\x42\xdb\x8a\x51\xa6\xc8\xac\x2a\xd2\x17\x87\x85\x32\xf5\xa7\xef\x56\x72\x20\x83\x03\xe9\xac\x17\x41\x81\x07\xef\xfe\xb2\xcf\x48\x8c\xa2\xb9\x56\xda\xa5\xd6\xae\xf5\x74\xcc\x8d\x2a\x51\x8a\xa9\xd3\xf3\x73\x69\x9c\x8d\x54\x8e\x58\x09\x38\xf5\x08\x7d\x84\xaa\xb5\x38\xcd\x12\x72\x80\xfc\xfc\xa8\xa6\xa0\x51\xfe\xed\xb7\x7f\x22\xe8\x5b\x94\x12\xcc\x4a\x26\x16\xd0\xea\xf5\x95\x07\x40\x83\x6a\x4e\x46\xac\x71\x2b\xd0\xf0\xb3\x29\x84\xe5\x22\x40\xcf\xd9\x94\x3b\x93\x0d\x54\x63\xc4\xd1\x1c\xc9\x7c\x62\xca\x09\x07\x26\x36\xa7\xe7\x5d\xf0\x19\x84\x2e\xc0\x4d\xec\x06\xbd\xec\xf4\xbd\x6c\x54\x88\x75\x40\x77\xbd\x85\x07\x70\x7f\x1c\x4a\x52\x02\xb5\x6a\x70\xa3\x1a\x8e\x17\x1e\x78\x69\xd0\x6b\x0f\x8c\x57\x29\xe2\x69\x86\xad\xaf\x47\xcb\xd0\x10\xe0\x0d\x7e\xd3\x3c\xc1\xc2\x1e\xf9\x11\xd3\x7a\xb0\xd6\x89\x78\x2e\x93\x05\x8a\x39\x23\x07\x40\x09\x79\x34\x37\xfa\x8e\x56\xa9\xb1\xad\xaa\xf1\x44\x65\x8e\x13\xfa\x1b\xb4\xe5\x8a\x78\x48\x85\x0d\x18\xd7\x9c\x42\x3f\x11\x4e\x10\x81\xaf\xc2\xbc\x49\xd4\x4d\xc9\x0f\xb1\x6d\x2b\xbc\xbe\x23\xb6\x6d\x89\xaa\x7a\x6c\xdb\x66\xc6\xb7\xb7\xd8\xb6\x95\x3d\xef\x86\x6d\xdb\xb4\xe5\x1b\x60\xdb\x96\x9a\xf9\x62\xb0\x6d\x2b\x2b\xfa\xc5\x60\xdb\x56\xe6\xd5\x63\xdb\x7e\x21\xd8\xb6\xab\xf9\x48\x23\x7a\x6b\xf3\xe1\x5d\x0f\xbd\xb5\x51\xb5\x6d\x67\x11\xdb\x42\x65\x81\x20\xfd\xca\xe8\xad\xa5\x09\xf4\x91\xaa\xeb\x47\xaa\x36\x12\x9f\xed\x5b\x0f\xcf\x85\xaf\x56\x2f\xb2\x8e\xf8\xad\xa5\xfd\xe9\x6c\x75\xde\x05\x25\xbe\xac\x14\x0c\xce\xaf\xee\x32\x70\xb8\x8a\xd2\xa2\x3e\x6b\xc9\xc8\xe1\xee\x19\xa5\x35\x8c\xa4\xe8\x29\x77\x83\x18\xeb\xca\xf2\x7a\x77\x99\xa1\xc5\x5d\xfa\x45\x9c\x36\xb7\x9b\x94\x63\x97\x86\xba\xa6\x5f\xca\x0d\x02\xfc\x53\x8d\x54\x93\xd0\x94\xee\xaa\xd9\x55\x17\x99\x47\x15\x03\x45\xb6\x96\x61\xab\xaf\x27\x33\x1c\x23\x1b\x57\x12\x8b\x01\xf2\xc4\x7c\x39\xa3\x52\x89\xd6\x28\xb1\xda\x08\xb7\xf1\x80\x67\x79\xe7\xd0\xa2\x60\x55\x67\x9b\x7d\x96\x92\x94\x8b\x55\x21\x6a\x8d\x5f\xda\x3a\x36\x9b\x7c\x4a\xb2\x39\x49\xb5\x10\x34\x5e\xb7\x91\xae\xfb\xed\xd3\xaf\x6d\x16\xa0\x09\x19\x2d\x11\x41\xe0\xdf\xd6\xef\xc6\x06\xdb\xb3\xf3\x76\x6f\xbb\xcd\x16\x7d\x74\x4d\x07\x8a\x43\x5f\x5e\x6e\xa8\xb2\x2f\x95\xa2\x18\x80\xbe\x1b\x43\x75\x7c\xa4\xd4\xea\x60\x9c\x25\x61\x38\xcb\x10\xbc\x8a\xaf\x6c\x95\xe7\x35\x22\x34\xea\xde\xeb\xb0\xc4\xef\xfa\x71\x3b\x2d\xf8\xb3\xf5\xe5\x01\xb7\xbe\x24\xe2\x30\x94\xa8\x4b\x83\xa9\xaf\x57\x89\x4a\x9c\x26\xb6\x05\x91\xe4\xa2\x35\x5e\xb7\x8b\x01\x38\x52\x39\x4e\x40\xcd\x0b\x4b\x53\x56\x37\x75\xb2\x68\x48\x20\xed\xe6\x61\xa0\x4c\xfd\xf9\xdf\xd7\xda\x4d\xad\x92\xd8\x75\x83\x72\x5a\x38\x8a\x88\x34\x36\x69\x1b\xcf\x8d\x27\xfc\x09\x2a\x69\x6d\xb3\xab\xfa\x28\xeb\x79\x6b\x06\xef\x41\x9d\xe3\x82\xd4\x8d\xb8\x30\x17\x3c\x9f\xcd\x9d\xed\x45\x9f\x19\x3d\xb5\xa6\xbd\xfc\xa9\x66\x5b\x5e\x7b\x2f\xbf\xcf\x69\xb2\x99\x65\xeb\xae\x54\x63\xec\xd3\xf9\x3d\x92\x73\x7f\x5a\x27\xd0\x6c\xe3\xc6\xd6\x07\xdd\xbd\x4f\xfb\xad\xf7\x6f\x40\x37\x07\x0e\xc8\x74\xca\x93\x04\x2c\xf4\x92\xa4\x4f\x44\x34\x77\x0f\x13\xbe\xa7\xeb\x61\x10\xfa\x01\xc0\xd7\x45\x8a\x49\x27\xf9\xeb\xc6\x88\x86\x12\xb9\xd1\x57\x9d\xfc\x26\x02\x91\x33\xc2\x9a\x6c\x53\x3f\xd7\xcb\xbb\xbc\xb3\x38\x50\x17\x14\xb8\xb3\x58\x50\xb7\x24\xaf\x1c\x0f\xba\x62\x1e\xfb\x1a\x13\x5a\x61\x76\x3e\x44\xb3\xb8\x66\x5c\xa0\x8d\x51\x7c\x06\x7a\x89\x47\x6c\x50\xca\x4c\x71\x65\xb0\x27\x8b\x22\xb4\xdd\xe8\x10\x21\x33\x83\xc2\x1c\xd6\xb0\x02\xee\x27\xfd\x17\x68\x3a\x06\x06\xd8\x44\x8a\xba\x68\x50\x88\xcb\x27\xf1\x21\x8e\x16\x51\x42\xa3\x40\x67\x9e\x09\x9c\xcd\x9b\x38\x9e\xdb\xf9\x1e\xbf\xe8\xad\xf0\x8b\xda\xaa\x4d\xad\x13\x89\xef\xe8\x8a\xe1\x94\xf4\xb8\x4a\x4d\xb8\x4a\x07\x1e\x39\x84\x15\x75\xb3\xde\x10\x90\xa2\x7e\xee\x7a\x70\xa5\x37\x00\x57\xda\xe4\xf0\x15\xc8\x49\xa5\x63\xd7\x03\x3e\x7d\xe8\x04\xf8\xe4\x2f\xc1\xbd\xc2\xf0\x69\x3f\x8f\x6f\x8c\x0d\x53\x1f\xd8\x5b\x02\x3c\x35\x88\x0b\xeb\xc8\x4d\xcb\x10\x9e\x96\xd1\x45\xa7\x75\x79\x5b\xbc\xa5\xf5\x56\x66\x2d\x28\xa5\xc6\xbb\x6b\x4f\x80\x95\xda\xb7\x61\x4f\xce\xcd\x2e\x93\x95\xd6\x2b\x0c\x1a\x26\x2c\xad\xa3\x60\xad\x97\xbb\xe4\xe9\xe1\x7d\xe5\x2f\x15\x55\xd9\x36\xcb\x61\x1a\x38\x1f\x34\x11\x68\xce\x93\xd8\xc1\x79\xf8\xd5\xf2\x1d\xf8\xc8\x79\xbf\x40\x6e\x33\xa0\x92\x39\x68\x5b\x45\x69\xb5\x65\x99\x4a\x7e\x13\xdf\x7b\xb6\x52\x20\xff\xee\x36\x63\x29\x5c\xd9\x4d\xb3\x96\x56\x0c\x6e\x99\xe8\xb1\x61\xe6\x52\xd0\xe3\x52\x2f\x9d\x9b\x5d\x27\x4f\x5d\x95\x58\x36\x08\xa2\xaa\xd5\xc0\xdb\x1e\x66\x29\xc5\x9f\xc7\x19\x16\x38\x49\x48\x42\x65\xfa\x62\x41\xb4\xa7\x65\x77\xad\x3e\xab\x82\x1b\x13\x11\xcb\xd3\x89\x21\x45\x37\x10\x5b\x79\x53\x71\x24\x72\x16\x82\xc4\xf9\x8d\x41\xae\x32\x63\x0e\xf7\x02\x58\x95\xa2\x39\x94\x79\x9d\x62\x2a\x18\x91\xad\x45\x35\x49\x94\x0b\xaa\x16\x63\x5b\xa3\xb4\xfb\x81\xbb\xb3\x5f\x9e\xda\x0f\x97\x7b\xb8\x1d\x3e\x82\xeb\xcf\xd7\x44\xcd\x88\x80\x82\x4b\xae\x74\x50\x50\x87\xd5\xe2\x5f\x10\x5f\xb5\x09\xc2\x86\x6b\xd7\x76\x5b\xc0\x2d\x7e\x1e\x07\x19\x48\xe3\xa8\x4a\x1c\xab\x0e\x6b\x13\x82\xd7\xb2\x49\xbe\x30\x86\x55\x8b\x17\xf9\x05\xea\xb5\xd8\x34\x03\xd3\xb4\x1e\x70\xe0\x0a\x06\x7b\x65\xb1\x31\x01\x8c\x81\x55\xaa\x5a\xc6\x69\x51\x93\x9a\x82\x8f\x96\x0c\x76\x10\x7c\xd5\x61\xc4\x41\x27\x3b\x1a\xb6\x3e\xe8\x42\xe4\x99\xa2\x93\x3a\x48\x90\xda\x5d\xfd\xd6\x41\x02\xd9\xf3\xce\xcd\x50\xea\xd6\x14\x75\x2d\x71\x62\x3b\x3b\x2d\xff\x5b\x44\x36\x87\xb5\x64\xb0\xaa\xc2\xbc\xb7\xeb\x94\x2a\xe5\x02\xec\x8d\x01\x5a\x53\x67\xd9\x36\xfb\x95\x0b\xf7\xc0\x50\x1a\xd6\x98\x88\x8e\x46\x6c\x20\xd1\x33\x41\x8c\x58\x30\x8e\x86\xa2\xaf\xde\xaa\x0d\x55\xb4\x26\x44\xf7\xe4\x63\x53\xb4\xf0\x40\x95\xf4\x85\xdc\x4c\x1f\x53\x9c\x48\x72\xa0\x1b\x86\xfa\xaf\x8a\x43\xd0\x24\x46\xcf\x02\x67\x19\x11\x23\x66\xb3\x1f\xc0\xe1\xc2\x79\x62\xda\x6f\x0b\x0d\xb5\x6b\x40\xc6\x11\x8e\xe6\xaf\xb4\x47\x18\x92\x57\xa2\x39\x89\x5d\x1a\x78\x79\x7b\xdc\xbc\x8d\xc1\x7a\x8d\xcd\x3a\x9f\xba\x42\x64\x07\xb6\x93\x24\xd2\x1c\xc5\xd7\xa5\xce\x88\xd0\xa3\xd6\x34\xfc\x44\x18\xa2\x53\x37\x0e\x1b\xbb\x83\x9e\xc1\x33\xa5\x49\xff\x09\xd3\xc4\xe0\x2a\xb8\xae\x9d\x10\x68\xcc\xef\x23\x66\xdc\xdd\x2c\x2a\x65\x74\x52\x46\xe5\x5c\x73\xea\x1c\x7c\x92\xa0\x66\xac\x25\x79\xc6\xb1\x2c\x1b\x19\x8d\xfa\x46\x7f\x2b\x99\x37\x0e\x4b\xd9\x6a\x51\x00\x84\x04\xc1\x92\xae\x16\xda\x32\x39\xb3\x0f\xbd\xaf\x87\xde\x37\xaf\xcd\x3e\x86\xdf\xfb\xc3\xb2\x6e\x08\x7e\xdb\xf6\xef\x42\x82\xdc\x61\x28\xfe\x1b\xc7\xac\xbf\x4c\xb8\xfa\xdb\xe6\x17\xbc\x44\x6a\x41\x1f\x80\xff\xfe\x02\xf0\xdb\x8f\xed\x5a\x41\xf8\x2b\xb0\xb0\x9a\x7a\xb9\x24\x4a\xd0\x48\xee\x82\x3f\xc8\x0c\x77\x8c\x1e\x03\x6d\x2b\x5b\x21\x9d\xe8\x17\xbc\xb3\x0f\xe2\xb1\x7c\x65\xc2\x89\x20\xf8\x31\xe6\xcf\x35\x9b\x98\x0c\x51\x1e\x2e\xb5\xbe\xae\x0f\x13\x95\xa4\x14\x31\x42\x25\x62\x44\x5a\xa3\x22\x1e\xb1\x39\x25\x02\x8b\x68\x0e\xd9\x77\xc5\xc6\x98\x2c\x4e\x83\x07\x65\x62\x06\x42\xaf\xce\x1a\x9b\xde\x61\xdd\xab\x96\x1c\x0f\x5e\x62\xf7\x5c\x8f\x24\x35\x9f\x78\x99\xda\x4a\x19\xa1\xe9\xab\xd3\xf6\x6f\x1b\xf0\xee\x17\xfb\x45\x83\xde\x7d\xd0\x4e\xf0\x45\xc7\xc0\xf7\x82\x1a\xfa\xe0\xf7\x17\x0a\x7e\x6f\x58\xe2\xf5\x02\xe0\x37\x32\xad\xbd\x7e\x6c\xae\xeb\xf9\x35\xe2\x73\x57\x05\x47\xe5\x93\xf1\x8b\x1f\xbd\xc6\x39\x77\x3d\x81\x3f\x7b\xa2\x30\x12\xb1\xd0\x74\x36\x21\x71\x0c\x9c\x56\x71\x5b\xdb\xba\xa0\x1d\xa7\x86\xeb\xbb\x17\x4b\x4d\xec\x38\xe1\x6c\x26\x69\x6c\x40\x40\x32\x0c\x35\x66\x43\x23\x01\x24\xbf\xc3\xfe\x26\x09\x11\xce\xfa\x2f\xd0\xd7\x92\x6a\xb5\x2f\xf0\x08\x08\x14\x73\x22\xd9\x57\xca\x28\xe5\x98\x2d\xd0\x23\xe3\xcf\x09\x89\x67\xb0\x43\xd5\xc1\x1c\x22\x4a\x0e\x10\x55\xfe\x33\x01\xd9\xf2\x3c\x57\x23\x3d\x76\x88\xe9\x32\x1a\x00\xb1\xdf\x06\x55\xdc\x7d\x33\xdf\x1c\x21\x74\xce\xd0\x14\x47\xea\x00\xc9\x7c\x52\xb4\x1f\x73\x53\x96\x5b\x6b\xb9\xc1\xc4\x8b\x46\xfa\xd8\xec\x86\xce\x9b\xcf\x86\xe3\x0e\x9a\x5c\x07\x09\xc5\x5b\xc5\xb0\x3d\xe1\x6d\x40\x51\x2f\x73\x69\x83\x1d\x10\x67\xfe\xe8\x5b\xd8\x1f\x8f\x6a\x0d\xb5\x94\x0d\x42\x34\xe3\x71\xab\x4d\xb1\x32\x95\x75\xc7\x52\x04\x1c\x5a\x41\xc9\x3a\x84\xa0\x5d\xb3\xdc\x5a\x6a\x92\x4a\x10\x9c\x5a\x23\xbc\xbe\x6a\x40\xac\x31\xe1\x86\x7a\xf4\x54\x18\x09\x73\x9d\x2d\xbe\xa0\xec\x51\xef\x6e\x81\xe3\x0d\x15\xf1\xa1\xe7\xa6\x4d\xcb\xf4\x8d\x47\x4e\x39\x33\x8e\xb8\xad\xe4\x4e\x3a\x63\x38\x59\xd3\xc6\x51\x5b\xb9\xba\xef\xcc\xc9\x59\x56\x5c\xd0\x52\x84\x31\xaa\x21\xd3\xe3\x5a\x36\xa4\xca\x7c\x43\x79\x0f\xa3\x98\x64\x84\xc5\x84\x45\x0b\x20\x11\x06\x88\x2e\x82\xe1\x04\x61\xf8\x0e\x27\x47\xe8\xcc\xe4\xb1\x78\x09\xcf\x5e\xeb\x70\xa1\xa7\x98\xd1\xa9\xd6\x13\xc0\xd8\x69\x47\x39\x62\x66\x98\xce\xd7\x40\x0a\x2b\xa6\x5f\xb1\x86\x9d\xf9\x9e\x32\x5c\x4a\x1c\xda\xe0\x3c\x25\xf9\x5a\xb1\xe1\x81\xd5\x72\xd1\x06\x6e\xaf\xf0\x2a\xbc\xf9\x35\x36\x03\x49\x9a\x6a\x91\x4c\x77\x87\xe0\xca\xf4\xa5\x0f\x30\x38\x34\xe6\x24\xc9\x82\x22\xe7\x19\x16\xca\xe3\x89\x18\x84\x62\x7d\xcb\xa4\x39\x33\xd8\x30\xc6\xd0\xf4\x6c\x51\x60\xad\x2f\xab\x68\xfc\x68\xc4\xce\xd5\x57\x52\x73\x3e\xce\x66\xc9\x02\xe1\xf8\x89\xca\x02\xed\x3e\xe2\x4c\xe6\x29\x11\xb6\x0b\x2a\x4d\xac\x96\x45\x8a\xc6\x8e\x34\xf5\xd8\xb4\xca\xf7\x84\x13\x1a\xbb\x8a\x0c\xfa\xc7\x09\x99\x82\xaa\x83\x85\x74\x06\xd1\x06\x8f\xb6\xdd\xdc\x58\xaf\xd5\x9b\x71\xcb\x9f\x42\x86\x88\xd2\x82\x77\x62\x6b\x02\x39\xae\x72\x4e\xbb\xea\x4b\xb8\xe6\xa4\x36\x29\xb4\x5c\xc0\xb1\xab\x70\xb6\x0a\xbc\xc8\x01\xe8\xe5\x26\x82\x49\xf7\xe3\x64\x69\x33\xb8\xb5\x38\x40\x65\x82\x76\xd4\xc6\xce\x1e\x72\x4d\x42\x41\xb8\x90\x0a\x2b\x1a\x59\xb1\x9d\x0b\x7b\x71\xd8\x8b\xa5\x7d\x6b\xcf\xb6\xc4\x0b\x97\x11\x4e\xea\x3b\xbc\x44\x8d\x37\xef\x2f\xe7\xad\xf6\xb8\x99\xb6\x97\xe6\x2c\x45\x3c\x49\xd6\xc1\xb2\xaf\xcc\xfc\xb4\xf8\x7c\xf9\x88\x8a\x7e\xf4\x06\xb8\xbd\x80\x53\x63\x5c\xcf\x38\xb1\x12\xaa\x54\x76\x97\xc2\x97\xcc\xed\xb6\xb0\xae\xed\x11\xe3\x53\x53\xca\xba\xcd\x29\x9d\x09\x9e\xd2\x75\x40\x15\x8d\x9f\xf6\xd6\x99\x1b\x56\x08\x6f\xce\x28\xa1\x4f\x91\x25\x2f\xdb\x23\xa4\x1b\x60\x66\xe4\xd5\x25\x67\x28\xc5\xd9\x46\x0b\xbe\xca\xd8\x36\x40\xa9\xb1\x74\xda\xd5\x03\x98\x25\x02\x85\x03\x60\x91\x9f\xf1\xa2\xc8\xec\x6a\x83\xcb\x63\x6b\x91\xc3\x83\x7e\xfd\x9c\x4d\xf9\x1a\x87\xb3\xc8\xc4\xb2\xa7\x0f\x3b\x9a\x0d\xce\x9f\x37\xfe\x98\xdd\x37\x6b\xda\xe5\x3c\x9e\x36\x11\xf5\xda\x27\xd3\xad\xe0\x4b\xaa\x7e\x21\x13\x09\xb5\xbe\x75\xee\xd6\xf2\xd1\x0a\x5a\x44\x30\x9c\xe5\x4b\x75\x59\xa2\xc3\x9d\xaf\x51\xa5\x1d\x64\x2c\x0c\x2e\x16\xec\xa6\xb9\xd5\x57\x58\x33\x7b\x48\x3a\x2d\xd6\x96\xa9\xa7\xeb\xc1\xfe\xb9\x1e\x3d\xd8\x5f\xf3\x09\x5d\x89\x69\xbc\x8e\xae\x38\xd5\x92\x90\x51\x1f\x8a\xc0\x12\x1b\x61\x3f\xa5\x09\x91\x47\xe8\xbc\x41\x6f\x74\xf1\xed\xde\x1f\x6c\x22\xfd\x9c\xf4\x94\x0b\x1a\x54\x88\x73\x32\x12\xa2\x00\x9b\x1f\xda\xce\x04\xd1\x63\x8e\x8c\xeb\x96\x1b\x8c\x3f\x08\xae\x13\x54\xf3\x2c\x23\xac\x2a\x90\xa2\x35\x2f\xa0\x16\x5d\xc0\xc8\xf0\xfe\x03\x6e\x42\x1e\xb0\x2d\x82\x59\x8c\xaa\x65\x4b\x77\x51\xeb\xa3\x7b\xfa\x80\xeb\xf5\x5e\x7f\x51\xdf\x9b\xc6\x11\xde\x97\x5b\x5f\x7b\x74\x5e\xca\x5f\xdf\x0f\xfd\x11\x3e\x75\x56\x51\x8c\xa6\x82\x80\xdf\x24\xf5\x29\xc1\x06\x4b\x8f\x73\xb8\xef\xee\xce\x7e\x3c\x7e\x38\x47\x44\x45\x28\xa1\x8f\x64\xc4\x22\xf9\x74\xa0\xc5\xe3\xbf\xe7\x44\xe9\x9f\x5b\x0c\x2d\x34\x25\x4c\x02\x27\xa0\xaa\x06\x9d\xd0\xbc\x90\x6e\x61\xf4\x7f\xcf\xca\xdf\x2f\x21\xf9\x5a\xf6\x13\xd0\xae\xab\xc2\x00\x64\x0a\x08\xde\x66\x69\x65\x03\xc5\x18\x15\x6f\xd8\x54\x16\x6d\x83\x68\x67\xf6\xb7\x9c\xad\x29\x74\x9d\x16\x1f\x05\xa3\x68\x91\xe9\xd2\x0c\x03\xc4\xe5\x7a\x61\xd4\xe6\x9b\xc6\xd6\x57\x31\x91\x22\xab\xcc\xa9\xec\x45\x05\x39\xa4\x04\x21\xc0\x42\x3c\x3d\xd9\xbb\xde\x26\x12\xfb\x89\x05\x1f\x1d\x8d\xd8\xa5\x33\xe4\x17\xbf\x4a\xd7\x84\x09\xcd\xf7\xc8\x9f\xe5\x56\xa0\xd9\x98\x4a\xff\x03\xe0\xb7\xcb\x3c\x51\xa6\xb4\xd1\x94\x6a\x2d\xdd\x0d\xd4\x3c\x69\xe2\x12\x02\xb3\x68\x7e\xb5\x65\x85\x23\x3a\x1d\x93\x64\x1d\x49\xf4\x7c\x3a\x4c\xa4\xa6\xef\xe8\xb1\xe5\x74\x6e\x52\xbc\xab\x98\x8c\x2d\x49\x68\xaa\x91\x18\x1d\xc7\x58\x8f\x13\x53\x5a\x88\x20\x30\xfd\x56\x83\xdf\x4d\x7e\xab\xde\x45\x2b\xa9\x1b\xcb\xaf\x89\x3a\xf5\x11\x65\xd0\x0b\xc2\x6a\xc4\x44\xce\x00\x5b\xda\x3b\x82\x30\x2a\x60\x42\x23\x67\x96\xb1\x46\xb2\x99\x66\x13\x06\x85\xd3\xbc\xac\xf5\x33\x9e\x4b\x08\x60\x4d\x89\xd2\x17\xd4\xd7\x50\x10\xd0\x78\x62\x0f\x50\x26\x68\x4a\x15\x7d\x22\xf2\x9b\x86\xad\x3b\xc5\x0a\x27\x7c\x36\x10\x8a\x4e\x71\xa4\xee\xf1\x56\x1a\x38\xb6\xcd\x6c\x1a\xd5\xe3\x86\x81\xce\xcf\xf4\xe2\xcf\x08\x23\x02\x26\xaa\x75\xf2\xe6\x23\x0c\x4f\x36\xe2\xdc\xe0\x3d\x8d\x4c\xfd\x11\xe9\x2d\x16\x38\x57\x3c\xd5\xfa\x2d\x4e\x92\x05\xd4\x15\xd1\x4f\xe6\x58\xce\xdd\x46\x9b\x28\xb4\x2e\x77\x93\x5d\xdc\x53\x1c\xcd\xc9\x1d\x94\xc7\x6c\x5a\xdc\xca\x28\x3f\x10\x96\xa7\x1f\x4e\xd0\x7f\x17\x73\x3c\x1d\x9c\xfe\x30\x1c\x9f\x9d\xdf\x0d\xbe\xbf\x18\x9e\x05\xf3\xb1\x4f\x2e\xcf\xef\xee\xea\xbf\xfe\x70\x7e\x5f\xff\xf1\xe6\xfa\xe6\xe1\x62\x70\xdf\xd4\xca\xc5\xf5\xf5\x8f\x0f\x37\xe3\x8f\x83\xf3\x8b\x87\xdb\x61\xc3\xa7\x0f\xf7\xed\x0f\xef\x7e\x3c\xbf\xb9\x19\x9e\xb9\x55\xf9\x9f\xe0\x74\x41\x74\x1a\x44\x8e\x36\x4f\xa3\x7a\x00\x0f\x51\xf9\xc5\x13\xf4\x50\x45\x3c\xb6\x21\x5e\x26\x0d\xf7\x19\x4b\xcd\xc3\x20\x92\x6f\xc4\x90\xfb\x5c\x2f\x4a\xdb\xa7\xc6\x0b\x1a\xcd\x09\x4a\x38\x7f\xcc\x33\xcb\xda\x8c\xdb\x9d\x71\x63\xf8\x21\x32\x68\xed\x87\xf3\xfb\x93\x3a\xf2\xb2\x6f\x2c\x00\xfc\x70\x67\x00\xc6\x85\x1d\x3b\x05\x5b\x8a\x43\xe4\x2d\x4c\xa5\x41\x0f\x7e\x67\x96\xf5\x63\x5a\xc3\x4c\x55\xba\x89\x63\x5b\xfd\xd1\x4d\x2c\x68\xb8\xbc\xaf\xcb\x56\xd3\x2f\x87\x29\x35\x81\x26\x24\xc2\xb9\xf1\x15\xeb\x7b\x4a\x08\x2e\xc2\x01\x17\xf4\xb0\xbb\x46\x2d\x1d\x35\x36\x58\xd9\x33\x3d\x71\xf9\x48\xb3\x8c\xc4\x1f\xea\xf2\x4b\xb9\x4c\xa0\x2d\x4e\xcb\xa7\x28\x38\x93\x5a\xaf\x07\x9d\xdf\xe1\xa4\xcf\x6d\x3d\x0b\x2a\x8d\x3f\xac\xf0\x10\x02\x0e\xa5\xbe\x13\x3c\x9e\x35\x05\xef\x35\x56\xe8\x99\x40\x46\x58\x6e\x0b\x45\x18\xdd\x5b\x9f\x6d\xe8\xce\x78\x32\x5c\x75\xa2\x52\xa6\x58\x2b\x33\xde\x85\xc0\xad\xbf\x97\xa4\x89\x11\x6f\x91\xd6\x73\x66\x1a\x05\xee\xec\x42\x09\x60\xc4\x2d\x3e\x23\x77\x1b\x34\x58\xc8\x97\xc8\x57\xf5\x1b\x69\xc5\x65\xa1\xd9\x76\x97\xf1\xb8\x54\xe6\x12\x3e\x67\xf7\x81\x95\x30\x1c\x57\xae\xd5\x3d\x8f\xf1\x42\x13\x07\x84\x70\xc9\x3c\xcb\xb8\x50\xa8\xa5\x0d\xe3\x1d\x31\xe3\x83\x3b\xc7\xce\xc3\xf3\x38\x68\x44\x4b\x18\xb2\x01\x42\xbb\x5b\x76\xa7\x5d\xd7\x82\x71\x84\x71\x47\xa0\x08\xfa\x32\x07\x69\x49\xa5\x2e\x51\x68\x93\xf0\xbb\x4d\xe0\x66\xa6\x2f\xf8\xae\x55\x77\x9a\x7a\xbf\x76\x2d\x34\x6e\x79\x42\xa6\x6a\xdc\xe8\xf5\x59\x62\xe0\xd4\x2d\xb2\xb6\x84\x78\x3a\x9b\xef\xa0\xc5\xee\x5a\xc2\x77\xd6\x5f\xaa\x55\x83\xc0\x42\x20\x38\x57\x46\x3e\x2d\x74\x18\xe4\x56\x13\xcc\x0b\xb6\x53\x1b\xca\xee\x85\x40\x2d\xf3\x3f\x32\xfe\xcc\xbc\x65\x5f\x1e\x8d\xd8\x10\x43\xf9\x4c\xaf\x88\xb8\x08\x77\xd0\x02\x56\xca\xff\xa5\x52\x78\xaf\x1a\x04\xd3\x0e\x50\x57\xd0\xbd\x2d\x9c\x9c\x2c\x50\x51\xee\xb0\xf4\x5d\x97\xd3\x63\xac\xde\x4e\x04\x34\x13\xb6\x85\xba\x14\xc9\xac\x65\xde\xcc\xb3\x70\xa0\x82\xdb\x5d\x77\x75\x84\x7e\x76\x96\x1f\x88\x27\x2a\x2a\x85\xda\x3a\xef\x09\x5e\x38\x4c\xab\xa6\x85\xdd\x05\x4c\xd4\xae\x23\x8c\x96\x2f\xb0\xc7\xa3\x68\x58\xe5\x92\x02\xce\x98\xb1\xc8\xae\x11\x4d\x7b\xea\x3f\xba\x23\xcb\xc3\xed\x3f\x42\xd5\x2d\xeb\xb0\x06\xa1\x83\x25\x8b\xff\x65\x36\xcb\x24\xd2\xb8\x7a\x1a\xb6\x0a\x92\xf5\xa0\xea\xf3\x03\x1e\x40\x93\x67\x83\xa6\x34\x49\x40\x0e\x38\x42\x03\x28\x5a\x09\x79\x28\xfa\x2a\x74\x51\x6b\x74\xc6\xf8\xaa\xd0\xfd\x16\x62\x8a\x02\x62\xba\x6b\x27\x26\x09\xd4\x54\xa4\x21\xee\x86\xa2\x76\x90\x92\xae\x79\x0b\xae\x03\x7a\x76\x4f\x44\x5f\x43\x79\x7f\x8b\xa0\xb3\xda\x70\x83\x0f\xff\xd9\x3c\xf4\x4f\x39\x16\x98\x29\x08\xa5\xb2\xa2\xbb\x20\x41\x44\x37\xf9\x0c\xc1\x8a\xcc\x18\x82\xe1\xa7\x70\x73\x9d\xcb\x7f\x46\x21\xef\x28\x3e\x40\xf4\x88\x1c\x1d\xd8\x52\xfe\x32\x9f\x14\x6f\xce\xb5\xe4\x30\x62\xb5\x10\x91\x23\x34\x48\x24\xb7\x5f\x10\x16\x25\x50\x24\x36\x88\xfa\xf2\x94\x6f\xdd\x4a\x93\x05\x28\x28\xb0\x95\x45\xf3\xdc\x3e\x08\x3e\x84\xda\x22\xe0\x13\x4f\xe0\xa4\x17\xbf\x37\x55\xd6\x2e\xc5\x49\xbc\x20\x1a\x75\xed\x1a\x7a\xb1\x4d\x32\x15\x82\x96\x6d\x10\xbc\x01\x1b\x53\x84\xee\x04\x09\xe4\xe8\x6b\xac\x50\x42\xb0\x54\xe8\x8f\xdf\xac\x15\x1b\xe2\x26\x58\x70\x57\x7b\x7c\x8b\xf8\x7b\x17\xc1\x19\x0a\x77\xbe\x63\x28\x19\x83\x85\x42\x18\x31\xf2\x1c\x06\xec\x70\x88\xb1\x72\x75\x60\x48\x90\x32\x64\x2a\xa7\x9a\xc4\x42\x08\x82\x35\x2a\x53\x0b\x1f\x71\x68\x8d\xd6\x7d\x6a\x87\xd5\x40\x59\x56\x79\xa2\x46\x3d\x03\x44\x91\x22\x96\x72\x8e\xd5\x88\x59\xce\xea\xc2\x46\x82\xe8\xf9\x41\x92\x94\xe3\x17\x31\x84\xe8\x32\x3d\x61\xa8\x1a\x7c\xe4\x17\xe8\x0a\xd4\x2f\x1f\x44\x56\xb2\xd3\x15\x87\x45\x6b\x6a\x23\xe6\xe1\x1a\xc2\xb6\x1b\xa5\x9d\x26\xfb\xf2\x2b\x0a\xc1\x0d\xdd\x5f\x98\xf2\xcd\x1d\x84\x61\xd2\x34\xe4\x15\x07\xab\x6e\xd3\x5f\x22\x1b\xef\xba\x83\xee\xa2\x72\xb3\x7d\x1c\xae\xd9\x67\xde\x60\x6e\x6f\xd9\xdc\x40\xb6\xd8\x46\x01\xf7\xd1\x8c\xaf\xe5\xf1\x2d\x0d\xfd\x3c\x86\x5c\x8a\xd5\x5c\xb0\xc8\x4d\x70\xac\x03\x0c\xdd\x34\x0e\x42\xa5\x83\xc8\x4c\x08\xa5\x77\x8c\xcf\xbe\xd9\xe2\x79\xcd\xde\xf7\xf4\x0f\x8a\xf9\xbb\xa9\xf8\x20\xb8\xfa\xc4\xdb\x85\xbd\x41\xfc\x37\x1c\x41\x00\x25\xf4\xe4\x42\x37\xeb\x78\x12\x0e\x85\x13\x83\x31\xbf\x51\x3c\xb4\x95\xd8\x8f\xd0\x10\x2e\x1a\x57\x98\x1d\x4f\x9d\x43\x22\x78\x79\xc4\xb4\x66\xe2\xd2\xcf\x83\xf6\xcb\x24\xde\x74\x02\x0c\x96\xcd\x56\xbe\x9c\x74\x35\xc4\x7a\x9b\x36\xe1\xa0\x74\xa0\x0d\x40\x65\x46\xc3\xd9\x09\x8a\x79\xf4\x48\xc4\xb1\x20\x31\x95\x27\xe0\x5b\x57\xad\x4e\xbd\x54\x6b\xdb\x5b\x4b\x1a\x6d\x81\x02\x2b\x72\x0d\x4e\x4d\xff\x36\x88\xde\xd5\x11\x3c\x40\x74\x0a\xea\x84\x0b\x75\x35\x49\x36\x2e\x5b\x9f\x30\x25\x16\x19\xa7\x4c\x79\x53\x56\x65\x21\x9c\xa6\xa1\x85\xb6\xb6\x20\x6d\xb1\x8b\x18\x9c\x0d\xa7\x7d\x3f\x27\x92\xb8\x80\x03\x33\x29\xc5\x6d\x8e\x9a\x61\x17\x19\x56\x73\x09\x19\x41\xe5\x35\xb0\x4a\x17\x7c\xaa\x57\x08\x67\x10\xaf\x60\xac\x14\xc5\x47\x3e\x6f\x45\x2a\x9a\x24\x23\xc6\x08\x89\x25\x82\xe4\x9d\xaf\x1a\x13\x0f\xf5\xa7\x07\x08\xc7\x31\xfa\xdf\x5f\x7f\xbc\xf8\xe5\x7e\x38\x3e\xbf\x02\xa3\xf5\xf9\xc5\xf0\x9b\x03\xff\xe3\xf5\xc3\xbd\xff\xd5\x58\x58\x9e\x88\x40\x29\x7e\x04\x15\x8f\x49\x23\xff\x41\x76\x47\x38\x52\x97\x92\xa9\x9f\x48\xe2\x22\x5d\xad\x98\xe2\x11\xa0\xec\x1e\xb6\x16\x2a\x34\x36\xbf\x35\x94\xdf\x5b\xff\xc9\x72\x1a\x74\xc4\xe3\xbb\x70\x62\x60\x4a\x18\x44\x63\x17\x39\x7a\x56\xf7\x2d\x08\x8e\xb0\x19\x65\x6d\xf1\x78\x84\x3d\xbd\xa4\x10\xff\x23\x59\xfc\xa4\xd5\xeb\x1b\x4c\x45\x67\xda\x1b\xb2\x27\x2a\x38\x83\xa9\x79\xb3\x96\x3f\x31\x5a\x4f\xc7\xb2\x7a\xa8\xa4\x91\x85\x21\x46\x23\x6b\x8d\xf9\x6c\xc2\xb1\x79\xf3\xe9\x5a\x74\x0c\xf2\x59\x09\x97\xfc\xeb\x41\x58\x1c\x12\x85\xbf\x68\x0a\x1a\x1c\xb1\xfb\xeb\xb3\xeb\x13\x44\x12\x3c\xe1\x02\xb2\xc1\x4c\x48\x90\x6b\xc2\x2e\x58\xc4\xd3\xa0\xa1\x52\xe2\xf7\x01\xca\x8a\xc4\xef\xd0\x88\x76\x64\xda\x58\x55\xbf\x9b\x8b\x7a\xda\xf4\x6e\x55\x40\x3b\xd9\x1b\x2e\xba\x5c\xff\xfa\x35\x58\x3a\x9e\x69\x45\xae\xc2\x79\xed\xdd\x3c\x25\xd8\x94\xce\x35\x6e\x21\x6b\xcb\xb7\x01\xac\x49\x52\x2a\x07\xa5\x0f\x8e\x3c\xb2\x2e\xf8\xe2\x4d\xce\xd0\x8f\x7f\x91\x68\x92\xab\x11\x2b\xb7\xc1\x19\x1a\xfc\x7c\x87\xbe\xc7\x2a\x9a\x7f\x33\x62\xd7\x5a\xcd\xfc\xf1\x2f\x2d\x08\x15\x6b\x83\x2b\xe9\x35\x39\xc3\x0a\x5f\x70\x1c\x53\x36\x6b\x42\x56\x2a\xe0\xef\x87\xf7\x83\x13\x74\x6d\x75\x78\x9f\x54\x5e\x64\x5a\x05\x0d\x01\x43\x86\x89\x38\x2e\x02\xac\x9c\x95\xd1\x67\x8c\x66\x06\x17\xd6\x88\xdd\x1b\x48\x29\xcd\x55\xa9\x42\x19\xb7\x25\x18\xb4\x56\x66\xc0\xb6\x8c\x29\xdb\x5a\x12\xf5\xea\x00\x19\xfb\xcd\xb0\xf2\x18\xc8\x33\x75\x66\x3f\x62\xa0\xa0\xfb\x4c\xcf\x84\x47\x38\x81\x98\xbc\xc3\xc0\xa6\xa7\xd5\x76\x9e\x43\xda\x9d\xa9\x75\xba\x28\x87\xce\xfa\x4c\x50\x2f\x94\x85\x1b\x05\x06\x00\xd8\x47\xeb\x8d\x4d\xb9\xe6\x38\x06\x4a\x06\x8c\x6f\x89\x59\x1d\xfd\xa1\x87\x96\x31\xcb\xa2\x9f\x3a\x7e\x04\x25\xc5\x6d\x8a\x77\x04\xe6\x7b\xb6\x80\xf0\x6d\xc0\x4c\xe7\x10\xfa\x51\x70\x67\x4b\x94\xb5\x5d\xf4\x77\x62\xf0\xd9\x88\x99\x48\xc1\xd2\xbe\x84\xa0\x08\x41\xef\x9c\x41\x20\x63\x71\x5d\x7a\x01\x23\xb3\x81\x8d\x56\xd6\xcf\x04\x39\x8c\x89\x22\x22\x05\x7b\x4f\xb8\xa6\xfa\x86\x3d\x42\xb7\xa1\x7a\x1d\xf3\x28\x4f\x1d\x30\x24\xa4\x27\x16\xd5\x64\x4b\x12\x8f\xb9\xd8\x57\x51\x3c\x24\xbf\x2b\x02\x59\x79\x9d\xf5\x63\x43\x30\x83\xf0\xd3\xba\xa4\xde\x2e\xf8\x02\xef\xd8\x2e\x6a\xcd\x34\x34\xce\xca\x2d\x95\x5a\x5b\x8d\x6b\xb7\xa2\xce\xc9\x55\x01\x5e\xc7\x05\x08\x5b\xe4\x73\xc6\xc1\xc8\x6d\x72\xaa\x78\xfc\x95\x44\xe7\x37\x5a\x02\xd2\x1a\xaf\x3f\x83\xb9\x54\x26\xb8\x0c\xd2\x75\xcc\xd7\x26\x5d\xe0\x00\x7d\x6b\x6a\x3d\x47\xe8\xb3\xfb\xe3\xcf\xff\xf1\x1f\x7f\xfa\xf3\x3a\xe9\x24\x4e\x21\x87\x76\x8b\x35\xf2\xd5\x30\xca\x22\x51\xb8\x03\x75\x4e\xb5\xc5\x2e\xd8\x03\xd8\xb6\xfc\x9b\x80\x54\x05\xb1\x43\x78\x66\x4f\xb8\x0c\x4f\x26\x2a\x1d\xcd\x22\x92\x40\x12\x75\x50\xe6\x10\x5e\xd8\xb5\x12\xfd\xff\x5a\x82\x01\x33\xd6\x47\x65\xb3\x18\x27\x9a\x78\xf1\x5a\x37\x82\xbe\xb6\xf6\x3f\x05\x0e\xc4\x6f\xdc\x05\xc7\x93\x98\x08\x5b\x27\xde\x99\xec\xbc\x21\x11\x98\x03\xf9\x9c\x25\x3c\x76\xe8\x6e\x92\x64\x18\x04\x08\xcd\x0c\x8e\x46\x6c\xe8\xca\x86\x1b\x74\x12\xf3\x91\xf1\xbc\x4c\x71\x64\x40\xcd\x24\xfa\xfa\xf3\x89\xfe\xed\x00\x2d\x4e\x20\x88\xf4\x00\xfd\x76\x62\x41\x08\xb0\x50\x63\xfd\xd3\x37\x4e\xd6\xb6\x4d\xc0\xa0\xa9\x44\x5f\x1d\x3f\x61\x61\x4a\x5e\x1e\x9b\x11\x7d\x65\x39\xab\x2f\xeb\x13\xca\xe6\x09\xe7\x8f\x36\xc0\xb6\xf6\xe1\xb1\xc3\xb3\x01\xf2\xf6\x7e\x13\xb3\xf5\x3e\xdf\x51\xa1\x43\x5b\xf4\xfc\x28\x9b\xa0\xa3\xbf\x49\xce\xd0\xd1\x02\xa7\x89\xfd\xd5\x3d\xb5\xf1\xbf\x58\x22\x57\xf6\xbe\x28\xbb\x6d\x2c\xa5\xdf\x27\x7c\x02\xb3\xba\x74\x33\x35\x11\xb4\x30\xd0\xe2\xf6\x29\x2e\x2c\x3b\x11\x2b\x49\x19\x58\x86\x94\x2b\xf3\x0a\xf0\xb8\xa6\x59\x7d\xf6\x43\xfa\x2f\xe3\x17\x86\x45\x71\x49\x7c\xc6\x38\xec\xa3\xd7\x74\xa3\x9f\xd1\xd7\x96\x05\x7d\xa3\xef\x18\x1b\xae\x6c\x96\xa1\xa9\x83\x85\xef\xe0\x97\xa0\x03\xca\x90\x49\xcb\x5c\xf2\xe5\x6f\xc7\x47\x47\x47\xfe\xeb\x2b\x3d\x95\xff\x17\x51\x25\x49\x32\x35\x2d\xb9\x1b\x6c\x31\x62\x97\x0e\x37\xda\x19\xaf\x0b\xa4\x2c\x28\x57\x1f\xf1\x04\x1d\x16\x06\xdd\x98\x47\x12\xfd\xab\x16\x6b\x83\xa5\x84\x1f\xb5\x1e\xd7\x82\x62\x67\x80\x2a\x5f\xe9\x50\x59\x83\x78\xf5\x58\x85\xe0\x38\x5e\xb1\xc5\x32\x04\x21\x07\x5a\xd0\x94\x73\x6c\x01\x74\x84\xd0\x2f\x93\xcf\x0a\x1e\xb5\xe0\x13\x35\x86\xb2\x37\xdf\x94\x35\x76\x5b\xc0\x14\x19\xb2\x6e\x59\x00\x0b\x23\x62\x39\x83\x99\xe7\x41\xe8\x3e\xd1\x97\x0b\x0b\x91\x8c\x65\x9e\xa6\x58\x2c\x8e\x8b\xd3\x56\x27\xce\x02\xc0\x06\x78\x4c\xe2\x16\x00\x5c\xb8\x89\x3d\x5a\x36\x8a\xc1\x8a\x97\xee\x46\xf3\x67\x37\x82\x52\x4c\x10\x90\x67\x0a\x91\x11\x16\xf1\xd8\xd2\x75\x91\x7d\x5a\x96\x58\xfc\x3b\x75\x59\xc5\x45\xc4\xc8\xc2\x18\xc7\x94\xc9\x8c\xb6\x6f\xb8\x8f\x5b\xd8\x37\x1f\x43\x51\x3f\x32\x5b\xc3\x3d\x7a\x7e\x7d\xe7\xbe\xe9\x7e\xe9\xc2\x3a\x94\x45\x76\x9c\x84\xb0\x43\x6c\x86\x04\x7e\x2e\xae\x5f\x88\xed\x30\xd6\x99\xdc\xe7\xe6\x9a\x7f\x9f\xf2\x1b\x9a\xe8\x5b\x0b\x68\xfc\x68\xc4\x4a\x3f\x1f\x20\x92\xd0\x94\x32\x1f\x5b\x67\x98\x3b\x9f\x1a\xe9\xf9\x91\x2a\xbd\x65\x32\x7e\xd4\x1c\xcc\xc1\x65\x04\x2a\xd5\x80\x2d\x1c\xe9\x78\xc7\x94\xb5\x40\xe4\x52\x8f\xab\xd0\xd1\xb5\x30\xab\x9b\x38\xb4\x02\x29\x0d\x08\x0f\xce\xef\x88\xe9\xd6\xdc\x59\x2a\xc2\x85\x83\xf6\x82\xe6\x0e\x1d\x9e\x6f\xc0\x01\xa0\x8f\x52\xcc\xaf\x97\x7f\x1b\x04\x94\x21\xcb\xd3\x6d\x93\x4d\x6c\xf8\xf0\x5b\x99\xe9\x6e\x04\x71\x37\x95\x4d\x5c\x22\x2c\x4f\xdd\x81\x5a\x83\xe2\x86\x56\xfc\x89\x49\x94\x60\x03\x00\xa0\x1b\x82\xc8\xc7\x03\xe3\x20\xcd\x82\xbe\xcc\xf5\x62\xba\x31\x25\x02\x12\xc2\xbe\x36\xff\xfe\x06\xd9\xbb\xe1\xdb\x03\x7b\x9f\x0b\xe9\x00\x4c\xed\x9e\x43\x89\x29\x12\x1b\x1b\x3a\x80\x3d\xce\xb0\x88\x8d\xb5\x3c\xd4\x2a\x4c\x06\xaf\x96\xbf\x16\x3c\x47\xcf\x54\xce\x47\xec\x9e\x3b\x83\x23\x62\xdc\xc3\x65\x1e\x80\x32\x5a\xeb\x0f\x4b\x60\x02\x30\xea\x26\x0a\xd0\x4c\x78\xab\x5c\x23\x88\x82\x1d\x33\x1e\x93\xed\x70\x21\xee\x0b\x5f\x85\xf3\x5f\x0b\x62\xf2\xc1\xe0\xa6\x68\x4b\xa7\x25\x52\xae\x69\x9b\xaf\x6e\x3c\xdc\x43\xb6\x1d\xa8\x68\xf8\xcc\x36\x85\x5c\xf1\xb7\x1a\xb4\xe2\x34\xce\x20\x1b\xb8\xb4\xf6\x1e\x84\x72\xdb\x4d\x88\xca\xa9\x2a\x2b\x57\xc0\x5f\x7d\x66\xee\x11\x2c\xbb\x0f\x30\xc6\x68\x26\x78\x9e\xf9\x94\x79\x97\xee\x67\xb6\xc1\xca\x34\xe7\x6c\xca\x4f\xac\x4e\x75\x41\xd9\xa3\xa1\xf8\x97\xda\x23\x83\x33\x4a\xe2\x12\x3a\x8e\x2b\x32\x07\x73\x38\x44\x94\x45\x49\x0e\x17\x9f\x54\x38\x7a\x34\x58\xa9\x6d\x46\x5f\xfd\xcd\x78\x75\x32\x65\x8b\xc4\x94\x27\x89\xed\xb6\xb8\x40\x8b\x2a\x9c\x4f\x14\x23\x8c\x1e\x6e\xcf\x9b\xfb\x7e\xa4\x75\x67\x4e\xf3\xed\x59\x26\x10\xf8\x9f\x1f\xe9\x5a\x71\x97\x15\xb4\x21\x52\x22\x75\x6f\x5c\x6a\xc3\xb2\xd3\x44\xfa\x09\x2b\xb2\x6d\x26\x94\x81\x56\x59\x23\x52\xaf\x86\x59\xb3\xd4\x7a\xbc\x25\xe0\x4b\x01\xd6\x02\xa1\x41\xed\xc8\x33\x61\xb0\x16\x3c\x5c\x03\xbb\x01\xde\xef\x36\x9f\xca\xbb\x2b\xa6\xb3\x7c\x98\x09\x21\x6b\xa0\x0d\xdc\xe9\xd7\x3b\x0e\xb2\xf4\xea\xb2\x31\x3e\x63\x03\x1e\x5d\xc7\x52\x8c\xf3\x52\x7d\xe8\x4e\x04\xed\xc8\xd1\x88\xd7\xd2\xe7\x88\xf8\x91\xb8\x30\x1c\x2f\x8b\xb9\x7e\x67\xe0\xdb\xe2\x25\x6c\x6a\x6f\xa1\x6d\x20\xfc\x40\x6c\xdd\x32\x6c\x42\x8b\x5f\xe3\xb4\x81\x45\x37\xef\x44\xd1\xf1\x99\xfd\xf8\x52\x7f\xdb\xcc\x8a\x2e\x21\x8b\xcf\x03\xa7\xa4\x98\xe9\x93\xed\x7a\x6d\x31\x42\x1a\x89\x70\xa3\x21\x3d\x64\x1b\x0d\xc8\xf4\xd8\xb1\x6c\x93\xed\xca\xb5\xf2\x6c\xec\xf0\x38\x31\x76\x26\x35\x07\x13\x44\x51\xee\x40\x73\xb4\xb2\x29\xc2\x94\x46\x48\xb0\x98\x19\x05\x49\x12\x25\xbf\x69\xd8\xe1\x22\xe7\x61\x8b\x1d\xde\xa0\xa4\x5c\xe8\xf7\x04\xf1\x7b\xd9\x49\xf3\xa3\x2c\x63\xb6\xf9\x5b\xd9\x17\x67\xb4\x42\x13\x95\x21\xb2\x56\xc4\x85\x01\x38\x8d\xf5\x59\x69\xc7\x4c\xd9\xb2\xb4\xe8\x15\x4e\x3d\x22\x80\x2b\x70\x68\xf3\xbb\xcc\xe0\x26\x04\xe0\x06\xdb\xc7\xb0\x75\x0d\xd1\x70\x08\xb6\xa6\x57\xdb\x08\x46\x6c\xe0\x5e\xf1\x59\xc5\xa0\xdb\x09\x23\x80\x43\x7c\xa8\x89\x86\x06\xfd\x0a\x17\xab\x6e\x27\xd7\x32\x89\x75\x93\x37\xab\x65\x50\xb5\x7e\xe7\x6f\x23\x5b\xf0\xc0\x43\xa3\x2d\x2d\x36\xf1\xb4\x7e\xa1\xea\x66\x60\x96\xa8\x5a\x48\xb8\xa9\xe3\xd5\xba\x94\x43\x8c\xb0\x0d\x85\xb5\x8b\x4d\x0c\x69\xb2\x28\xc8\x54\xaf\xb8\xd1\xc9\x2b\x9d\xd5\x4f\xab\xda\x8a\x1b\x53\x9c\x8e\x05\x6f\xaf\xc6\xd1\x61\x99\x5c\x13\x25\xfb\xce\xdc\xa0\x86\x2f\xd0\xdf\x73\x9c\x98\xcb\x8d\x59\x72\x74\xc3\x06\x51\xf9\xbb\x3f\xa3\x01\xdc\x3e\xe8\x12\xf8\x22\x38\xf8\xa1\x35\xc5\x11\x4d\x33\x22\x24\x67\xb8\xb5\x2c\xcd\xe3\x5f\xe4\xd8\x42\xfe\x8f\x71\x14\xf1\xbc\x0e\xef\xbf\xc6\x4c\x1a\x5a\x0b\x27\x85\xd1\x63\x3e\x21\x82\x11\x53\x7a\x07\xde\x43\xee\xbd\x4e\xc3\xe5\x38\x57\xf3\xef\xc6\x51\x42\x3b\xd7\x21\x80\xec\xa2\x81\xfe\xec\xd4\x7c\xb5\x6c\x02\xa5\xf6\x4b\x43\x67\xc8\x3c\x43\xe6\xd9\x11\xfa\x1e\x47\x8f\x84\xc5\x28\x4b\xf2\x19\xb5\x60\x02\x70\x43\x01\xbb\x0c\xcc\xb3\xe5\x89\x19\xd9\xc2\xb4\xaf\xaf\xa1\x11\x4b\xf1\xa3\xc1\x06\xb4\x42\x64\x84\x93\x64\x2d\x33\x83\xa7\x87\x1a\xaa\x8a\xcb\x7c\xf7\x65\x8e\xcc\xf9\x50\xe6\x7c\x80\x41\x15\x10\x24\x73\x86\x30\x00\xb3\x7c\x25\x51\x9e\x39\x09\x08\x2c\x7d\x09\xf8\x5d\xcd\x24\xa1\x7e\x35\xd5\x7a\xd0\x9c\x8c\x18\xc4\xb2\xba\x16\x17\x9e\xab\x84\xae\x7e\x1f\x72\xd2\x74\xf8\xa6\x06\x96\x60\x3b\x2f\x62\x0d\x80\x72\x05\x25\x74\x8c\xd3\x55\x73\xc2\xc0\x00\xd1\xbd\x65\xd0\x68\xba\x6f\x5a\x29\x26\xd7\x0a\x9a\xde\x62\xea\x97\x30\x67\xd4\x56\xbe\xb0\x46\xf2\x20\x5c\xce\x79\x92\x8a\xef\xa9\x44\x12\x2b\x2a\xa7\xb4\xd1\x30\x13\x82\x41\x6c\xb3\xea\x78\x3d\x04\x8a\x06\xf4\x89\xca\x5a\xf8\xb8\xff\x23\xf4\x11\xec\x4c\x81\xec\xcd\x3d\x96\x43\x1b\x4b\x50\x73\xd2\x0a\x6a\xb8\x8b\x80\x19\x37\x83\xe0\xfd\xa5\xe6\x43\x9f\xe3\x71\x84\x06\x85\x7d\xdf\xa0\x59\x18\xcb\xfd\x8a\x19\x91\x44\x92\x4d\x88\xaf\x93\x29\x0c\x7c\xe0\x40\x40\x08\x64\x15\xa9\x7f\x2f\xa0\x6f\xfd\x30\x9f\x21\x8d\x12\x3f\x12\xb6\xcc\xde\xd1\x7d\x84\xc6\x20\xb5\x54\xe9\xf6\x96\x2e\x6e\x8c\x5d\x9b\x0c\xb0\xfb\xb1\x2b\x00\x44\xe8\xf4\x58\x2f\xb9\x16\xf4\xa3\x47\x9b\xbc\x61\xec\x9d\x16\x82\xe4\x79\xce\x65\x78\xce\xdc\xfe\x19\x5d\x51\xe4\xc4\x25\x69\x40\xf2\x8b\x5f\x60\x13\xf5\xc2\x78\x88\x50\x02\xa3\xf6\x87\xd4\xd8\x72\xfd\x7e\x23\xc7\x42\x61\x19\xc0\x4f\xe4\x9a\xaa\x9f\xe6\x1f\xff\x22\xaf\xe1\xc4\xee\x22\x17\xbe\xb9\x6e\xdb\xf6\x71\xe8\x1b\x5a\xe0\x7d\x84\x55\x51\xf4\x0d\xc7\x1e\xbd\x21\xe3\x31\x2a\xc8\x6b\xfd\x0a\x6f\x6f\x3f\xad\x4a\x65\xb8\x4e\x73\x5b\x45\xd9\x97\x81\x9b\x1e\x4d\x72\x6a\x8a\xac\x96\x44\x2e\x9b\x2f\x09\xda\xaf\xbd\xfe\xa9\xf4\xf7\x49\x33\x8d\xdd\xf0\x78\x1b\xc2\x5a\x1f\xb0\xae\x4e\xd7\x1d\xa2\x78\x65\x53\x51\xd8\x25\x2b\x91\xf1\xf6\xf8\xcb\x78\xdc\xbd\x8c\x2a\x38\xdc\x27\xf9\xff\xc7\xde\xb7\x35\xb7\x91\x1c\xe9\xbe\xfb\x57\x54\xc4\x3e\x48\x3a\x01\x82\x1e\x3b\xf6\x84\xad\x88\x7d\xe0\x50\x94\x07\xb6\x86\x94\x49\x6a\xc6\x7b\x16\x1b\x50\xa1\xbb\x00\xb4\xd9\xa8\x6a\x75\x75\x93\x82\xd7\xfe\xef\x27\x2a\x33\xeb\xd2\x57\x74\x03\xa0\x24\x7b\xe7\x61\xd7\x23\x02\xa8\xae\xae\x4b\x56\x56\xe6\x97\xdf\xb7\xba\x03\x5a\xf4\x2e\x4e\x88\x40\x06\xc5\x16\x79\x99\x79\x36\x8f\x71\x25\x07\x5d\x93\x42\xf9\x5b\x7f\xfc\x73\xf6\xc7\xbb\x9b\xeb\xb3\x2d\xcf\xf5\x86\x43\xcd\xad\x6d\x6b\x62\x95\x66\xf0\x02\x6a\xf3\x4a\x89\x9c\xcb\x33\xb6\x56\x13\xcc\x62\xbe\x66\x9b\xa2\xc8\xf4\xeb\xf3\xf3\x75\x52\x6c\xca\xe5\x34\x52\xdb\x73\x3f\x34\xe7\x3c\x4b\xce\x97\xa9\x5a\x9e\xe7\x02\x70\xac\x67\xdf\x4d\x7f\xf3\x1d\xcc\xcc\xf9\xe3\x77\xe7\x90\xbb\x9a\xae\xd5\xbf\xbd\xfb\xcd\xef\x7f\xfb\x7f\x4d\xc3\xd9\xae\xd8\x28\xf9\x9a\x52\xa4\xbd\x6d\x9f\xa1\xdf\x7b\x8e\x3f\xa9\x3d\xe5\xf7\xd3\x5f\x87\xdd\xa0\xaf\x6e\x55\x2c\x52\x7d\xfe\xf8\xdd\xc2\x4e\xcc\x34\xdb\xfd\x82\xfc\xfc\x6a\xc8\xcf\x87\xa4\xf8\x05\xf9\xf9\x55\x91\x9f\xc3\x3d\x1c\x67\x63\x6a\xa2\xd9\xe6\xef\xce\x46\xda\xe0\xf6\x3e\x3b\xd4\x72\x38\x84\xb8\xfc\x23\x8e\x88\x07\xd1\x40\x7e\x8c\x08\x39\xb8\xab\x43\x47\x10\x6b\x2c\x9d\x7d\xa7\x33\x3f\xaa\x0c\x19\x70\x16\x49\x04\x54\xc9\x18\x74\xcb\x78\xd2\x86\xe7\x24\x3c\xd1\x31\xe3\xf7\x9c\xa4\xdf\xa7\x66\xfb\xa6\xd7\x3d\x90\xe9\x3b\xc5\x5f\x5b\xf4\x93\x7a\xb2\x0c\xdf\xa7\xe0\xc5\x1e\x28\x40\xe7\xe8\x7e\x71\xf1\x40\x5f\x6c\xbf\x3a\xba\xb1\xe1\xfa\x30\x18\xdd\x05\x92\xea\xb9\x4c\x98\x93\xcd\xa5\x07\xda\x83\xc3\xf2\x14\x80\xba\x29\xd1\x21\x65\x65\x9e\x29\x2d\xf4\x94\xbd\xad\x49\x34\x79\x68\xe0\xed\xdb\x4b\xf6\xdd\xef\x7e\xff\xdb\xb9\x7c\xd9\x72\x6e\x83\xbd\x57\xf9\x9a\x90\x8a\x70\x5a\x6f\xb9\x2e\x44\x7e\x9e\xaf\xa2\x73\xb4\x72\xe7\xe6\xf7\x67\xf4\xd0\x33\xb5\x3a\x73\xa4\xbf\x67\xc4\x7f\x3a\xdd\xc6\xe3\x4a\xf8\x2b\x4b\x0f\xcf\x1a\x3a\x68\x34\x1c\x4a\x48\xf6\xa3\x56\x8e\xde\x1d\x2b\x49\x50\x09\x42\xad\x5a\xfe\x03\xc4\xac\x5f\x39\x8a\x31\xae\xed\x33\x3c\xe7\x4f\xf7\xd6\x3c\x0d\xff\xb7\x5d\x22\xcf\x19\xa8\xb0\xb6\x24\xbc\x8e\x8c\x19\xf8\xf6\xcd\xe6\x8f\x7b\x64\x3c\x20\x35\x64\xe4\x4f\x56\x52\xa8\x15\xe0\xe4\xc0\x13\xb6\x38\x00\x88\x86\x9a\x93\xd6\xb3\x1b\xe4\x22\xc3\x03\x26\x54\x4f\x6e\x19\xee\x23\x39\xc4\xf7\x8d\xf3\x73\x70\x88\x1f\x3b\xee\x64\x50\xbe\xd2\x80\x1f\x0b\xd6\xc3\xad\x34\x06\xb7\x60\xbe\xbf\x37\x47\xe9\xec\x00\x24\x25\x43\xc1\x62\x64\xf3\x02\x27\x4d\x9c\x15\xea\x0c\x68\x61\x80\x6c\x04\x59\xfd\xbb\x80\x0b\x90\xdb\x1d\x73\x4c\x9a\xef\x0f\xe8\x27\x3a\xe6\x9f\x83\x8e\x92\x4f\xa2\x91\x24\x93\x40\x4f\x89\x94\x22\xa7\xac\xd5\xde\x13\x75\x64\xe6\x37\x9c\xca\x7e\xcc\x53\x20\xc8\x19\x30\xae\x3b\xc4\x3b\x0f\x8c\xc0\x94\x81\xf7\xb9\x51\x5b\x65\xdc\x19\x55\xea\xe0\x43\xbc\xbd\xc0\x21\xdc\xe9\x7b\x6d\x79\x86\x34\x70\x5f\xef\x6d\xcc\xd6\x32\x1f\x61\x50\x2f\xfc\xd2\x28\x11\x8b\x65\x95\xb6\x7f\x4f\xff\x1d\xdf\x7a\xff\xba\x01\x5c\xc1\x16\x92\x28\xa0\x71\x47\x2c\xca\xc9\xdf\xcc\xbd\xc6\x2c\x29\x77\x53\x70\x27\x37\xc2\x60\x90\xed\x30\x24\x54\xb5\xde\x7c\x67\x3d\x72\xb9\x1d\x39\x07\x0e\xc6\x3b\x64\x02\xb8\x44\x60\xab\x45\xb4\x9e\xb5\x42\x5a\xbb\xf6\xa5\x55\x94\x8b\x17\x96\x91\x73\x5c\x57\xef\x5c\x03\x44\xbe\xd9\xec\xb7\x27\x34\x02\xfc\x33\x8e\x31\x1a\x04\xeb\x5b\x74\xc0\x5a\xe4\xf8\xcd\x08\x12\x26\x63\xc6\x0e\x1e\x82\x8b\xb3\x31\x82\xc1\x5e\xe8\x1a\xc0\x71\x21\xb6\xbe\x88\x55\x1b\x60\x1e\x39\xe0\x7c\x7d\x8c\xe9\x65\xe3\xf2\xe8\x7e\xf8\xe8\xe5\x33\x77\x99\x98\xb0\x65\x09\x9f\x5f\xdf\xdc\x87\x78\x88\x04\xdf\xf6\x2c\xda\x88\xe8\x01\x02\x26\x78\xe4\xe1\x66\xb0\xd2\xa9\xcb\xdd\x5c\x7a\x71\xad\x42\xd9\xe4\xfe\xce\xf1\x8d\x3b\xce\x7d\x95\xb3\x38\xd1\x59\xca\x77\x90\x46\x95\x88\x84\xf7\x29\x58\x57\x42\x62\x4c\xc1\xbe\x78\xf1\xf0\x99\x36\xb3\x72\xe1\x7f\x37\x76\x2c\x79\xbe\x4c\x8a\x9c\xe7\x3b\xe6\x07\xb3\x69\x0f\x98\x16\x5b\x2e\x8b\x24\x9a\xcb\xad\xe0\x32\xc4\xbd\x51\x1a\xd9\x0c\x72\xac\x04\x31\xf2\xae\x56\x22\x2a\x3c\xa5\x1f\x38\xef\x6e\xa4\xf6\xed\xc1\x71\xef\xee\x76\x5e\xef\xab\xff\x90\x48\x2c\x20\x4f\xb6\x80\xaa\xa4\x35\x44\x47\xe3\x81\xc9\x1b\x10\x63\xa3\x23\xd7\x5e\x06\xe1\x5f\x76\x4d\xb1\xa5\x28\x9e\x04\x54\xac\x53\x89\x5d\x9b\x8f\x7f\x34\x21\xff\x71\xb2\x85\xed\x82\x8f\x01\xd6\x0a\x37\x58\x08\xd7\x72\xd4\x3a\xb2\xc6\x91\xf3\x82\x8a\xfe\x20\xda\xf3\x82\xe2\x56\x2f\xe0\x98\x36\xb7\xc7\xfc\x51\xc4\x73\x59\x25\x2e\x22\x9f\xd1\x6f\x38\xe6\xa5\xa6\x4e\x63\x6d\xec\x18\x0f\x8a\xe5\x5f\x01\x59\x83\xa7\x69\x74\x65\x6d\x3d\xd2\x57\xed\x52\xf9\xcf\xa0\xaa\x34\x38\xc9\xe3\xd5\xa8\x48\x4a\x86\x94\xe7\x2a\x78\x0a\xb7\x28\x1d\x2d\x0b\x72\xb6\x39\x88\x29\xc5\x25\x1b\x91\xce\xb6\x36\xe6\xd2\xd6\x2b\xaf\xca\x14\x79\x38\xbb\xc4\xb8\x88\xa5\xc9\xd6\x56\x7c\xbd\x1a\x1b\x17\x57\x63\x81\x7a\x97\x83\x3d\x04\x70\x5f\xb4\x75\x76\xd5\x0b\xa9\x51\x49\xd3\x0a\xf7\x40\xe0\x79\x2d\x0a\x38\xcd\xe3\x32\xc5\xf2\x5b\x88\x98\x03\xe3\x13\x4f\x53\x96\x14\x7a\x2e\x1d\x41\x15\xd2\x8d\x83\x85\xb5\x21\xf5\x98\xae\x5c\xf0\x08\x68\x96\x44\x87\xc1\x0f\x4b\xa2\xa4\x68\x80\xa4\x77\xa1\xd8\x45\x96\x09\x8e\xd5\x62\x38\x6d\x73\x19\xde\xb9\xea\x93\x40\xa5\x55\x20\xae\x7a\x8a\x2a\xa7\x1e\xcc\x3b\x28\xd2\x8e\x9e\x92\x29\xbb\xc0\xb7\x8b\x9c\x86\x3f\xa3\xde\x52\x85\x3a\x61\x19\xcd\xad\xa6\xd0\x36\x46\xee\xef\xad\x19\xcf\x8b\x24\x2a\x53\x9e\xa7\xc0\xfa\xbe\x2a\x53\x96\xac\x02\x49\x4e\x98\x03\xa4\x27\x32\xd3\x15\x29\x38\xab\x6d\x94\x5c\xf3\xad\x08\x2a\xa3\x29\xbc\x93\x06\x18\x0a\xe4\x5c\xc6\xe4\xbc\x69\xeb\xd5\x94\xbd\xa9\x4b\xe3\xc2\x9e\x08\x68\x0d\x13\x8d\xe6\xcf\xf5\x37\x28\xea\x43\x89\xdd\x64\x65\xae\x94\x2f\x82\x5d\xd7\x25\x32\xcf\xf5\xc3\x48\x80\x86\x25\xc7\xef\xc7\xe5\xb6\x16\xf5\xde\x83\x10\x79\x05\xb6\xe1\x36\x44\x47\x07\xed\xa9\x30\xb2\x93\x21\x25\xe4\x01\x1d\xfd\x39\x50\xfa\xae\x77\x76\xdb\xa3\x00\x0a\xf3\x38\xb2\xab\x81\x9e\xce\xf8\x8e\x06\x2b\x27\x84\xe3\x0c\x19\xd9\x35\x2f\xc6\x62\x73\x5c\xb9\xcb\xf8\x8e\xb6\xe2\xa0\x3a\xbb\xb9\x3f\xd2\xf4\x73\x45\x80\x87\x99\x5e\x99\x5b\xbe\x40\x9c\x99\x5a\x05\x26\x98\xce\x1b\x52\xea\x01\xf2\x73\x67\x13\x96\x82\xa5\x89\x7c\xb0\x54\x07\x66\x81\x4e\x18\xf7\xad\x83\x8d\xc0\x41\xc6\x3d\xd7\xe1\x79\xb5\x49\x05\x1c\xe1\x8c\x0d\x2b\x18\x6c\xbf\x21\xdb\x9e\x8c\x52\x83\xb0\x2f\xdc\xf6\x1e\xc3\xa7\xa5\x17\xd9\xec\xee\x3c\x16\xce\x8c\xc7\x60\x80\xb1\x0c\xe4\xdc\x3b\xc7\xf7\xfd\xa6\x8a\xd9\x1b\x21\xac\xf3\xe1\xfa\xcd\xd5\xdb\xd9\x75\x55\x0d\xe7\xcf\x1f\xae\x3e\x54\xff\x72\xfb\xe1\xfa\x7a\x76\xfd\x87\xf0\x4f\x77\x1f\x2e\x2f\xaf\xae\xde\x54\xbf\xf7\xf6\x62\xf6\xae\xf6\x3d\xf3\xa7\xea\x97\x2e\xbe\xbf\xb9\xad\xe9\xef\x58\xf1\x9c\xe0\x4f\xf7\xb3\x1f\xaf\xde\x2c\x6e\x3e\x54\x24\x7c\xde\xfc\xe7\xf5\xc5\x8f\xb3\xcb\x45\x4b\x7f\x6e\xaf\x2e\x6f\x7e\xba\xba\xdd\xa3\xc0\xe3\xdf\xb7\x75\x48\x4f\x01\xb6\x3a\x58\x8f\xe9\x82\xad\xf2\x44\xc8\x38\xdd\x21\x16\xdc\xde\x03\x6b\xd0\xd3\xf0\xa4\x4a\xb6\x42\x95\xc7\x40\xba\xef\x37\x82\xa9\x47\x91\x03\x2b\x03\xb6\x46\x25\x9c\x5c\x3f\x74\x72\xf6\x15\x79\x33\x86\xde\x5b\xb9\x52\xe4\x3b\x57\x1b\xd5\xd7\x1d\xcf\xe8\x43\x0f\x61\x99\xc8\xfb\xfa\x02\x7e\x44\x5e\x66\x45\xb2\xec\x06\xe9\x0f\x64\xba\x19\x7f\x53\x45\xfe\xb9\x76\xb2\x8e\xeb\x76\xc3\x58\xc1\xaa\x1f\x03\xd3\x85\x16\x0e\x95\x19\x73\xbf\xb6\xd0\xc6\xac\x5c\xa6\x49\xc4\x92\xb8\x1e\x7d\xc0\x92\x2a\x0c\xb0\xd6\x69\x2a\x33\x91\x83\x63\x67\xfc\xe5\x2c\x17\x67\xbc\x2c\x36\x56\x01\xdd\x55\xd6\x21\x6d\xa4\x88\x72\x51\x04\x6a\xfd\xa4\x2f\x15\x3c\x09\x3a\x43\x15\xc5\x31\x90\x97\x4c\x03\xca\xf0\x8e\x88\x3a\xfe\x12\x5b\x1f\x11\x52\xc4\xef\xf7\x0e\x0d\xf5\x38\xd1\x75\x71\x61\x70\x61\xf1\x43\xab\x52\x65\xde\xdb\x58\x6a\xa7\xd2\x84\x93\x6c\x6b\x09\xda\x5f\x63\xdf\x1a\x0b\x17\x4a\x15\xfa\x4f\xad\xd3\x47\x97\xb9\x80\x43\x84\x12\xe7\xf6\xb6\x0f\x40\x0f\xaa\x3d\x80\x92\x03\x73\xb1\x59\x8a\x0d\x4f\x57\x18\xc3\x33\x53\xe3\xf7\x55\x73\x89\xde\xab\x07\x21\x6f\x71\xc2\xbe\x8a\x39\x94\x78\x4f\xf0\x35\xe6\x2e\x7e\xe2\x03\x7e\xa6\x8f\x76\x55\xd9\xda\x2b\x14\xe9\x47\xaf\x3a\xf8\x18\x0b\x20\x3c\x83\xac\x2d\xdb\x5a\xad\x92\xcf\xa6\xc1\xb9\x14\xad\x1c\x9a\x80\xae\xb1\x6c\x3f\xce\x2e\x03\x92\x08\x29\x53\x1e\x84\x04\x7d\x2b\x94\xbf\xdd\xbb\x66\xc7\x45\x9b\x9b\x73\xd1\x13\xfe\x86\x08\x59\x52\x91\xfd\x0a\x73\x22\x76\x9c\xa0\xc8\xf2\x41\x4c\xd9\x1b\x22\x82\x30\x7f\xb9\x7c\x37\xbb\xba\xbe\x5f\x5c\xde\x5e\xbd\xb9\xba\xbe\x9f\x5d\xbc\xbb\x1b\xba\xfd\x4e\x51\xa7\x53\xdb\x7d\xf5\x52\x29\x67\x21\xce\x69\xe7\xf9\x72\x51\xf7\x52\x7e\xdb\xc1\x94\xec\xef\x7d\x12\x67\x8b\x38\xd1\x91\x39\xfe\x76\x0b\x21\x63\x20\x1f\x3e\x68\xa9\xb6\x37\x55\x7f\x0b\xf7\x0d\xe6\xbe\x61\x2d\x08\x9e\x76\x8f\x76\x45\xbb\xcf\x01\xa3\x06\x41\xbb\x5c\x98\xcd\x1f\xcf\x65\x70\xda\x4c\xf7\x2b\x4e\x98\xe6\x8e\x7b\xb7\x6a\x13\xf5\x77\xc2\xfe\x26\x5a\x97\xdc\xd8\x47\xfb\x35\x00\xe8\x75\x8c\x0a\x31\xc2\x85\x0c\xc8\x49\xa0\xde\xc9\xcc\x4d\x7e\xcb\x65\xcc\x0b\x95\xef\x3a\x5e\x71\x98\xf1\x0c\xb7\x4d\xd5\x84\x86\x47\xb6\x14\x22\xb6\xb3\x80\x5f\xe5\xb2\xbe\x94\x90\x27\xf9\xfe\xe6\x4f\x57\xd7\x77\x8b\xab\xeb\x9f\x16\xef\x6f\xaf\xde\xce\xfe\xe2\x70\x83\x19\xd7\x6d\x6a\x7d\x59\x2e\x8c\x75\xb1\xb4\x13\xad\xf6\x05\x25\xf4\x6c\x3b\x24\x9b\x94\xac\xe6\xd2\x5a\x96\xdc\x37\xbf\xc9\x55\xb9\xde\xb4\x37\x54\xef\xe5\xfb\x8b\xfb\x1f\x0e\xea\x26\x90\x02\xa1\xce\x16\xee\xb6\x26\x7e\x32\x59\x91\xdd\x43\xd0\x65\xad\x7b\x40\x6d\x05\x5f\x6d\x8b\xc9\x77\x58\xb4\x83\x6e\x2f\x4d\xa3\xd5\xeb\xfc\xb7\x7c\xbd\x6b\x01\xdd\x07\x76\xb3\x72\x8c\x00\x9e\x17\xe5\x1a\x1b\xad\xbd\x6e\xf9\x5b\xe5\x04\xfb\xcd\x59\x2a\xd6\x6b\x11\xe3\xf2\xaa\x37\x4c\x11\x2b\x32\x81\x91\x3f\xd7\xdb\x46\x91\x04\xd5\x8e\x38\x98\x1d\x3a\x6a\xb8\x01\x7f\xef\x7e\xd2\x6e\x2b\x2e\xad\x68\x73\xa4\xa4\x2e\xb8\xec\x48\xbb\x3e\x36\xf1\x8c\x83\x4c\xd1\x4d\xce\x5c\xa9\x10\x05\x48\x6c\x80\xdd\xef\x83\x43\x12\x4e\x24\x1c\x27\x29\xe2\x11\x08\xca\x05\x2a\xd3\x2d\x93\x00\x91\xc6\x5b\x6b\x11\x9f\x3f\xb8\xd1\x7b\x75\x22\x26\x24\x08\x8c\xa2\x72\x0f\x41\xb5\x31\x1a\x04\x72\x58\x9d\x30\xda\x51\x13\x52\x7b\xf2\x4f\x34\xf4\x78\x6b\xad\x06\x66\xb9\xe5\x1a\x73\x13\xe4\x9c\xb7\xf1\xf1\xad\x8a\x1f\xee\x5b\xce\x72\x15\x97\x91\x65\x63\x81\x66\x3d\x1e\x84\x02\x5a\xf6\x80\x8d\xd9\x99\x99\x66\xba\xa4\x88\xf8\x0c\x90\xde\x73\xd9\x95\x7c\xb1\x36\xa0\x23\xcc\xf5\xde\x9e\x5a\xc7\xcc\x7d\xcb\xe8\x77\x6f\x41\x3b\xd8\xc3\x2a\x2e\x99\xfd\x3a\x38\x7b\x1d\x70\x1a\x9a\x97\x25\xc7\xcc\x6a\xf5\x38\xee\x22\x5f\x70\x56\x75\x1c\xea\x67\x18\x68\xa2\x5a\x4a\x81\x47\xe4\x86\x6b\xf4\x5c\x8b\x68\x53\xed\x38\xbc\x4d\x95\xb0\xac\xde\x5d\xe7\x09\x1e\x17\x21\x18\x94\x5f\x99\xe0\x9d\x3a\xd1\xd4\xfb\x50\x7c\xca\x29\xe9\x8d\x5b\xf8\xa1\x73\xe4\x2e\x2f\x68\xf7\xc0\x60\xa5\xbc\x94\xd1\x86\x65\x29\xc7\x2a\xe3\x0d\xd7\xb8\xa4\x2d\xc8\x80\x2f\x93\x34\x29\x80\x20\x05\x73\x5f\xb5\x11\x36\x37\x1a\x9e\x3f\x58\x4e\x52\xee\xd9\x70\xfa\x16\xfd\x91\x60\x4e\x2f\xd8\xfe\x25\xe1\x9c\x7e\xcb\x06\xbf\xe8\xcd\x9c\xf9\x65\x49\x50\x4e\x3f\x1d\xc6\xe2\xc1\xb2\xf4\xef\x32\x6e\x66\xa9\xc5\xf7\xf5\x9f\x57\xc6\xbb\xe5\xa0\x1e\x0f\x65\x20\xb2\xed\x11\x66\xbe\x4e\xc5\xdd\xba\xb3\x56\xa9\xe2\x1d\x72\xb0\xb6\x6d\x64\xd6\xee\x6a\x3b\x56\xe5\xb2\x8b\xcb\x15\x7b\xd5\xdf\x7a\x5f\xdc\xdf\xee\xdb\x53\xc5\x05\x43\x03\xc8\x0b\x51\x24\xe3\x42\x1b\xc1\x4b\xf3\x42\x9c\xc1\xcf\xdb\x1b\xa7\xd2\xb3\xc1\xef\xdc\x58\x68\x5e\xdf\xc1\x31\xc6\x02\xc8\xac\xb9\xba\xfe\x5c\x72\x63\x1a\x6e\x56\x77\xc8\xd8\x71\xcc\x22\x2b\x92\xe6\x0a\x6b\xdf\x89\xf5\xa7\xde\x57\x93\x2a\xe1\x1a\x18\x5c\xad\xd9\xf6\x36\x77\xe6\xd7\xc3\x37\x64\x55\x33\x3d\xcb\x13\x05\xbc\x1a\xa4\xd4\xde\x43\x7a\xd7\xfa\xdc\x23\x46\xf2\x53\x29\x4a\x61\xd6\xfe\xb2\x8c\xd7\xcd\xd8\xe6\x08\xef\xcc\xbf\xd2\x46\x3d\xb1\x6d\x19\x6d\x98\x6d\x9c\xc5\x22\xe5\xbb\xca\xab\x81\xbf\x54\xa8\x14\x68\x64\x0f\xe4\xb4\x8c\x4a\x5d\xa8\x2d\x80\x30\x7d\xbb\x79\x29\x61\xc1\x33\x5e\x14\x79\xb2\x2c\x8b\x56\xc0\x56\x85\xe3\xea\xc0\x84\xd6\xdd\xfb\xab\xcb\xd9\xdb\x59\x2d\x9b\x74\x71\xf7\xa7\xf0\xdf\x3f\xdf\xdc\xfe\xe9\xed\xbb\x9b\x9f\xc3\xbf\xbd\xbb\xf8\x70\x7d\xf9\xc3\xe2\xfd\xbb\x8b\xeb\x4a\xce\xe9\xe2\xfe\xe2\xee\xea\x7e\x4f\x5a\xa9\xf9\xd4\xee\x89\xe0\x01\x05\x97\x85\x85\x5a\x2e\x62\x7b\xbb\xa4\xa7\xbe\x66\x17\x96\x90\xac\x42\x99\x67\x53\x83\x90\x79\x47\x65\x5e\xca\x20\xbe\xe1\x05\x27\xa5\xf3\x29\xbb\x60\x56\xb1\x1e\xc0\xd0\xda\x38\x0b\xc4\xd6\x64\x66\x07\x9b\x30\x1e\x43\xe4\x6f\x6e\x5e\x6c\x4d\xad\x88\x27\x2d\x15\x21\x2d\xb7\xad\xfc\x99\xcb\xab\x47\x21\x8b\x12\x38\x83\x79\x9a\x32\x2b\xb0\x4e\x5f\x08\xaa\x9a\x6d\x2f\x75\xb2\x4d\x52\x9e\x7b\x5d\xac\x1b\x6a\x0b\x1c\x76\xdb\x57\x47\x62\xd3\x2c\x99\xb5\x97\x87\x0f\x33\x06\xfd\xbe\x7c\x37\x03\x17\x28\x2a\xac\xe8\x83\x7d\xf8\x5c\x22\x0f\x17\x3d\x71\xcb\x01\xa0\x5f\x28\x8a\xa7\xe1\xe3\xe9\xcb\xdd\x0b\x51\x1f\xb3\x89\x6d\xe4\xf9\xb9\x40\x40\xae\x93\xf6\x3f\xae\x64\x91\xef\x06\xfb\x35\xf7\x50\x91\xaa\xc1\x37\x25\xbc\x4f\x55\x2b\x0b\xc3\x1d\xcc\xb6\x7e\x0d\xce\x8e\x05\xa3\x51\x34\xde\x05\xdd\x05\x30\x13\x77\xf8\xdf\xa9\x39\x84\xbe\xd5\x71\x08\x49\x43\x60\x14\x96\xaa\x94\xb1\x26\x64\xd2\x36\x91\xe7\x5b\xfe\xf9\x95\x7d\x53\x2c\xc2\x77\x8c\xf5\x40\xb0\x24\x52\x73\x13\xd9\x19\x23\xd7\x3f\x5c\x73\xd9\x33\x5e\xfb\xbd\x45\x6b\x59\xe1\xda\xe3\xef\xa8\x88\xb1\x7a\x14\xbb\xb6\xf9\x6b\xa8\x8e\x20\x8e\x8b\x36\x3c\x34\x92\xe5\xc2\x7c\xd1\x01\xb8\x52\xc4\xe5\xb9\x7f\x03\x50\xbb\xa2\x8c\xd6\x6e\xbb\xc3\x2c\xef\x51\xdb\xa6\x35\xbf\xfc\x0c\xb2\x31\xf4\x24\x33\x67\x98\x6d\xb6\x81\x4e\x02\xa6\x53\x1a\xcd\x4c\xd6\x5f\xd5\x92\xad\xa0\x4a\x83\x94\x8f\x73\x01\x81\x6d\x98\x0a\xcb\x73\x0c\x34\x3c\x8d\x14\xb6\x5d\x02\xa9\xd0\x10\xee\x95\xe6\xba\x25\x3e\x95\x94\xb1\xfb\xee\xd7\xe3\xce\xd9\x22\xdf\x31\xcb\xa9\x1f\x56\x89\x50\x91\x14\x9d\xb9\xd0\xaf\x52\x26\x6d\xdc\x5c\xb7\xa5\x34\x47\xf1\x29\xc0\x0e\xc3\xb3\x59\xb5\x87\xd2\x3f\xf7\x16\x52\xd8\x40\x6c\x8e\xdf\x7f\x36\x32\xc3\x9f\x6a\x1c\x86\xf4\x38\x80\xed\x52\xeb\xe1\x81\xb6\xe4\xd1\xc3\x13\xcf\x63\x8c\x15\x02\xfa\x60\xca\x7e\x50\x4f\xe2\x51\xe4\x13\x16\x89\xbc\xe0\x44\x6f\xa4\x21\xfd\x0a\x1b\x8a\xda\x99\x4b\x40\xb1\x23\x57\x94\x04\xd1\xe8\x22\x59\x6f\xcc\x7d\x32\x48\x9e\xab\xdc\x98\xa3\x02\xb9\xe3\x32\x11\x11\xa1\x4c\xc7\x00\xac\x52\xfe\xd8\xe4\x6b\x3a\xa4\x12\x9e\xcd\x5c\x29\x9e\xcd\x4e\x59\xee\xf8\x3e\xb8\x03\x0d\x18\x19\x4d\xa4\x00\x99\xb0\xb5\x4a\xb9\x5c\x4f\xa7\x53\x26\x8a\x68\xfa\x6a\xd4\x42\xa7\x06\xc3\x7c\x97\x83\xa0\xa6\x4a\x69\x91\xee\x1c\x09\x8a\x2b\x12\x30\xc3\x0c\x35\x22\x3a\xc1\x90\x47\xcb\xf2\xbf\xab\x57\xd4\x7f\xd9\xd0\x79\xfb\x4d\x75\x74\x09\x5a\x47\x3b\x20\x45\x33\xa2\x25\xfc\x7e\xfb\xcd\xeb\xa0\x92\xca\x0e\x9e\x53\x25\xc7\xd6\x09\xfe\xa4\xba\x84\x95\x0f\xe2\x26\x6b\x6d\x89\x88\x1c\x0e\xaa\xad\xea\x8a\x58\xd4\xca\xdd\x8e\xa8\x74\xeb\x29\x5a\x1b\x59\xaf\xd6\xb2\xef\x5a\xb6\x45\x6d\xba\x47\x6f\x8b\xfd\xec\xf8\xad\x2f\x34\xb2\x1e\xd0\x17\xee\x8e\x71\x9d\xb0\xa4\x28\xdd\xc1\x8d\xcb\x55\x07\x42\x64\x39\x0e\x22\xe3\x95\xc0\x3f\xd4\xa9\xf8\xcc\x81\x23\xd8\x09\x12\x05\xba\x50\x39\x5f\x0b\xb6\x15\x71\x52\x6e\x5b\x8d\x8d\xeb\xee\x31\x68\x2f\x95\x96\xdb\x6e\xaa\xb3\x63\x1d\x68\xdf\x49\xfc\xaf\x4b\x78\xdc\x60\x07\xda\x4b\x88\x5b\x91\x12\xea\x2f\x86\xc1\x69\xac\xcd\x49\x99\x27\x1a\x48\xf9\x0e\x29\x0b\x73\xcd\x60\xd3\x90\xad\xdb\x65\x18\x7e\xad\xcc\xee\x99\xcd\xee\xd0\x4f\x34\xce\x2a\xa4\xf8\xba\x0f\x85\x3a\x86\x6c\xf4\x1c\x81\x04\xc6\x41\x79\x4d\x70\x1b\x03\x32\x6a\x02\xb9\x40\x83\x94\x89\x2f\x14\x5b\xd9\x42\xa3\x07\x11\x50\x37\xc5\x40\x53\xfd\x84\x3c\x20\x7f\xfa\x9d\xb6\x39\x7b\x82\x55\x78\x8f\xa5\xf0\x0f\xc1\xdc\xc0\xe3\x77\x16\x4d\x83\x6f\x88\x4d\x00\xc1\x52\xcc\x65\xd1\xda\x80\x07\x9b\x41\x5b\xf8\x93\x9f\x78\x99\xb6\x7f\x9d\xda\x87\xaf\xa2\xe4\xcd\xc5\xcf\x77\x0c\x87\x9a\x08\x8d\xf3\xbe\x8e\x06\x8d\xec\xc7\xf3\xc0\x70\x2d\x0e\xf0\x04\x2b\xf3\x80\x83\x6e\x19\xad\xcd\xb0\x8b\x22\xda\x78\xcf\xa3\xaa\x5d\x4b\x7a\x66\xf4\x9e\x5b\x4f\xd1\x8c\x50\xc9\x10\x73\x96\xac\xa5\x0a\xd5\x05\x94\x14\x90\xa4\x31\x06\x48\x85\xcd\xb2\xa4\xd8\x0f\xec\x19\xc9\xaa\xb4\x6f\xa9\x15\x0a\x01\x1b\xf4\x9e\x95\x5c\x1b\x5c\x29\x12\xe4\x62\xb1\xa8\x48\xbc\x13\x91\x3c\x56\x9d\x58\xb8\x5a\xdd\x3e\x97\xd5\x47\x35\x06\xc9\x22\x6f\x92\x5c\x20\x1f\xa8\x36\xde\x5b\x91\x3c\x9a\x8d\xda\x5c\xd6\x6e\x81\x82\x05\x68\xae\xbd\xb9\xc4\x6e\x07\xa4\xa2\x0f\x62\xa7\x43\x2d\x2e\x5a\x51\xac\x6b\x41\x26\xe6\x7d\x68\xbe\xf6\x4f\x05\x0c\xdc\x22\xd0\x16\x1f\x76\x96\xe1\x43\x7f\x34\x3f\xee\x81\xf4\x35\x1a\x37\x6b\xd0\x57\x72\xf9\x98\x22\x99\x09\x3f\xce\x34\x87\x1e\xb5\xd3\xa2\x3b\xef\xc3\xb3\x70\xf1\x35\xf7\xdb\xb9\x24\xde\xe1\xe0\x90\x33\x06\xa7\x39\x6d\x54\x5e\x8a\x6c\xa7\xbb\x0a\x35\x06\x50\xc3\x59\x9a\xbc\x76\xb9\x7f\x2b\xe5\x38\x97\x24\x98\x0f\x8a\xf7\x14\xc3\x6b\x7d\xe0\x81\x50\x30\x9a\xdc\x4e\xf8\x97\xbf\xc2\xd0\xc0\x11\x3b\x1a\x8a\xba\xe1\xed\x27\x12\x66\xf8\x2e\x64\x2b\xf2\xca\xe2\xae\xee\xae\x2e\x6f\xaf\xee\xbf\x18\x3c\xcc\x62\xb3\x46\xe3\xc3\x6c\x3f\xdf\x5c\xbd\xbd\xf8\xf0\xee\x7e\xf1\x66\x76\xfb\x1c\x00\x31\xfa\xe8\x00\x84\xd8\x1d\xd1\x99\x5f\x2a\x59\x88\xcf\x47\x9d\xc9\x79\x29\x17\x7c\x44\xa5\x82\x93\x0c\xe8\x73\x77\xb0\xd1\x26\x1d\xbb\xe3\x4a\x27\x6e\x3e\x3c\xd1\x1c\xfb\xfa\xca\x07\x0d\x57\x49\x9a\x42\x99\xa3\x0b\xaf\x53\x51\x90\x19\x54\xb0\x3f\x96\x8e\x90\x6c\xea\x5c\x2e\x2b\x7c\xf4\x10\xf2\xdb\x98\x4b\x30\x16\x38\x66\x66\x00\xf2\x04\xca\xc7\xfa\x18\xdb\xd7\x89\x14\xbe\x1b\x28\xc0\x5a\x4a\xd6\x49\xb3\x4b\x93\xf8\x9c\x55\xac\xe4\x78\x0d\xf5\x35\xed\x8a\xab\xac\x4f\xeb\x7e\xda\x0f\xdd\x1b\xe2\x26\x4e\x24\x3a\xa6\x95\xdd\x7c\xd7\xbe\x74\xcf\xfd\x16\x80\x71\x37\x33\xc9\x21\x07\x01\x1a\xa7\x7e\x22\x69\x22\x50\x2b\xc5\x27\x27\x1e\x12\x44\xd1\xa8\x55\x6d\x9c\x8d\x29\x34\x63\x9d\x40\xa6\x82\x13\x73\x43\x94\x96\xba\x10\x39\x85\x4d\x2e\x7e\xbe\x9b\x4b\x14\xc2\xa7\x53\x88\xf4\x34\xf0\x11\x88\xe1\x50\x95\xe7\x5b\x0f\x25\xb4\x60\x2f\x31\x46\xbd\x15\x5c\x6a\xd4\x9f\x4e\x53\x91\xfb\x95\x81\xfd\x11\x22\x26\x0d\x32\xa0\xaa\xf4\xbf\x27\x09\x62\x05\xbb\xd6\xf4\x97\x3e\x25\x11\xde\xfa\x7a\xea\xaa\xa2\x05\x80\xe8\x73\xae\x9c\x96\x3a\x85\xa1\xab\x88\xb0\xb5\xad\x8b\xa8\x5a\x35\x30\x68\x2d\xdd\x63\x73\xbf\x2c\xa5\x13\x2e\xa5\x01\xe7\x7a\x78\x4a\xb0\x8d\x32\x06\xd4\x49\x61\xf8\x34\xb3\xab\xe2\x4f\x01\xff\x64\x86\xb1\xf5\xd4\xa9\x09\xae\x1d\x71\xea\xa0\xc2\xda\x71\x70\xce\x8b\x16\xba\x10\xaf\xec\x63\x73\x3b\xbd\x5a\x6e\xcf\x43\xcb\x75\x61\xf1\x76\x52\x15\xb6\xc0\xde\x41\xdc\x08\xaf\x67\xbe\xe0\x98\x1d\x7a\xfb\x48\x6c\x09\xd6\x4b\x59\x1c\xa9\x87\x74\x1f\xe2\x02\x2b\x45\x94\xd8\x8b\x50\x52\x95\x10\xc4\x9e\xe0\x60\xcc\xe2\x3b\x5c\x71\xaf\xba\xe6\x1c\x59\xde\x41\x60\x87\xeb\x9b\xeb\xab\x10\xaa\x30\xbb\xbe\xbf\xfa\xc3\xd5\x6d\xa5\xfc\xf6\xdd\xcd\x45\xa5\x84\xf6\xee\xfe\xb6\x56\x39\xfb\xfd\xcd\xcd\xbb\xab\x06\xe6\xe1\xea\x7e\xf6\x63\xa5\xf1\x37\x1f\x6e\x2f\xee\x67\x37\x95\xef\x7d\x3f\xbb\xbe\xb8\xfd\xcf\xf0\x2f\x57\xb7\xb7\x37\xb7\xb5\xe7\x7d\xb8\xec\x47\x4f\x54\x5e\xa3\x3d\xfc\xe3\x93\xb3\x01\x6f\x60\xeb\x36\xae\x2a\x12\x1e\xb1\x8b\x07\x82\xb0\xf6\x2d\x47\x5b\x5d\x1b\x87\x74\xe2\xb8\x31\x4c\x57\x47\xad\xba\xd3\x4b\x28\x56\x86\x2e\xe3\xc7\x99\x3d\x73\xaa\x2d\x4e\x01\x8a\xeb\x75\x00\xdd\x53\x6a\x81\x5b\x5d\x40\x09\x12\x0e\x6d\x06\x19\xac\x35\xef\x94\x37\x91\xf1\xb3\xf7\xd4\x3e\x63\x5f\x3f\x3d\x4f\xcd\x1e\xba\x8f\x53\x91\x17\xf4\x75\x3a\x78\x98\xad\x0d\x4e\x62\xeb\x28\xd8\x0f\x83\x83\x1b\x5e\xc3\xac\x9c\x60\x39\x76\x69\xdd\xb5\xd7\x38\xf4\x53\x4b\x8d\xed\x3f\x3d\xa4\xd9\xf7\x1a\xb3\xc2\x88\x7e\x03\x1f\xcc\x98\x7e\xdf\x73\xfd\x30\xb6\xdf\xf4\x90\x66\xbf\xc1\xed\x3b\xa8\xdf\x10\xf0\x2e\xda\x59\x2f\x46\x18\xb1\xb0\x99\x6a\xf7\x5c\x49\xae\xfb\x4a\x20\x29\x39\xac\x8f\x66\x03\x3c\xef\xf5\x32\xe3\xc3\x13\x19\xd0\x1b\xb7\x5d\x79\x8d\x32\xf9\x0e\x3e\x85\x37\x5c\xe6\x82\x3f\xc4\xea\x89\xe6\xa3\x8e\x0c\x65\x83\xac\x79\x75\x80\x8c\x0d\xb7\x47\x04\x08\x51\x9b\x47\x22\x4a\xcd\x37\x0f\x30\xb9\x84\x48\x7f\xd1\x07\x0b\xb4\x10\xeb\xbc\x21\xc0\xd4\x22\xfd\xec\xcc\x25\x7a\xf3\x6d\x7a\x8a\x66\x56\x4d\x8f\xa8\xd2\x1f\x5e\xd5\xf9\xd0\x98\x5c\xd7\xc1\xc4\x52\x2d\x43\x99\x03\x98\x6e\x99\xc3\x9d\x09\x06\x24\x91\x10\x4c\xce\xcd\x85\x27\x17\x51\xa2\x45\xa0\x78\xd3\x7a\x62\x7f\x3a\x8e\x1f\xbf\xe0\x45\x6b\xd8\x75\x70\x3c\x9c\x47\x45\xc9\x53\xf6\xa9\x14\xf9\x8e\xe8\xc5\x30\x56\x89\x7f\x89\xb8\xc4\xa2\x89\x42\x6c\x33\x28\xc2\x0d\xd1\xfe\x73\xf9\x33\x00\x25\x70\x0a\x5e\x68\xf6\x07\x80\x3c\xd8\x2f\xd3\x21\xbc\xe5\x05\x9c\xc5\x7f\xc6\x67\xb8\xcf\xa6\x73\x59\x51\x90\x08\x7e\x55\x11\x93\x98\xce\xa5\xa5\x70\x8f\x55\xa4\xa7\x70\xe3\x9b\xaa\x7c\x7d\x4e\xf2\xa2\x66\xb1\xab\x87\xa5\x52\x0f\xe7\x42\x9e\x43\x4c\xaa\x38\xe7\x65\xa1\xce\x01\x2e\x85\xf3\xaf\xcf\xad\x0a\xa1\x95\x71\xd4\xe7\x9b\xe4\x51\xc0\xff\x9b\x6e\x8a\x6d\xfa\x6f\x3a\xdb\x7c\x3e\x5b\xa7\xf9\x99\xf9\xed\x59\xf8\xdb\x33\xfb\xdb\x33\xfb\xdb\x33\xf3\x33\xfc\x7f\xd9\x0e\xd3\x3b\xe2\x33\x37\x67\xd9\x64\x2e\x13\xa9\x45\x5e\x80\xf7\xf3\x94\x27\x85\x97\xea\xd8\xb1\x17\xff\xf3\x3f\x6c\x9a\xf3\x27\x2c\x9f\x7b\xc3\x0b\xfe\x1e\xe3\x8b\xff\xf8\xc7\x0b\x48\xa8\x62\x7d\x4b\xc6\xf3\x4f\xa5\x28\xe6\x52\x0b\xb3\x09\xd9\xff\x99\x4b\xc8\xc0\x6e\x77\x8b\x02\xe3\xae\x18\x83\x8c\x35\xfb\x0f\x6c\x73\x86\x54\x7b\xb1\x36\x2d\x75\x20\xeb\x13\x9e\xb6\x08\xd7\x76\x84\xe8\x3f\xa5\x6f\xe8\xfb\x23\xb6\xf5\xa7\xb4\xba\xab\xad\x58\x84\xfe\x94\xc2\x01\x9a\x2a\x6e\xc1\x5a\xcc\x2d\x5e\xb8\x27\x53\xe7\xda\xf6\x48\x03\x1a\xf0\xac\x69\xfa\xf6\xbd\x72\x87\x74\xbf\x36\x72\xdf\x30\x23\x90\x2b\xf0\x79\x08\xc8\x9e\x27\x66\x87\xdc\x61\x24\x14\x3c\x37\x7c\x73\xf0\x49\x29\x75\xee\xda\xc3\xc0\x85\xfe\xed\xeb\xf3\xf3\x09\x5b\x6b\xf8\x9f\xe5\x27\xf8\x1f\x40\x0f\x9d\x8a\xb1\xb2\x31\x98\x0e\x08\xd7\x9c\xe5\xfd\x33\x71\x0a\x14\xdd\x97\x20\x49\xae\x2d\xd3\xef\x4b\x19\xa7\xc2\x57\x03\x56\x52\x22\xa9\xb2\xc2\xd9\x18\x18\xab\xcb\x51\xc0\x1c\x2f\x45\xc4\x8d\xe1\x6b\x3c\x1b\xc1\xa5\x6a\x55\x08\x89\xd1\xb0\xdc\xab\x55\x71\x8c\x5c\x81\x5b\x0c\x50\x48\x5e\x10\xe4\x5c\xc0\x1f\xe1\x21\xc0\x3a\x3c\xa9\x7f\xc4\x76\xaa\x24\x02\x5d\xa0\x85\x8c\x45\x94\x02\x4b\xb9\x25\xfb\x60\xb9\x28\xca\x5c\x32\xce\x32\x2e\x63\xae\x61\x05\xae\x72\xc8\x76\xe6\x8c\x37\x3b\x3a\x41\x38\xae\x2a\x0b\xa0\xb0\x41\x64\x41\x38\x12\xc8\x70\x1c\xf4\x79\x12\x74\x02\xcf\x04\x20\x5a\x6d\xfc\x70\x3a\x97\x56\x4f\x89\xb0\x70\x18\x29\x8b\x54\xb6\x23\x82\x92\xfa\xa0\x27\x36\x72\x46\xc3\x3d\xf1\x78\x93\xfa\x77\x27\x2c\xa9\xa6\xd6\x80\x4c\xb9\x08\x14\x61\xad\x6a\xed\x4b\x21\x23\x15\x8b\x5c\xbf\x32\xdb\x30\x71\xf7\x0e\xf4\x1f\x12\xed\x27\x03\xac\x94\x39\xdc\x28\x5a\x68\x9a\x77\xaa\x23\x66\x74\x2a\xf4\xbb\x6d\x7e\xce\xfe\xad\xf2\xad\xa3\x60\xda\xfa\x4b\xff\xf9\x45\x11\x31\x21\xae\xd3\xde\x39\x0f\x0f\x41\xe0\x96\x0d\x2d\x2e\x36\x8a\x3e\x0e\x39\x27\x56\x7e\x33\x29\x40\xe1\x2b\x17\xba\x98\x4b\x3a\x81\x27\x6c\x25\xb8\xf1\xf3\x26\x2c\xd2\x8f\x68\x8c\xf1\xb8\x2f\x9e\x94\xc7\xe0\x58\xed\x06\x00\xc3\x56\x1a\xf7\x41\x62\xfc\x1a\x20\x0a\x78\x54\x20\xc0\xa0\xeb\x86\xee\x5c\x15\x18\xac\x56\x83\x78\xc0\x38\x58\x29\x80\xba\xec\x4e\xa8\x44\x01\x23\xb1\xc3\x44\x31\xab\xf7\x03\x3f\x30\x86\x07\xdf\x0e\x61\x20\x81\x71\x04\x8f\x9b\xb0\xb4\xb8\xcf\x7c\x0e\x37\xe4\x63\x86\xd8\x4c\xd7\xa6\xea\x19\x08\xe8\xc0\x61\x71\x0b\xf3\xd3\xbd\x01\x2b\x2d\x72\xab\x53\x80\xef\x8a\x7c\x70\x9b\x24\x8f\xcf\x32\x9e\x17\x3b\xbb\x7c\xd3\x64\x09\xf4\xe6\x69\xf2\x20\xd8\x45\x9e\xab\xa7\x53\x8f\x42\xa7\x69\xe9\xba\x61\x1f\x83\x64\x1f\x7b\xcb\x6f\x65\x83\xac\x87\x3b\x0e\x63\x9e\xec\x0a\x7c\xb4\x3e\x27\x17\x45\xbe\x5b\x98\x85\xb8\xcd\x3a\x2d\xc5\xa0\xa2\x89\xe1\x4e\xee\x38\x52\xcb\x5a\x08\xa3\x93\xd4\xb2\x32\xab\xdf\x0e\xa9\x65\x0b\x5f\x65\x93\xd4\x72\x76\x3d\xbb\x9f\x5d\xbc\x9b\xfd\xbf\x5a\x8b\x3f\x5f\xcc\xee\x67\xd7\x7f\x58\xbc\xbd\xb9\x5d\xdc\x5e\xdd\xdd\x7c\xb8\xbd\xbc\xea\x67\xa9\x69\xf6\xde\xbb\xe0\x67\x2c\x7c\xce\x6b\x76\x1f\x00\x35\xb0\xd8\x80\xfc\x6f\xd2\xf7\x83\x55\x65\x36\x73\x22\xd7\x13\xd8\xa8\xaf\xd9\x55\x9e\xcf\xb6\x7c\x2d\xde\x97\x69\x0a\x70\x2a\xac\xec\xb9\xcc\x05\x5c\x3c\x27\xec\xbd\x8a\x67\xc1\xef\xa0\x1c\xb1\xf5\x35\xe0\xf9\x3c\x8e\x73\xa1\x35\x3e\x7e\x42\xcf\x0f\xc0\x43\xae\xd4\x91\xc0\x73\xfc\x91\x27\xa9\xb9\xbf\xbd\x06\x8d\x7d\xb5\x5a\x61\xf9\xcc\xc4\x15\x4e\xb1\x4f\xa5\x2a\x38\x13\x9f\x23\x60\x66\x6a\x5f\x27\xef\xd4\xfa\x2b\x40\x95\x07\xa4\xa7\x3a\x2e\x29\xa0\xe3\xb4\x68\x3f\xce\xdb\x0d\x01\xbd\xe5\x8f\xf8\xd3\xb7\xf8\xcb\xf6\x00\x65\x91\x9e\xa0\x52\xfc\x9d\x5a\xb7\xab\x6a\x80\x77\x4d\x52\x20\x94\x48\x88\x88\x77\x42\xad\x99\x4e\xe4\xc3\x5c\xfe\xbc\x11\x92\xa9\x32\xc7\x3f\xc1\x35\xdf\xb8\x99\x69\xa9\x37\x02\x64\x36\x27\xec\x49\xb0\x2d\xdf\xa1\xdb\x0c\x77\x02\x27\x05\x00\x4b\x06\x4e\x11\xf3\xeb\x34\x91\xc6\x5a\x64\x89\xad\x4b\xa8\x4f\xfd\x29\x6e\x5c\x96\x97\x8c\x1f\x4f\x1b\xda\x77\x9e\x56\xf0\x79\x10\x2a\xf3\xb8\x49\x0b\x10\x22\xcb\x0d\x4a\x83\x4a\x3d\x94\x99\x67\x30\x7c\x61\x93\x93\x30\xdc\x8f\x2a\x89\x59\x5c\x66\x69\x12\x39\xbb\xfb\xa4\xf2\x4e\x9a\x56\x2c\xa0\x19\x7e\xea\xd4\xcb\xc2\xfa\x5e\xac\xa5\x3a\x27\x40\xd2\xf5\x10\xb6\x3e\x33\x65\x2d\x4b\x64\x94\x96\xa0\xa1\x54\x6a\x91\x9f\x15\x79\xb2\x5e\x83\x03\x6e\x6b\xfd\xbe\x7d\x4e\x5b\xcf\x99\x77\x7c\x59\x5b\x58\x74\x9e\xaa\x75\x12\xf1\x34\x04\x37\x7b\x54\x84\x23\xcd\xb4\xdb\x9e\x14\x26\xa1\x0e\xc2\x76\xa8\x93\x0c\x28\xcb\x05\xf0\xb6\x2e\xc0\x94\x2f\xc8\xdc\x1d\xd3\xef\x15\x33\x17\x74\xec\x57\x48\x69\x69\xd3\x0b\xf6\x84\xf3\xcf\xb6\x32\x43\x28\xac\x0f\x12\xc4\x4c\x3d\x49\x91\x83\x07\x0b\xb0\x0f\xf3\xa6\x52\x81\x6f\xe2\xa4\x87\x1c\x3e\xd9\x4a\x6f\xad\x1c\x10\x1b\x2b\x67\xd7\xc9\xa3\x90\x5f\x9e\x83\x38\x78\x40\xc4\xa3\x8d\x58\x58\xbf\xfc\xd4\x26\xcb\x1d\x00\x23\x8d\x95\xd5\x00\x08\x4d\xa9\x4b\x6f\xc2\xd5\x09\x7b\xdc\xb4\x5d\x98\x48\xec\xa9\xc8\x32\x9d\x58\xc4\x22\x7a\xf8\xe2\xa6\xd9\x83\xac\x6c\x47\x18\x67\x6f\x44\xf4\xc0\x3e\xdc\xce\xb0\x1a\x38\x29\x98\x31\x05\x7a\xe3\x35\x4d\x3a\xef\x6e\x05\x5f\x3f\x03\xb9\xd1\x50\x51\x16\xcf\x2c\xee\xa4\xa8\x4c\x87\x08\x10\x05\xf5\x92\xc6\x48\x52\x2d\x0d\x00\xc1\x78\x61\xa5\x3a\x20\x10\xcf\xf4\x16\x94\x39\xca\x22\x90\xb3\x4a\xf9\x52\xa4\xba\xfd\x85\x33\x15\x2f\x6c\x9e\xe4\x58\x30\x4f\xa3\x2d\x1b\xc7\xa0\xac\xa3\xad\x63\xe0\xc6\x63\xbd\xa7\x2f\xb2\x87\xdf\xe9\x80\x5e\x43\x85\x74\xbf\x70\xaf\xe7\x5a\xd4\xf4\xdd\x93\x15\xe9\x87\x60\x41\x3f\x28\x65\x1b\x7b\x69\x5a\x7a\xaf\x62\x82\xe9\x39\x3e\x2f\xe3\x05\x09\x8a\x9e\x78\x5c\x45\xd8\x05\xa7\x26\xae\x21\x36\xa0\x0b\xc1\x63\xa6\x56\x14\x4d\xcc\xb2\x34\x01\x22\xd7\x18\x39\xa3\x81\x3d\x43\x57\xd1\xf1\x61\x6b\xb6\xb3\x01\xc9\xc7\x7b\x0b\xc4\xeb\xcd\x37\xfa\x24\x97\x79\xaf\x6a\x90\xbb\xee\x53\x1d\xab\x94\xe5\xea\x91\x0e\xbd\x42\xf7\x47\xd3\xd6\xa9\x5a\xc2\x40\x75\x83\xe2\x7a\x0c\xb4\xb1\x4e\x79\x12\x8f\x39\xde\xed\x98\xdc\xb8\x9f\xf6\x75\xf0\xc6\x46\x3a\xdc\x93\xec\x34\x33\xa2\xd9\x0e\x33\xf8\xb5\x32\xf6\x7d\x77\x6d\x48\x10\x6a\x97\x21\x74\xde\xb8\x25\x99\x87\x5d\xe1\xcc\x71\xc7\xb5\xba\xfa\x2e\x47\x4d\x74\x93\x18\x65\xcf\x58\x7a\x2e\x95\xfe\x49\x3e\x82\xdd\x02\x77\xae\xa3\xb8\x18\xc3\x14\x6c\xa7\x0e\x31\xbe\x66\x3c\xfd\x24\x56\x8a\x2f\x06\xcd\x68\x7d\xdc\xed\x2e\x3e\x66\xc8\x9f\x63\x47\x95\x85\xf2\x21\x7f\x78\x9f\x19\xf0\x67\x86\x65\x5d\x60\x36\x66\x71\x07\x5c\xc0\xfa\x60\x76\x6b\x8e\x00\xa1\x8e\x82\xc1\x66\xb9\xb0\xc9\xa3\x9d\x28\x5c\x71\x7f\x6a\x95\x93\x20\x37\xe2\xde\xba\xca\x6e\x62\x09\x0c\x1c\x23\x15\x64\x32\xc8\xdf\x8b\xd4\x36\x53\x12\xb0\x29\x58\xaa\x34\x97\xd4\xb8\xd5\xbf\x75\xe9\x95\x4a\xbd\xdb\x84\xa2\x5a\x58\x3d\x21\xb4\x4a\x1f\x29\x8f\x16\x10\xcf\x83\x72\x96\xe9\xe0\xa5\xb9\x20\x98\xeb\x30\x24\x78\xc9\xbc\x03\x1c\xbc\x26\x02\x9b\x8b\x75\xa2\x0b\x11\x96\x08\x86\xbf\x3f\x99\x5e\x5f\xe5\x06\xdd\x37\xf4\x9d\x7a\x7d\xfb\x5c\x61\xb3\x6b\x47\xf4\x67\x97\x89\x78\xe6\x7e\xd7\xbf\x18\x6a\x55\xdc\xde\x48\x54\x4e\x01\x5c\x03\x78\x05\xd0\xc8\xf7\xa4\x1d\x65\xbc\x9b\x24\x62\xe2\xe1\x1e\xd5\x66\xa6\x68\x5d\xf2\x9c\xcb\x42\x08\x3d\x97\x94\x7d\x44\xde\xb2\x90\x9a\xa3\x86\x86\x73\x0e\x6e\xa4\x74\x81\x34\x40\xf0\x93\x15\x4f\xd2\x32\xef\xbc\x73\xe2\xaa\x3c\x88\x7b\xa0\x6f\x94\x2e\xa1\x59\xd6\x36\x69\xae\x8a\x35\xd8\x45\x8e\x3a\xa3\x9e\x3b\xac\x16\x79\x76\xbc\x82\x35\xb9\xc3\xe7\xdb\x05\x1c\x3b\x0a\x5b\x7f\xa7\x17\x99\x1a\x61\xf1\xfe\xf4\x3b\xfd\x5e\x75\x94\x04\xeb\x4f\x8d\xc0\x58\x4f\x0e\xfd\x53\x17\x89\x3e\xd7\x0f\x90\x7e\xda\x77\x1f\xdf\x1f\x64\xff\xed\x6f\xf6\x27\xa9\x3a\x6d\x17\xac\xda\x0d\x97\x71\x6a\xee\xa9\xbc\xa8\x9d\x40\x1e\xec\x6b\xfc\xe2\xc2\x1a\xc7\xee\xca\x2e\x28\x94\x58\x44\x8d\x2a\xbb\x7d\xe3\x54\x2b\xcf\xeb\x05\xd4\xd5\x9e\x52\x2d\x9a\x6b\x2b\xd6\xf0\x27\x3b\x09\x3d\xba\x0d\xdb\xbd\x04\x57\xc9\xfa\x1b\xb8\x64\xfd\xd8\xb4\x94\x11\x6d\x45\x3a\xbf\x1c\xf2\xfb\xc8\xcd\x08\x45\x36\xc6\x98\x85\x3c\xbd\x73\x49\x3a\xb0\x98\x79\x85\x94\x1b\x72\x51\x69\xf6\x9d\xab\xbc\xfc\xee\xdf\x2d\x13\xd1\x8e\xad\x60\xac\x81\xee\x4b\x45\x51\x99\x43\x5a\x94\x42\x37\x4c\xe0\xd9\x34\x86\x4e\xfd\x02\x4f\x64\x07\x66\x41\xf7\xa9\xcd\x7b\x70\xb1\xba\xca\x4b\xdd\x43\x88\x06\x15\x6d\xdd\x59\x48\xd2\x2b\xb9\x2e\x98\x2e\x44\xd6\x6a\x95\x2a\x4e\x57\x55\xb4\xf9\x08\xb7\xcb\x4b\x46\x0f\xf4\x75\x47\xd8\xe8\x8b\xe0\x3a\xfd\xc7\xbb\x9b\x6b\x96\xf1\x1d\xe0\xc2\x0a\x45\x6a\xdb\x40\xc6\x58\xdf\xbf\xfb\x66\xa0\xfa\xf2\xd5\xcd\x86\x63\x6a\x01\xa6\xed\xb1\x5b\xee\xd4\xf4\x6b\x76\x08\xd6\x0c\x2d\x49\xb3\x95\x73\x95\x9e\x65\x29\x97\x01\xf4\x57\x4f\x59\xed\xf1\x61\xae\xd7\x65\x7d\x08\x4d\x03\x1d\x80\x70\x0a\xad\x85\xbc\x6c\x05\x87\x56\x75\xa8\x8f\x4a\xef\x76\xda\x88\x5e\xd0\xdb\x8f\x48\xa7\xcf\x23\xb3\x4d\x90\x59\xc0\xa6\xac\x1d\xea\x81\x6b\x00\x24\x8e\x98\xa8\x7e\xd1\xec\xb9\xb4\x9a\xa8\xea\x49\xb3\x18\xb9\x17\xca\x44\x6f\x20\x3e\x89\x09\x01\x00\x07\x91\x7d\x41\xe4\x42\xce\xa5\x36\x13\x0a\x31\x4d\xf1\x28\x28\xb0\x51\x49\xc6\xcd\xde\xbc\x73\xf9\x7d\x9c\x24\x12\xe2\xea\x18\xfa\xc0\x31\x3b\xe6\x02\xd3\xaa\xe2\xbc\x9f\xe3\xfe\x47\x9e\xf5\x55\x8d\x1d\xdd\xe2\xbe\x59\x72\xcc\x33\x75\xaf\x13\xf4\x65\x41\x9b\xa7\x52\x3a\x16\x8e\xde\x07\x79\xa4\xf9\x69\x25\xbd\xde\xcf\xaf\x3f\xf8\x12\x36\xac\x12\x70\x84\xed\x09\x48\xe0\x1c\xb6\xc6\xf9\xcb\x66\x97\x83\xf2\x09\xb0\x57\x61\x24\x6d\xca\xee\x84\x60\x1f\x61\xa4\xcc\xc3\x3e\x92\xb2\x16\xc0\x05\x0b\x9e\xb4\x0a\x9f\xc0\xb7\x67\x72\xa5\x8e\x33\x06\xf9\xba\x01\x47\x3b\x6a\x54\xda\xfb\x79\x2c\xe0\x0d\x4a\x19\xe5\xf3\xd6\xdf\xb7\xbe\xd7\x1e\x78\xdb\x7b\x7f\x27\xa7\xaa\x3c\xdb\x53\x73\x3e\xc3\x14\x1f\x26\xfc\x5f\x59\x24\xe6\x2d\x27\xc8\x5a\xfc\x20\xd5\x93\x44\x5f\x80\x9e\xc4\x5e\x9a\xfd\x07\x07\x18\x06\x50\xd1\x2d\x28\xd1\x1a\xbe\x02\x1a\xe5\x0b\xf7\x6f\x76\x87\xb9\x22\xec\x33\xe8\x84\x68\x70\x7e\x48\xe1\x03\xac\xf9\xcb\x8b\x09\xfb\x7e\xc2\x2e\x27\x6c\x3a\x9d\xbe\x9a\x30\xc1\xa3\x8d\xed\x11\xfe\x04\x91\x63\x05\x5f\x9b\xb6\x49\x39\x61\x15\x3c\x00\x64\x6f\xcc\x61\x65\xd9\xc2\xb8\xff\x56\x10\x79\xb0\xaf\x80\x35\x8c\x54\x70\x41\x79\xf5\x68\xa3\x12\xdf\x29\x80\x68\x8a\x48\xe5\x16\xe4\xa9\x0b\x95\x5b\xc0\xda\x23\xcf\x79\x22\xa1\xb4\x9b\x37\xe1\xba\xf4\xe4\x80\xdc\x59\x7c\xe6\x5b\x78\xff\x44\x3a\x7e\x4b\x33\x4c\xf7\xae\xff\xc5\x2e\xa3\x80\xf4\x53\x9e\x14\x85\x39\x9d\xf5\x5c\xde\xb1\xd7\xff\xc1\x2e\xb2\x2c\x15\xec\x82\xfd\x9d\x7d\xcf\x25\x97\x9c\x7d\xcf\xfe\xce\x2e\xb9\x2c\x78\xaa\xca\x4c\xb0\x4b\xf6\x77\x33\x6c\xa6\xbd\x6b\x65\x8e\xc3\xdd\x84\x71\x26\xcb\x14\x4f\xfd\x97\x16\x0c\xf6\xca\xbd\x17\xf7\xb3\xb3\x14\xc5\x93\x10\x92\x69\xb5\xa5\xa3\xf0\x2f\x2e\x27\xa1\x13\xb9\x4e\x45\x41\xeb\xa1\x0a\xdb\xc3\x07\x9c\xc1\x9b\xbe\x9e\x4b\x17\xcb\xfb\x8b\xe9\xf1\x5f\xd8\xdf\xd9\x75\x99\xa6\xa6\x4b\xc6\xd0\x98\x85\xf4\x9a\xd9\x32\x0a\x21\xa7\x4f\xc9\x43\x92\x89\x38\xe1\x50\x48\x61\xfe\x75\x7e\x0f\xb3\xbd\x28\x3d\x67\x5e\xb8\xa7\x9d\xf6\xca\x31\xa6\xe7\x59\x8a\xb2\x9d\x04\x8f\x9d\xfc\x9e\x9b\x5f\xf5\xa7\xe3\x3d\x22\xcf\x14\x4a\xfb\x81\x1c\x56\xd4\xcd\x09\xa5\x7e\x0e\x32\x01\xb5\xc3\xd6\xb6\xd5\x72\x14\x84\x87\xfa\xb1\x46\x16\x94\xa3\x4e\x7e\x87\x1c\x20\xe3\x33\xd4\xe4\x36\x44\x48\x2a\x65\xee\xe0\x4b\x7a\xaa\x9f\x41\x59\x21\x27\x3e\xf2\x53\x55\x3a\xab\x32\xc4\x2a\x19\xa4\x31\x56\xeb\xec\x07\x8a\x5d\x60\x81\x9a\xd9\xa6\x49\x7a\x6e\xb6\xea\xf9\xb5\x92\xe6\xda\xaa\x93\x35\xd2\x13\x01\x8c\x48\x03\x21\xab\x75\x0a\xee\xab\x2e\x6b\xb0\x05\xc0\x3f\x30\x5d\x42\x68\x5b\x61\xac\x80\x99\x82\x74\x37\x97\xe6\x17\x74\x22\x01\xcc\x3d\x71\x2c\xb6\xf8\x34\xab\x66\x4e\xcf\x22\x83\x1c\x34\xde\xb2\xc0\xfa\x6a\x68\x8f\x58\x70\x54\xb2\x75\x44\x54\xfc\x3a\x60\x70\xa3\xd6\x2c\xbd\x07\xe6\x3d\x97\x22\x55\x72\x6d\x56\x45\x97\x11\x50\x5b\x9e\x1c\x03\x2c\x09\xbb\x80\x8d\x75\xf6\xc0\x1c\x96\xf4\x15\x9a\x12\x73\x4e\x26\xb1\xbf\xdf\xeb\x72\x69\xfc\x08\x17\x91\x75\xa7\x21\xbd\x5c\x57\x41\xf1\x71\xf9\xe5\x0f\x5a\xe4\x40\xb3\x8c\x08\x07\x17\xed\xc7\x83\xd3\x93\x6d\xe0\x1b\x0d\xdb\x54\xbd\xc0\xd8\xf6\x50\x08\x65\x13\x1a\xa5\xd5\x03\xd6\xe3\xd7\xc4\xc8\x3e\xa7\x1c\x7c\xab\xf6\x3b\x7c\xcf\xb4\x46\x7f\x1a\xab\xef\x6e\x47\xef\x14\xf0\xc1\x4f\x28\xf7\xb2\x50\x2b\x5b\x49\x39\xfc\x4c\x6f\x08\xee\x0c\x43\xa9\x84\x24\xdb\xa1\x30\x4d\x73\xe1\x74\xd6\x83\xcb\x05\x65\x24\x86\x75\xb6\x3e\x60\x37\xf2\x2d\xfe\xfc\xbd\x4a\x93\xa8\x1f\xf4\x66\x8f\xab\x8d\x7a\x6a\x41\x11\x2d\x05\xa0\x40\x29\xfe\x43\x9d\x42\x0f\xbd\x10\x51\xe1\x33\x6e\xcd\x97\xfb\x5f\x0d\xb4\xd9\x7f\x07\xc7\x88\xb2\x1b\x36\x10\x7d\x74\x39\x3c\x38\x5b\x81\x60\x13\x78\xe5\x31\xd6\x0a\xb5\x74\x90\xdb\x8e\x38\x85\xa0\x2b\x23\x0f\x06\xfa\x69\xa3\x52\x73\x17\x93\x31\x91\x95\xce\x65\x26\xf2\x48\x01\x40\x05\xeb\xe0\x15\x8b\x36\x49\x1a\x7b\xf1\x96\x97\x80\xe8\x05\xdc\xdd\x2b\x52\xa8\x13\x2e\xc7\x6c\x9b\xef\x39\x75\xed\xb2\xb3\x2a\xd5\xc7\x45\xa0\x4e\x07\xd1\xeb\x5b\xf6\x3f\x13\x94\x0c\x87\x82\xe8\x85\x6a\xd9\x42\x33\xe8\x95\xfe\x8c\x8a\xf0\x82\x8e\xf4\xca\xea\x60\xda\x8b\x53\x51\x9b\x57\x5a\x66\xf5\xa1\x04\xd2\x59\x44\x51\x21\x80\x44\x0b\xe8\xce\x56\x70\xf4\xc5\x3c\x05\x24\x4d\xea\x5c\xfa\xfc\xe8\x0b\x1d\xfa\x65\xad\xf3\x8c\x9c\xaa\x16\x04\x38\x61\x2f\x2a\x2f\xfa\x02\x48\x49\xa5\x82\xe7\x51\x0e\xab\x32\x34\xb0\x5c\x27\x2c\x29\xe6\x32\xd1\xb8\x32\x73\x91\x8a\x47\xd3\xbb\x30\x58\x4c\x58\x17\x7b\x77\xb6\xaf\x0d\x38\x72\x6e\xcb\x8f\x9d\xb8\x39\x6c\xc2\x3c\x24\xb7\xe4\x10\x98\x8e\x85\x36\x7e\x23\xc8\x72\x88\xcf\x66\x03\x24\x90\x0b\x41\xf8\x47\x2c\xa4\xed\x1f\xa0\x42\x50\x3f\x75\x2e\x67\x2b\xa8\x01\x85\xca\xd3\x38\xc6\x5b\xa8\x15\x6a\x70\x4c\x63\x09\x05\x87\x15\xdd\xc9\xed\x44\x90\xc0\x22\xee\x24\xf1\x28\xf2\x5d\x01\x41\x5d\x18\x57\x29\x78\xb1\x61\x49\x31\x01\x8a\x38\x6b\x29\xe7\x92\xc7\xa4\x4f\x4d\xcd\x99\xa1\x81\x75\xdf\x33\xcf\xf4\xf9\x52\x3d\xf6\x39\xb6\xc7\xa2\xbe\x70\x57\x67\x29\x97\x0b\x3c\x41\xbe\x02\xee\x2b\xd0\xbe\xec\x4a\x75\x96\xcb\x85\xa3\xb5\x39\x49\x3f\x9d\xbd\xbf\xad\x28\xd2\x1a\x3f\xd6\x3e\x68\x82\x8b\xc1\xd3\x5a\xdb\xeb\x89\x8b\xd3\x10\xba\x20\x67\x36\x03\x3b\xdc\x0a\x78\x48\x18\xaf\x21\x11\xec\x6a\xdd\x87\x09\xb3\x2b\xe0\x5b\xc5\x27\x0d\x99\xf9\xda\x19\x52\x9f\xf6\xf1\xd0\x98\x86\x87\x78\x10\x3c\x66\x4f\xb7\x9e\x17\x22\xd3\x19\x47\x69\x42\x65\xec\xdb\x06\xe9\x3e\x2c\x9e\x10\x18\x87\x73\x61\x9e\x76\x6d\xd3\xf0\x1e\xa6\x5a\xb0\x95\xa7\x8c\x51\x83\x9d\x1a\x1a\x29\xf1\xb5\xd7\xd0\xaf\x29\x9b\x49\x66\xdd\xbd\x09\x7b\x81\x0b\x4b\xbf\xa0\x10\x24\x09\xe4\x52\xee\x3c\xa6\xdd\x43\xd5\xaa\x75\x28\x06\xd6\x0c\xf8\xed\x86\x99\xa0\x5e\x6a\xc3\x67\x1d\x97\xef\x13\xa8\x59\x38\xa4\x2c\x1d\xb3\x88\x4b\x6c\x80\x0e\x49\xbc\x76\xef\xd0\x69\x57\x3e\x9a\xed\x5f\xd8\xe6\xbb\xd8\xf7\xf6\x87\x66\x88\xb2\x92\xce\x53\xfb\x39\x53\xf9\x5c\xda\xd6\x28\x24\xa9\x51\x4b\xa9\xde\x54\x00\xa1\x26\x9f\x3f\x58\xa9\x00\x62\xb0\xf2\x59\xa0\xca\xe6\xf9\x57\xeb\x56\x00\x40\x11\x4b\xe1\xa5\xbd\xa7\xec\xc2\x3f\xcd\x38\x1e\x66\x81\x6f\xf1\x98\xaf\x73\x34\xa6\xa9\x19\x94\xa4\xb0\x94\x90\x41\x79\x83\x2e\x81\xd8\x74\x55\x1a\x63\x14\xb0\xbf\xce\xa5\x19\x3c\xb6\x4a\x00\xf7\x4b\xe3\x32\x97\x3f\x2a\x6d\xab\xe9\xb5\x1f\x0f\x8b\x21\xa5\x61\x7b\xe1\x54\xc4\xe8\x0f\x6f\xe0\xd0\xa6\x98\x7f\x4d\x56\x1e\xea\x5a\x88\x12\x63\xa7\xca\xdc\xbf\x54\xc4\xe5\x5c\xfe\xd5\x0c\x0f\x8a\x3a\x3b\x45\x74\xb5\xc2\x2d\x6c\x65\xf8\xd9\xcb\x8f\xd8\xe8\xcb\x7f\x7f\xf5\xf1\x15\xe2\xd0\x4b\x0d\xc2\x8d\x93\xea\x01\xe2\x88\xc0\xcb\x34\x85\x4c\xb4\x7d\x03\x47\x46\xe1\x1f\xc1\xfb\x60\x39\x74\xa9\x5b\xc8\xaa\x8b\x31\x64\xa3\xf7\xad\x60\x1f\x7c\xbe\x60\x11\x2f\xa2\xcd\x99\xf5\xe5\xc8\x8c\xd9\xd3\x8f\xa6\x0f\x15\xdc\x8c\xa7\xd5\xce\x85\x6d\x2e\x9c\xf9\xd6\xb1\xf3\x55\xd6\x8b\x79\x05\x00\xd6\xdc\xd7\x85\x61\x1c\x79\x28\x2e\x4e\xaf\x49\xee\xfd\x3c\xf7\x75\x2b\xcb\xe6\x6f\x9c\x14\x25\x97\x7c\x2b\x62\xf6\x02\x2a\xa6\x5e\xd8\xc9\x9f\xcb\x6c\x39\x4d\x77\xab\x82\x28\x9e\xcc\xa0\x4c\x41\xc0\x68\xcf\x29\xb7\x88\x9b\xd7\xa4\x3d\x83\xdd\x79\xd1\x6a\xf7\x75\xdc\xd8\xb8\x27\x0d\x77\x58\x30\xc6\xe5\x46\xe7\xae\x0a\x11\xaa\x32\xa9\x73\xfd\x30\x61\xcb\x9c\x4b\xd0\x9e\x88\x43\xa7\xca\xef\x4e\xb8\x3c\x23\x7f\x92\x2d\xa1\x90\x3c\xdd\x01\x76\x7c\x32\x97\x48\x36\x05\xac\xc4\xbb\x28\x4d\x22\xb6\xce\x79\xb6\xa9\xf9\x41\xe2\x51\xc8\xe2\x8a\xd8\x15\x2c\x48\xfd\xd8\xd4\xb2\x63\x6b\x38\x8a\x73\x6f\x56\xf5\x76\xb8\xa7\xa1\xf0\x11\x56\x2c\x54\xa1\x1b\xb5\x05\xb5\xba\x05\x3e\x21\x29\x34\xe0\xe3\x62\x7f\x2e\x97\x2a\xb5\x84\x66\xb3\x37\x4c\xe5\xa0\x25\x50\x28\xfa\x53\x12\x77\x9d\x62\x89\x8c\xc5\xe7\xa3\x58\x05\xfa\x0f\x24\xeb\xde\x99\xc7\x04\x94\xf5\xf5\x97\x85\x5d\x94\x0b\x73\x58\x14\xf6\x06\xd7\xf8\x96\xae\x23\xec\x2e\xd2\x62\x03\xb0\x37\x04\x5c\xfb\x41\xdd\xf2\x1d\x8b\x36\x5c\xae\x83\x2b\x34\xa0\x90\x44\xa6\x72\xd4\xdc\x7b\x04\xfa\x2e\x95\xdb\xaa\x4d\xaa\x45\x24\xd4\xb7\x0b\x78\x23\xd8\x52\xd9\x82\x43\xbe\x5e\xe7\x62\x0d\x85\xf4\x73\x59\xa9\xa6\x06\xea\x32\x4b\xf7\x8f\xcf\xe9\x2b\x46\x3d\x0d\xa3\x43\xd7\xad\xa5\xc8\x77\xae\x94\x8f\x04\x2b\xdd\xd0\x35\x86\x75\xc2\x12\x31\x9d\xb0\xdf\x78\x80\xa9\x88\x94\x74\xb5\x80\x1d\x85\x60\xb5\xd0\xf4\x1e\x5b\xd4\x42\xfd\xd0\xde\x77\xf8\xac\x21\x7b\xd9\xba\x68\x7a\x8b\x29\x0b\x5e\x94\x23\x6c\x25\x49\x1b\x5f\x9a\x1f\xdf\xe1\x6f\x7b\x31\xd8\x3c\x33\xe6\xcd\xd2\xee\x98\xef\x1b\x0b\x6f\x9e\xed\x69\x79\xdb\xc6\x7a\x6f\xa0\x33\x55\xdd\x81\xce\x53\xb8\x94\x96\x5b\x61\x7f\xac\x33\xed\xe0\x0b\xe8\x79\xa7\xb1\xa1\x4c\x0b\x46\x25\x98\xb9\xae\x5f\xb7\x5a\x2c\x40\x96\xab\xb8\x8c\x44\x6c\x76\x2e\xf8\xed\x88\xdc\x70\xb4\x05\x15\x23\xd9\x76\x20\x54\xb8\x57\x40\xe0\xfa\x4b\xdd\x8d\x07\xd1\xdd\xba\xe1\xff\xd0\x71\x2f\xb6\x9e\x49\xdb\xa0\x87\xfb\x13\xc7\x29\x1f\x79\x4e\xb9\xc7\x57\x49\x6a\x55\x9e\xac\x13\xc9\x0b\x95\xb3\x97\xae\x38\xf1\x95\x53\xb6\x81\x51\x3c\x85\x99\xa8\x0c\x11\x9a\x89\xf6\xbb\x17\xe0\x99\x45\xbc\x18\xc7\x9d\x35\x96\xe1\x19\x16\xa9\xf9\x96\x2e\xf8\x36\x0b\x69\x1f\x9d\x6e\x30\x8d\x4c\x8a\x83\xc0\x6c\xc7\x20\xc6\x97\x68\x5f\x83\x35\x97\x14\x19\xc7\x79\x53\x79\xc8\x5b\xdc\x79\x36\x67\x65\xb1\x38\x90\xca\x04\x7f\x3c\x2e\x40\x42\xe9\xf2\x1f\x79\xd6\x4f\x0e\xc1\xe9\x6a\x8c\x45\x28\x4e\x4c\xd9\x7a\x2a\xd5\xf5\xd9\xaf\x0c\x30\x92\xac\xb2\x9e\xe2\xbd\x7d\x67\x13\x1a\xfe\xde\x52\xb9\x08\xc0\x44\x20\x4b\x9e\x06\xaf\x02\xaf\xa0\xce\xac\x99\x53\xdc\x32\x4a\x5c\xa6\xaa\x8c\x19\x19\x35\x4a\x17\xe7\x53\x3c\x1d\x81\xb6\x72\x3a\xed\xe2\xf0\x1a\xa9\x58\xea\xec\x0f\xfc\xae\x7d\x07\xc2\x67\x1d\x16\xb8\x77\xeb\xd3\xc8\x3e\xdb\xd4\xd3\x48\xc3\xdc\x3b\x73\x3c\x6a\xee\x5d\xb4\x16\x38\xb4\xc6\x05\xf2\xe0\xde\x94\xc4\x29\xec\xb7\x30\xd0\xdd\xc2\xf2\x59\x49\x20\xea\x87\xa3\x1f\x67\x2b\x6d\xfb\x1f\x95\xf1\x5c\xc8\x62\x01\x4f\x1c\xf7\x30\x78\xc8\x7b\xf8\x79\xc5\x61\x1a\x14\xb0\xfc\xaf\x7b\x85\x71\x68\x4b\x98\xf1\xdf\xec\x8e\x62\x2f\xda\xaa\xda\x9b\xd3\xf1\x65\x02\xd8\x98\x20\x67\xe7\x26\xae\x63\xba\xe8\x85\x0e\x18\xbd\xe0\x85\x2a\xa6\x7d\xd0\x0b\xf9\xde\x43\x4a\x15\x5a\xa1\x30\x14\x55\x78\x1a\x53\x6b\xff\x16\x90\x68\x5f\x57\xfe\x0d\x84\x87\x66\xfe\x52\xf6\x37\x91\x2b\x5f\xb6\x80\x41\x95\xb0\xe1\x5e\x7f\xfd\x70\xfd\x4f\xf4\xc7\x51\x79\x32\x94\x5e\x83\xbf\x10\x27\x09\xde\x7c\x97\x3b\x7b\x1d\xe9\xa2\x53\x17\xd1\xa2\x83\x67\x7f\x50\x57\x82\x8b\x67\xc8\x9b\x9f\xd4\x0e\x33\xbb\x41\xcf\xe1\x5e\x4d\xac\x7f\x5b\x9e\x11\x0e\x8d\x20\xaf\xf5\x24\xc3\x14\x5e\xe2\xbf\xfe\xf2\xdf\xd3\x2e\x65\x67\xe8\xfa\x58\x58\x8f\xeb\xfc\xdb\x3c\x11\x32\x86\xa4\x21\x8f\x9b\x12\x30\xb2\x12\x45\xae\x98\x67\xb3\x0c\x4f\x52\xdd\xd7\x7e\xd4\xea\x05\x2e\xa2\x2f\x90\x79\xf6\x46\xd6\x6d\xdf\x4a\x5e\xaa\xcb\x95\xd0\x8b\x78\x27\xf9\xb6\xa9\x85\xfd\xac\x7d\xdc\x25\x22\x8d\xa1\x8b\xf4\xf4\x7d\xd9\x93\x58\x44\x0f\x63\x7d\x82\x83\x09\xac\x45\xf4\xc0\x7e\xb8\xff\xf1\x1d\xea\x15\x26\x7a\x2e\xaf\x79\x91\x3c\x8a\x0f\x79\xea\xc2\xd6\xc4\x48\x92\xa7\x76\x8f\x54\x09\x55\x03\xf2\x0e\xcb\xbe\x6a\x1d\x87\x90\xef\x7a\xbb\x3b\x5b\x96\xd1\x83\x28\xce\x73\x2e\x63\xb5\xc5\xd7\x38\xd7\xe5\x6a\x95\x7c\x9e\x16\x3c\xef\x20\xbf\xc6\x38\xc2\x57\xf4\x73\xbd\xa4\x49\xe1\x7d\x5e\x74\x75\x9f\xa0\x3a\x91\x84\x72\x2b\xce\x2d\x5c\x81\x73\xbe\x15\xc0\x5e\xc6\xaa\xc4\xf1\xd0\x0a\x16\xfc\x81\xbe\x9a\xd6\x84\xf4\x56\xa4\xde\xfa\x31\x70\xee\x3f\x06\xbd\xaa\x2a\x08\xdb\x4e\x79\xcd\xb2\x2d\x7f\xc0\xfb\xe1\x3a\x17\x5a\x4f\x98\x56\xd0\xe3\xb9\xb4\x98\x69\x5b\xd7\x03\xf8\x0c\xe0\x3f\x4c\x77\x2c\x52\x59\x02\x12\x6f\xee\xbd\x36\xea\x09\xe2\xc9\x61\x79\x1b\xa8\x72\x96\xb2\x48\x52\xc6\x57\x05\x05\x9b\x81\xec\xd9\x8a\xbb\xe8\xe9\x5c\x42\xca\x30\x82\xd7\x87\x54\xbe\x4b\x13\xb8\x97\xd0\x6c\xc5\xa3\x24\x4d\x0a\xa2\xa0\x81\x62\x18\x6e\xde\xd7\x9c\x07\x66\x2c\x73\xbe\xe3\xa9\xbf\x58\xf1\xb4\xf4\x15\x7d\x67\x5a\xd4\x29\xce\x7e\x15\xfe\x6f\xe5\x9e\xdb\x77\xea\x1e\x71\xe1\x3d\xe6\xf0\x69\x5e\x69\x9d\xe2\xa8\x3f\xc7\x93\xd8\xe2\x44\x2b\xae\xae\x67\x9e\x75\xc7\x0f\xc4\xce\x3b\x2e\xd5\x53\xab\x13\xd3\x7c\xc2\x88\xd1\x6b\x77\xc2\xbe\x50\xb8\xa0\x8b\x03\x77\x48\xf7\x6d\xb4\xfb\xbd\x52\xe9\xb1\x11\x6f\x9e\x5a\x83\xba\x00\xe9\xc4\x63\xae\x6b\xb8\x00\x5c\xe0\x68\xf6\xc6\xe5\x5e\x1d\xa9\x6c\x55\x70\x85\x60\x41\xd4\x05\x30\x14\xd0\x89\x1e\xc4\xb0\xce\x5a\x92\xef\x23\x91\xcf\xd0\x06\xa2\x76\xac\xeb\xdc\x0c\xc1\x07\xb5\xec\xdc\xf7\x11\x88\xf7\x6a\x3d\x1c\x15\x0c\x43\xa1\xc3\xda\xa3\x5c\x60\x2c\x24\xe8\x74\xe3\x18\x3c\xdb\x8e\x27\xca\x2b\x9b\xf3\x89\xbc\xe4\xb9\x0c\x3c\x62\x64\xd5\xb1\xd0\x72\x37\x6a\x6d\xf1\xb2\xca\x32\x3c\x3a\x5e\x76\x0c\x0b\x73\x6f\x42\xe5\x4d\xa8\xa7\x04\x98\x80\x48\x6d\x97\x89\xb4\xa5\xca\x14\x44\x06\x57\xfe\xc2\x92\xdc\xb9\x80\xbf\x75\xc9\x91\x65\xbf\x36\xf6\xce\x8d\x08\xf9\x02\x43\x93\xb5\xef\xba\x1b\xde\x9f\x4e\x4b\x18\xdd\x81\x52\xad\xbf\x41\xa2\x19\x4f\x9f\xf8\x4e\x83\xe6\xa8\x30\x56\x71\x85\x81\xd3\x6a\xff\x27\xc1\xf1\x6e\x09\x14\x49\xc0\xbb\x24\x29\x62\x7a\x97\x04\xf9\x1b\x44\x6a\xd5\x55\x3d\x2f\xce\x0b\xdd\x3e\x38\x5f\x27\x17\x92\xf7\xe6\x42\x30\x19\xf9\xcf\x91\xfe\xe8\x09\xb2\x1e\x19\xeb\x0d\x8e\x49\xf4\xc8\x08\x2e\x02\x05\x3c\x60\x8e\xcd\xb3\x27\x6c\xcb\x13\x49\xdb\x00\x15\xac\x62\xb1\x2c\xd7\xeb\xce\x10\xe4\xb7\x9f\xcb\xa8\xee\x93\x7f\xf9\x58\x73\x2f\xb3\xd3\x29\xa2\xb1\x33\xfb\x24\x0c\x0f\x9b\x7b\xd5\x97\x09\xc0\x7e\xc5\x68\x77\x6b\xca\xa9\xb1\x88\x4e\x13\xed\x9e\x0d\x89\x76\x5b\x8c\x0f\x94\x5a\xd1\x75\xd5\xe2\x30\x7e\x09\x83\x7f\x99\x30\xf8\xa0\x45\x81\xf4\x1e\x8b\xa4\xea\xa0\xf7\xf4\xf0\x40\x96\x30\x47\x27\x09\xbd\x22\x35\x70\x2d\x64\xac\xd9\x92\x47\xcf\x40\x1b\x06\xa7\xe3\xf1\xf1\xb6\x3d\xe0\x92\x3b\xb5\x15\x0c\x1e\xa5\x51\xfb\x80\x51\x35\xdb\x04\x50\x8b\xe6\x05\x3d\x22\x83\xf0\x1e\x70\x9c\x22\x32\x24\xf6\x4e\xf5\x4b\x29\x9e\x98\x39\xad\x26\x21\x8c\x2b\x98\x1e\x10\xc5\x79\x65\xbc\xc3\x0a\xe6\xdb\x95\xee\xe7\x62\xcd\xf3\x18\x2a\x0d\x68\x4b\xa6\x3c\x7a\x30\xff\x0d\xfd\xa3\x27\x12\xd4\xcc\xf2\x73\x23\xfc\xd1\xb7\x96\xc8\x28\x07\x52\x26\x42\xb5\xf9\xfe\xe1\xcf\x35\xe3\x51\xae\x34\x06\x65\x9c\x96\x24\x54\xba\x82\x03\xfb\x98\xc4\x25\x4f\xf1\x89\x9d\x91\x6c\xae\x8f\xe2\x1b\xbf\x08\x64\x5f\xc4\xe7\x2c\xe5\xb2\xba\x27\xf1\x75\x81\xab\x26\xe9\x59\xf9\x8e\x72\xed\x98\xae\x8c\xa6\x8e\x9c\x05\x8a\xab\x7e\x5b\xa1\x77\x9c\x0b\x1e\xef\x42\x62\xaa\x44\x92\xee\x3e\x8f\xb7\x89\x34\x53\x6f\x55\xbd\x9c\x7d\xb5\x04\xbf\x08\xb8\x04\xf1\x8b\x34\xad\x6d\x7d\xcd\xa4\x30\x2e\x15\xcf\x93\x74\x07\x5e\x74\x96\x8b\xb3\xe0\x39\xc1\xfe\xa6\x7a\x0f\xa0\x2a\x26\x12\x85\x52\x8b\x55\x99\xa2\xaf\x0d\xb7\x51\xf7\x02\xb4\x0f\x3f\xcc\x26\xe6\x98\x2d\x88\x72\x3e\x78\x30\x0a\x39\x9d\x02\x3b\xdf\xbc\x07\x0e\xca\xdf\x78\xc2\xb4\x1c\xa0\xbd\x1b\xf5\x64\x0b\x7c\x9e\xb8\x47\x70\x76\x9d\x25\x27\x8b\xd9\xf7\x7b\x5d\xf6\xbe\x63\x77\x25\x0e\x7a\x5c\x49\xd4\xd0\x67\x22\x76\x3b\x31\x91\xf0\x3a\xa4\x81\xe8\xe3\xa0\xa5\xc6\x3a\x21\x33\x87\x60\xad\xed\xb5\xbe\x1a\x06\x65\xee\xed\x12\xad\x24\x9b\x97\xbf\xfe\xf5\x6f\x05\xfb\x35\x14\x4e\x91\xf7\x8d\xd9\x16\xa0\x4c\xc3\xd6\xc1\x40\xb9\x07\x08\xe4\x53\x6b\xcc\x08\x6b\x03\x3c\xda\x2a\x65\x80\x0c\xf2\x68\xc3\x74\xb9\x44\x3c\x1c\xa7\x80\x3d\x97\x8e\x91\xf4\x9d\x02\x68\x1b\x9e\x63\xb6\xf7\xff\x4b\xc2\xd3\xc8\x0a\x3e\x97\x99\x42\xd2\x5c\x00\x12\x2e\x05\xdb\xf2\xfc\x01\x44\xde\x48\xc9\x9b\xf1\x82\xbd\x4c\xc4\xb4\x1a\xac\x7e\x55\xe9\x0f\xa5\x07\x90\x0c\x93\xe5\xa5\x94\x56\xb5\x82\x19\x37\xcc\x47\x8e\x27\x73\xb9\x2c\xc3\x9b\x56\x25\xf4\xec\x97\x16\x84\x9f\xc1\xc8\x2a\x60\x48\xa0\x4e\x71\x1d\x28\x8c\xb3\x01\x31\xe8\xb9\x7c\xa6\x20\x74\x57\x78\xeb\x3d\x79\x1c\x36\x74\x15\xa0\xb4\xe1\x75\x43\x61\x45\x98\x0e\x5c\xf6\x70\xa4\xbf\x07\x75\xc5\x09\xfb\x21\x79\x14\x13\x76\x97\xf1\xfc\x61\xc2\xde\x60\x32\xe9\x8f\x6a\xb9\x37\x62\x75\x8a\xa8\xad\xbb\x58\x1d\xcb\x78\x8f\xf1\xcf\x49\xc0\xcc\x1c\x24\x30\x9b\xf1\x45\x8b\x6f\x2b\x80\xd7\x3e\x7a\x10\xb2\xd3\x58\x5a\x54\x72\x27\x7d\xf7\xa9\xee\xdd\xdd\xa0\xea\xce\x5b\x78\xfd\xdc\xf6\x1e\x16\xd5\xac\xb6\xe1\xfc\x8c\x67\x83\xda\xd3\x3c\x7a\x38\x03\x5f\x55\xe5\xae\xae\x5a\x53\x72\x0d\x57\x05\xa2\x9f\xd1\x47\xab\x55\x22\x0f\x75\xc5\xed\x83\x17\x99\x52\x69\xab\x47\x7e\xd2\x01\x6c\xc4\xe7\x87\x0e\xde\x0c\x2b\xb8\x74\xe8\xa7\xda\x51\xf4\xb1\x5e\x1f\x19\xc6\x30\x30\x50\xb1\xc0\x6a\x8a\x4b\x48\x91\xfa\xe1\x08\x25\xfd\x8c\xad\x41\xcc\x39\xba\xa6\x56\x01\x96\xdb\x3b\x43\xc4\x5d\xd0\x3b\xc4\x3a\x37\xa2\xd0\xba\xf9\x9c\x8e\x8b\x02\xb4\xbb\x48\xda\x78\x57\xc6\x6e\x2e\x94\x4e\x6f\xa4\x96\xb0\xe7\xf6\x48\xb7\x55\x3f\xfb\x58\x67\x6d\x89\xf3\x22\x4a\xb9\x1e\x88\x23\x6e\xb5\x3b\x33\x6a\xe8\x12\xda\x19\x6e\x33\x7f\x80\x2c\xc0\x76\xa0\x0b\x35\x97\x17\x8e\x75\xd5\x3b\xdf\xee\xc2\x80\x66\x16\xaf\x4a\x8d\xa9\xc1\x52\x22\x4f\xd1\x3b\x61\xba\x8c\x36\x50\x2c\x55\xb5\x53\xa1\xdd\x6a\xee\xd8\xc9\x5c\x1a\xf7\x15\x95\xbf\x38\xc0\x5d\x9e\x40\x24\x26\xf9\x9b\x70\xfe\x31\x61\xf2\x43\x97\x78\xc9\xcd\xd4\x28\xd9\x7a\x7d\xb0\x75\x6b\x78\xd2\xf9\xc3\xbd\xcc\x8c\xe7\x30\x9d\x7b\xb7\x27\x41\x3d\x7f\x7b\xdc\xd2\x7d\x44\x87\x2f\x16\x5e\x9f\x6a\x96\x36\x4d\x56\x22\xda\x45\x0d\x1a\xaa\x0a\xc8\xec\x74\x59\x90\xc3\x92\x00\x7d\x74\x45\xed\xb1\x93\x9f\x1b\xf4\x1a\xac\x0b\x99\xf3\xcf\x89\x17\xee\x60\xcc\xf9\x57\x8f\xe3\xee\x01\xd1\xfc\x02\xad\xfd\x97\x8c\x29\xf6\x93\xe5\xfc\x2a\xfc\x5f\x6b\xbf\x2c\x7a\x15\x62\x18\xe4\x35\xb7\x62\x66\xbf\x2d\x7a\x80\x24\xae\x5f\xf2\x9a\x2c\x01\xc3\xb6\x02\x91\x30\xc4\x8e\x20\x62\x44\x49\x10\xfd\xd4\x8e\xd7\x65\xaa\x74\x99\xf7\x6f\xfe\xdb\x6a\xaf\xed\xd3\x5b\x08\x73\x61\xb1\x6d\x97\x02\xb8\x3f\x86\x82\xe3\xf0\x6b\x8b\xbf\xaa\xe5\x02\x90\xa0\xc7\xed\xf0\xb6\xe6\xac\x04\x97\xc3\x13\x50\x57\xfd\x8d\xeb\x2e\x13\xc0\xdb\xe6\x43\x1b\xfe\xfe\x52\x5b\x61\x2e\xb0\x3c\x97\x96\xc6\x1e\xeb\xce\xf3\x5c\x00\xdf\x76\x2e\x40\x59\x8e\x65\x3c\x77\x70\x2c\x7b\xc3\x0e\x22\x68\x1e\xb2\x17\xd6\x8a\x42\xc9\x37\xc5\xed\x96\x42\x48\x37\xda\x63\xae\xa6\xe6\xb6\x59\x1f\x7d\xc2\xe2\x3e\x09\x16\x61\x99\x57\x87\x0a\x66\xe3\x77\x41\x4c\x11\xfc\x96\xb5\x08\x7d\xa8\x9a\x6b\x51\xd9\x9a\x95\xfc\xfe\x37\x55\x8f\xd4\x7a\x83\xad\x51\xdc\x55\xc2\xcf\x83\x10\x11\xa7\xc8\x36\xbe\xe7\xc5\x06\x03\xa3\x5b\x55\x08\xb4\x99\xc8\xb5\x85\xeb\x05\x73\x76\xcb\x54\x2d\x41\xd2\xcd\x7c\xd2\x75\x7d\x8e\x68\x6b\x0f\x1a\xba\xe6\x84\x0d\xb1\x0c\xc6\x9a\x40\xbd\x7a\x2e\x34\xd0\x16\x35\x73\xfc\x43\xab\x27\xc6\x05\x6f\x9b\xdd\x35\x46\xff\x4d\x23\x78\xdb\xd4\xb9\x30\xdb\x1a\xa0\xf4\x57\x07\xd4\xf7\x5d\x85\x35\xdf\xc6\x39\x20\xca\x6f\x02\xd1\x20\xeb\x6f\xed\x7d\xad\x72\xf8\x5c\x5e\xe0\x27\xc1\x21\xc0\xbd\x9e\x93\x43\xab\x93\x48\xac\xdb\x7f\x58\x04\xce\x2e\x42\x7c\x34\xdd\x8a\x26\xfe\xbe\x0a\xc1\xa5\x09\xd4\x5c\xcb\x22\xc9\xcd\x6d\x44\x83\xb3\xa5\xcb\xe5\x99\xa7\xf7\x51\x39\xb8\x67\xc0\xfe\x94\x71\x08\x8d\x01\xeb\xd7\x59\xcb\x31\x8c\x79\x1d\xaf\xcb\x62\x69\x30\x79\x4a\xc6\x1f\x6e\xd5\xc8\x2f\xe1\xde\xdd\xb5\x63\x2e\x47\x10\x95\xb5\xdc\x06\x78\xd8\xf5\xd9\x8b\xca\x55\xf3\x6b\x03\x12\x07\x20\xfe\x3a\xf4\xfc\xfe\xf5\xed\x44\x65\xcc\x86\xd8\x89\xfb\xea\xc5\xd4\xee\x1a\x73\xb5\x26\xcb\xd1\x8d\xf0\xff\xb2\x45\x08\x30\x81\x3a\xe3\x4f\x92\x68\x75\x46\xc5\x84\x87\xd9\x87\xda\x35\x3d\xb0\x0f\x0d\x28\xa6\xb7\x14\xd2\x86\xe0\x13\x27\x7e\x37\x09\x74\xa3\x79\x9a\x86\x12\x0f\x3e\x90\x36\x97\x3e\xdc\x62\x8e\xff\x34\xb5\xb1\xf5\x8a\xe1\x26\x12\xa5\x18\xea\xbe\xc5\xc4\x72\xc0\x10\x7b\x22\xa5\x65\xcf\x30\xac\xe1\x83\x0f\xfb\x76\xf3\xa9\xbc\xf1\x6f\xac\xfc\x7d\x0f\x00\x02\x1f\xbb\x78\x10\xbb\xd1\x7d\x6d\x4f\x41\x7a\x4d\xd4\x0d\x6c\x66\xcb\x43\x12\xf1\x3c\xb7\xc5\x1c\xf4\x54\x66\x9c\xce\x15\x8f\x2a\xf9\x87\x8e\x7e\x6e\x44\xf4\x90\xa9\x44\x8e\xb6\x45\x41\x7f\xcc\x89\x54\x08\x5d\x30\xdf\x9a\x73\xb3\x07\x71\x0f\x57\x0e\x66\x7c\x11\x0d\x28\x1f\x8b\x50\xf6\xdc\x70\x9c\x39\xd1\xd7\xee\x65\x77\xea\x8b\xa0\xf0\x67\xc3\x33\x04\xb5\xfa\xa3\xbd\x68\x35\x9a\x47\x73\x25\x1d\xc0\x1b\x45\x7e\x03\x07\x9b\xb3\x0a\xa3\x62\xeb\x90\x42\x2c\xe7\x97\x2b\xf6\x2f\x57\xec\x7f\xf2\x2b\xf6\x97\xbc\x5f\x03\x44\xeb\x39\x2f\xd7\xed\x55\xdb\xbf\x1c\xaf\xdf\xd6\xf1\x8a\xe4\x8c\x58\x62\x34\x66\x68\xa9\xab\xb7\xfe\xe7\xc7\x0d\xae\x60\x41\x4f\xf4\x88\x71\xfe\x82\xee\x41\x8b\xad\x1a\x67\x77\x07\x9f\x57\xfd\x69\x68\xef\x80\xf8\xcb\x40\x50\x91\xdc\xd8\xbe\x61\x34\xad\x08\x97\x8e\x31\x3c\x83\xe3\xd8\xdd\xa4\x0f\xdf\x54\x36\x6e\x88\x83\x61\x2c\xa3\xcb\xcf\x5d\x5b\x8b\x28\x05\x1a\xf0\x1e\xcb\x18\x90\x01\xf3\xe2\x85\x76\xa3\x5e\xb5\x80\x16\x2a\xfc\x2e\xd1\xc5\x4f\x35\xa9\xb9\xc3\xb4\xea\x9e\x0d\x52\x62\xbb\x8a\xdd\x0c\x7e\xd1\x8b\x84\xb8\xad\x62\x15\xd4\xca\xae\x39\x38\xe4\xac\xb8\x90\xe9\xf7\x98\xf3\xea\xa3\x1b\xaf\x8f\xe8\x47\x3f\xe5\x3c\xcb\x44\x6e\x13\xf0\x0d\x8c\x04\x28\xf5\xc0\x53\x40\x6a\x6b\x23\x50\xef\xb3\xe6\x8d\x18\x53\x52\x6b\x1a\xbe\x06\x43\x37\x6d\x9f\xb9\xeb\x32\x4d\x3b\x67\x6e\xbf\x00\xc8\xf5\x87\x77\xef\x16\x3f\x5d\xbc\xfb\x70\xd5\x2b\xa8\x11\x7c\xad\x73\x4c\x5c\x4f\x68\x4c\xbc\x64\x97\x79\xac\xb0\x9a\xa3\xca\xbf\x35\x5e\x46\xca\x34\xad\x8a\xad\xcc\xe5\x47\x6a\x07\xf0\xad\x28\x24\x67\xc6\x8d\xf5\x0e\x5c\xf5\xf9\xf0\xb5\x8f\xa6\xf1\x8f\xf8\xdb\x33\xe6\x5f\xe2\x35\x48\x82\x91\xd4\x50\xfb\xb8\x12\x78\xfe\x88\xed\x80\x68\xca\xae\xed\x70\x6a\x39\xa9\xc3\xb6\xc7\x07\x09\x44\xb6\x22\xb6\x2a\x50\x27\xd9\x1d\x38\x76\x1f\xab\x81\x59\x67\xcb\x63\x0c\xae\x41\xbb\x13\x14\x01\x02\x69\x53\xaf\x93\x33\x97\x78\x57\x35\x7d\x2a\x54\x77\x9f\xd8\x8c\x60\x29\x29\x97\xeb\x92\xaf\x85\x9e\x30\xfb\xf0\xb9\xdc\x26\xeb\x0d\x96\xe5\x97\x99\x07\x78\x72\x26\x81\xbd\xa1\xb6\x84\x6a\x00\xcf\x44\xce\x25\xbd\x93\x5c\xfb\xe6\x11\x6c\xf8\xc7\x3b\xf7\x3a\x84\xea\xc5\x86\x48\xc7\x48\xce\x25\x4e\x2e\xd2\x05\xd8\x88\x15\xf8\xef\xbc\xa8\x2f\x5d\x0e\x3a\x97\xa8\xf5\x6b\x6c\xfa\x1a\x62\x67\x73\xe9\x2a\xfa\xd0\xc3\xa7\x77\x08\xf8\xee\xb1\x4b\xfb\xed\x89\x9d\x0c\xbb\x27\xa8\x6f\xed\xab\xfe\xe8\x33\xc0\x6c\xb8\xc5\x08\xd1\xd2\xa6\x19\x1b\x78\xab\xe3\x81\xe1\xe8\x2a\xf3\x86\x32\xce\xf6\xde\xd8\xf7\xc2\xef\x74\x62\x39\x54\xb9\x4c\x47\x74\x09\xbf\xdf\xdb\x29\x34\xc9\xfd\x9d\x1a\x70\x65\xbc\xad\x6d\x2d\xb3\x4c\xfb\x1e\xbb\x54\xaa\x63\x5e\x4e\x18\xf8\xad\x74\x8a\x7e\xb0\x6f\x30\xca\xa8\x38\x64\xbd\x0c\xa8\x6d\xaa\x0f\x91\xb5\x3e\x7d\x1d\x4a\x13\x7d\x50\x77\xbc\xff\x34\xb8\x47\xce\x43\xa0\xc3\x6e\x94\x85\xa5\x73\xae\x62\x60\x3b\xcc\x24\xc5\xfd\xac\xfa\x67\x82\xe6\xc5\x6c\x1e\x94\xe6\x34\xeb\x7f\xe2\x16\xd1\xc4\xcf\xdc\x04\x3a\x19\x95\xb9\x36\xe6\x92\xec\x1d\x59\x6d\x95\x33\x3e\x97\x96\x46\xde\x9a\xe3\x0b\x8b\x46\xc9\xdd\x5f\xb1\x5e\x2c\x43\x1a\x66\xf0\x58\x0b\xa6\xa4\xb0\xd6\x70\x2e\xad\x64\xec\x84\xf1\xa5\xb6\x4a\xac\x5c\xee\x9c\x3c\x6a\xe2\xb4\xaf\xb8\x64\x00\xf3\xd9\x6f\xf3\x6a\x6e\x40\xe5\x9c\xff\x95\xf9\xbf\x7f\xfc\xea\xff\x07\x00\x00\xff\xff\xe3\x72\x79\x28\xa2\x97\x04\x00") +var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x23\x37\x96\x2f\x0c\xff\x3f\x9f\x02\xb7\xe6\x46\xd8\xee\xd1\xe2\x76\xcf\xf4\xdb\xa1\x89\x1b\xef\x43\x4b\xac\xb2\xae\xb5\xb5\x16\x7b\xfc\x0c\x27\x68\x30\x13\x24\xd1\xca\x04\xb2\x01\xa4\x54\x74\x47\x7f\xf7\x27\x70\xb0\x24\x72\x23\x93\x8b\x24\xaa\x9c\x33\x11\x6d\x15\x33\x13\xeb\xc1\xc1\x59\x7f\xe7\x1f\xff\x82\xd0\x07\xf9\x8c\x67\x33\x22\x3e\x9c\xa0\x0f\xdf\x1d\x7d\xfb\xe1\x40\xff\x46\xd9\x94\x7f\x38\x41\xfa\x39\x42\x1f\x14\x55\x09\xd1\xcf\xa7\xc9\x42\x11\x1a\x27\xc7\x92\x88\x27\x1a\x91\x63\x1c\xa7\x94\x1d\x65\x82\x2b\x0e\x1f\x22\xf4\xe1\x89\x08\x49\x39\xd3\xaf\xdb\x3f\x11\xe3\x0a\x49\xa2\x3e\xfc\x0b\x42\xff\x84\xe6\x65\x34\x27\x29\x91\x1f\x4e\xd0\x7f\x9b\x8f\xe6\x4a\x65\xae\x01\xfd\xb7\xd4\xef\xfe\x0f\xbc\x1b\x71\x26\xf3\xd2\xcb\x38\xcb\x12\x1a\x61\x45\x39\x3b\xfe\x9b\xe4\xac\x78\x37\x13\x3c\xce\xa3\x8e\xef\x62\x35\x97\xc5\x1c\x8f\x71\x46\x8f\x9f\xfe\x78\x8c\x23\x45\x9f\xc8\x38\xc1\x39\x8b\xe6\xe3\x2c\xc1\x4c\x1e\xff\x83\xc6\x7a\x8e\x7f\x23\x91\xfa\x27\xfc\x23\xe6\x29\xa6\xcc\xfc\xcd\x70\x4a\xfe\xe9\xdb\x41\xe8\xc3\x8c\xa8\xe0\x9f\x7a\xb6\x79\x9a\x62\xb1\xd0\x2b\xf2\x91\xa8\x68\x8e\xd4\x9c\x20\xd3\x0f\x72\x4b\xc4\xa7\x08\xa3\x13\x41\xa6\x27\xbf\x0a\x32\x1d\xbb\x85\x3e\x32\x0b\x7c\x01\xa3\xb9\x49\x30\xfb\xf5\xc8\x2e\x13\xb4\xcc\x33\x22\x60\x6e\xe7\xb1\x6e\xfd\x13\x51\x03\x68\xb6\x78\x3f\x7c\x5b\x10\x99\x71\x26\x89\x2c\x0d\x0f\xa1\x0f\xdf\x7d\xfb\x6d\xe5\x27\x84\x3e\xc4\x44\x46\x82\x66\xca\xee\xe5\x00\xc9\x3c\x8a\x88\x94\xd3\x3c\x41\xae\xa5\x70\x30\x66\xaa\x7a\x63\x71\xad\x31\x84\x3e\xfc\x6f\x41\xa6\xba\x9d\x7f\x3d\x8e\xc9\x94\x32\xaa\xdb\x95\x86\x7e\x82\xd1\x96\xbe\xfa\xe7\xbf\x34\xfd\xfd\xcf\x60\x46\x19\x16\x38\x25\x8a\x88\x62\xc7\xcd\xff\x55\xe6\xa2\xf7\x48\x77\x5e\xec\x63\x75\xe0\x95\xd9\x5e\xe1\x94\xe8\x3d\xd1\x3b\x65\xbf\x80\xbf\x05\x91\x3c\x17\x11\x41\x13\x92\x70\x36\x93\x48\xf1\xda\x1a\x50\x68\x41\x93\x57\xf5\x89\x20\x7f\xcf\xa9\x20\x7a\xaf\x94\xc8\x49\xe5\xa9\x5a\x64\x30\x48\xa9\x04\x65\xb3\x70\x29\xfe\x79\xd0\x69\x6a\x86\x2a\xd7\x98\x99\xf9\xa0\x75\x62\x23\x36\x70\xaf\x44\x98\xa1\x09\x41\xfa\x2c\xd2\x98\x08\x12\x23\x2c\x11\x46\x32\x9f\x48\xa2\xd0\x33\x55\x73\xca\xf4\xbf\x33\x12\xd1\x29\x8d\xdc\x9a\xed\xcf\xda\xc0\x9f\xcb\x57\xe6\x41\x12\xa1\x07\xfe\x44\x63\x12\xa3\x27\x9c\xe4\x04\x4d\xb9\x28\x2d\xcf\xd1\x88\xdd\xcf\xf5\x3a\xa4\x13\xca\xe0\xe4\xe9\xb5\x74\x14\xf2\x6f\x6e\xb9\xfe\x0d\xe9\xfe\x50\xce\xe8\xdf\x73\x92\x2c\x10\x8d\x09\x53\x74\x4a\x89\xac\xb6\xf6\x6f\x1c\xfa\xc7\x09\x3a\x44\x7a\x9d\x89\x50\xb0\xde\x9c\x29\xf2\x59\x49\x74\x88\x12\xfa\x48\xd0\x57\x17\x54\x2a\x34\xb8\x39\xff\xea\x00\x7d\x65\xce\x0b\x02\xde\xf4\xd5\x2b\xac\xb0\xff\xfb\x7f\x82\xa3\xa7\xf0\xac\x7a\xe8\x3e\x0c\xf4\x69\xbe\x33\x57\x43\xd1\xc2\xff\xfc\x4b\xd8\x8e\xdd\xaf\xe5\xfc\xb6\x60\xb6\x96\xd3\x76\xe5\xaf\xb0\x4c\x65\xd6\x2a\xf5\x0e\x6d\xcb\x59\x75\xbb\x55\xd6\x2a\xdf\x17\x6f\xd5\x53\x78\x69\xfe\xba\x0d\x73\xc5\x0a\xa8\x1e\x53\x66\x0e\x89\x3f\x33\x42\xea\x73\xe2\xa8\x77\x4f\x58\xca\x36\xbc\x36\x98\x59\xc0\x6e\x1d\x17\x0d\x56\x65\x0f\xe7\x9d\xd0\x94\xae\xda\xdf\x73\x16\x6b\x91\xcb\x32\x3b\x96\xa7\x13\x22\xf4\x32\x38\xb6\x07\xb3\x9d\x68\x36\xa8\x72\xc1\x48\xdc\x61\x9a\x7f\xcf\x89\x58\x2c\x99\xe7\x14\x27\xb2\x6d\xa2\x94\x29\xa2\xe5\xdb\xca\xe3\x29\x17\x29\x56\xf6\x85\x3f\xff\xfb\xba\x0b\xa1\xf8\x23\x59\xb5\xff\xe7\x66\x37\x23\x2c\x81\x0c\xd2\x3c\x51\x34\x4b\x08\xca\xf0\x8c\x48\xbb\x22\x79\xa2\xe4\x01\xbc\xa6\x65\x6a\x22\x0e\xfd\x0d\x04\x3d\xb8\x9b\x37\x97\xf0\x0b\x9a\x7a\x01\x92\x91\xcf\x0a\x5a\x1a\x31\xb8\x7b\x61\x89\xc2\x1b\xe5\x05\x96\x72\x33\x9a\x91\x5c\xa8\xf1\x64\x71\xf4\x48\x6a\xfd\xb6\x52\x0e\x66\x08\x2b\x25\xe8\x24\x57\x44\xcf\x5b\xb7\xe1\xee\x4e\x60\x8f\xe6\x82\xee\xc2\x1a\xde\x6e\xc2\x31\x15\x24\x82\xb9\xad\x73\x60\xfc\x57\x7a\xde\x5a\x7f\x59\x98\xd9\x3f\x92\x05\xc8\x23\x0d\x2b\xe0\xb7\x7c\xc4\x46\x0c\x1d\xa2\xb3\xe1\xdd\xe9\xf0\xea\xec\xfc\xea\xd3\x09\xfa\x7e\x81\x62\x32\xc5\x79\xa2\x0e\xd0\x94\x92\x24\x96\x08\x0b\x02\x4d\x92\x58\xcb\x1c\x7a\x30\x84\xc5\x94\xcd\x10\x17\x31\x11\x2f\xb7\x8c\x95\xa7\x84\xe5\x69\xe5\x5e\x81\xdf\x8b\xd1\x57\xbe\xd0\x22\x86\x7f\x54\x7a\xf2\x3f\xb5\x05\x86\x19\xeb\xbe\x83\xd6\x5e\x4d\xa8\x89\xe6\x34\x89\x05\x61\xc7\x0a\xcb\xc7\x31\xf9\x4c\xa2\xdc\xdc\xc9\xff\x28\xff\x30\xd6\x92\x29\x8f\x49\xf9\x97\xd2\x3f\x0a\x51\x68\xed\x4f\xbd\x96\xba\xf6\x97\xa0\xd3\x76\xfb\x0e\x7e\xa1\x71\xe3\xdb\xf0\xcb\x8a\x39\xb8\x77\x96\x0c\xd6\xbd\xd2\x3a\x2a\xf7\x82\x95\xf8\x1a\xdf\x11\x44\x89\xc5\x18\x2b\x45\xd2\x4c\xad\xa9\xaf\x63\x94\x68\xb9\x72\x99\x1c\x79\xc5\x63\x32\x74\xfd\xfd\x8a\x8c\x38\x4b\x62\x34\x59\x58\xae\x35\x25\x82\xb0\x88\xb4\xb7\x70\x8f\xe5\x63\xd1\xc2\x2a\x61\xb4\xd4\x9f\xfc\xc8\x85\xfe\xfc\x3d\x08\xa4\xa5\x81\xbf\x86\x4c\xba\xe9\x89\xfb\xe2\x2c\x04\x1b\xf2\x8f\xde\x9e\xb0\xfd\x4a\x76\xb5\x3e\x70\x81\xe4\x42\x2a\x92\xae\xb4\x43\xbc\x9f\x85\xb0\x17\xc4\xbe\x0e\xb8\x72\x47\xfd\x0e\x4e\x7d\xf9\xc6\xed\x8f\xf7\x1a\x4b\xb6\x2b\x2b\xe2\xbe\xcf\xd3\xf9\x70\x96\x4f\xf5\xce\x6d\x5f\xe0\xc4\x78\x17\xd3\x2c\xc9\x82\xbb\x1e\xe4\x0b\x99\x1b\x5a\xf7\xca\xad\xf6\x18\x06\xb0\x42\xd1\x2c\xdb\xa1\xfd\xf9\xd3\x9f\x86\x16\x1a\x63\x8e\x53\x73\x2a\x03\x63\x15\x8a\xb8\x30\xb2\x60\x6c\xcf\xbb\xd1\x35\x07\xf7\x83\xbb\xe1\xfd\x09\x1a\xa0\x18\x2b\xac\x0f\xb8\x20\x99\x20\x92\x30\x05\x7a\xbc\xfe\x5e\x2d\x50\xca\x63\x92\x18\x8d\xf3\xa3\x96\x7c\xd1\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x54\x22\x9c\x48\x8e\xb0\x23\x2b\x12\xbb\x26\x30\x8b\x1d\x6b\xc1\x28\xe2\x69\x46\x13\x6f\x83\xf7\xc6\x15\xca\x62\xfa\x44\xe3\x1c\x27\x88\x4f\x34\x57\xd1\x1a\xf2\xf0\x89\x30\x95\xe3\x24\x59\x20\x9c\x24\xc8\x76\xeb\x5e\x40\x72\xce\xf3\x24\xd6\xed\xba\x51\x4a\x9a\xd2\x04\x0b\xad\x82\x9b\xd1\x5e\xdb\xb6\xd0\xfd\x9c\xf8\xb1\xc2\xb8\xf4\x6a\xa6\xf8\x91\x48\x44\x15\xca\xb8\x94\x74\x92\x14\x67\xfe\xe1\x1c\xc1\xb8\x4f\x2f\xce\x41\x9f\x8f\x14\xe2\x86\x87\xba\xce\xad\xfd\xc6\xf5\x98\x62\xc6\x08\x74\xcc\xd5\x9c\x08\xdb\xbd\x7d\xf9\xad\x55\xf3\x87\xab\xbb\x9b\xe1\xe9\xf9\xc7\xf3\xe1\x59\x5d\x37\xbf\x1f\xdc\xfd\x58\xff\xf5\xe7\xeb\xdb\x1f\x3f\x5e\x5c\xff\x5c\x7f\x72\x31\x78\xb8\x3a\xfd\x61\x7c\x73\x31\xb8\xaa\x3f\xb4\x64\xd5\x59\xcd\x0f\x47\xb6\xe6\xd9\xea\x6d\x9a\x2f\x65\xd3\x3c\xf8\x72\x8d\x9a\x53\x9a\x80\x0e\xda\xd9\xa0\xe9\x6d\x08\xf6\x4b\x94\x61\x29\x8d\x64\x64\x46\x70\x34\x62\x97\x5c\x68\x06\x36\xe5\x9a\x47\x68\xe9\x49\x89\x3c\x52\x94\xcd\xfc\x47\x27\x68\x94\x7f\xfb\xed\x9f\xa2\x0b\xca\x1e\xe1\x2f\xb2\x8f\x8b\xd3\x5b\x7c\x7b\x8b\xef\xef\xcb\xe2\xab\x45\x9f\xe3\xd0\xd0\xbb\xdb\x90\x21\x2d\x5c\xb0\x2c\x57\x20\x4a\xf0\x5c\xe9\x3f\x75\x97\x40\x1e\x4b\x02\x87\xba\x19\x14\x3f\x11\xe5\x5f\xd4\xa2\xcd\x7b\xb0\x23\xfe\xcc\xc5\xe3\x34\xe1\xcf\x7e\xe0\x9f\x88\xd2\x63\xbf\xb5\xbd\xf4\xa1\x44\x7d\x28\xd1\xdb\x86\x12\xed\x95\x31\xef\xe5\x99\x5f\xd9\xf2\x67\x38\x60\x8b\x27\xab\xd5\x51\xd5\xe2\x87\x0a\xdc\x4c\xaf\xc2\x35\xcb\xce\x9c\x15\x9c\xb3\xf4\xf2\x7b\xe1\x9e\xa5\x41\xbf\x3e\xe7\xfc\x5d\xf8\x5b\x7a\x77\xca\x86\x0b\xf5\x2e\x19\x6c\xc7\xbb\xe3\xd5\x9c\x21\x2f\xcf\xf0\x6b\xb1\x0d\xeb\x04\x33\xac\x11\xbd\xd0\x39\x5c\x61\x45\x7c\x42\x63\x40\x42\x53\x04\x42\x3d\xe4\xa0\x31\xc6\x60\xbb\xa0\x82\x4d\xef\xa6\xee\x61\x02\x9f\x88\x2a\xbd\xfc\x5e\xee\xa6\xd2\xa0\x5f\xff\x6e\xfa\x9d\x46\x07\xf4\xe1\x00\x2f\xb8\x74\x5f\xfa\x8d\xb6\xbf\x0e\xff\xdf\x81\x87\xbf\x77\xe9\xaf\xb5\x46\x5f\x96\x0f\xff\x4b\x75\xda\xbf\x4f\x2f\x7d\xef\x96\xef\xdd\xf2\x6f\xe1\x3f\x79\x7f\x6e\xf9\x97\x55\x4f\x8b\xe3\x35\x76\xb4\x60\xf5\xb5\xe0\x50\xfe\xb3\x83\x93\x06\xfe\x72\x2a\xdf\xba\x41\xe3\xad\x3a\xdc\x59\x31\xbe\x21\x1c\xa1\x5f\x2d\x21\xad\x50\xe7\x6a\xdf\xbd\x07\x75\xae\x3e\xe8\x97\xd7\xe1\xde\x8c\xf9\xbe\xd0\xe5\xf9\x4e\xd8\xc0\xfa\xb7\xe5\x17\x2c\x93\xf7\xb2\xf8\xcb\x67\xe3\xef\xcd\x84\xde\x8f\xec\xfd\x06\x17\x6f\xc7\x5b\x77\xe7\x39\x59\x0d\xd7\x6c\x70\x3b\xad\xca\xb0\xaa\x7e\x4d\x89\xfc\xee\x5d\xde\xb7\xaf\x91\x64\xd5\x5f\xb8\xfd\x85\x6b\x9b\xea\x2f\xdc\x2f\xf8\xc2\xdd\x3b\xf8\x9b\xbd\x89\x00\xed\x83\xc8\x7b\x60\x8c\x3e\x86\x7c\x87\x8b\xd3\xc7\x90\xf7\x31\xe4\xbf\xb3\x18\xf2\x6d\xb4\xa7\x4d\xb1\x28\xdf\x42\x8f\xea\xd5\xa8\x5e\x8d\x0a\x7f\xef\xd5\xa8\x5e\x8d\xea\xd5\xa8\x2f\x1c\x45\xb4\xd7\xa1\xba\x2f\x44\xaf\x43\x75\x5e\xaa\x5e\x87\x5a\xb2\x38\xbd\x0e\xd5\xeb\x50\xbf\x2f\x1d\x8a\x3c\x11\xa6\x24\x24\xa3\x85\x1a\xc5\x87\x8c\xcb\x76\x4d\x28\xe4\x0e\x0d\x5a\x10\xb4\x59\x4e\x0a\x83\xc0\xa5\x5f\xd1\x1c\x4b\xc4\xa3\x28\x17\x95\x33\x50\xd5\x83\x4e\x05\xc1\x8a\x40\x0b\xfa\xc3\xf7\xa0\xff\xd4\xa7\xfb\x5a\x31\xf8\x13\x1e\xd7\xa8\xdd\x1c\x84\xa6\x27\xcb\xe5\x91\x9d\x4d\xfd\xef\x39\xe9\xa6\xfe\xbd\x20\x51\x2b\x2c\x1f\x77\x4c\xd4\xa5\x5c\x8b\x8d\x88\x1a\x5a\x78\x2f\x44\x5d\x9f\xee\xef\x86\xa8\x9b\xa6\xbe\x0f\x44\xfd\x6c\xf3\xf8\x77\x4c\xd8\x35\x78\x80\x8d\x88\xdb\xb7\xf2\x5e\x08\xbc\x79\xda\xbf\x1b\x22\x6f\x9b\xfe\xdb\x12\xba\x4f\x91\xec\x4c\xe2\xf7\x82\xce\x66\x5a\xcd\x00\x0d\x4f\x93\xe2\xea\x1a\x41\x45\x52\xe0\x4a\xb2\xf6\xaf\xbe\x07\x92\xf6\x83\x35\x63\xff\xdd\xd0\x72\x6d\xde\x7b\x42\xc4\xc7\x82\x44\xfc\x09\xea\x85\x75\x23\xe6\x5b\x02\x14\x0c\xfc\x3a\x13\xe4\x89\xf2\x5c\x26\x8b\x43\x91\x33\xe4\x98\x3f\xf2\xcd\x1b\x6b\xf5\x33\x4d\x12\xc4\x99\xd6\xbf\x14\x16\xca\x3d\xd6\xfa\xb7\xe0\x29\x9c\x8a\x04\x4b\x85\x1e\x19\x7f\x66\x68\x8a\x69\x92\x0b\x82\x32\x4e\x99\x3a\x1a\xb1\x73\x86\x6e\xcd\x18\x21\x6f\xe0\x00\xe5\x52\x9f\xa5\x08\x33\xc6\x15\x8a\xe6\x98\xcd\x08\xc2\x6c\x61\x13\x70\x0b\xca\x40\x5c\xa0\x3c\x8b\xb1\x56\x7c\xe7\xa4\x1a\xa5\xe7\xc7\x08\xe6\x3b\x2a\x11\x95\x88\x7c\x56\x82\xa4\x24\x59\xe8\x3e\x34\xed\x2b\x8e\xec\xfa\x98\xa1\xda\x74\x3e\x22\x04\x17\x12\x32\x0e\x26\x8b\xdf\x30\x53\x94\x11\x04\x8a\x92\x34\xa6\xb9\x43\x74\xc1\x25\x98\x6d\x7e\xfc\x8b\x44\x51\x92\x4b\x45\xc4\x01\x9a\xe4\x33\xa9\x35\xc5\x2c\xc1\x6a\xca\x45\xaa\x47\x48\x99\x54\x78\x42\x13\xaa\x16\x07\x28\xc5\xd1\xdc\xb4\x05\x6b\x20\x0f\x46\x2c\xe6\xcf\x4c\x2a\x41\xb0\xef\xdd\x3d\x44\x5f\x87\xcf\x0c\x01\xc8\x6f\x0e\x20\xed\x90\xa6\x5a\xdd\x0d\x86\x5f\xec\xb8\xd9\x13\xdd\x08\x89\xd1\x84\x44\x38\x97\xd6\xc3\xa0\xc4\x02\x91\xcf\x73\x9c\x4b\xd8\x3b\x3d\x3d\x9b\xb3\x11\xf1\x34\x4b\x88\x22\x88\x4e\x91\x12\x94\xc4\x08\xcf\x30\xd5\x4b\x77\x47\x96\x80\xa0\x7b\xa2\xb7\x1b\x68\xa9\xfe\x57\x50\xbf\x53\x2e\x08\x8a\x89\xc2\x34\x59\xea\x75\xb2\xdf\xf6\x5c\xee\x3d\x71\xb9\xf2\x86\xef\x05\x9b\x33\x20\xfe\x3b\xb8\xb4\x99\x35\xdd\x47\x38\xd9\xf2\xfe\xbe\xb5\x83\xea\x69\xfb\x7d\xd1\xb6\xd9\xb5\xfd\x21\xee\x57\x8b\xc1\xee\x5e\xd1\xa2\xa8\x66\xf1\xae\x68\xfa\x35\xc2\x02\x7a\x87\x73\xef\x70\x6e\x5d\x99\xf7\xe9\x70\xde\x1b\x8f\x51\xef\x73\x7e\x21\x9f\x33\x95\xbd\xd3\xb9\x77\x3a\x77\x5d\xa0\xde\xe9\xdc\x3b\x9d\xdf\xaf\xd3\xf9\x25\x71\x9f\x77\x8a\xee\xfc\xae\x44\xeb\x5e\xac\xee\xc5\xea\x1e\xc2\xd9\x4f\x6d\x57\x2c\xcc\x7d\xfd\x21\x26\x09\x51\xa4\xdd\x9e\x45\x44\xaa\xb5\x05\x73\x3d\x53\xa6\xe5\xb8\x99\x20\x52\x6e\xcb\x90\x7c\xc3\xef\x93\x2d\xf9\xe1\xf7\x50\xf3\x3d\x9f\xea\xf9\xd4\x26\x53\xdb\x1f\xd3\x6c\x70\x98\x5f\xcb\x36\xeb\xf9\x6f\x96\xb7\x4b\x7f\x0f\xc6\x0d\x59\xf8\x45\x0d\x85\x6b\xa9\x5d\x71\x7f\xb8\x2d\x9d\x6f\xc9\x8f\x4d\x5f\xef\x93\x19\x9b\xb1\xf7\x9c\xb8\xe7\xc4\x3d\x27\x7e\xdf\x9c\xd8\x9d\xe4\x37\x75\x91\x19\x3f\xdd\x38\x4b\x30\x1b\xd3\x58\x1e\xff\xa3\xd0\xe5\x5f\xca\x43\xa6\x0f\x54\x6c\x52\x4c\x7d\x4a\xa7\xf8\x55\x7f\x92\x14\x06\x73\x8f\x99\xb9\xc2\x89\x66\x6c\xec\x37\x09\x66\xe7\xf1\xbb\xf0\xa3\x35\xce\xfe\x35\x7c\x6a\xdb\xf0\x71\xac\xc0\xd3\x81\x29\x33\x26\xbc\x22\xaf\xb6\x64\xa0\xdc\x8f\x13\xbe\x0d\x57\x0f\x26\x16\x30\x76\xc7\xaf\x83\x45\xd9\xbf\x69\xf7\x7e\x9d\x3e\x97\xb0\xf7\x5c\x74\x9c\x70\xef\xb9\xd8\x5f\xcf\xc5\x5b\xb9\x23\x5f\xf9\x78\xbe\x96\x58\xd7\x3d\x08\xdf\x44\xab\x41\x50\x6b\x9e\x25\x1c\xc7\xcb\x5c\x31\x85\xe0\x15\x82\xa3\xac\x8c\xc4\x2f\x3e\x7b\x0f\xc2\x5a\x31\xda\xdf\x59\x24\x5f\x7d\xe2\xfb\xa2\xa5\xbc\x62\x28\x5f\x33\x89\xaf\xa1\x92\xbc\x0f\xfc\xd4\x62\xbc\x7d\x68\x5f\x6f\x51\x7a\x7b\x8b\x52\x1f\xda\xd7\xab\x80\x7b\xa6\x02\xf6\xa1\x7d\x7d\x68\x5f\xaf\x20\x2f\x9f\x76\xaf\x20\x7f\x11\xa1\x7d\x9d\x44\xed\x17\xc4\xde\xdc\x5e\xe8\xee\x65\x6e\xf7\x5e\x2f\x73\xf7\x32\xf7\x17\x2a\x73\xef\xc7\x0a\xf7\x02\x77\x2f\x70\xf7\x02\x77\x2f\x70\xf7\x02\xf7\xce\x97\xb1\x17\xb8\x5f\xb3\x40\x67\xb3\xd4\xbd\x22\xc9\xe6\xbd\xfa\x72\x7a\x71\xbb\x17\xb7\xf7\x5b\xdc\xde\x9b\x09\xbd\x9f\x32\x8f\xdd\xe6\xd3\x17\x29\xef\x8b\x94\xf7\x45\xca\x5f\xbc\x48\xb9\xfb\xba\x43\xc6\x87\x3d\x5c\x0a\xab\x5c\x1a\xc0\x47\x41\x66\x54\x2a\x60\xff\x5d\xe4\x95\xd5\x89\x1e\xef\x55\x4e\xe9\x53\x3d\xfc\xd3\x5e\x6a\xe9\xa5\x96\xdf\xa9\xd4\xb2\x47\xb1\x60\x7b\x91\xb1\x92\x62\x15\xcd\xf1\x24\x21\x63\x6f\xf4\x91\x5d\xf5\xe0\x0b\x2a\x95\x44\x51\x2e\x15\x4f\xdb\x2f\x97\x4b\xd7\xc3\xc0\x77\x70\xca\xd9\x94\xce\x72\x73\xb7\x18\x70\xce\xe0\x44\x17\x92\xe0\x22\x23\xab\x3c\x55\x0d\xad\xbf\x8b\x6b\xa9\x79\xe8\xaf\x75\x3b\xad\x23\xb8\x17\x46\x3e\x2b\x75\x6b\x59\x6b\x7c\x3b\xbc\xbb\x7e\xb8\x3d\x1d\x9e\xa0\x41\x96\x25\xd4\xd8\xdd\x0d\x29\xd0\xdf\xf4\xa4\x90\xc2\xf2\xb1\xd8\x4b\x61\xc8\xdc\x60\xd8\x82\xa1\x5f\xcb\xc6\xe8\x10\x9d\x5e\x3c\xdc\xdd\x0f\x6f\x5b\x1a\xb4\x84\x02\x79\xab\x24\xcd\x12\xac\x48\x8c\x1e\xf3\x09\x11\x8c\x68\x69\xc7\x22\xdd\x16\xe6\x7f\xd3\xe8\xf0\xbf\x86\xa7\x0f\xf7\xe7\xd7\x57\xe3\xbf\x3e\x0c\x1f\x86\x27\xc8\x51\x9c\x6e\x56\x8f\x4b\x8f\x22\x5e\x30\x9c\x6a\x0d\x44\xff\x50\x64\xca\xfe\x3d\x27\x39\x41\x58\x4a\x3a\x63\x29\x01\x44\xe0\x52\x8b\x6e\xc0\x17\x83\xef\x87\x17\xe5\x96\xe7\x24\x84\xdf\x45\x09\x9e\x90\xc4\xfa\x23\xc0\xc4\xae\x09\x3d\x80\x2a\x36\x8e\x8a\xdc\xac\xea\x5f\x1f\x06\x17\xe7\xf7\xbf\x8c\xaf\x3f\x8e\xef\x86\xb7\x3f\x9d\x9f\x0e\xc7\x56\xaa\x3c\x1d\xe8\x7e\x4b\x3d\x59\xe1\x13\xfd\x3d\xc7\x89\xd6\x4e\xf8\xd4\xe1\xf1\xa2\xe7\x39\x61\x28\x67\x40\x71\x46\xe5\xd1\x7a\x90\xef\x54\x9f\x32\x33\xa3\x9b\x8b\x87\x4f\xe7\x57\xe3\xeb\x9f\x86\xb7\xb7\xe7\x67\xc3\x13\x74\x47\x12\x50\x0a\xdc\xa2\xc3\x2e\x66\x49\x3e\xa3\x0c\xd1\x34\x4b\x88\x5e\x0d\x6c\xb3\x89\xe7\xf8\x89\x72\x61\x8f\xee\x8c\x3e\x11\x66\xd6\x11\xce\x2c\xb4\xef\x84\xef\x71\xb0\x74\xd7\x57\x1f\xcf\x3f\x9d\xa0\x41\x1c\xfb\x39\x48\x68\xa3\x44\x39\x0e\xd6\xf9\xb0\x3c\x6c\xcd\x1c\xa0\x7b\x43\x44\xfc\x89\x08\x41\x63\x52\xa1\xa3\xc1\xdd\xdd\xf9\xa7\xab\xcb\xe1\xd5\x3d\xac\x98\x12\x3c\x91\x68\xce\x9f\xc1\x94\x0d\x33\x04\x0b\xf7\x13\xa6\x09\x74\xe6\x36\x8b\x33\xf4\x3c\xa7\xe0\xfe\x00\x60\x66\xdf\xb3\xd1\xcf\x44\xce\xde\xdc\x3a\x5b\x3a\x78\x75\xb5\xa5\x7a\x92\xea\x6f\x54\x8e\xc5\xb2\x17\x4a\x54\x5e\x7f\x71\x15\xb5\xd6\xbf\xa8\x90\x5b\xbb\xb2\x56\xa3\x97\xf6\x99\x16\x7b\xdd\x59\x57\x2b\xaf\xe1\xeb\x5d\xb3\x44\x09\x1a\xc9\x97\x85\x7a\x12\x39\x53\x34\x25\xc8\x76\x66\x0f\xe7\x0e\xe1\x9f\x2e\x4d\xc3\xef\xe1\x82\xad\x95\x72\xf8\x44\x94\x1d\x7e\xaf\x02\xf6\x2a\xe0\x7e\xa8\x80\xef\x2d\xdb\x3f\x26\x59\xbd\xc3\xca\xc4\xe0\x1d\xe3\xf5\xaa\x05\x69\x18\x7b\xa2\xb5\xa8\x26\xe4\x89\x24\x20\xe5\x29\x81\xb5\xd2\x68\x65\x97\x89\x20\xf8\x51\x0b\x7c\x31\x7f\x0e\x25\x97\x06\xe4\x7e\xb4\x9b\x5b\xb8\x4b\x10\xc7\x9f\xbe\x7b\xbd\xcb\x42\x2f\x77\xfc\x1a\x25\xbc\x6f\x21\x48\x66\x29\x46\x60\x90\x60\xff\xab\xb5\x04\xaf\xb8\x2d\x82\x2f\xde\xc3\x45\x11\x0e\x77\x8f\xb4\xae\xdb\x50\x09\x76\x2c\x34\x25\x0a\xc7\x58\x61\x7d\x68\x66\x44\x1d\xa1\x6b\x06\xcf\xee\xb1\x7c\x3c\x40\xee\xca\xd3\x6c\xa5\xb0\x32\xbc\x42\x6a\xfd\x3b\x31\xe0\xaf\xcf\xc7\xfb\xeb\xbb\xbf\xbe\x9b\x57\xa6\x0f\xf3\x6c\x59\xe1\x5d\x5d\x8c\x6b\xf9\xbc\x76\x77\x7f\x99\x16\xdf\xef\x15\xf6\xba\x4e\xae\x9d\x5e\x68\xa6\x72\x56\x7f\x5b\x99\xff\xeb\x6f\xab\xfe\xb6\xea\x6f\xab\x3d\x58\xe1\x37\x77\x18\x36\x70\xf7\x37\xf5\x18\xae\xd2\x4e\x37\x86\xbc\x2b\xb4\xd1\x75\x40\xef\x7e\xed\x8a\x6d\x57\x7c\x43\xdf\x87\x8f\x30\x98\xe4\x6b\xa4\xb5\xed\xf4\x32\x37\xf9\x22\xbd\x7e\xfa\x82\x37\x7e\x8f\x40\xb8\x53\x04\xc2\xfd\x98\xeb\x8b\xa4\xc0\xbd\x8d\xc5\xf4\xed\xd3\xde\x7a\xa8\xc1\x3e\xb1\xab\x4f\xec\x82\xdf\x7b\xa8\xc1\xdd\x51\xeb\xcb\x4a\xd7\x3c\x26\xe3\x4a\x94\x80\xff\xe7\xb8\xea\xf9\x29\x3d\x09\xdd\x40\xa5\x07\x45\xa6\x1b\xb4\x4e\xe3\x5d\x16\x91\xba\xe2\x31\xe9\x1c\x49\x50\x7a\x79\xcf\x65\x70\x37\x4f\x23\x8b\x97\x06\xfe\xc2\x92\x78\xcb\x96\x7f\x89\x86\x9d\x06\x02\xee\xad\x3c\x2b\x17\xea\x4b\x8d\x2f\x28\x38\xd4\x3b\xf2\x54\x74\x63\xe3\x2e\xa6\x71\xdc\xc2\xcc\x9b\x9f\x7b\x96\xde\xfc\xf8\x65\x30\x83\xba\x73\x74\x30\xab\x84\x6f\xbf\x0f\xbb\x4a\x38\xe2\xd7\xb0\xac\x2c\xdd\xfb\x2f\x8e\xab\x2f\xa3\xe4\x9e\xb7\x77\x5c\xae\x2f\x95\xc3\xf7\x10\x3f\xcb\x6c\x1d\x3d\x86\x4e\x6f\x6a\xd9\x9f\x09\xf7\xa6\x96\x77\x6d\x6a\x31\x2e\xda\x71\x86\x05\x61\xaa\x41\xa4\xae\x5e\x27\xf0\x7a\x88\xb9\xe0\xa4\x0e\x68\x00\x69\x89\x16\xd9\x0b\xd9\x5f\x55\x5f\x96\xed\xc5\x0a\x06\x41\x26\xe4\xf1\x3f\x8a\xbf\xbd\xb0\x5e\xaa\x00\xb1\x24\x3a\xc9\x60\xfd\x4b\x7d\x47\xe7\x36\x50\x69\xfb\x5c\x49\xac\x4a\xa2\x20\x04\x51\xaf\x8c\x67\xba\x31\x6f\xbf\xaf\x14\xc9\xda\xa0\x5f\x37\xb6\xa9\xbe\xf1\xdd\x0e\x90\xdb\x19\x6a\xd2\xfd\x82\x9c\x32\x2d\x8d\xf2\x69\x71\x31\x48\xf4\x4c\x93\x04\x10\x45\x20\xe3\xb1\xed\x06\xf8\xdd\x45\x3c\xb4\xee\xfc\x9b\xc6\x3d\x34\x71\x87\x26\x96\xd0\xc5\x9e\xba\xab\x9c\x69\x47\x6c\x90\xce\x0a\xda\xd0\x0a\x03\xec\x97\xc1\x09\x3e\x11\xf5\x5a\x6c\x60\xd3\xb3\xbf\xf4\xdc\x0b\x32\x25\x82\xb0\x88\xec\xa1\xb7\x7d\x9d\x30\x90\x9f\xcd\x24\x6d\x0c\x88\x87\x12\x08\xa7\xaa\xb8\xd5\xd3\x4a\xa2\x6e\x9f\x49\xde\x67\x92\xf7\x99\xe4\xd5\xa3\xde\x67\x92\xf7\x99\xe4\x8d\x39\x10\x31\x49\x88\x22\xad\x52\xc5\x19\x3c\x7e\x2b\xa9\xc2\xf4\xfe\x65\x08\x16\x66\x2e\xbd\x6c\xf1\xbb\xd1\x2c\xdc\x86\xef\x85\x66\x61\xce\xda\x2a\xf3\x43\xe9\xc7\x86\x10\xeb\x57\x37\x49\x6c\xc2\x34\x4a\x76\x89\x33\x78\xfd\x5d\xb2\x8e\xea\xd0\x7b\x1b\x05\x0a\xb6\xee\xe5\x38\x49\xed\x08\x74\x9b\xb8\xf5\x18\xbe\xdf\x79\xef\x0b\x07\x6d\xa3\xfb\x7d\xe5\xa3\x1b\x27\xa5\xec\x8b\xc5\xe6\x0b\xe2\x91\xbd\xf5\xe6\x8d\x73\x25\x6a\xcc\xf0\xdd\x4e\xb7\x37\x56\xf5\xc6\xaa\xde\x58\xd5\x1b\xab\x7a\x63\x15\xea\x8d\x55\x6b\x1b\xab\xbe\x20\x99\xaa\x37\x5c\xf5\x62\xd5\xee\xa6\xbb\xaf\x5a\xe6\x3e\x59\xeb\x3a\xa3\xa4\x17\x39\x54\x2b\x23\xef\xed\xb4\x7f\x5d\x11\x72\x7f\xe3\x46\xf0\x7e\xf8\x95\x7c\x69\x96\xb4\x4d\x60\xb1\xdb\xd1\x2f\x36\xae\xb8\x2f\x1d\xda\xb8\x56\x7d\xd8\xf3\x92\xc5\xe9\xc3\x9e\xfb\xb0\xe7\xbd\x0b\x7b\xde\xb9\xb2\x92\x71\xb9\x0c\x90\xc8\x94\xce\x5a\x9a\xff\xec\xee\x6c\x48\x34\x02\x52\x30\x28\xc7\x31\xc9\x12\xbe\x00\x4b\xca\x92\xeb\xdc\x75\x71\x53\x93\xa8\xf7\xfd\x46\x77\x23\x7f\x2d\x9d\x63\x5f\x64\xd2\x62\xde\x7b\x21\x85\x1e\xff\xa3\x92\xce\xdf\x09\x2f\x93\x21\xf2\x99\x4a\xb8\x95\x56\x13\xf6\x88\x35\x3f\x09\x4a\x17\xda\x7b\x70\x92\xab\x20\x77\x4f\x6a\xc1\x2a\x23\x42\x2d\x82\x37\x49\x9a\xa9\xc5\x7f\x8e\x18\x55\xde\xc3\x46\x67\x8c\x0b\xc3\xd5\xf4\xc7\x73\xcc\xe2\x84\x08\x7d\xa9\xba\x76\x22\xcc\x18\x57\x20\x6e\xc0\x0c\x62\xf4\x44\xb1\x11\x4e\x06\x37\xe7\x9d\xfd\xcc\xef\xe8\x74\xbd\x76\xb1\xba\x15\x77\xdd\xa7\x84\x4f\xa0\x82\x65\x5e\xd6\xe9\x75\x03\xbd\x67\xb4\xb4\x73\x6f\xc5\x10\x14\x96\x8f\x55\xe0\x90\x72\x16\xfa\x78\x29\x94\xc8\x8a\x77\x4b\x18\xf3\xcb\x5f\xad\xc0\x8d\x94\x9f\x59\x00\x12\x78\x0c\x43\xae\x8e\xc3\xfd\x18\x76\xe8\x7e\x2b\x5a\x76\xbf\xb8\xd2\xdd\xf0\xa3\x20\x4a\x2c\xc6\x58\x29\xcd\x64\x76\x89\x71\x72\x8f\xe5\x63\x67\x8c\x93\xd2\xcb\x7b\xce\x72\x4a\x18\x27\xe5\x81\xbf\x38\xcb\xe9\x48\x9d\x2b\x38\xd3\xfb\xcb\x8f\xef\x7a\xd6\xd6\x98\xf8\xef\x25\x57\xbe\x1b\xef\x59\x65\xa6\x7d\x8f\x79\xf3\xcb\x98\xe9\xde\x8c\xb0\xc2\xcf\xbf\xc4\x93\x5b\xbe\x9d\xfa\x23\xba\x6c\x8d\xbe\xb8\x42\xb8\x15\xa1\x63\xc5\xdc\xde\x49\x41\xdc\xaa\xdc\xb4\xeb\x51\xbd\x8c\x99\x3b\xd8\x8d\x75\x62\x80\xce\xcb\x68\xe5\xfe\x0c\xb9\xa8\xa0\xa2\xf4\xec\x1c\x12\xad\xa9\x0c\x13\xe2\x23\x2e\x8c\xe4\x15\xdb\x33\x6b\xcc\x76\x06\xcc\xf7\x04\x0d\x50\x6c\x6b\xf3\x0b\x92\x09\x22\x09\x53\x46\xd5\x36\xf5\xae\x5c\x79\x7f\xca\xac\x85\xe8\x0c\x2b\x7c\x8a\x15\x4e\xf8\xec\x08\x0d\x7c\x61\x7f\x2a\x11\x4e\x24\x47\xd8\x11\x0e\x89\x5d\x13\x98\xc5\x8e\x3d\x60\x14\xf1\x34\xa3\x89\x47\x6a\xf7\x56\x7c\xca\x62\xfa\x44\xe3\x1c\x27\x1e\x19\x7b\xc4\x86\x4f\x84\xa9\x1c\x54\x38\x9c\x24\xc8\x76\xeb\x5e\x08\xf4\x73\x37\x4a\x49\x53\x9a\x60\x81\x14\xb7\xa3\xbd\xb6\x6d\xa1\xfb\x39\xf1\x63\x75\x28\xe0\x28\xc5\x8f\x44\x22\xaa\x50\xc6\xa5\xa4\x93\xa4\x38\xc6\x0f\xe7\x08\xc6\x7d\x7a\x71\x0e\xa6\xd1\x48\x21\x6e\xf8\xa0\xeb\xdc\xfa\x09\x5c\x8f\x29\x66\x8c\x40\xc7\x5c\xcd\x89\xb0\xdd\xdb\x97\xdf\xda\xca\xf9\xd6\x18\xd1\xed\x16\xd3\x70\x64\x6f\xa7\x74\x76\xd6\x38\xbb\xaa\x9b\xdd\x74\xcd\x76\x45\xf3\x05\xbc\xb4\xdd\xb5\xc1\x0b\x2a\xcb\xea\xe0\xbb\x70\xd9\x96\x46\xfc\x1a\xf8\x68\xbf\x53\x45\xb0\xd7\x02\x5f\x64\xdd\xbe\x54\x15\x70\xcf\xf5\xbf\x1e\xd9\xad\x47\xb1\xef\x03\x30\x76\xb8\x38\x7d\x00\x46\x1f\x80\xf1\xc5\x06\x60\xb4\x6b\x13\x34\xde\x3a\x5d\x6f\xcd\x0a\x52\xde\x28\x20\x7e\x05\x51\x0a\xcb\xc7\xae\x35\xa5\xb4\xa8\x7c\x1e\xbf\x0b\xa9\xbe\x71\xc2\xaf\x21\xdd\xf7\x75\x8a\x76\x5a\xa7\x68\xef\xa6\xdd\x0b\x7e\xbd\xe0\xd7\xcb\x36\x1d\x27\xdc\xcb\x36\xfb\x2b\xdb\xbc\x95\xc2\xf2\x25\x41\xe8\x6a\xe1\xa9\x94\x19\xb3\x34\xc0\xd6\xc0\xd1\x80\x7b\x20\xcf\x12\x8e\xe3\x55\x41\x38\xbf\xa2\x42\xae\x59\x22\x9a\x99\x76\xf5\x07\x7b\x2e\x99\xd5\xe2\x6f\xcc\xc8\x7f\x0f\x31\xb5\xad\x53\x7f\xd3\xb0\x5a\xa0\x5f\x08\x26\x2b\x05\xa5\xbd\x94\x16\x52\xa5\xe9\x4e\x0a\x87\xfc\x6e\xcf\xa9\xda\x6f\xe9\x6b\xa8\x17\x5f\xb0\x83\xa0\x77\x02\xfc\x3e\x0b\x9f\xef\x8d\xd4\xda\xab\x76\x7d\x56\x65\x6f\xd4\xef\x15\xdf\x5e\xf1\xdd\xf9\x32\xee\x93\xe2\xfb\x86\x12\xb5\x49\x13\x79\x91\x32\x86\x9b\xc9\xd6\xbd\x68\xdd\x8b\xd6\xbd\x68\xfd\xc5\x8a\xd6\xfb\xb1\xc2\xbd\x5c\xdd\xcb\xd5\xbd\x5c\xdd\xcb\xd5\xbd\x5c\xbd\xf3\x65\xec\xe5\xea\x8a\x5c\x0d\x7f\xb9\x34\xe9\x75\x85\xec\xce\xc2\x75\x87\x9c\xe8\xf7\x22\x59\xf7\x52\x75\x2f\x55\xef\xb7\x54\xbd\x37\x13\xfa\xf2\x12\x21\xfb\x54\xc2\x3e\x95\xb0\x4f\x25\x7c\x8b\x54\x42\xc7\x4b\x96\x49\x28\x75\xc1\xe2\xa7\x1a\x07\xda\x5b\xd9\xa2\x18\xed\xa6\xe1\x1d\xbb\x5a\x6a\x07\x34\xbf\x49\xa5\xa9\xd2\x6f\xae\xa1\x3d\xaa\x3f\x75\xe0\xa4\x05\xcd\x28\xdc\xf8\x56\x23\x84\xfd\x6c\xdf\x7c\x5f\x60\xe0\xf5\x51\xf7\xf5\xa7\x50\xb0\x6b\x7d\xfd\xa9\x17\x9c\xb7\x3b\x5c\x2b\x66\xee\x68\xd4\xd8\x78\xdf\xe9\xb4\xdf\x1c\x5c\xae\xfd\xa4\xbf\x69\xb8\x5c\xe3\x4d\x52\x4b\xde\x39\xfe\x47\xe3\x45\xf1\x06\x65\xb7\xd6\xbe\x1d\x3e\x11\xf5\xa5\x5c\x0d\x7d\xd9\xad\xbe\x3e\xc4\x8e\xa6\xbb\x11\xeb\x7f\xb7\xb3\xed\x8b\x8c\xf5\x45\xc6\xfa\x22\x63\x7d\x91\xb1\xbe\xc8\x18\xfa\x9d\x17\x19\x5b\x5b\x7c\x34\xe3\xf8\x52\x24\xc8\xbe\xc8\x58\x2f\x44\xee\x6e\xba\xbf\x2f\x21\x72\x0f\x2d\x08\x7b\x51\x4d\xcd\x5b\x10\xde\x1c\xf7\xc3\x8d\xa4\x2b\xf6\x87\x5b\xd0\x1e\xff\xc3\xfe\x5f\x8f\xff\xd1\xe3\x7f\xb4\xcc\xba\x0f\x66\xed\xf1\x3f\x50\x1f\xae\xd9\x87\x6b\xee\x73\xb8\x66\x87\x6d\xec\xf1\x3f\x3a\x8a\x73\x2f\x84\x01\xe2\x64\xae\xb5\x70\x40\x7e\xae\x2b\x1a\x7b\x2b\xa5\xb9\xb1\xfe\x7e\x70\x40\x1a\xa7\xbd\x17\x2a\xc9\x2b\xe2\x80\x34\xd1\x75\x67\x05\xe4\x7d\xe0\x81\xb8\xd1\xf6\x89\x8b\x7d\x88\xf5\xfe\x87\x58\xef\x5d\xe2\xe2\xde\x48\xb2\xbd\xba\xd7\xe7\x2e\xf6\xb9\x8b\xbd\x32\xdc\x2b\xc3\x3b\x5f\xc6\x7d\x52\x86\xdf\x58\xc2\x7e\x41\x5c\x90\xed\x64\xed\x5e\xd4\x36\xef\xf5\xa2\x76\x2f\x6a\x7f\xa1\xa2\xf6\x7e\xac\x70\x2f\x67\xf7\x72\x76\x2f\x67\xf7\x72\x76\x2f\x67\xef\x7c\x19\x7b\x39\xfb\xd5\x70\x42\x9a\x84\xed\x8e\xf9\x36\xef\x49\xd2\xee\xa5\xec\x5e\xca\xde\x6f\x29\x7b\x6f\x26\xd4\x63\x86\xf4\x98\x21\x3d\x66\x48\x8f\x19\xb2\x91\x7c\xf3\x2f\xf6\x58\x7e\x08\x6e\x62\x7f\x65\x7f\xf8\x3e\xe1\x93\xfb\x45\x46\xf4\x7f\xcf\x68\x4a\x98\x04\x69\x94\xaa\x45\x28\xcf\xb4\xac\x7c\x7d\xcd\x3f\xdc\x9d\x5f\x7d\xba\x08\xb3\x69\x3e\x5c\x3e\x5c\xdc\x9f\xdf\x0c\x6e\xfd\xba\xf8\x59\x85\x6b\x61\xbf\x2b\x89\x64\x96\xe4\x6f\x89\xd6\x3d\xe1\xd4\xdc\x29\xac\x72\xb9\xd9\xc8\x6e\x87\x77\xc3\xdb\x9f\x20\x1b\x68\x7c\x76\x7e\x37\xf8\xfe\xa2\x44\x10\xa5\xe7\x83\xd3\xbf\x3e\x9c\xdf\xb6\x3f\x1f\xfe\xd7\xf9\xdd\xfd\x5d\xdb\xd3\xdb\xe1\xc5\x70\x70\xd7\xfe\xf5\xc7\xc1\xf9\xc5\xc3\xed\x70\xe9\x7a\x2c\x1d\xed\x72\x25\x44\xc2\x22\x41\x9c\x3f\x8a\x2c\xd7\x10\xc5\x1a\x22\x2f\x3e\x3a\x76\xd8\xd4\xd7\x09\x7a\xb0\x3a\x3d\xb5\x8d\x1b\x06\x1b\x34\x64\x94\x91\x98\x4a\x3c\x49\x48\x5c\x6b\xc9\xad\x61\x5b\x4b\xb8\x34\xa8\x67\xad\x3d\x7b\x91\x53\xf3\xbc\xc8\xf0\x02\x04\x39\x8a\x8a\xb0\xb8\xa1\x0f\xb3\x0f\xad\x3d\x30\xcd\xbb\xe8\x13\x29\xf5\x14\xe5\x42\x10\xa6\x92\x05\x22\x9f\xa9\x54\xb2\xd6\xa8\xdb\xbe\xb6\x66\xed\x9d\xea\x1b\x9c\x63\x89\x26\x84\xb0\xf2\xf8\x05\x49\x08\x96\x0d\x63\xb6\xbb\xdf\x6d\x59\xfc\x5e\x59\x6b\x8c\xb9\x8c\xa6\x98\x26\xb9\x20\x95\xd3\xc2\xd3\x0c\x0b\x2a\x39\x1b\x7e\xd6\x77\x99\x3e\xc8\xd7\xf0\x39\x17\x9b\x9d\x98\xe1\x5f\x43\x0a\xbe\x2a\xff\xf3\xd3\x7d\xf9\x5f\xa5\x33\x7f\x71\x5f\xfe\xd7\x72\x5a\x0f\x1a\xae\x52\xf6\x21\xfa\x74\x7f\x82\x3e\x41\x88\x93\x40\xf7\x73\x6c\x28\xf6\xe2\xfe\x04\x5d\x10\x29\xe1\x97\xe2\x63\x45\x55\x02\x73\xfb\x9e\x32\x2c\x16\xc8\x4d\xdf\x24\xba\xe2\x68\x8e\x88\x5f\x9a\xea\xe2\xb1\xbf\xe5\x0c\x54\xf7\x62\xf5\x2e\xf8\x8c\x46\x38\xd9\x6e\x11\x07\x57\x25\x3e\x70\x7d\xbb\x74\x29\xc2\xb7\xeb\x6b\x31\xb8\x3a\x83\x24\x52\x37\xd4\x86\x99\x5f\x11\xa9\x89\x24\xe2\x2c\xb6\x5e\x1a\x7d\xfb\x2f\x02\xa1\xfe\x6f\x1c\x12\x71\x73\x49\xd9\x4c\xb7\x88\x8e\xd1\xf5\xed\x88\x5d\x8b\xd8\x18\x42\x89\x96\x86\x0d\xcd\x51\x89\x18\x57\x88\xa6\x19\x17\x0a\x33\xa5\x15\x01\x10\x03\xec\x8a\x18\x0e\x70\xca\xd3\x34\x57\x58\x1f\xb4\xda\xa2\x32\x63\x0e\xb9\x23\xea\x3c\x06\xd7\x4a\xc3\x1a\x1a\x39\xa1\x98\x4b\x26\x74\xfb\x5a\x46\x29\xeb\xd0\x34\xae\xa9\xb2\xae\x09\x2c\x04\x2e\x4b\x13\x1f\xa8\x22\x69\xf5\xfd\x8e\x41\x9e\xff\x6c\x34\x10\x9c\x9a\xa4\x0a\x22\x06\x22\x9a\x53\x45\x22\xa5\x8f\xe0\x46\x34\xf1\x70\xf5\xe3\xd5\xf5\xcf\xa1\x04\xf1\x61\x70\x79\xf6\xe7\x7f\x2f\xfd\x70\x7b\x59\xfb\x61\xfc\xd3\x9f\x6b\xbf\xfc\xff\x96\xd2\x53\xb5\xa7\x9a\x9e\x1f\xcc\xe5\x10\x44\x6a\xb0\x09\xbb\xa9\x22\x9a\xe2\x19\x41\x32\xcf\x34\x05\xc8\xa3\xf2\xfe\x6a\x91\xf2\x82\xe3\x98\xb2\x99\xc9\x00\xbd\xa0\x8a\x08\x9c\x5c\xe2\xec\xa3\xb3\x5f\x6f\xb0\x3a\xff\xf7\xae\x94\xaf\xfb\xe1\x97\xc1\x65\x98\xf1\xfb\xe1\xe6\xf6\xfa\xfe\x7a\xe9\xac\x4b\x2d\xd4\x8f\x91\x7e\x7c\x02\xff\x8b\x8e\x91\x6e\xdd\x4b\xbe\x29\x51\x58\x6b\x04\xe8\x6b\x93\x34\xe7\x13\x69\x28\x4b\xe0\xd4\x64\x82\xa6\x14\xae\x14\x63\xc1\xfb\xc6\x08\xd7\x5e\x7b\xf0\xe7\xc6\x7c\x00\xda\xb2\xbb\x94\x59\x8c\x45\x8c\xfe\x26\xab\xe9\xe3\x60\x38\x36\x3f\x90\x18\x1d\xa2\xb9\x52\x99\x3c\x39\x3e\x7e\x7e\x7e\x3e\xd2\x6f\x1f\x71\x31\x3b\xd6\x7f\x1c\x12\x76\x34\x57\x69\x62\xd2\xe5\xf5\x2a\x9c\xa0\x1b\xc1\xf5\x15\x02\x0a\x3a\x11\x14\x27\xf4\x37\x12\xa3\x89\xe1\x7f\x7c\x8a\x7e\x8d\xb8\x20\x47\xc5\xc6\x58\xa3\x92\xbd\x47\xac\xe1\xe9\x58\xbf\xd4\xc0\x4c\xaa\xfb\x89\x62\x12\xd1\xd8\x8a\x19\x84\x45\x1c\x2c\x8f\xc6\x57\xa1\xdb\x73\x99\x86\x5a\xa3\xc9\x72\x55\x2c\x67\xa0\xac\xe0\x98\x04\xd9\xee\x8a\x97\x09\x4e\x2b\x3e\xe7\x46\x6d\xcd\xb5\x8a\xae\xef\x56\x0c\xb7\xaa\x7b\x35\xd3\x13\x8e\x78\x82\x26\xf9\x74\x4a\x44\xe8\x90\x3e\xd0\xda\x0c\x95\x48\x90\x88\xa7\x29\x48\x0c\xfa\xab\x5c\x1a\xaa\x86\x15\xb3\xa3\x3d\x1a\x31\xd8\x7f\xad\xe6\x00\x05\xc4\x1c\x58\x1d\x23\x24\x46\x98\x2d\x4c\x37\x93\x7c\x1a\xb6\x6f\x60\x28\x70\x8c\xa8\x1a\xb1\x41\x92\x20\x41\x52\xae\x48\x90\x43\x09\xce\xb3\xf2\x82\x03\x8b\x14\x24\x4b\x70\x44\x62\x43\x0f\x09\x8f\x70\x82\xa6\x34\x21\x72\x21\x15\x49\xc3\x06\xbe\x06\x5b\x8d\x5e\x33\x2a\x51\xcc\x9f\x59\xc2\xb1\x9d\x47\xf5\xb3\x6f\xca\xa7\x71\xe8\x20\x02\x86\x42\x70\x01\xff\xf3\x23\x65\xf1\xce\x38\xd4\xc3\xdd\xf0\x36\xfc\xf7\xdd\x2f\x77\xf7\xc3\xcb\xf5\xb8\x8f\xa7\x2c\x18\x1e\xe8\xf0\x27\xe8\xce\x2c\x02\x17\x5a\x22\x12\x2d\x93\xba\xb4\xa4\x54\xfc\xc0\xe3\x0d\xb9\xef\xe5\xe0\xea\x61\x50\xe2\x28\x77\xa7\x3f\x0c\xcf\x1e\x2a\xfa\x80\x9d\x5f\x49\x86\x37\xea\x5f\xf8\xdb\xe9\x0f\xe7\x17\x67\xe3\x06\x85\xf1\xc3\xed\xf0\xf4\xfa\xa7\xe1\x6d\xa1\xdb\x35\x2e\x51\x65\x30\x55\x66\x75\x6f\x98\xd2\x9c\xc7\x68\xb2\x68\x06\x84\xd0\x92\x73\x02\xbe\xd8\x02\x12\xc5\xb4\x7a\x02\xbc\xc9\x61\x73\x14\x5f\xa4\x3c\x26\x07\xf6\x1d\x40\xd2\x30\xc6\x15\x23\x31\x37\x37\xac\x7b\xc7\x2c\x30\x54\x18\x90\x0b\xbf\x70\x27\x68\x80\xa4\x7e\x31\xd7\x87\x5a\xd0\xd9\x0c\x0c\x87\x95\xa1\x9a\xd6\xec\xa7\xb0\xbc\xf0\x9d\xd9\xff\x4c\x70\x38\xe7\xba\x5b\x6b\x71\xf6\x56\x09\xf3\x21\xa0\xae\x94\x5b\x14\x18\x0c\x0e\x0d\x43\x73\x9b\xa5\x17\xa1\x75\xbd\xcc\x79\x34\xf6\x22\x7d\xb8\x80\x6d\x49\x63\xef\xcc\x04\x79\xa2\x3c\x0f\x3e\xb5\xc0\x1e\xa5\x1d\x6f\x6c\xbe\x58\x00\x58\x36\x63\x14\xa9\x34\xe3\xc9\xa3\xb1\x05\xcd\xc2\x9e\xa0\x85\xa9\xe0\x69\x43\x1b\xe5\x63\x72\x7e\x7d\xa7\x04\x56\x64\xb6\x38\xb3\x2c\x63\xf3\xe3\x71\x76\xfd\xf3\xd5\xc5\xf5\xe0\x6c\x3c\x1c\x7c\x2a\x9f\x78\xff\xe4\xee\xfe\x76\x38\xb8\x2c\x3f\x1a\x5f\x5d\xdf\x8f\xdd\x1b\x4b\x49\xbe\xa5\x83\xfa\x3d\x5d\x7e\xf1\x04\x69\x96\x0b\xac\xd1\x01\xde\x05\xfc\x71\x42\xa6\x5c\x18\x3e\x9f\xba\xd0\x05\x2b\xc2\xb8\xb5\xb5\xba\x58\x65\x16\x27\x60\x19\x6b\x6a\xd2\x58\xbd\x95\x20\x38\x85\x7b\x02\x33\x34\x64\xf1\xe1\xf5\xf4\xf0\xce\xfc\x98\x62\xf1\x48\x84\xff\xf4\x59\x50\xa5\x08\x2b\xa9\x74\xd8\x0d\xd9\x2b\x89\x45\x07\x47\xe8\x56\xf3\x7d\xfd\xbe\xbf\xd4\x34\xb1\xc7\x44\x61\x9a\x48\x3b\xd8\xd2\xba\x9e\xa0\x0b\x2c\x66\x85\x1d\xee\x6b\x3e\x9d\x9a\xc6\xbe\x31\xc3\xd0\x77\x58\x69\x16\x0d\xbc\x57\x93\x86\xbb\x17\xa1\x3f\xfb\xb2\x97\x87\xeb\x54\xf5\x90\x6d\x47\x53\x0f\x37\xb0\xe2\x46\x63\x2f\xe9\x86\xf6\x49\x03\xad\xc1\xc4\xcd\xe3\xe5\x97\x4c\x73\xdb\x75\x72\x2a\xbf\xd8\x40\x4e\x26\x97\x4a\xef\xfc\x54\x6b\x9b\x0d\xb4\x44\x3e\x53\x6b\x30\x08\xc7\x5d\x21\xa1\xa2\x19\x30\xaf\xe2\x2c\x23\x58\xc8\xa6\xdd\x2e\x8b\x81\x2d\x7b\x6f\x7a\x0a\xfb\xb0\x9b\xec\xfa\x39\x40\x9c\x81\xc1\xc1\x0b\x11\x15\x8a\xec\x40\x03\xa6\xad\x1a\x05\xdc\x00\xda\xd2\xb5\x45\x36\xba\xa4\x52\x2b\x8d\xe6\xc7\xef\x2d\xe4\xd2\x66\x04\xf1\x71\x70\x7e\x51\x11\x2e\xc6\x67\xc3\x8f\x83\x87\x8b\xe5\x66\xc2\xd2\x77\xd5\x2d\x46\x87\x48\x3f\x2f\xfb\xcd\xe9\xd4\xdc\x19\x0e\x38\xca\xa8\xb4\x84\x81\xd1\xca\x42\xd5\x18\x7b\x75\x4c\xb2\x84\x2f\x52\xc2\xc0\xc4\x53\xba\x09\xf5\x7a\x4e\x31\xb5\x57\x4b\x30\x58\xb0\xe2\x58\xb3\x1b\x5c\x63\x87\x0e\xad\x8a\xc4\xfe\xe6\x2d\x83\x55\x55\x58\xf7\x8d\xf1\x9e\xd9\xff\xdc\x29\xac\x36\x3c\x63\x83\xd3\xfb\xf3\x9f\x86\x65\xfd\xf0\xf4\x87\xf3\x9f\x9a\xa4\x9a\xf1\xa7\xe1\xd5\xf0\x76\x70\xbf\x42\x38\xa9\x34\xd9\x24\x9c\x48\x3d\xe0\xaa\xf7\x94\x4a\x1f\x11\x14\x19\xc8\x2b\x44\x95\x44\x4f\x54\xd2\x09\x05\x80\x30\xeb\x89\x7c\x38\x07\xce\xfa\x84\x13\x1a\x53\xb5\x70\xe2\x8b\xe9\xb7\xbc\x8f\x9a\x93\xda\xf6\x8d\xd9\x21\xf4\x4f\x82\x95\xcf\x6c\x8e\x9b\xf4\x09\x02\xdd\xf6\x09\x94\xb6\xe0\x33\xa6\x05\x69\x36\x23\xc2\x0c\x07\xbc\x2f\xe1\x58\x82\xe7\x7a\x54\xa1\xb0\x52\xac\x9a\x17\x5a\x67\x84\x11\x01\x20\x70\xbe\x13\x23\x48\x09\xc2\xbe\xd2\x32\x57\x96\xd0\x88\xaa\x64\x81\x22\xb0\x61\x81\x39\x33\xc5\x0c\xcf\xac\x70\x00\x6a\x4e\x85\x24\xfe\x6a\x50\xd4\xae\xa7\xd6\xb4\x7f\x4f\xc9\x86\xc7\xec\xe1\xea\x6c\xf8\xf1\xfc\xaa\x4c\x02\x3f\x9c\x7f\x2a\x89\xb0\x97\xc3\xb3\xf3\x87\xd2\x6d\xae\x25\xd9\xe5\x72\x7d\xb5\xd9\x86\xa3\xe8\x5f\x3a\x41\x67\xe6\xd3\x13\xbd\xb8\x0d\x10\x71\x5e\xf9\xad\xac\xc3\xad\x0b\xc9\x73\x7f\x0c\x99\x12\x8d\x7e\x89\xae\x26\x24\xeb\x83\x2c\xd9\x90\x9a\x43\x15\x6a\x7d\x5f\x55\x9d\xca\xd5\x29\xbb\x17\x21\xe8\xf2\xa8\xb0\x2c\x85\x31\x0c\x60\x34\x68\x33\x62\x35\xb8\xb5\x0a\x86\xfd\x13\xb8\xa8\xd3\x5c\x2a\xe3\x4a\x04\xe2\x44\x8f\x7f\x91\x7a\x41\xc1\xd5\x78\x84\xee\x08\x19\x31\x67\x3d\x98\x51\x35\xcf\x27\x47\x11\x4f\x8f\x0b\x7c\xc2\x63\x9c\xd1\x14\x6b\x49\x9a\x88\xc5\xf1\x24\xe1\x93\xe3\x14\x4b\x45\xc4\x71\xf6\x38\x83\x08\x18\xe7\x4e\x3d\xf6\xcd\xce\xf8\xbf\x5e\xfc\xe9\xdb\xc3\x8b\xbf\x7c\xfb\xa1\x6e\x21\x6b\xdb\xff\x21\x8b\x70\x26\xf3\xc4\x46\xcc\x89\x70\x6d\xdc\x91\xcf\xc9\xaa\xfd\xbe\x2a\x6f\xd7\x76\xfa\xeb\xe9\xcd\x43\xc9\x62\x5d\xfe\xe7\xe5\xf0\xf2\xfa\xf6\x97\x12\xa7\xbc\xbf\xbe\x1d\x7c\x2a\x31\xd4\xe1\xcd\x0f\xc3\xcb\xe1\xed\xe0\x62\xec\x1e\x6e\x63\x7b\xfb\x91\xf1\x67\x56\x5e\x1a\xe9\x38\x60\xad\xa7\x13\xf4\x91\x0b\xf4\xa3\xdf\xc9\xc3\x09\x96\x70\xc5\xb8\x3b\x4b\x1e\xa0\x8c\xc7\xc0\x78\x11\xc9\xe6\x24\x25\x02\x27\xd6\x66\x20\x15\x17\x78\x66\x6e\x7a\x19\x09\xac\xa2\x39\x92\x19\x8e\xc8\x01\x8a\x80\x1a\x66\x07\xb0\x29\xa0\x6a\xf1\x59\xd5\xce\x77\x9b\x33\x45\x53\xe2\x54\x70\xfb\xcf\x7b\xb3\x19\x1b\x6c\xce\xf5\xfd\x0f\x65\x61\xef\xe3\xc5\x2f\xf7\xc3\xf1\xdd\xd9\x8f\x4b\xd7\xd3\x7c\x56\x1a\xd9\x1d\x04\x20\x9d\xf2\x24\x4f\x59\xf8\xf7\xe6\x63\x3b\xbf\xba\x1f\x7e\xaa\x8e\xee\x7a\x70\x5f\xa6\x8c\xdb\x72\x80\xdb\x87\xef\xaf\xaf\x2f\x86\x25\x97\xf0\x87\xb3\xc1\xfd\xf0\xfe\xfc\xb2\x44\x3f\x67\x0f\xb7\x06\x8d\x70\xd9\x34\xdd\x08\x1a\x26\xaa\xa7\x15\x4e\x73\xd7\xac\xb0\x13\x27\x1a\xd8\x80\x72\x73\x96\x0f\x03\xb8\x1d\x13\x0e\x06\x56\x9d\x43\x6f\x52\x8d\xcc\x48\x1b\xd9\xa1\x2a\x6f\x13\x6a\x67\xc7\x4b\x37\x7a\x19\x57\xbe\xf7\x43\x30\x50\xa0\x46\xd9\xc6\x49\xc2\x9f\x4d\x28\x6f\x4a\xf5\xad\x6c\x81\xd1\xf4\x2b\xb2\xf0\x10\x1e\x35\x70\xbc\xf2\xb6\x90\x48\x10\x75\xc9\x73\xa6\x36\x27\xb9\xc1\x55\x89\xef\x0c\xaf\x7e\x1a\xff\x34\x28\x53\xe0\xf9\xc5\x72\x56\x13\x36\xd1\x70\x15\x0f\xae\x7e\xf1\x97\x30\x04\x7c\x1f\x78\x0d\xd5\xc8\xae\x51\x42\xb5\xd8\x1b\x61\xad\xbd\x26\x20\xd1\x20\x42\xc1\xe4\x90\xea\xc9\x41\x80\x69\x66\xfc\x49\x86\x3f\x99\x41\x9e\xb8\x3f\x2a\xed\x49\x58\x17\xb0\xa6\xba\x78\x7a\x68\xc7\x6a\xd5\x0c\x11\xf6\x44\x05\x07\x3c\x5b\xf4\x84\x05\xd5\xd2\xb8\x69\x59\xcf\xf5\x04\xfe\x77\xbd\x36\xc1\x30\x5a\x61\x5c\x77\x5c\xa8\x33\x1f\xc8\xbb\x99\x35\xa4\x29\xa0\xb5\x1e\xca\xda\x6c\xe8\xa8\x7f\xdb\xb0\x39\x5b\x06\xfc\x96\x27\xfc\xf7\xe4\x8c\xe2\x44\x33\x80\xdd\xc9\x8b\x83\xab\xbb\xf3\xb2\xfc\x58\x56\x33\x02\xbe\xbc\xb1\xbc\x08\x86\x4a\x33\x72\xa7\x4c\xdc\xfd\xf5\xc2\x68\x17\x00\x7a\x6c\xce\x6d\xa0\x58\x80\x00\xe4\x50\x50\x32\x2c\x64\xe5\x0b\x89\x00\x08\xad\x08\xb8\xd2\x77\x16\x84\x33\x3d\x71\x1a\x8f\x18\xf9\x9c\x11\x26\x21\x38\xc0\xdc\x67\x85\xaf\x5d\x1e\xa1\xf3\x29\xb0\x04\xfd\x3a\x43\x39\xb3\x0e\x30\x7d\xe1\x9a\x41\x1e\x68\x51\xd6\x0e\xc1\x6b\x88\x60\x78\x61\xc4\x05\x4b\x15\x83\x1f\xb1\x9f\xbd\x13\x0d\x1e\x4d\xb9\x66\x40\x7a\x17\x6d\x7b\x27\x08\x33\x49\x0f\x90\x56\x58\xaa\x7b\x0a\xa9\x03\x5a\xa1\xb4\x21\x5c\x9a\xd3\xd8\x3f\x5f\xff\x1a\xa8\xc5\x09\x87\x97\x41\xf3\x5d\x50\xb9\x0a\x5a\x44\xe3\xc4\x78\x4c\xc6\xdd\xef\x84\x88\x0b\x62\xfd\x2c\x6b\x5f\x03\xab\x18\xfb\x3d\x96\x8f\x35\xdf\xc3\x39\x93\x0a\xb3\x88\x9c\x26\x58\x6e\x18\x84\xe4\x6c\x1c\x07\x65\x89\xe3\xf6\xf6\xe1\xe6\xfe\xfc\xfb\x15\x5c\xbe\xfa\x71\x3d\x0c\x28\x4a\x72\xe7\x9e\x9b\x08\x8e\x63\xa4\xd9\xe7\x8c\x1b\x57\xa0\x15\xfc\x0b\xe8\x6f\x93\xd7\xe3\x03\x2a\x4b\xb0\xe3\x45\x3a\x82\xb5\x73\x84\xae\x04\x6a\x17\x02\x45\x7a\x25\x50\x60\xf2\x70\x5b\x0d\x9e\x45\x53\x90\xc4\x5a\xb7\xb2\x04\xab\x29\x17\xa9\xe1\xf2\xa5\x49\x9b\xc6\x97\x37\x4a\x99\x22\x42\xe4\x99\xa2\x0e\xcb\xbd\x2a\xa5\x42\x85\x77\x3e\xbb\x24\x52\xe2\x19\xd9\xc6\x01\xdd\xa4\x3c\xdc\xfd\x14\xfe\x13\x1c\xcc\x5d\x64\xff\xd2\x08\x5d\xe4\xbb\xa3\xa7\x6b\xf6\xd1\x04\xf2\xdc\xf0\x84\x46\x1b\x06\xdc\x7d\x1c\x9c\x5f\x8c\xcf\x2f\xb5\x12\x3f\xb8\x1f\x5e\x94\x44\x09\x78\x36\xf8\x78\x3f\xbc\xb5\x20\xd6\x83\xef\x2f\x86\xe3\xab\xeb\xb3\xe1\xdd\xf8\xf4\xfa\xf2\xe6\x62\xb8\x22\x32\xa7\xb5\xf1\xba\x75\xb5\xfa\xea\x49\xed\x17\xd8\x61\xcd\xcb\x42\x7b\x19\x64\x8d\x61\x9a\x80\x13\x9c\x1b\x67\x38\x46\x8c\xc7\x04\x7e\x96\xce\x3a\xe3\x91\xa3\xd1\xb9\xfa\x2a\x49\x10\xce\x15\x4f\x31\x78\x6d\x92\xc5\x88\xe1\x89\x66\xad\x38\x49\x82\xf0\x2e\x91\x33\xa6\x59\xac\x6e\xcc\x40\xb4\x47\x09\xd1\xec\x3c\x0b\x92\xfd\xac\xdf\x60\x4a\x19\x44\xda\xa6\x58\x3c\x1a\x37\x53\xd1\x65\x71\x28\x24\xc2\x72\xc4\xf4\xb8\x88\x35\x0c\x75\x59\xe1\x93\x4e\x6f\xb5\xae\x4e\x8a\x1f\x89\x5e\x95\x34\x8f\xe6\x28\x13\x7c\x26\x88\x94\xd6\xb6\x1c\x61\x66\x02\x10\xec\xeb\xfa\x1a\x1a\x31\xc6\xf5\x52\x38\x13\x76\x4c\x32\xc2\x62\xc2\x22\x6a\xd2\xfa\xc0\x77\xef\x4d\x9b\x33\x81\xb3\x39\x92\x1c\x9c\xde\xb0\xec\x60\xbf\x32\x1f\xb9\x9b\xcc\xcc\xd8\x3c\x0e\x2d\xd0\x22\xd7\x7c\xe2\x1a\xe4\x44\xb3\xca\xf0\xb1\xbb\x0c\x9d\xdb\xc5\xd8\x01\xd3\x2c\x21\xca\x80\xf5\xc3\x92\xc3\x66\xe8\xb5\x2e\xed\x87\xde\xa6\xa6\x4d\xd0\x17\xb6\x1b\x33\x96\x76\x44\x47\x0d\x96\x6d\x7b\xa4\xd0\x0f\x98\xc5\x89\x6e\xc5\xf9\x30\xca\x67\x11\x52\x51\x06\x9a\x6a\xdc\x69\xdc\xe6\x16\x8d\x70\x2e\xb7\xb9\x46\x2b\xb9\x98\xc6\x2a\x78\x58\x04\x85\x00\x79\xdb\x44\x4c\x58\xdd\x4c\xb3\x48\x9c\x70\xbb\x4a\xe6\xf5\xdc\xd4\x7f\x42\x30\x9a\x96\x6b\x36\x13\x94\x45\x34\xc3\xc9\x46\xba\x5f\x25\x18\xdf\xc6\xb8\x7f\x4d\xa7\x9a\x7c\xbe\xa9\xb9\x6d\x15\x11\x29\x24\x28\xdb\x61\xfa\x2d\x5c\xc3\x92\x64\xb3\x1a\x88\x2c\xa2\x49\xb0\xe0\xb9\xf1\xc7\xc1\xba\x90\xb8\xe1\xa8\x1e\x35\x6d\xb7\x3e\x19\xb8\x1c\x00\xbd\xc1\x66\x9b\xc8\x9f\xb6\xf5\xab\xb4\x62\x7b\x37\xc1\x78\x38\xb9\x69\x6e\xb3\x69\x07\x82\x87\xff\x5c\x46\x3b\x97\x38\xd3\x34\x63\x61\xfb\x71\x31\x47\xab\x24\xd9\xaa\x60\x2e\x7e\x26\xf0\x9d\xfb\xbc\x90\xee\xbb\x51\x2c\xa1\x0d\x80\xaa\x77\x52\x8a\x21\x08\x72\xcc\x2d\x8d\x4f\x73\x2d\xcb\x22\x0c\x51\x08\xe8\x6b\x72\x34\x3b\x42\xae\x08\xc3\x01\x1a\xdc\xdc\x0c\xaf\xce\x0e\x10\x51\xd1\x37\x2e\x66\xd1\x06\x2c\x8d\x98\xe2\x56\x5a\x59\xb8\x02\x1a\x29\x11\x33\x52\x9a\xb3\x8b\x6e\x82\x50\xe5\x19\x95\xca\x86\xcf\x6a\xbe\x12\x94\x3a\xa1\x69\x55\xcc\x36\x14\x92\xab\xf9\x36\xa4\x81\xa5\xcc\x53\xad\xcb\x8e\x29\x4e\xc7\x82\x27\xdb\x30\x85\x33\x98\x0a\xa8\xcb\x3e\x3d\x9f\xe2\x14\xe9\x66\x6d\x28\x88\x77\x39\x7a\x91\x4e\x0b\x46\x9a\x2f\xeb\x7b\x33\xb8\xb7\x9c\xf7\xc1\xc6\xa3\x51\x17\x02\x01\xe9\xfb\x2d\xac\xa2\x30\x1b\x8f\xad\xa5\x7e\x8c\xa3\x48\xab\xdc\x3b\x9e\x54\x50\x3f\xc7\xb9\x04\x6c\x47\x2f\x36\xcd\x55\x74\xee\x86\x99\x69\x0e\x06\xc1\xc0\xfa\xca\x95\x3c\xa2\x45\xfb\x0d\xfd\x4e\x16\xb5\x5e\x5d\x85\x9b\x07\xe9\x4d\x2a\xe6\x12\x96\x04\x76\x52\x9a\x0a\x39\x6a\x4e\x16\x68\x8e\x9f\x48\xa9\x4b\x97\x10\xa3\x1b\x5e\xf0\x5c\x34\x31\xba\x11\x3b\x23\x99\x20\x5a\xd2\xaf\x3a\x50\x3c\x4d\xdf\x96\x29\xb1\xa7\xeb\x9e\xae\xdf\x3d\x5d\x9f\x9a\x42\x49\x03\x5f\x18\x6b\x2b\x01\xce\x34\x36\xce\x38\x4f\xc6\x1d\x6c\x22\xdd\x57\xbc\xe4\x09\xab\x94\x8d\x02\x48\x00\x9e\x83\x7c\x54\xba\x36\xb9\xbe\xeb\x82\x14\x5b\x3b\xbc\x25\xcb\xe0\x5c\x66\x41\xbd\x9c\x6d\xce\x7b\x53\x2b\xcb\x5a\x42\x2f\x2e\xe6\x9c\x1a\xf9\xc6\xbb\xcb\xc2\xfa\xa7\xa5\xc3\xe4\x44\x11\xca\x6a\xd5\xd8\x0c\x3d\xeb\x05\x36\x72\xc7\xdf\x73\xae\xb0\xfc\xe6\x68\xc4\xb4\x10\xf5\x48\x16\xc6\xdc\xaa\xc5\x94\x3f\x68\x59\xfc\x50\x12\x26\x21\xdc\xfb\x0f\xc6\x3d\xa7\x49\xdc\x99\xab\x8d\x6a\x6a\x8a\xc0\x41\xd0\xb5\xef\x05\x42\x74\x6d\xa3\x56\x4a\x2a\x02\xa0\x41\xce\x37\x73\xb1\xcf\xcc\xf0\x67\x44\x41\x8a\xb5\xa2\x0a\x74\xa6\xd8\x54\x99\xab\x0d\x7d\xa5\xe9\xca\x50\x85\xe0\xe0\x27\x89\xf3\xed\x18\xbf\xac\xb7\xb1\x92\x33\x7a\x6d\xe1\xce\xc6\xbc\x1f\x3b\xbb\x51\x24\x78\xad\x74\x1b\x96\xc8\xec\xf4\xc4\xb0\x03\xe7\xbf\x26\xec\xe8\x99\x3e\xd2\x8c\xc4\x14\x43\x04\xbc\xfe\xd7\xb1\x9e\xd7\xbf\x9e\xde\x5e\x5f\x8d\x8b\x4c\x9e\xff\x1c\xb1\x41\x22\xb9\xcf\x52\x40\x8c\x33\x1f\x6e\x9f\x09\xe2\x44\x42\x3b\x17\xb0\xba\x16\x66\xc4\x11\x6b\x1b\x41\xcc\x23\x79\x84\x9f\xe5\x11\x4e\xf1\x6f\x9c\x81\x2b\x7d\x00\x7f\x9e\x26\x3c\x8f\x7f\xc6\x2a\x9a\x1f\xc3\xb9\x56\xc7\xe4\x89\x30\x65\xdc\x54\x7a\xb9\x62\x48\xde\x95\x10\xad\xff\xaf\x7a\xcc\x45\x52\x91\xd4\x9a\x6c\x44\x32\x85\xfe\x1f\x41\x26\x9c\xab\xe6\x4b\x8a\x4f\xa7\x92\xac\x75\x21\x15\x4a\xda\xdd\x35\xfa\xcb\x9f\xbf\xfd\xa3\x26\xa1\x4d\xd6\xf8\xfc\xee\x7a\xac\xbf\xff\xd7\x33\xfb\xbd\x5c\x83\xdd\x5d\x67\x05\x6b\x73\xc4\x63\x02\xe7\x73\x06\xb7\x9f\x00\xe7\x05\xb0\x37\x20\x87\x62\x1f\x9b\xb8\xdb\x59\xa9\xf5\xed\x54\xb6\x8d\x16\x13\x54\xec\x60\x8e\xe8\x10\x31\x8e\x52\x13\x6b\x8a\x19\xfa\xf7\x1f\xbf\x6f\xde\xc0\x5c\xd0\x8d\x3a\xa4\x16\xae\x21\xe8\x52\xd2\xdf\x88\x44\x9a\x6a\x34\x15\xf3\x54\x77\x2d\x88\x9c\xf3\x24\x46\xcf\x04\xd4\x24\x1b\x07\xea\xb5\x72\x41\x46\x2c\x6c\x02\x42\x0e\x11\x4e\x14\x9f\x11\xb8\xab\x9d\xa2\xa6\x88\xd0\xa2\x8a\xc9\xd2\x50\x5c\x90\x03\x03\xf5\x75\xf7\x27\x17\x5b\x0d\xd3\x84\x47\x2e\xa9\xc5\x9a\xe4\xe2\x49\xf3\xcc\xa7\x55\xd3\x2b\x6a\xb7\xe1\x57\x37\xd9\x9a\x6d\x9b\x97\xc6\x26\xa1\x58\x1b\x56\x75\x67\x9a\x07\x43\x23\xce\xc6\x09\x65\x8f\x1b\x6d\xc6\xb5\x13\xe5\x74\x0b\x76\xcd\x74\x8b\xde\xce\x6d\x2c\x20\x6b\x9c\x8f\x8f\x79\x92\x98\xd4\x96\x70\x7b\x40\xee\x32\xeb\x06\xc2\x40\x66\x72\x40\x49\x6c\xfd\x5e\x56\x13\x16\x84\x41\xc0\xdb\x88\x4d\x16\xd6\x67\x2b\x0f\x90\xcc\xa3\xb9\xcb\xcc\x8b\x38\x93\x5a\x8c\xe6\x02\x45\x3c\x4d\x4d\x71\x53\x46\x90\xe2\x3c\x91\x36\xda\x9d\x1d\x2a\x1c\xa9\x11\x2b\xfa\x5b\x71\xf2\x4c\x05\xa4\xed\x52\xf7\xba\xbb\x74\x8a\x4a\x4b\x4b\x05\x6e\x1a\x87\x98\x0d\x60\x04\x33\x9e\xa8\x00\xfd\x81\xd7\xcf\x92\xd9\xb0\x16\xcd\x40\xce\xb9\x50\xe3\xb8\x91\xe7\xac\x24\x9a\x2a\x23\x64\xe4\x30\x81\xa0\x61\xfe\xa4\x85\x7f\xf2\xec\x8d\xaf\xcb\x86\xa0\xa9\x7a\xd9\x08\xba\x1d\xa3\xa5\x23\x5b\x97\x04\x5b\xd6\xca\x20\x78\x44\xe5\x98\xf0\x55\x63\xbc\x83\xaf\x4e\xf5\x47\x4b\x17\xaf\x7a\xee\x9c\x10\xc4\xe3\x02\x6c\xce\xdc\xeb\x36\x23\x64\xd9\x9a\x5a\xe8\x84\x97\xcb\x1c\x5d\x36\x95\x87\xb2\x25\x57\x8f\x05\x4c\xf6\x92\x80\xac\x89\xc5\x84\x2a\x81\x45\x09\x29\xc4\xeb\x83\x92\x60\x01\xf1\x59\x23\x66\x70\xe3\x8c\xa6\x10\xa3\x98\x4a\x48\x10\x81\xbb\x34\x70\x86\xa1\x6e\x4a\x60\xe5\x68\x17\x79\x8e\x26\xfe\x1c\x02\xcb\x0a\xd2\x70\xcc\x4e\x77\xe4\xf1\xb1\xb4\x7e\xc6\xa3\xbc\x10\xe4\x22\x90\x70\x2d\xa6\x0e\xa2\x4c\xd2\xd9\x5c\x21\xca\xac\xdd\x11\x27\x33\x2e\xa8\x9a\xa7\xf2\x00\x4d\x72\xa9\xb5\x50\x13\xac\x66\xe2\x51\x88\x8a\x3a\x71\xa1\x6d\x93\x88\xe3\x4a\x83\x75\x15\x65\x03\xd2\xe8\x76\x28\x87\x95\xbb\x62\x05\xe1\x0c\x3c\xce\x60\xb5\x0d\x0a\x75\x1b\x0d\x3c\x25\x32\x71\x80\xdc\x21\x3b\x41\x15\x90\xb6\x73\x00\xa8\x90\x3b\xf3\x52\xbc\x46\x21\x2e\x64\x92\x41\x05\x71\xb1\xdb\x20\x79\x95\x91\x29\x0d\x7a\x93\x77\x3a\xa5\x99\x6a\x0c\xdc\xaa\xbb\x8a\x6e\x03\xcc\x9f\x6e\x8b\x0d\xc9\x58\x40\xcd\x80\xd4\x36\x62\x77\x84\xb4\x03\xb9\xd5\xf6\xde\x94\xc6\x85\x29\xd8\x44\x8f\xe5\x24\xbf\x8d\x13\xfb\x6c\x78\x77\x7a\x7b\x7e\x63\x20\x27\xae\x6f\x2f\x07\xf7\xe3\x06\xbf\x76\xc3\x5b\x97\x83\xdb\x1f\xcf\x56\xbf\xf6\xc3\x7d\x39\x2b\xbb\xe1\x95\xdb\xbb\xe5\xc9\x1c\x1d\x86\xd8\x90\x14\xd6\xd8\xcf\x09\xca\x16\x6a\xce\x99\x0f\x51\x88\x4b\xbc\xe9\x10\x99\x8c\x60\x05\x21\x44\x42\xaa\x06\xc7\xe1\x3d\xc4\xe5\xac\x96\x30\xcb\x9b\x65\x60\xd8\x76\x2a\x1a\xad\x71\x22\x3f\x25\x7c\x02\x7e\xeb\xbc\x54\xe2\x76\x49\x04\xfa\x96\xf1\x3e\x67\x54\x66\x09\x5e\xd4\x7a\x58\x75\xe5\x5c\xe1\x94\x40\xc4\x71\x81\x1f\xe7\x92\x45\xf4\xce\x40\x02\x93\xbf\xd7\xe9\x14\x32\x99\x14\xc5\x8a\xa0\x09\x51\xcf\x90\x37\xe7\x7e\xf5\xb6\x54\x17\x30\x22\x8f\x46\x0c\xcc\x39\x23\xbd\xc8\x71\x0e\xd1\x7e\xa3\x0f\x07\x68\xf4\x21\x26\x4f\x24\xe1\x99\xde\x79\xfd\x43\xcb\x25\x33\x4c\x31\x4d\xae\xb8\xf2\x96\xb9\x6d\xf6\x53\x90\x88\x66\x20\x99\x8f\x89\x6e\xf7\xf5\x04\x8f\x12\x25\x3b\x76\x06\x63\x40\x38\x8e\xb5\x92\x0d\xac\xcc\x0d\xaf\x08\x01\x62\xc1\xd4\x4b\xb5\x32\xd7\x11\x29\xbc\xf9\xdb\xf4\x18\xb6\x59\x36\x7b\x36\xee\x80\x77\x0c\xbf\x92\x92\xe1\x42\x71\x7c\xc7\x1d\xb5\x8e\x87\x36\x1d\xa3\xd5\x03\x5d\x3d\x80\x7a\x2d\xd6\x10\x98\xfd\x00\xef\xf4\x77\x2b\x05\x4d\x7f\xdb\x46\x61\x49\x76\x10\x19\x6d\x6e\x73\x35\x9d\x9a\xac\x1c\x71\x94\x70\x59\x86\x3a\xe9\x3c\xe8\x53\xfb\xe9\xb2\x71\x0f\x43\x67\xb1\xbe\xd6\xd7\xf2\x47\x37\x2c\x7c\x05\xcb\xcf\xb0\x09\x65\x1d\x1c\xf6\xed\x03\x44\x21\x58\x0e\xe4\xe9\xa4\x48\xfc\x66\x31\x2a\xac\xd8\x23\x56\x84\x1c\x48\xf4\x4c\x12\x88\x52\x8a\x78\x9a\x81\x85\xd6\x0e\xd7\xb6\x44\x62\x13\xf0\x79\x80\x78\xae\x74\x63\x26\xa5\xc2\xd9\xe0\x6c\xbe\x46\x61\xb5\x36\xae\x13\x1b\xbb\xec\x71\x81\x0d\xad\x1b\x56\x48\x19\xfa\x44\x14\xb4\x02\xb8\xeb\xe1\x04\x41\xcc\xab\x46\xc0\x35\xaf\xfd\x16\x27\xca\xce\x64\x8d\x9d\x2f\x70\x2f\xbe\x4f\xf8\x64\xb9\x8e\x07\x8d\xa3\x87\xdb\x73\x67\x50\x2a\xc2\x5f\x02\xf0\xd9\x92\x43\x68\x78\x73\x3b\x3c\x1d\xdc\x0f\xcf\x8e\xd0\x83\x24\x7a\x79\xfc\x74\x21\x3d\xd6\x4b\x94\x66\xe4\x16\x48\x83\x49\x45\x70\x9b\x1e\x4b\x84\x28\x25\xb1\xae\x60\x1c\x65\x94\x8d\xe5\x84\x0d\x18\x17\xd4\xda\x59\x00\x17\xa6\x3a\x4f\x1b\x58\xb5\xea\x04\x42\x98\xcb\xf8\xfd\x04\x19\x99\xf1\xa6\xf5\xc0\xaa\x55\xe4\x53\x0e\xc8\x7a\xe9\xc9\xc0\xd1\x52\x73\x42\x05\xea\x34\x2d\x43\x54\xe3\xee\x73\x0a\x22\x94\x2f\x71\xb6\x3c\x7b\x10\x3f\x97\x88\xd6\x48\x32\x81\xeb\xf5\xa5\xcf\x81\x63\x6b\x63\xc3\x0a\xb7\x9f\x60\xe1\x8f\x30\xbc\xd5\xf3\x4d\x13\xb0\x2f\x9d\x8d\x23\x9c\x58\x65\x10\x36\x0c\x51\x22\x38\x3b\xf0\x0b\x65\xa8\x74\x25\x1e\xa0\x29\xfd\x6c\x1b\x2d\xc2\x93\xdd\xab\x81\xbf\xba\x25\x1c\x6e\x8e\xeb\x67\x6a\x0d\xb1\xe1\x06\xbe\x5f\x1a\x9e\xc5\xa5\xd2\x52\x97\x96\x5c\x05\x89\xb8\xd0\x37\x05\x74\x5b\x18\x91\x57\x89\x0c\x0a\x0b\xbd\x28\x75\xa3\xfa\xb2\xd3\x5f\x94\x90\x88\xb1\x22\x87\x8a\xae\xcc\x5f\xb5\x29\x0e\x90\x0c\x81\x55\x80\xe6\x54\xdc\x3c\x13\x32\xc3\xcc\x45\xd6\xb6\x0c\xd7\x5d\x79\x5b\xb0\x2a\x2d\xc1\x62\xc8\xee\x01\xf9\x0a\x32\x37\x4a\xe3\x90\x19\xac\xe7\xd2\x71\xd8\xe0\x85\x7d\x58\xb6\x67\xec\x63\x29\x5a\x06\x9b\x67\xf1\x3e\x0d\x36\xc1\x52\x21\x3b\xa6\x36\x4d\x32\x90\xf0\x5f\xd6\x86\x56\x52\xcd\xba\x9a\xcf\x34\x09\x95\x95\x10\x02\x86\x6d\xe9\x60\x2f\x0c\xc8\x47\x4a\xc4\xcc\x09\xc2\xa6\x92\xae\x3f\xdb\xb6\xa4\xae\xbb\x25\x42\x66\x02\x31\xd6\xf5\xa6\x8f\xd0\x80\xd5\xe0\x8e\x5c\x58\x4d\x69\xbd\xcc\x9d\x84\x93\x67\xbc\x90\x28\x13\x06\x19\xc4\x04\x5e\xbb\xc9\x43\xbc\x63\xf9\x23\xef\xc9\x56\x2e\xf2\x1d\x81\x2a\xbd\x3a\xe6\xc9\xc9\xbd\xe3\x17\xf0\xc4\x54\x82\x82\xbd\x40\x5e\x34\x57\xa8\x9a\x1d\x58\x9d\x22\xe3\x68\x8e\xd9\x8c\x8c\x9d\x8d\x6c\x13\x6d\x49\xb7\x73\x0a\xcd\x9c\xd9\x56\x9a\x2f\xa7\x1b\xa3\x30\xd9\xf2\x1d\xe6\x55\x6f\xff\xd1\x87\x40\x2a\x3c\x23\xc8\x8c\xa8\x93\x55\xb1\x14\xf0\x63\xb1\x62\x41\x4f\xb0\xad\x0e\xcb\x41\xd0\x6d\xc2\x3b\x44\xae\x5c\xe0\x09\x49\xde\xc6\xf1\x0d\x5d\x5b\xdb\x2a\x38\x5b\x4c\x30\x37\x41\xcf\x60\x8e\xad\xb0\x0c\x6b\x7c\x15\x79\x53\x68\xf7\xb2\x79\x96\x8a\x57\x6f\x31\x51\x57\xea\x61\x93\xa9\xb6\x15\x80\x08\xaf\xbd\xa0\x50\x42\x93\x7d\x24\xbc\xfe\xaa\x26\xc1\xcd\x06\x12\xd4\x6b\x68\x19\xc7\xd6\x05\x1b\x56\x4e\x65\xe3\x1c\xf1\x8e\x45\xcc\xce\xa7\x88\x71\x46\x10\x95\xc5\xcb\xaa\x9c\xcd\xe2\x11\x56\xb4\x88\x6f\x8c\x2f\xbe\xc8\x92\xaf\x9d\xf3\xd2\x96\x96\x22\xf7\xdd\xdb\x06\x5c\x7a\x2e\x23\x5a\x51\xc5\x62\x01\x08\x8d\x86\x0f\x97\x65\xba\x95\xe3\xdc\xb9\xc0\x7d\xef\x00\x38\x83\x40\x4b\xc5\x11\x88\x91\x95\xc1\x21\x03\x63\x69\x5f\xb2\x1f\x59\x94\x91\x11\xf3\x96\x0d\x20\x44\x2a\x51\x8a\x33\x70\xc9\x30\xae\x8a\xaf\x0c\x6a\x8e\xf2\x5b\x78\xe0\x04\x71\x69\x4a\x20\xb5\xac\xc0\x2a\xd3\x8e\xbb\x7e\x8b\x75\x2d\xa3\x13\x3a\x64\xd5\x19\x7d\x22\xcc\xd1\xf4\x81\x3b\x13\x7a\x50\xae\xd3\x64\x71\x88\x21\x4a\x94\xc4\xa1\xe1\x7a\x39\x47\x32\x06\x99\x7d\xb0\x47\x76\x5f\xb2\xfb\xc6\x28\x08\x83\x71\x55\x02\x27\x77\x71\xbd\x21\x95\x5a\xd8\x55\x93\xc8\x8b\x25\xfa\x03\xe3\xea\x0f\x01\x30\xad\x33\x5e\xc0\xa7\xce\x04\x75\x50\xab\xb8\x01\x87\xd6\x12\x0e\xc2\x01\x40\xd2\xca\x95\xdf\xd6\xb5\x5b\xc4\x2d\xbf\xa8\x34\x3a\xac\x27\x31\xb5\x95\x2c\xea\x1d\xae\xa8\x7a\x2d\x54\x0d\x9e\xa6\x2a\x5a\x71\xd2\x4b\x86\x4e\xb9\xca\xc3\xea\xf7\xa2\x93\x67\xb5\x96\xd0\xbd\x0d\xb5\xa5\x9d\x03\x5f\x56\x60\xd8\x36\xdb\x25\x36\x49\xd3\x6b\x93\xcb\x45\x39\xf2\xc8\x56\x31\x68\x01\x69\x3d\x1a\xb1\x8f\x5c\xd8\x2b\x58\x5a\x98\xf8\x09\x8e\x1e\x0f\x09\x8b\x11\xce\xd5\xdc\x80\xa5\x5a\xbf\xc2\xc2\x52\x83\x96\x34\x80\x6c\x3c\x12\x02\x95\x11\x16\xb1\x2b\x58\xf0\xc4\xdd\x28\x46\x2c\x68\x04\x80\xe8\xa1\x4e\x0f\x54\x1a\x6d\x53\x35\x89\xd4\xfa\x55\xdb\x5a\x34\xd5\xd0\xac\x55\xd0\x5c\x7e\xce\x4a\x35\x41\x01\x42\x1f\xe2\x53\xf8\xb4\xbe\x3a\xe7\xce\xda\xe8\xf4\x3b\x4d\xcf\x75\x2f\xc4\x81\xd5\x28\x8c\x49\xca\xce\x40\x4b\x3a\xdf\x3a\x5e\x5b\x02\x7d\x9d\xe6\x02\xa2\x2d\x9b\xda\xfc\x3a\x9a\xd3\xa4\xf0\x5d\x7c\x73\xe0\x87\xa9\x9b\x4c\xc8\x13\x49\x0c\xe4\x78\x24\x20\xb0\xda\x58\x0d\xbf\x45\xff\xc7\xd4\x95\x44\x7f\x1c\xb1\x4f\xc0\x86\x93\x64\x01\x80\x88\xbe\x65\xac\x2a\xcd\x3c\x36\x0e\x40\xd9\x4c\x0e\x54\x1e\x88\xd9\xeb\x39\x7e\x22\x23\xe6\x9a\xf9\x3f\xe8\x11\xfd\x1b\xfa\x63\x9b\x7a\xe7\xe2\xa3\x5f\xd8\xce\xf1\x31\x88\x3e\x0e\x6e\x39\xcb\x28\x2d\xbf\x71\x66\x90\x92\x11\xb2\x01\x18\xc1\xe3\x1a\x53\xf6\xc4\xa3\x5a\x10\x7e\x78\x6a\xb1\x20\x4c\x8d\x19\x8f\xc9\x98\x34\xb8\x34\x97\x30\x09\x2d\x04\x5c\xf1\x98\xac\x74\x48\x7a\x66\xfa\x33\x98\x6e\x64\x3e\xf1\xdb\x01\xf9\xd9\x3e\x19\xd7\x5b\x1f\xca\x94\xd6\x3c\x72\x0f\x1e\xba\xc9\xb8\x37\x75\xa6\xba\x28\xbf\x03\xb8\x10\xec\x00\x9a\x1d\x7a\x09\x56\x2e\x85\xb5\x7a\x1c\xab\x8e\x00\xfd\xb2\x9e\xb9\xbd\xac\x02\x58\x54\x28\x5d\x21\xe8\x8c\x6a\xf9\xbd\xbb\xc3\x16\x38\xe1\x26\xde\x0c\x83\x11\xd9\xc9\x9d\x51\x2c\x85\xc3\xc9\x38\xf4\xf4\x57\x38\x21\x27\x3c\xaf\x0a\xf0\x76\x01\xa8\x0c\x93\x6b\xad\xac\xbe\xd0\x7c\x78\x66\x12\xb8\xc8\x9c\x9a\x94\xe9\xc1\xe9\x05\xd2\xa7\x83\xa7\x06\x57\x08\x16\x2d\x57\x73\x2e\xe8\x6f\xad\x09\x26\xed\x32\x7a\xe1\x69\x2d\xf2\x71\xcc\x38\xcb\xd2\x3a\x10\xab\x11\x29\x54\x49\x2b\x69\xd2\x99\xd0\x24\x07\x08\x4d\xcd\x66\xa7\x79\x62\x70\xf7\x23\x2e\x62\x53\xf8\x5a\x96\xb2\x7f\x20\x8a\xd2\x89\xf7\x58\xf9\x06\xa9\x45\x1a\xb4\xc8\xfe\xc6\x82\xb3\x54\x00\xfd\x6b\x4e\xf2\x1d\x25\x50\xbd\x69\xc8\xe9\x3d\x9e\xc9\x22\x86\xd4\xac\x8d\xe6\xcd\xc5\xfa\xfe\x5d\xcf\x54\x06\x29\x87\xce\xb2\xe8\x11\x7c\x8c\x4a\x6e\xea\x3a\xae\x65\xd1\xb9\x35\xc8\xe5\x3b\x30\xe9\xbc\x46\x3c\x47\x5d\x46\x6a\x60\x3f\x96\xfc\x9e\x7c\x02\x5e\x95\x45\xbc\x90\x9d\xc4\x41\xc0\x57\xa4\x8f\x17\x34\x99\x6c\xc0\xe4\xea\x42\xf5\xd2\xa0\xd6\xc2\x80\xe2\xd9\x5a\x43\x2e\xac\xe2\x10\x35\xff\x2c\x28\x00\x7c\x2d\x8a\x97\x7d\x09\x53\x77\x5d\x84\x3c\x46\x4b\x29\x46\xac\x85\xb8\x0e\xb7\x84\x8b\x66\x1e\xbf\x86\x01\xc2\x36\x54\xee\xba\xee\xb7\x6f\x3b\x11\x86\x25\xed\xeb\x91\xa8\xa3\x7b\xac\x3c\x0c\xbe\x90\xc3\xdb\x18\x10\xbd\x68\xf3\x7a\x27\xc3\x93\xe3\x38\xc2\xd1\xbc\x75\x52\x13\xce\x13\x82\x59\x9b\xf4\xda\xf8\xb8\x7a\x44\x0c\x36\x25\xb0\xee\x24\x01\x80\x56\xb7\x04\xb6\xa8\x5f\x21\xbe\xb3\x18\x80\xb5\x0d\x0f\x37\x48\x1c\x6e\xa0\x8a\x30\x67\xf9\xa1\x6c\x96\x90\xea\x5a\x59\x04\xf4\x03\xdb\x49\x12\xe5\x49\x50\xd5\x2f\x23\x42\x8f\x5a\x2f\xf1\x13\x61\x5a\x67\xb0\xe3\x70\xce\x8c\x67\x97\xcf\xea\x6b\xf9\x1c\xf8\xae\x9d\x3f\x0d\x92\xc6\xe2\x11\x83\x83\xcb\xcb\x87\x55\xd3\xaa\xd4\x6a\x46\x68\x97\xda\xf8\x74\x06\x42\xc4\xda\xc7\xf3\xae\x6c\x26\x5e\xfb\x4c\x9a\xbe\xc7\x10\x63\xb0\xb5\x6b\x2d\x70\xbf\x14\x99\xf6\x66\x63\x1d\x9a\xd2\x2b\x19\x91\x21\x6a\xa3\x0c\xf2\x12\x04\x6d\xb4\xa1\xf9\xbc\xe8\x5d\x52\x54\x2f\x70\xb7\x41\xc7\xa1\x2c\x75\x55\x77\x74\x3c\x83\x75\x72\xd9\xb9\xbd\xb0\x11\xb7\x65\x97\xad\x4f\xcf\x28\xc2\x1c\x6d\x7d\x4e\x25\x30\x24\x97\x43\x4a\xf0\xcf\x46\xc3\xa6\xd2\x58\xc0\x5c\x95\x82\x34\x53\x0b\x5b\xd4\x0a\xee\xc5\x30\x25\xd3\x00\x76\x35\xb9\x87\xab\x77\x64\x5c\x72\x10\x37\x75\x06\x1d\x59\xb3\x42\x63\x93\x6e\xa1\x43\x00\x88\x4a\xc2\x7d\x5b\x34\x88\xa9\x0f\x3a\xc6\x49\xab\x2d\x6b\x07\x4c\x13\xb2\x24\x8b\x24\x7b\x8b\xdd\xa9\x44\x4e\x34\xef\xc2\x49\x52\x99\x17\x86\x6c\x56\xe5\x6b\x84\x4d\x8a\x42\xa6\xdd\x9d\xd5\x09\x9e\x90\xb5\xdc\xd3\x17\xe6\x83\xa5\x54\x04\xaf\x40\xaa\x69\x96\x25\x8b\x6e\xa8\x4d\x61\xe8\x5d\x23\xc6\xd5\xaa\x81\x85\xc8\x58\x4b\xef\xa6\x32\xba\xd4\x66\x43\x94\x24\xca\x05\x55\x8b\xb1\x35\xfa\x75\x67\x5a\x77\xf6\xcb\x53\xfb\x61\x17\x8d\xfa\x04\xb9\xfe\x9c\x91\x11\xee\x29\x41\x4d\x01\x14\x3b\x85\x2e\xdb\xad\xb5\xe4\x46\xec\x9b\x65\x0b\xeb\xc0\x77\xba\x0d\x55\x77\xb1\xe9\xf0\x6c\x61\x85\x31\x9f\x3a\x58\x9b\xee\x0b\x5b\xad\x38\xb1\x86\xb5\xd4\xa1\xe7\x66\x82\x72\x61\x0b\x3b\x74\x09\x6a\x4b\xf1\xe7\x71\x86\x05\x4e\x12\x92\x50\x99\x6e\x6e\xdb\xfd\xd3\x77\x4b\x47\x7b\x6a\x0a\x90\x48\x5b\xce\xe7\x33\x4d\xf3\x14\xb1\x3c\x9d\x58\x29\x17\xcb\xc7\x10\xbb\xd0\x65\x5a\x1b\x08\x1e\x37\xc0\x52\xbe\xb7\x08\xd0\x28\x47\x2c\xc0\x25\xb6\xa6\x0a\x1c\xcd\x29\x79\x02\xd4\x44\xc1\x88\x94\x47\xe8\x8a\x2b\x72\x82\x2e\x71\x76\x0f\x82\x9a\xa9\x08\x38\x33\xd6\x71\x2c\x91\x96\x5a\x73\x46\xd5\xc1\x88\x59\x30\x63\xb7\x2a\xc7\x11\x67\x06\xd0\x32\x82\x85\xf5\x4d\x80\xb9\xd7\x21\x3b\x2a\x97\x97\x46\x65\xcb\x62\x0b\xfc\x3c\x0e\xa2\x57\xc7\x26\x3b\x60\x0d\x3a\xbe\xc5\xcf\x26\x5e\x1b\x2a\xe0\x9b\xaf\x97\x48\xee\x36\x20\xca\x16\x80\x31\x38\xae\x2e\x70\x84\x5b\x30\x01\x5f\xba\xca\x44\xa7\x7e\x4d\x8f\xc8\x11\xfa\x3e\xe1\x13\x79\x80\xa4\xc7\x3c\x76\x05\xfa\xe5\x81\x71\x50\xc1\xbf\x4d\x26\xcf\x37\x6e\xf5\x0b\xbe\x0f\x55\xdb\xa6\xf4\xb3\xc1\x30\x90\x7f\x3a\x39\x3e\x4e\x17\x87\x93\x3c\x7a\x24\x4a\xff\x05\x32\x45\xe3\x0a\x39\x00\x20\xdc\x04\x27\xb4\x6a\x75\xea\x50\x44\x9d\x28\xd2\x82\xd8\x49\x02\xb0\xd7\xfa\x4a\xf7\x75\x31\x1d\x72\x0d\x67\xcd\x45\xff\xec\x94\x45\xde\x76\xbc\x4a\x78\xb9\xaf\xa3\xad\x98\xba\x9f\x21\x4c\xef\x34\xc1\xb3\x8a\xca\xb2\x86\x92\x72\x9d\x52\x4b\x45\x7a\xee\x10\x6f\xa1\x4f\x59\x39\xca\xec\x2b\xe7\x8e\x04\xb7\xa2\x75\xb7\x1c\x8d\xd8\x40\xa2\x67\x62\xca\x79\x42\x4a\x19\x78\x27\x72\x2a\xe7\x3e\xa1\x0c\xec\xa5\xd0\xa8\x41\x33\x35\x49\xef\x56\x71\x74\x9a\x95\xf3\xdf\x58\x0d\x14\x27\x92\x1c\xe8\x86\x01\xd1\xca\x05\x12\xa2\x67\x81\xb3\x8c\x88\x11\xb3\xc8\x94\x80\xbf\xcc\xb9\x0d\x12\x69\x8b\x26\xef\x35\xca\xfd\xd2\x28\x07\x95\xd0\x72\xa8\x70\x9b\x82\xd2\x23\x8b\x42\x7e\xce\x3e\xe5\x55\xce\xd2\xd5\x0c\x60\xbc\xf0\x71\xcc\x89\x0c\x0c\xcf\xc8\xdb\x8f\x12\x3a\x25\xfa\xc6\x1c\x31\xbd\xf4\xa1\x91\xdc\x60\xfa\x3a\x88\x5f\xdd\x69\x24\xb8\x94\x36\x5a\xdc\xb4\xb3\x3c\xe7\x67\x8b\xf2\x61\x06\x98\xd8\x14\xee\xaf\x16\x12\x0b\x9e\xb9\x92\x62\xf6\x61\x73\x3d\xf7\xb6\xa6\x56\x16\x10\x2b\xd6\x62\x8d\x12\x62\xc7\xa7\x17\xe7\xbe\x6e\x4e\xa5\xeb\x7a\x0d\xb1\x10\xcc\xb9\xbd\x8a\x58\x7d\xc6\x41\x3d\xb1\x4a\x13\x4b\x2a\x8a\xad\xde\xac\x72\x8c\xea\x36\x48\x5d\x95\xad\x5f\x75\x67\x55\x68\x66\x55\x28\xf5\x8e\xb6\xa9\x85\x15\x46\x20\xe4\xbc\xb4\x57\x18\x84\x05\xfd\x96\x54\x38\xcd\xc2\x34\x41\x07\x55\x68\xa7\x69\x8e\x5a\x1b\xe3\x7e\x55\x08\xe5\x08\x9b\x08\x8c\xea\xe0\x6a\x5b\xb1\x9e\x97\xe6\xde\x22\x33\xef\x22\xf4\xf6\xf5\xf2\x6e\x93\x45\x11\x69\x26\xad\xbc\xe1\xaa\xfe\xb6\xd8\xaa\x27\xc4\xa3\x50\xb7\x6e\xe8\xb6\x89\x75\x1e\xad\x46\x10\x2c\x6d\x08\x01\xe4\x9f\x55\x72\x53\xd6\x30\x69\xfa\x31\x9b\x0c\xd6\x43\x8f\xfb\x1e\x5c\x35\xb6\x94\x51\xe4\x0e\x22\x15\x82\x3c\x11\x01\xb4\x63\xe3\x54\x58\xf9\xa8\xe2\x44\x10\x1c\x2f\x82\x15\xf1\x4e\x72\xd3\x33\x98\x74\x24\x4d\xb5\xd2\x09\xe2\x34\xe3\x87\x3c\x73\x72\x76\xe9\x2d\x00\xed\xa7\x53\x7d\x63\x05\x2e\x76\xfd\x05\x3b\x24\x9f\xa9\x54\x5a\x2f\x69\x88\x2f\x74\x8d\xc0\x2d\x0d\xa5\x7c\xe6\xc4\xde\x70\xa3\x0f\x83\xef\xaf\x6f\xef\x87\x67\xa3\x0f\x45\x44\xb9\x4b\x99\xf2\x20\x34\x0e\x53\x9c\xb3\x11\xf3\x41\xa0\x1e\x73\x15\xf6\x12\xe1\x38\x2e\x10\xaf\xad\xe2\x63\xe4\x8c\xa5\x1c\x39\x38\x15\x2b\xc3\x3f\x97\x34\xf3\x00\x79\x33\xfb\x7a\xb2\x96\xb8\x7b\x4a\x27\xc7\x64\xff\x2c\x49\xd3\xd8\xd1\x65\x13\xc2\x45\x2a\xa3\x1f\x12\xe5\xf0\xcc\x18\x79\x76\xf2\x3d\xdc\xce\xc7\xd8\x5c\xc2\xeb\x71\x3b\xb7\x21\x1b\x6c\xea\x47\xfa\x99\xc4\xb7\x2d\x52\xd5\x4e\xb2\x30\x3a\x45\xaf\x35\xee\x42\xce\xe8\x3a\x5a\xaa\x9f\xca\x83\xfe\xae\x3b\x5b\xba\x2e\x50\xa0\x0a\x44\x47\x80\x73\x54\x08\xa3\x88\x08\x85\x29\x43\x53\x38\xd8\x2c\x5a\x20\xc0\xe2\x20\xe0\x77\xfd\x0e\xa5\x94\x41\xb6\xfb\xb2\xa5\x7d\x28\xcf\x63\x9d\x52\xfe\xe7\x57\x0f\xf7\x25\x51\xf5\x87\xeb\x87\x72\x1d\xe9\xc1\x2f\x4b\x65\xd5\x4a\x0b\xcb\x02\x5c\x82\x29\x16\x99\x73\x16\xd8\xd2\xaf\x4c\xd3\x44\x3f\x11\xf5\x93\xe6\xcb\x9c\xed\x22\xac\xdc\xca\x59\xe0\x70\x22\xe3\x27\xd3\xf0\x1a\x64\x60\x87\xb2\x24\x77\xc0\x49\x72\xd0\x03\xb2\x3d\x84\x89\xec\x47\xa6\x62\xf2\x40\x37\x07\x2a\xa3\x0b\xd0\xd2\xfa\x12\x67\x7a\xb9\x0c\xbc\xa0\xc3\x24\x0c\x9a\xe3\x53\xf3\x71\x47\x84\xa6\x20\x4c\x58\xb7\x55\x2c\x25\x1a\xdc\x9c\x37\xac\xf5\x45\xd5\x26\xff\x65\x95\x77\x48\xbc\x7b\x60\xd7\x95\x1d\x82\x7c\xaf\xbd\x28\xea\x60\x67\xba\x5d\x3d\x07\xe3\x45\xbd\x29\xbb\x66\xf7\x01\xbd\xb2\x49\x9e\x2d\xe5\x71\xae\x00\xaa\x5c\x2f\xb5\xa9\x58\x86\x35\x51\x64\xc2\x01\xd9\xb8\xfa\x10\x39\xa5\x1e\xb4\x79\x10\x22\xa9\x70\x53\x40\xd2\x3a\x6b\x77\x86\x2e\x53\xcc\xa6\x0b\xbc\xcc\x4f\x86\xa2\x3d\xfa\x00\xe0\x29\xb8\x02\x65\x2e\xd8\xd2\x26\x03\x87\xd3\x0d\xa9\x6d\x3d\x44\x9a\x62\x7c\xce\x9e\x68\xb1\x59\x71\x86\xad\x52\x0c\x12\xbe\x43\x0e\x6f\x2a\x34\x75\x34\x62\x41\x04\x80\x34\x32\xb9\x3e\x23\x0e\xac\x1f\x2a\x40\x32\x00\x7a\x85\xac\x07\x7f\x33\x97\x76\xa0\x9a\x73\xac\xe6\x65\xb8\xfd\x5a\x3f\xf6\x74\xca\x39\x76\x99\x5d\x4e\xbd\xb7\x81\x55\xa1\xf1\x03\xda\x0b\x00\xb6\x6d\xc7\x60\xdf\x03\x8d\x1a\x07\xe5\x9b\x82\x6c\xe0\x98\x13\xc9\xbe\x52\x3e\x77\x8e\x26\xb6\x44\x00\xae\xda\x5b\xb5\xc8\x81\xa9\x6d\x79\xf9\x01\xdf\x01\xdc\xcd\xba\x52\x6d\x70\xac\x56\xda\x50\x9c\xd3\x0c\x28\x21\x0c\xee\x80\x4e\xdb\xb0\x69\x3e\x67\x24\xda\x04\x93\xe3\x06\x0b\x9c\x12\x45\xc4\xb2\xf8\x8e\x72\x71\x55\x88\x5d\x70\x3b\x68\xfb\x35\xbb\x68\x90\xe7\xab\x25\x0a\xbc\xea\x75\xb1\x0a\x63\xc3\xcf\x62\x2d\x38\x21\x3d\x8d\x9f\x2c\xd4\xfe\x9a\xb3\xb0\xfd\x14\xd3\xb0\xe1\x2b\x01\xa4\xca\xb6\x73\x7a\x1d\x6c\x89\xfb\x1a\x4a\x43\x29\xfe\x62\x4f\x40\x25\x56\x8f\xb2\x0d\x4d\x62\x15\x2f\xdd\x09\xef\x76\x21\xe3\x2e\x27\xb1\x72\xa8\x4a\xc1\xe8\x40\x25\x20\xef\x1b\x60\x85\x66\x44\x08\x10\x5a\x9a\x42\xce\x02\x3f\x8a\xc5\x0b\x2b\xac\x8d\x56\xb2\xaa\x16\x5b\xa9\x2c\xd7\x0a\x1e\xb7\xab\x6c\xf9\x5e\xa2\xd9\xb5\x44\xb3\x86\x6d\xcf\x50\x27\x11\x15\xe0\x0e\x5b\x04\xd5\x66\x5c\x97\x27\x08\xc9\x1c\xf6\x8a\xb4\x95\x14\xe1\xea\xa7\xcc\xff\xab\xcc\xc1\x1d\x51\x87\xa4\xda\x94\xa5\x76\x14\xf8\x47\xc0\x3d\x92\x84\xd2\x80\x0d\x54\x80\xd1\x9a\xb8\x32\x63\x82\x3e\xbf\x32\xde\x15\xc8\x16\x5d\xf0\x1c\x3d\x53\xa9\x75\xe1\x11\x83\xc0\x2b\x6f\xaa\x56\x1c\x99\x17\x0f\xe0\x2d\xc8\x2b\x97\xf9\x24\xa5\x0a\xe1\x60\x86\x25\x7b\xd9\x81\x3d\xcf\xfa\x03\x98\x71\x63\xe2\x72\x13\xe6\xc9\x8a\x43\xb3\x81\xf1\xa7\x68\x64\xdb\xdc\xe4\x20\x48\xf4\x65\xb3\x93\x03\x8d\x27\xd4\x30\x1b\xcf\x5c\x9f\x9e\x8c\x9a\xad\x0d\x16\x85\x11\xa0\x32\xa9\x54\x95\xbb\xc5\x62\x2f\xae\x48\x4d\x2e\x36\xa2\x53\x6e\x72\xf1\xfa\x2e\x92\x93\xdb\xca\xf6\x2c\x4b\x56\x73\x9f\xb4\x18\x67\x5d\x12\xa4\xe2\x2e\x12\x39\x94\x94\x6e\x5a\x25\xa5\x7d\x83\x89\x2a\x22\xac\x37\x8f\xd7\x5d\x47\x1d\x2c\x12\x5e\x42\x2a\x0a\xf2\xd7\xca\x20\x1b\xa4\xca\xf9\x19\x57\x90\xa4\x10\x41\x49\xe3\x5a\xe2\xdc\x88\x35\x4b\x20\xcb\x79\xe2\xb6\x31\xef\x3b\x85\x93\x0a\xce\x9f\x9b\x85\xb5\x68\xfd\xec\xa3\x86\x8c\xb2\x6c\x8b\x13\x57\x45\xcc\xc2\xff\xd4\xa2\x80\x80\xe0\xb1\x49\x06\x67\xc3\xa9\xec\x18\x91\xbe\xf2\x5c\xd8\x4b\x77\x87\xaa\x5d\x8d\x3b\x77\x0e\xe0\xf7\x32\xb2\xe5\xc6\x2e\x02\xd5\xa9\xf1\x15\x37\xe2\x26\x45\x17\x01\xa5\x71\x67\xd8\x92\xd5\x74\x6f\xdd\xf8\x01\xb8\x1e\xed\xd0\xb1\x09\xc3\xf0\x88\xc7\x95\x2d\x29\x4d\xd8\x16\xb3\x7e\x81\x49\xaf\x5b\x28\x33\x70\x85\x09\x1b\x3e\x49\x43\xbb\x01\x54\xc8\xb4\x51\x67\x15\x3e\xec\x45\xbb\x9c\xc5\x44\x30\x82\xd5\xfc\xf5\x82\xd6\x4f\xb7\x35\x4e\xbf\x5a\x00\xfb\xe9\x4e\xaa\x24\x57\x82\xc2\xd7\x8c\x07\x5f\x23\xb8\xba\xa8\x99\x59\x53\x1c\x9b\xaa\xd3\x17\x98\x1e\xeb\x50\xe9\x56\x71\xed\xcd\xca\xdc\xcb\x44\xf8\x37\x58\x7d\x6a\xb1\xfd\xfa\xb0\x87\x95\x46\x57\x2c\xc9\x17\x11\x4a\xff\xf2\xd1\xdd\xcb\x6a\x9a\xe6\x41\xc0\x37\x14\x96\x55\x98\x32\xcb\xbd\x96\xc5\x78\x6b\x89\x32\xc5\x4d\x61\xdd\x7b\x9f\x30\xf0\xc5\xe7\x0b\xf4\xd1\xe3\x7d\xf4\x78\x1f\x3d\xbe\x56\xf4\xf8\x32\x33\xa3\xf7\x7c\x41\x8d\xb7\x52\x65\x0e\xb3\x8e\x2b\xb4\xb5\xcd\xa3\xba\x9d\xa5\x2e\x0c\x89\xb1\xbf\xd8\x1f\x1a\xa3\x62\x6a\x9f\x55\x67\x1b\x5a\x0d\xd9\xa2\x6a\x7c\xc7\x22\x4e\x2c\x7c\x96\x8d\x59\x2d\x5b\x79\x96\x19\x24\x47\xec\x07\xfe\x4c\x9e\x88\x38\x40\x58\xa1\x94\x6b\x25\x3d\x88\x42\x01\x82\x2b\x21\x31\x9b\x68\x03\x8c\xae\x70\x4a\x62\x53\x67\x2b\x88\x6c\xb3\x66\x51\xeb\xd0\x6c\x42\x89\x04\xc0\x43\xb3\x0d\x2e\x3a\x61\xc4\x4c\xb4\x99\x89\x70\x82\x3b\x99\xba\x89\x01\x5d\xff\xc1\xbb\x5b\xff\x70\x84\xee\xf5\x3d\x40\x65\x79\xbc\x01\x68\x54\xdb\xd8\x46\x6c\x26\x78\x9e\x79\x4b\x15\x9f\x98\x82\x8b\x06\x70\xba\xee\x6e\x85\xc1\x38\x5f\x6b\x84\x63\xad\xf1\x2e\x27\x9c\x37\x09\x44\xdc\x08\x79\x25\x24\x20\xcd\x25\x7c\x74\x95\x8d\x76\x36\x5e\xd2\x00\x6f\x62\x19\x7e\xf4\x0b\xb9\x70\xcf\x88\x04\xdb\x8b\xb7\x6d\x97\xd2\x5f\xcb\x29\xd6\x8d\xe3\x5c\x66\x79\xf4\xde\x01\x67\x41\x6f\xce\xde\x2e\x3a\xb7\x91\x55\x26\xb7\xce\xf2\xe3\x17\xb3\x49\x76\x0e\xa0\x6c\xe3\x17\x37\xb9\xc8\x38\x48\x3c\xc9\xc2\x65\x9b\x5b\x80\xaa\x8c\x67\xb9\x89\x1e\xa3\x61\x30\x51\x23\x65\x53\xa9\x2e\xb1\x8a\xe6\x9a\xbf\x17\x40\x4d\x3b\x8a\xaa\x2b\xb8\xf2\xcb\xda\x29\x1b\x66\x70\x1a\xf6\xde\x62\xb8\xef\x60\xb7\x36\xf7\xab\x8b\xb0\x76\x37\x76\xaa\xfb\x2b\xd5\x92\x0f\xac\x8f\xee\x13\xfb\x44\x4f\x74\x15\x15\xad\x1a\x7f\x37\xda\x2a\x17\x0a\xda\x79\xbc\xde\x16\xc8\x17\x67\x16\x67\xa8\x78\xd1\xd6\x05\x6c\x71\xb2\x6f\x58\xe8\xdb\x7a\x4f\xa0\x72\x7c\x61\xd7\x4c\x71\xa6\x85\x75\xc5\xf5\x2d\x29\x66\x46\x5e\x34\xf5\x27\x11\x46\xb9\xa0\xee\xec\x57\x52\x59\xdb\xa9\x03\xec\x80\xc7\x61\x21\x98\x08\x07\x35\xb2\x8c\x5b\x1d\x47\x2a\xc7\x3e\xfc\x0f\x68\xc2\x95\xde\x35\x69\xbb\xce\x7d\x2d\x9c\x18\xd5\xb0\xa7\x2b\x09\x7b\x8b\x5d\xc6\x4d\xb0\x6c\x9d\x4e\x1a\x65\xb3\x00\xd3\xad\xd9\x16\xdb\x05\xb2\xbd\xf1\xcb\x6e\xb0\xf3\x8d\x9f\x3a\xd9\x67\x93\x6f\x97\x60\xce\xb4\x7e\xbe\x4a\x80\x2d\x85\x3a\xdb\x70\x53\x2b\x3d\x85\x68\x7b\xd6\x4e\x06\xa0\x99\x14\xdc\xe1\xd8\x4a\x53\xff\xe9\xff\x32\x25\x7e\xcc\xd2\xfc\x27\xe2\x62\xc4\xcc\xef\x07\x1e\x5e\x5f\xbf\x50\xe0\x56\xe2\x94\x14\xc8\x7e\xa2\x8c\x01\x06\x48\x08\x16\xc3\xc9\x60\x94\x7a\x74\x71\x3d\x86\xc7\x7c\x42\x04\x23\x7a\x68\x2e\x67\xda\x33\xb3\x14\x33\x3c\x03\x44\xd4\x03\x88\x3f\x03\x71\xb5\x10\xf9\x0d\x49\x9b\x32\x6d\xc0\xad\x34\xb3\xb4\x29\x97\x45\xb5\x49\xe8\xd3\x88\xb2\x16\x90\xb1\x08\x62\x68\xa6\xfe\x5b\xdb\xff\x66\x12\xfb\xfd\xe0\xee\xc7\xf1\xed\xf0\xee\xfa\xe1\xf6\xb4\x24\xb6\x9f\x5e\x3c\xdc\xdd\x0f\x6f\x1b\x9f\x15\xe9\x8a\x7f\x7d\x18\x3e\xb4\x3c\x72\x0d\x5c\x0c\xbe\x1f\x96\x4a\xb7\xfe\xf5\x61\x70\x71\x7e\xff\xcb\xf8\xfa\xe3\xf8\x6e\x78\xfb\xd3\xf9\xe9\x70\x7c\x77\x33\x3c\x3d\xff\x78\x7e\x3a\xd0\x5f\x86\xef\xde\x5c\x3c\x7c\x3a\xbf\x1a\xbb\xe0\xde\xf0\xd1\xcf\xd7\xb7\x3f\x7e\xbc\xb8\xfe\x79\x1c\x74\x79\x7d\xf5\xf1\xfc\x53\xd3\x2c\x06\x77\x77\xe7\x9f\xae\x2e\x87\x57\xcb\x4b\xc4\x36\xaf\x46\x6b\xf5\xc9\xe0\x22\x0b\x8c\x33\x81\x98\x34\x59\x58\xd2\xa6\xbf\x81\x8b\xe0\xc6\xd0\xe3\xe1\x81\xfb\xcb\x14\x74\x3d\xd4\x2c\xd0\x79\x9f\x0a\xee\x31\x62\xde\x3d\xe8\x2f\x55\x28\xe8\x6d\xb3\x4f\x4b\xa3\x3d\x41\x03\x38\x2b\xa0\x30\x94\x3a\x05\xcc\x09\x3f\x52\xe7\x50\x46\xa6\x58\x7f\x4a\xc1\xb7\x8c\x0e\x51\x75\xc3\xcb\x0d\xda\x39\xc1\x10\xac\x77\x2c\x5e\x76\x1a\x64\x35\xb1\x15\x28\xe5\x04\x39\x0e\x4d\x8c\xda\x6e\x20\x33\x17\x0c\xa7\x34\x32\x3f\x54\x50\x23\x51\x81\x90\x50\x6d\xb1\x44\x60\xe5\x96\xe7\x04\xfd\xf8\x97\x62\x50\xe0\x29\xb0\x06\x82\xbc\x56\x08\xcc\x3e\x10\xb9\x59\xd5\x55\xe4\x59\xea\xc9\x1d\x73\x6b\xc2\x85\x73\x6b\xeb\xc5\x82\x5b\x27\x67\x01\x4a\x52\xc9\xc7\xa3\x8f\xb7\x99\x51\x85\xc6\x4f\xd0\x1d\x20\x34\xc8\x42\x75\xd7\xbb\x98\x25\xf9\x8c\x32\x44\xd3\x2c\x21\x45\xa5\xe1\x09\x99\xe3\x27\xca\x1d\xea\xbe\x29\x4e\x00\xeb\x68\x45\x2b\x74\x88\x5a\x0f\xca\x09\x1a\xc4\xb1\x2c\x33\xb8\x12\xe5\x38\x96\x79\x58\x1e\x76\x08\x6c\xc4\x62\xcf\x36\x2b\x74\x54\x1c\x39\x58\xb1\xdd\x63\x50\xd4\xd9\x61\xf9\xee\xdd\x0a\x4f\x55\x3e\x8e\x1d\x29\x8f\x37\x12\x06\xee\xb1\x7c\x74\xac\x79\x95\x40\xe0\xd0\x40\xb6\xeb\xd1\xc2\x82\x74\xed\xd4\xaf\xec\x18\x0e\xda\x66\x7d\xb6\x82\xd9\xae\xe8\xd2\xcd\x38\xa9\x54\x1c\xea\xdc\x5f\xa9\x62\x51\x63\x67\x3b\xf5\xaa\x34\x4b\x63\x70\x24\xc7\x9e\xfe\xd7\x98\xc7\x0d\x7c\x7a\xed\xbf\x5c\x2a\xb2\x8d\x83\x75\x5b\xd7\xd7\x52\xcb\xd3\xb4\xfe\x96\xa5\x74\xb8\x23\x54\x9a\xee\xc2\x20\xe0\xc5\xd3\x08\xdc\x6a\x98\x32\x5b\x45\x84\x78\xbf\x8f\xab\x9b\xab\xcf\xb1\xaf\x6c\x85\x27\xfc\xa9\xa4\x5c\xa6\x44\x4a\xdc\x82\x59\x11\x98\xc4\xb6\x61\x0c\xfe\x84\xda\x0f\x3b\xd2\x93\x3b\x93\xf7\xfa\xab\x65\x46\x9f\xdb\x50\x33\x76\x13\xd5\x02\x6b\xec\xe2\x59\xd1\xb5\xc9\x6a\xd3\xfc\xe5\xa0\x08\x59\xe1\x22\x88\xe4\x69\x73\xb3\x74\x34\xab\x55\x17\xac\xb1\x38\x4c\xe8\x2a\x5b\x3f\xd2\x25\x68\x7d\x63\x20\x5f\xeb\xbf\xc0\xe5\xf5\x59\x83\xea\x4a\x7e\xc5\xb0\x70\xae\xa9\x11\x0f\x36\xb7\xd0\x96\x7a\x80\xb0\x49\x26\x2c\xa4\x29\x99\x47\x73\xe3\xcd\xd1\x57\xc6\xc1\x88\x3d\x07\x1b\x52\x0a\xb7\x1d\x84\x2d\x01\x08\xe2\x67\x7d\xdc\xe8\x53\x29\x88\x19\x44\x46\x0a\x11\xb5\x01\x21\x18\xc7\x5b\x51\xf5\x66\x05\x81\x07\xfb\xb5\x05\xa9\x6f\x50\xe2\xac\xa1\x0a\x7f\x53\xa1\x33\x3f\xb7\xa0\xbe\xd8\x16\x9a\x72\xd7\x21\x04\x25\xce\x9a\x46\xb0\x83\x0a\x67\xaf\x8a\x4a\xec\x93\x22\x4d\x0e\x6d\x3a\xb1\x30\x05\x7a\xba\x6e\xb5\xff\xcd\xcd\xe8\xdf\x8c\xdf\x21\x6f\xc1\xb5\x08\x5a\xf3\xc0\xc4\xe8\x50\xcb\xac\x2e\xdf\xda\x06\x3c\x48\x74\x68\xc0\xce\xbe\x82\x78\xc6\xc1\xcd\xf9\x57\x07\xe8\xab\x30\xa7\xeb\xab\x8d\x0e\xa0\x1d\xb7\xad\x72\x06\xda\x54\x29\xb0\xbf\x7c\xec\x60\xaf\x2a\x27\xd1\xee\x99\x3d\x88\xa8\xed\x1c\xea\x2f\x4b\xdf\x80\x13\x18\xaa\x76\x19\x3f\xa9\x0f\x2b\xb6\x2e\x20\x23\xe3\x52\xd9\xb0\x76\xf1\x88\x4d\x16\x55\x27\xcf\x81\xf7\xf2\x74\x3e\xa5\x5b\x57\xa2\xd2\xed\xd5\x93\x80\x77\x1c\xee\xba\xfc\x3e\x58\x91\x56\x3c\x30\x91\xcd\x7c\x1a\x70\xb1\xb6\x68\x80\x3e\x4e\xbc\x69\x56\x25\x7b\x99\x5b\xcc\xc6\x4d\x59\x25\xff\xbc\x37\x72\xeb\x10\x5c\x3d\x68\x5a\x11\x1b\x57\xdf\x22\x5c\xf7\x54\xf6\xb2\x54\xb6\x8b\xbc\x82\xf2\xe0\xd6\xbf\x40\x4f\x8d\x1c\x17\x34\xe3\x0c\xae\x5a\x99\xf0\x0c\xbe\x54\xae\x6c\x75\x9d\xcf\x35\x7d\xbe\xc1\x9a\xac\x76\xfa\xde\x99\xc0\x01\xe3\x76\xad\x8f\xb5\x3a\xd4\x81\xb2\xb5\x53\x38\x35\x39\x84\x8a\xa6\xe4\x00\x71\x96\x2c\x82\x60\x07\x7b\x5e\x81\xdc\x4c\x2c\xd0\x9c\x50\xe1\x3a\xb1\x30\x73\x6b\x25\x9d\xaf\x29\x8d\xb7\xd1\xc8\x16\x91\x26\x57\x83\xcb\xe1\xd9\x78\x78\x75\x7f\x7e\xff\x4b\x03\x84\x60\xf9\xb1\x43\x11\x0c\x5e\xb8\xfb\xe5\xee\x7e\x78\x39\xfe\x34\xbc\x1a\xde\x0e\xee\x57\x20\x0c\x2e\xeb\xac\x0d\xbd\x2e\x97\x4d\xea\xdb\x3a\x08\x76\xce\xcc\xdb\xd0\x7b\x1d\x67\x30\xe8\x84\x92\x16\xac\x41\x93\x60\xcf\x62\x22\x50\x4c\x9e\x48\xc2\xb3\xc2\xac\xda\xb8\x60\x01\x08\x61\x43\xfb\xcb\x80\x08\xa1\xcd\xea\x1a\x9f\x20\x53\xa2\x2a\xa8\xd2\xe9\x1b\x04\x91\x0f\x0b\xc2\xbe\x52\x88\x7c\xce\x12\x1a\x51\x15\x24\xe0\x71\x61\xdd\x2b\xc6\x7d\x08\x51\xa0\x2b\x88\x6b\x67\xd1\x28\x3b\xd7\xf9\x43\x4f\x7a\x5d\xdb\xf7\x27\xca\x83\x62\xad\xac\x7b\xb2\x03\xc5\xbe\xc5\x69\x5c\xc3\xec\xda\x60\x74\x2f\x61\x1e\xa8\x67\xc2\xd8\x24\xba\x16\x3c\xaf\xe6\x41\xae\xbe\x0d\x97\xc5\xc9\x94\xce\xf5\xf2\x40\x99\x6e\x94\xfa\xc6\xe1\x2e\xa5\x7a\x80\x3b\xc0\xb7\xb0\x31\xe2\x6b\x06\x2c\xd4\xca\x5c\x30\x13\xdb\x89\x91\x20\x29\x57\x5a\x01\x33\x11\x01\x07\x5a\xa8\xa2\x38\xa1\xbf\x01\x12\x94\x20\x47\x41\x04\x05\x24\xda\xc5\x61\xc4\xa5\x45\x69\x38\x1a\xb1\xb3\xe1\xcd\xed\xf0\x54\x33\xa4\x23\xf4\x20\x01\xe4\xa9\x34\xf5\x33\x4b\xde\x46\x1c\x0b\x23\x19\x28\x93\x8a\xe0\xb6\x60\x30\x22\x04\x17\xdd\xf9\x83\xef\x6f\x08\xdf\x35\x93\x37\x3c\x2b\xd9\xa6\x9c\x01\xe0\xaa\xb5\x98\x6b\x10\x9b\xbf\xf3\xd4\xa7\x5b\xfc\x5c\x5a\x91\x10\xe4\x02\x24\x91\xf2\xaa\xbf\xe0\x6a\x03\x86\x63\xf7\xf9\x95\xfa\xbc\x81\x6f\x97\xcd\xf3\x1e\x42\xec\xa4\x2a\x00\x21\x0d\x66\xa4\x2f\xd6\x51\x99\x67\xab\xa8\x28\xde\x02\x10\xa3\x42\xfa\x13\x32\xc3\x0c\x89\x9c\xb1\x0a\x42\x68\x68\x69\xab\x07\xcd\xac\x7b\x54\xf5\x9a\xe1\x94\xe7\x0c\x94\x06\x08\x63\x6d\x18\x8c\xcc\x08\x53\x2b\x06\xf3\x56\x70\x27\x95\xa1\xee\x2f\xe2\x49\xc3\x40\xdb\x40\x4f\x9a\xfc\x49\x50\x31\x76\xbd\x6b\xd9\x05\xe5\x95\x9c\x4a\xfa\x50\xf9\xfb\xb9\x59\xcb\xc6\xf2\x71\xeb\xee\xee\xb1\x7c\x5c\xdd\x55\x4c\xa2\xc7\x75\x2f\x9b\x6a\x06\x64\x62\x0b\xee\xd6\x8c\x7d\x0b\xfd\xd4\x56\x94\x80\x3a\xcb\xd1\x23\xfa\xe1\xfe\xf2\x02\x4d\xa9\x96\x7b\xf5\xb5\x72\x85\xb5\x8c\xfd\x20\x12\x5f\xc4\xde\xc8\x20\xb9\x48\xfc\xdd\x0b\x1b\xef\x44\xa9\x40\x4a\xd0\x37\x1a\x9e\x11\x67\xec\x15\x16\xd3\xae\x52\x51\x42\x60\x16\xf3\xd4\xcc\xe3\x58\xe6\xd3\x29\xfd\x7c\xa4\xb0\xf8\xa6\x65\x3d\x4c\x54\xc5\xf8\x6f\x7c\x32\xd6\x23\xda\xf2\x22\x6e\x6a\x0e\xd9\x3a\xb0\x7e\xd9\xec\xcc\xce\xcc\xbb\xff\x97\x4f\x20\xa7\x3c\x13\x1c\x70\xf6\xc0\x3b\x67\x23\x15\xec\x2b\x8e\x92\x8e\x90\x4b\x54\x2a\x41\x89\x44\x5c\x08\x62\x53\xd1\x4d\x49\xc4\x0c\x0b\x45\xc1\x5a\xeb\xa0\x48\x4a\x00\xe9\xc5\x16\x85\x95\x8a\xe7\xb8\x00\x23\x9e\x10\x02\x0e\x9e\x8c\x26\xeb\x29\xbd\xa7\x25\xdf\x64\xe5\x04\xda\xc8\x53\x8b\x4e\x09\x06\x99\x95\x22\xd6\xf0\x89\x30\xb5\x13\xfd\x04\x9a\x68\x48\x8e\xef\xe6\x65\x30\x95\x09\xcf\xcf\x8a\xcb\xcd\x57\xc8\x0f\xa2\x9a\x94\xc0\x70\xcf\xdb\x84\x24\xeb\x52\x6f\x73\xf4\x3f\x75\xf6\x1d\xc3\xab\xf5\x75\x59\x11\x1a\x6f\x57\xbb\xa8\x50\x5c\x84\xb5\x3a\x74\xf7\x0d\xe1\x72\x24\x31\x56\x8c\x00\xa6\xc1\x2a\xa7\xd5\x3d\x37\x7d\x6a\xda\xaa\x74\xb9\x72\xcb\x37\xc0\x86\x29\x35\xf3\x89\x40\xea\xe4\x2e\x02\xd1\xd7\x49\x91\x87\x81\x3c\x88\x04\x42\xa8\x97\x5a\xb1\x4c\x75\x64\xcd\xf9\xbc\x64\x87\x3b\xc8\xe8\x66\x30\x5a\x68\x24\x99\x20\x50\xaf\xff\x04\xdd\x24\x44\x4b\x5e\xb9\x96\xbe\xf2\x24\x71\x38\x5a\xcb\xa5\xc3\xb5\xb0\xdf\x5e\x7c\x5e\x81\xee\xb1\x64\x62\x0e\x47\x6e\xf9\xcc\x82\x35\xd8\x3d\xb0\x41\xb0\xbe\x60\x42\x06\x43\x62\x59\x8b\x04\x0e\xbf\x30\x71\xb3\x60\x4a\xc2\xa5\x8b\x8c\xfe\xa6\xd9\xaf\x20\x72\xce\x5b\x93\x09\xc3\xd9\xbe\xcc\x1c\xdc\x52\xbe\xe0\x24\xdc\x7d\xd8\x16\x57\xdd\x41\xae\xa9\xdc\x81\x25\x11\x67\xd9\x14\x7d\x01\x00\x1f\xfd\x61\x51\x4d\xed\xdd\x6a\x87\x06\xb7\x64\x61\x6a\x0b\x11\xc6\x0a\xd7\x45\xa1\xcc\x2c\x8c\xef\xd5\x7f\x5e\x18\x90\x8b\x94\x00\xaa\x64\x51\x2c\x0b\xe9\xbb\x76\x3d\x2e\x6b\x13\x47\x8a\x26\xf4\x80\x9b\x59\x9b\xc5\xfe\x07\x91\xd7\x86\x05\xc9\x12\x36\x9a\xdd\x62\x33\xe5\x46\x75\xac\x9d\x81\x6e\xeb\x02\x03\x89\xb6\x10\x3b\x5e\xca\x13\x56\xa2\x96\xd2\x04\x7a\xb4\xad\xf5\xd1\xb6\x6c\x21\x08\x4f\x7b\x80\x8d\xa7\x04\x24\xc3\x17\xce\xae\xea\x25\x6f\x0d\xd4\xab\xb2\x94\x4a\xbb\xd3\x29\x25\xa9\xf4\x85\x3e\xf7\x67\x5b\x7a\xcb\xf4\x64\x16\x63\x48\xf2\xdc\x26\x62\xa6\x34\x7f\x63\xe9\x87\x36\x49\x8c\x4c\x46\xbf\xc1\x02\xb6\x6b\xe7\xbd\x1c\x19\x16\x84\xa9\x11\xbb\xd5\xa3\x30\x5f\x14\x51\x13\x45\xa1\x7f\x52\x94\xc5\x9c\x22\x6c\xbf\x82\x45\x6f\x0b\x5a\x93\x63\xf3\x12\xa8\x91\x2f\x98\x78\xfe\xbd\x79\xc7\xe0\x00\x58\x1c\x1c\x3d\x55\x3a\x2d\x54\x6e\x2d\xec\x45\x73\x0a\x69\xf8\x31\x91\xf6\xf2\xa0\xca\xe2\x2c\x78\x51\x39\x27\x0e\x91\x18\x3e\xf3\xfc\xab\x89\xb9\x3a\xa5\x9e\x39\x63\x9a\x1c\xb1\xa0\x8f\x25\x00\x96\x46\xb1\xde\x50\xec\x87\x7d\xa6\xb1\x77\x52\xc1\x3f\xcd\x0e\x71\x41\x67\x94\x05\x35\x6e\xec\xf4\x52\x9c\x81\x29\xd6\x9c\x41\x3e\xf5\xf7\xcf\xbd\xcd\x08\x38\x82\x11\xff\xf7\x7f\xfd\xcf\x11\x6d\xf3\x54\xc8\xb1\x5d\x81\x7d\xd8\xc9\xf5\xb6\x25\xdc\xf9\x00\x59\xa3\x05\xb1\x21\xd0\x3f\x65\x29\xcb\xa1\xf8\xd5\x5e\x6e\x9a\x68\xb8\x9a\x1b\xd7\x6c\x99\xdc\xc1\x8f\x21\xf2\xe5\xb7\x6c\xc0\xe2\x0a\xe7\x7d\xe1\xa1\x0d\x02\x64\x5d\xdd\x04\x13\xd8\xa8\xdb\xaf\x5c\x28\x15\x06\x15\x00\xdc\x6d\x13\x48\x38\xc7\xf2\xe5\xa2\x45\x1a\x8b\xd1\x18\x03\x6f\x78\x47\xae\x8a\x1b\x31\x83\x34\x09\x88\x7a\x57\x72\x49\x84\x39\xd0\x1e\x09\xc9\x12\x4f\x08\xdf\x07\x61\x83\x2b\xdc\x5f\x24\xc5\x74\xad\x10\x77\xfd\x7e\x33\xb8\x60\xc9\xfe\x8d\x67\x44\x8c\xe3\xbc\x14\xcf\xbc\xaa\xed\x1b\xfd\xd1\x59\xae\x16\xab\xdb\x97\x09\x8e\x1e\xd7\x01\x74\xd4\xef\xb7\x34\xbb\x5a\x30\x0c\xa2\x4e\xca\xc2\x61\x0b\x5c\x22\xa9\xc0\x25\xda\x30\xc8\x92\xd6\x0e\x17\x0d\x83\x82\xe3\x81\x70\x6f\x6f\x22\x03\xea\x0c\x23\x47\x93\xbc\xb0\x72\x78\x98\xfc\xf8\x68\xc4\x3e\x9a\x3a\x13\xa0\x78\x98\x01\x44\x90\x83\x42\x3e\x67\x5c\x92\x52\x52\x54\x03\xf4\xbd\x4d\x6a\xb4\xc3\x68\x96\x49\x2b\x05\xdf\xb7\x12\x49\xdf\x1c\xf8\xb2\xbe\xe1\xf5\x29\x37\x53\xe0\x56\x52\x4f\x44\x33\xaa\x69\x67\xdc\x78\xd2\xd6\x9f\x7a\xd7\xca\x29\x45\x98\x11\x40\x20\xa9\x64\x71\x80\xfc\xf4\x2a\x04\x91\x90\x27\x02\x16\x5e\x18\x63\x58\xe0\xa0\x6c\x6a\x6a\x61\x27\xab\x0e\x50\x91\x91\x08\x6c\x01\xc5\xd5\x11\x94\xf3\xb6\x9a\x68\xb1\x9c\x91\xb2\x75\xf2\x54\x53\xac\xc4\x1a\x52\xe8\x20\x2c\xf4\xb0\x20\x0a\x91\xcf\x8a\xd8\x3a\x85\xf7\x2e\xbd\xad\x1e\x11\x8f\x9a\x33\x74\xda\x45\xa4\xdd\x53\x45\x6d\x22\x36\xa9\xd9\xe5\xef\xc5\xee\xde\xb7\xf9\x6c\x73\xcc\x62\x9b\xa4\x69\x65\x69\x2d\x53\xc0\xec\x8c\x1d\xc8\x87\xaf\xdb\x54\xc3\x00\x21\xdb\xb4\x69\xa0\xbc\xe1\x22\x73\x7a\x91\x96\xcc\xc1\xe3\xcf\x85\x16\x50\x73\xa6\x68\xa2\x89\xc3\x8e\x41\x6b\xcd\x39\xf3\x18\x75\x10\x6c\xdd\x06\x83\x46\xa5\xa4\x6c\x36\xb6\x2b\xe9\xf2\x0d\xbb\x5d\x0c\x65\x9a\xba\x34\x4d\x99\x1f\xbf\x77\x0d\x2d\xb7\xf3\x1a\xb2\x06\x88\x2a\x97\xe9\x08\x82\x35\xe3\x6e\x32\x16\x5b\xcc\x25\x48\x8e\x69\x6c\x96\x82\x9a\x72\xb8\x30\xd1\x75\x8c\x14\x20\xd6\xd5\xa1\x05\x8a\x2b\x44\xda\xec\x45\x93\x93\x04\xc1\xe3\xaa\x25\x3d\x53\xb6\xa6\x65\x9e\x33\x2f\xa2\xd9\x7a\x47\x3e\xf9\xbc\x92\xe1\x89\x5d\x77\x36\x42\x1e\x27\xc9\x04\x47\x8f\x5e\xd9\xf0\x2a\x37\x17\x0e\x2f\x5e\x0b\xa8\x50\x10\xcb\x10\x97\x1e\x68\x04\xd2\x4d\xe8\xc0\x32\xe0\x32\x76\xd8\x45\xe7\x66\xd5\x2c\x3a\x96\x41\x13\x32\xa3\x37\xe1\xf6\x31\xc9\x12\xbe\x48\x5b\xee\xb3\x6a\x56\xdb\x36\xc1\x23\x6d\x49\x75\x3b\xbd\xca\x2a\x4c\x6f\xed\xcb\xac\x96\x22\xb3\x03\xa8\xa3\x35\xb8\xe4\xa7\x84\x4f\xc0\xca\x67\xb5\x6c\x97\xf6\x11\x64\x1f\x54\xcf\xf3\xba\xc9\x28\xd5\x13\x49\x65\x96\xe0\xc5\xb2\x1e\x4c\x1a\xc4\xcb\xee\x9b\x49\x9b\x5f\x6d\x04\xeb\x1e\x40\xdc\xf8\xf9\x4b\x80\xd7\x5e\x38\x49\xc0\xbc\x6b\xf8\x57\xc5\x98\x64\xf2\xcf\x8e\x8c\xdf\x54\xf1\x11\x53\x78\xe6\x36\xd7\x0a\x97\xfc\x99\x11\x21\xe7\x34\x2b\x15\xca\xdb\x3a\x62\xd9\x52\xb4\xfd\x8f\x89\xcf\x5d\x83\x77\xf2\xec\xd0\x80\x66\x68\xfa\x90\x19\x8e\x0a\xe3\x5f\x94\x60\x29\xe9\x74\x11\x60\x5d\xf8\xe0\x4f\xc8\x28\x2a\x6b\xcb\x41\x6d\xaa\x26\x46\x63\xc6\xb7\x9b\x64\xef\xed\x13\xdd\x1e\xca\xc7\x8f\xc6\x21\xa8\x98\xbe\x4f\xea\xc0\x26\xee\xa6\xb6\x00\x27\xad\x20\xa4\x26\xab\x7d\xb3\xe4\xec\xa5\x78\x34\xed\x66\x84\x42\x98\xb4\xc3\xb6\x8a\x8c\xc7\xa0\x08\xf1\x59\x54\x29\xbb\x0f\x36\x5f\x2b\x4e\xce\xfc\xa9\x89\xd3\xe3\x57\x40\x9a\x7f\xf1\xf1\x01\x92\x5b\xe1\x3e\x75\xa1\x8b\x33\x92\x90\x9d\x04\x01\x6f\x40\x24\x55\x0f\x7b\x40\x1e\x4b\x49\xa3\xc0\x97\x5f\x6d\x5c\xd8\x20\x36\xb9\x05\x3d\xa6\x79\xe8\x3f\x9b\x81\xda\xf0\xe4\xa6\x5d\x04\xfb\x17\xac\x72\x57\xdd\xa5\x09\x86\xce\xb4\x60\x49\xae\xe8\xa6\x44\x57\x45\xa7\x5e\x5e\xd9\x47\x52\x7b\xe3\x28\xde\xda\xb8\x3e\x91\x2e\x11\x07\x2b\x0f\xc0\x46\x1c\xa8\xce\xa7\xbb\xd1\x85\xf5\x13\x2a\x8e\x66\x44\x99\x9a\xe4\xbe\xf0\xfa\x7b\xa2\x89\x9d\xe5\x20\xec\x68\xf5\x9b\x0f\xf9\x7a\xa7\xf6\x8e\x28\xe9\xae\x84\x1a\xb2\x9f\xdd\x9c\x3d\xdc\x82\xfd\x38\x96\x46\x70\xfd\xe2\xe5\x96\xad\xf3\xf6\xed\xc8\x6c\xf6\xfa\xef\x48\xa0\x32\x73\x8c\xed\x17\x3e\x53\xbd\x84\xd1\x84\x4b\xb8\x76\x66\x8d\xde\x9e\xeb\x55\x49\xfb\x4b\x17\xbd\xd6\xa7\xf1\xea\xa8\x0a\xea\xee\xe5\xc1\xf5\xe4\x41\x87\xfb\xb8\x87\x97\x7f\xdb\x31\xd8\xcf\xfb\x67\x0f\x84\xc3\xda\x95\xb8\x3b\x11\xf1\x1d\x91\xc9\x5e\x48\x8a\xb5\xad\x78\x2d\x79\xf1\xd0\x01\xef\x14\x30\x36\xfb\xbb\x45\xfb\x71\x92\x6f\xad\x1b\xe8\xe5\x2e\xd8\xd5\xf4\xb2\x13\xfa\x00\x0c\x4a\x0c\xa9\xba\xb9\x2d\x6a\x01\x87\x37\x08\x19\xab\xf9\x1e\x56\x04\xe3\xd9\xe1\x75\x0a\xc3\xab\x2d\xe7\x4b\x6c\xaf\xcd\xcb\xea\xbc\xb9\x2f\x49\x6a\xeb\x8e\x65\x17\x3a\xca\x0b\x7b\x71\x2c\x35\x06\x1f\xf4\x31\xb1\xdd\x6e\xd1\x06\xb4\x17\xb7\x65\xbb\x3c\x64\x4d\x15\xbf\xb6\xcf\x2c\x77\x69\x67\xe3\x4c\x90\x29\xfd\xbc\x91\x28\x7e\x03\x9f\x5a\xf5\x52\x2f\x73\xa5\x86\x18\xb8\x67\xa0\xe6\x58\x10\xb7\x67\x57\xda\xd6\x19\x1a\xb1\x22\x59\xcf\x66\xea\x3d\x92\x05\xe2\xa2\xf4\xd3\xa6\xb8\x84\xbb\xaf\x77\x66\xf6\x75\xae\x54\x26\x4f\x8e\x8f\x67\x54\xcd\xf3\xc9\x51\xc4\x53\x13\x6e\xce\xc5\xcc\xfc\x71\x4c\xa5\xcc\x89\x3c\xfe\xee\x8f\x7f\x2c\xb6\x78\x82\xa3\xc7\x99\x41\x7a\xa9\xfb\x9d\xca\x5b\x4e\xb0\xdc\x2e\xb2\xc7\x65\x55\xbd\x70\x76\x6d\xd0\x8d\xcb\x67\x2c\xca\xe8\x07\xd1\xa3\xa6\x62\x98\x54\xb8\xa8\x9f\x00\xa9\x72\x7a\x9a\x68\x8e\xb3\x8c\xb0\x76\xb3\x83\xc9\x7d\xdc\x82\xf5\xb8\xec\x49\x3b\x42\xf2\x39\x4b\x30\x2b\x23\x02\x40\x31\x20\x41\x22\xc2\x94\xcd\x56\x2f\x6a\x08\x03\x35\x1a\x54\x1a\xc3\xff\xd7\xcb\xdb\x80\x39\x52\x59\x54\xd3\x72\xc3\xb1\x95\x2d\x5d\xbd\x43\x1c\x2c\x5d\xb5\x9a\x68\xb1\x76\xc4\xad\xda\xb2\xbc\xb9\xbb\x7a\x4d\xe9\xf5\xab\xac\x08\xce\xc6\xe4\xb3\x66\x72\x72\x53\x0c\xa9\x07\x49\x24\x1a\xfc\x7c\x87\xe4\x82\x29\xfc\xf9\x04\x5d\x52\x06\x02\xec\x0f\x3c\x17\x12\x9d\xe1\xc5\x21\x9f\x1e\xa6\x9c\xa9\x39\xba\x84\xff\xb5\x3f\x3d\x13\xf2\x88\x7e\x21\x58\x58\xfe\x60\xab\x91\xf9\xc2\xd6\x9a\x84\x44\xce\x24\x22\x4f\xfa\x84\xfe\xf1\x3f\x50\x6a\x5a\x3e\x41\xdf\x1e\xff\xf1\x3f\xd0\x1f\xe0\xff\xff\xff\xe8\x0f\x2d\x9a\xfe\x7a\x28\x54\x50\xb3\xf6\xb6\xec\xce\x3d\xa8\xac\xd4\x06\x65\xbc\x4f\x05\x2f\x76\xaa\xb1\xe5\x47\x1a\x3d\xf2\xe9\x74\xac\x09\xc3\xe4\x96\x8d\xb1\xa8\x21\x18\x6f\x08\xe9\x49\x6d\xd1\x61\x41\x0d\xd2\xbd\x2b\x6b\x62\x3b\x35\x20\x04\x8e\x5d\xcb\xbc\x28\xba\x0a\x41\x44\xa5\x42\xb6\x54\xc2\x57\x24\xd6\x5c\x75\x9d\xd3\xe1\xac\x7b\x2e\x1f\xd9\x59\x70\x42\xd0\x8e\xb0\x90\xb6\x0f\xfc\x0b\xa3\x58\x4d\xa0\x8f\x5d\xc8\xc6\xe3\x50\x0b\xaf\xfd\x62\x62\x26\x61\x6a\x6f\x15\x2f\x29\x6b\x9d\xaf\x0e\x95\xbc\xe3\x62\x2b\x7d\xeb\x91\xd4\x62\xb6\x3b\x96\xf0\x71\xe5\x5b\xc3\x92\xee\x90\xb4\xcc\x85\x87\xd6\x35\x76\x11\x5b\xe8\x6f\xb5\x15\x93\x0a\x13\x5c\xd6\xed\xd0\xeb\xa9\x9f\xf9\x4f\x56\x0d\x13\x22\xcd\xdc\xdb\x45\x09\x33\x18\xad\x16\x91\x34\x4b\x6c\x18\x71\x03\xfe\xde\xaa\x0d\xbd\xf3\x90\x0b\xd0\x38\x84\x3d\x42\xca\x07\x73\x92\xad\xcd\x69\x6f\xde\xcf\x5c\x44\xe4\x94\x6f\x17\xf6\x9a\x50\x56\x8b\x97\xef\x5e\x1d\xc7\xaf\xde\x85\xad\x83\xe4\x20\x6a\x79\x5c\x28\x0b\xc6\x2d\x60\x0b\x23\x04\xd8\x98\xe5\xd9\x00\xc6\xda\x2e\xe0\x17\x6b\x70\xfd\x5b\x70\x6d\x63\x38\x2e\x18\x9e\xab\xf6\x50\x29\xf2\x20\xb0\xe6\x85\x1b\x22\x56\x9a\xb2\x3d\x07\x48\x60\x88\x83\x54\x73\xcc\x8c\x49\x61\x8a\x23\xca\x66\x07\x01\x58\x21\x00\x07\x84\x1c\xb8\x89\x2e\xee\xb1\x7c\xdc\x6d\x6c\xdf\xd6\x65\x0c\x69\x5c\x94\xd2\xb2\xf0\x22\xc6\x97\x40\x6b\x48\x6d\x0a\xcb\xc7\x36\x7c\x9d\x1a\xb8\xd7\x92\xd1\xf9\xa5\x70\x90\x60\xcb\xc6\xe7\x12\x91\x49\xa8\xc2\x00\x72\xbf\x2b\x60\x6b\xa1\xfe\x5c\x2e\x19\xf6\x58\x1c\x55\x8c\xcb\x25\xe3\x97\x73\x2e\xd4\x78\x43\x74\xd0\x6a\x32\x35\x23\x87\x09\xc0\x7a\xf0\x27\x22\x9e\x28\x79\x2e\x83\x6c\xae\x43\x8b\xc6\x4e\x15\x04\xb2\x01\x0a\x63\x9a\x71\xc8\x5a\x99\xa2\x14\xb3\x85\xe1\x4d\xfa\x3c\x63\xf9\x28\x7d\x39\x4f\x24\x53\x9c\x24\x07\x48\x90\x5c\x9a\x72\xb2\x92\x24\xd3\x43\x57\x10\x21\x46\x09\x9f\xd1\x08\x27\x68\x92\xf0\xe8\x51\x8e\x98\xbe\x9b\xd9\xcc\xf0\x85\x4c\xf0\x88\x48\x19\x08\x33\x45\x9e\xb4\xcd\x5e\x83\x5a\x9e\x8a\x88\x94\x32\x2a\x15\x8d\x9c\x94\x52\x40\x13\x98\xca\xcd\x11\x06\x2b\x2c\xe4\x02\xc2\x70\xb5\x70\x45\x0c\x44\x63\xce\x6c\xe9\x1c\xb8\x21\x2d\xf2\x9a\x8b\xcb\x6e\x3b\x40\x3b\x00\x92\x73\x14\x32\x56\xe5\x03\xb9\xe2\x48\x9d\xda\xcf\xe0\x18\x2f\x23\x81\xdb\xf2\x89\xf2\x04\xe9\x4f\x5a\x09\xdc\x06\xc2\xb8\x7d\xd4\x79\x49\x58\xf0\xc1\xd8\x7b\x86\x6b\x05\x43\x6e\x41\xb3\x5a\x45\xd3\x7a\x15\x41\xca\x80\x6a\x4d\x55\x47\x35\x65\x51\x92\xc7\xbe\x5e\x9f\xbe\x75\x9f\x34\x91\xb8\xe5\xd1\x6b\xaf\xef\xe6\x03\x84\x25\x7a\x26\x49\xa2\xff\x6b\x82\xce\x0f\x3d\x7c\xbe\x66\xc9\xa6\xc4\x01\x74\xe2\xb8\x74\x1b\x45\xed\x1d\x46\xe1\x0d\x56\x73\x93\x4d\x9e\x72\x65\x4a\x25\x1a\x8c\x42\x67\x52\x32\xa0\x76\x93\x84\x4f\xe0\xa4\x03\x7c\xa1\xcb\x46\x0d\x32\xd9\xf2\x28\x22\x24\x26\x31\xfa\x3a\x38\xb8\x1e\xe9\xe0\x9b\x66\x30\xbd\xd2\x8a\xec\x01\x74\x61\xd5\x96\xd5\x0a\x60\x58\xae\xf6\x75\x84\x6e\x2a\xf0\x1c\x61\xb5\x6c\x5c\x05\x6b\x3a\xa8\x6d\xe1\xdb\xc0\x1d\x56\x26\xf1\x72\x3b\xb4\x26\xdc\x61\xa9\xcf\x1d\xc0\x1d\x56\xe6\xd9\x12\x2e\xcf\x67\x2f\x9a\xe6\xab\x27\x75\xc1\xbb\xe7\x5e\x19\x98\x28\x73\x77\x96\x48\xd0\x1d\xc8\x45\x13\x21\xee\x17\x94\x63\xa5\x26\xde\xdb\x42\x39\x56\x06\xb3\xcf\x50\x8e\x95\xa1\xee\x2f\x94\x63\xc3\x40\x3b\x40\x39\x1a\x7f\xfa\x58\x13\x75\x37\xa6\x00\xb9\x24\x93\x7c\x7a\x07\xd9\xd5\x4b\xc7\x78\x6a\x7c\xf5\xe6\x1a\x73\x77\xb4\x45\x36\x86\xd1\xda\xb4\xc3\xb6\x08\xa4\x8a\xdd\x7f\x5d\xda\xf3\x0e\x2f\x2a\x8d\x86\xb6\x9e\xa5\xfb\x20\x34\x30\x83\xe9\x2f\xc2\x99\x4d\xe3\x6e\x2b\x38\xb2\x3f\x09\xab\xeb\xa1\x64\x02\x02\x5d\x89\xd5\x77\xc2\x8f\xba\xac\x60\xf6\xcf\xf9\xb3\xad\x9b\x03\xe4\x67\x88\xb1\x95\xf4\xa0\xd3\xb1\x55\xd6\xda\x56\x8c\x32\x45\x66\x55\x5d\xb6\x38\x2c\x94\xa9\x3f\x7d\xb7\x92\x03\x19\x80\x3d\xa7\x16\x06\xc8\xf9\xde\xaf\x60\x9f\x91\xd8\x16\xee\x97\x5a\x6d\xd1\xd3\x31\x37\xaa\x44\x29\xa6\x4e\x81\xca\xa5\xf1\xe2\x50\x39\x62\x25\x44\xca\x23\xf4\x11\xca\x81\xe2\x34\xd3\x7a\x97\x9f\x1f\xd5\x14\x34\xca\xbf\xfd\xf6\x4f\x04\x7d\x8b\x52\x82\x59\x49\x77\x05\x75\x49\x5f\x79\x80\xe0\xa6\xe6\x64\xc4\x1a\xb7\x02\x0d\x3f\x9b\x0a\x43\x2e\xb4\xee\x9c\x4d\xb9\xd3\x85\xa1\xcc\x1d\x8e\xe6\x48\xe6\x13\x53\xa7\x35\xb0\x5d\x38\x01\xfa\x82\xcf\xc0\x27\x0c\x37\xb1\x1b\xf4\xb2\xd3\xf7\xb2\xee\x76\xeb\xd9\xeb\x7a\x0b\x0f\xe0\xfe\x38\x94\xa4\x84\x16\xd4\xe0\x9f\x32\x1c\x2f\x3c\xf0\xd2\xc0\x82\x1e\x18\x73\xbd\xd6\xcb\xb0\x35\xa2\x6b\x19\x1a\x22\x67\xc1\x21\x95\x27\x58\xd8\x23\x3f\x62\x5a\xc1\x10\xe4\x89\xf2\x5c\x26\x0b\x14\x73\x46\x0e\x80\x12\xf2\x68\x6e\x7c\x98\x5a\x57\xc1\xb6\x5c\xc1\x13\x95\xb9\x56\x64\xa1\x2d\x57\x1d\x41\x2a\x6c\x50\x8e\xe6\x14\xfa\xd1\x6a\x37\x81\xaf\xc2\x84\x34\xd4\x4d\x7b\x0a\x41\x43\x2b\xbc\xbe\x23\x68\x68\x89\xaa\x7a\xd0\xd0\x66\xc6\xb7\xb7\xa0\xa1\x95\x3d\xef\x06\x1a\xda\xb4\xe5\x1b\x80\x86\x96\x9a\xf9\x62\x40\x43\x2b\x2b\xfa\xc5\x80\x86\x56\xe6\xd5\x83\x86\x7e\x21\xa0\xa1\xab\xf9\x48\x23\x2c\x66\xf3\xe1\x5d\x0f\x16\xb3\x51\xb5\x6d\x67\x11\xdb\x62\x10\x81\x20\xfd\xca\xb0\x98\xa5\x09\xf4\x21\x80\xeb\x87\x00\x36\x12\x9f\xed\x5b\x0f\xcf\xc5\x05\x56\x2f\xb2\x8e\xc0\x98\xa5\xfd\xe9\x14\x2c\x08\x22\xef\x0e\x28\xf1\x65\xa5\x60\xf0\x2a\x74\x97\x81\xc3\x55\x94\x16\x4e\x57\x4b\x46\x0e\xd0\xcc\x28\xad\xa1\x8b\xba\xa7\xdc\x0d\x82\x57\x2b\xcb\xeb\xfd\x10\x86\x16\x3b\x90\x6a\x67\x0a\x6d\x28\xb3\xbf\x05\xbd\xba\xfc\xbe\x35\x5d\xb2\x6e\x10\x77\x19\x89\x5a\x6c\xb2\x34\xa5\xbb\x6a\x76\xd5\x45\xe6\xe1\x9a\x40\x91\xad\xa5\x2e\xea\xeb\xc9\x0c\xc7\xc8\xc6\x95\x8c\x4d\xc0\x92\x30\x5f\xce\xa8\x54\xa2\x35\xfc\xa6\x36\xc2\x6d\x5c\x8b\x59\xde\x39\x66\x23\x58\xd5\xd9\x66\x9f\xa5\x24\xe5\x62\x55\xec\x4f\xe3\x97\xb6\x40\xc8\x26\x9f\x92\x6c\x4e\x52\x2d\x04\x8d\xd7\x6d\xa4\xeb\x7e\xfb\xbc\x56\x9b\x5e\x65\x62\xf1\x4a\x44\x10\x38\x0e\xf5\xbb\xb1\x01\x4d\xec\xbc\xdd\xdb\x6e\xb3\x85\x75\x5c\xd3\x81\xe2\x60\x6d\x97\x1b\xaa\xec\x4b\x25\xf7\x30\xd0\x77\x63\x0c\x84\x0f\x41\x59\x1d\xe5\xb0\x24\xbe\x61\x19\x34\x52\xf1\x95\x2d\x9f\xbb\x86\xeb\xbb\xec\xcd\xd6\x9c\x30\xac\x9d\xba\x7e\x40\x44\x0b\xb0\x67\x7d\x79\x20\x92\x45\x12\x71\x18\x4a\xd4\xa5\xc1\xd4\xd7\xab\x44\x25\x4e\x13\xdb\x82\x48\x72\xd1\x1a\x08\xd9\xc5\x00\x1c\xa9\x1c\x27\xa0\xe6\x85\x35\xff\xaa\x9b\x3a\x59\x34\x64\xe6\x75\xf3\x30\x50\xa6\xfe\xfc\xef\x6b\xed\xa6\x56\x49\xec\xba\x41\x9d\x22\x1c\x45\x44\x1a\x9b\xb4\x0d\x94\xc5\x13\xfe\x04\x25\x8a\xb6\xd9\x55\x7d\x94\xf5\xbc\x35\x83\xf7\x68\xb9\x71\x41\xea\x46\x5c\x98\x0b\x9e\xcf\xe6\xce\xf6\xa2\xcf\x8c\x9e\x5a\xd3\x5e\xfe\x54\xb3\x2d\xaf\xbd\x97\xdf\xe7\x34\xd9\xcc\xb2\x75\x57\x2a\xde\xf4\xe9\xfc\x1e\xc9\xb9\x3f\xad\x13\x68\xb6\x71\x63\xeb\x83\xee\xde\xa7\xfd\xd6\xfb\x37\xa0\x9b\x03\x87\x10\x39\xe5\x49\x02\x16\x7a\x49\xd2\xa7\xb0\xe6\x7a\xd8\x3d\x4c\xf8\x9e\xae\x07\xee\xe6\x07\x00\x5f\x17\xb1\xfb\x9d\xe4\xaf\x1b\x23\x1a\x4a\xe4\x46\x5f\x75\xf2\x9b\xd0\x2e\xce\x08\x6b\xb2\x4d\xfd\x5c\xaf\x9b\xf1\xce\x02\xec\x5c\xb4\xd5\xce\x82\xec\xdc\x92\xbc\x72\xa0\xdd\x8a\x79\xec\x6b\xb0\x5d\x85\xd9\xf9\xd8\xb7\xe2\x9a\x71\x81\x36\x46\xf1\x19\xe8\x25\x1e\xb1\x41\x29\xe4\xdf\xd5\x17\x9e\x2c\x8a\x98\x61\xa3\x43\x84\xcc\x0c\x2a\x1e\x58\xc3\x0a\xb8\x9f\xf4\x5f\xa0\xe9\x18\x7c\x55\x13\x82\xe7\xc2\xec\x20\xe0\x99\xc4\x87\x38\x5a\x44\x09\x8d\x02\x9d\x79\x26\x70\x36\x6f\xe2\x78\x6e\xe7\x7b\x60\x98\xb7\x02\x86\x69\x2b\xe3\xb3\x4e\x88\xb3\xa3\x2b\x86\x53\xd2\x03\xd6\x34\x01\xd6\x1c\x78\x48\x06\x56\x14\x24\x7a\xc3\x4c\xff\xfa\xb9\xeb\x51\x6b\xde\x00\xb5\x66\x93\xc3\x57\x40\xd2\x94\x8e\x5d\x8f\xa4\xf3\xa1\x13\x92\x8e\xbf\x04\xf7\x0a\x1c\xa5\xfd\x3c\xbe\x31\xe8\x46\x7d\x60\x6f\x89\x9c\xd3\x20\x2e\xac\x23\x37\x2d\x83\xce\x59\x46\x17\x9d\xd6\xe5\x6d\x81\x6c\xd6\x5b\x99\xb5\x30\x6a\x1a\xef\xae\x3d\x41\xac\x69\xdf\x86\x3d\x39\x37\xbb\xcc\x02\x59\xaf\xe2\x62\x98\x09\xb2\x8e\x82\xb5\x5e\x52\x88\xa7\x87\xf7\x95\x18\x52\x94\xbb\xda\x2c\x39\x64\xe0\x7c\xd0\x44\xa0\x39\x4f\x62\x87\x93\xe0\x57\xcb\x77\xe0\x23\xe7\xfd\x02\xb9\xcd\x80\x12\xd1\xa0\x6d\x15\x35\xab\x96\xa5\x80\xf8\x4d\x84\xe1\xee\x80\xd1\xec\xc2\x8a\xe0\x39\xc9\x26\xf6\x83\x95\xb2\x88\x2c\x9b\xbf\x97\x8c\xb1\xb4\x42\x60\x35\x6f\x1e\xe6\x4a\xbb\xef\x8a\xc1\x2d\x13\x3d\x02\xe3\xa0\x68\x2a\xba\x68\xe8\x0c\x9e\x3e\x51\x67\x88\xc0\x61\x8f\x4b\xbd\x74\x6e\x76\x9d\x3c\x75\x55\x62\xd9\x20\x88\xaa\x56\x5c\x6c\x7b\xfc\x9a\x14\x7f\x1e\x67\x58\xe0\x24\x21\x09\x95\xe9\x8b\x05\xd1\x9e\x96\xdd\xb5\xfa\xac\x0a\x6e\x4c\x44\x2c\x4f\x27\x86\x14\xdd\x40\x6c\x49\x43\xc5\x91\xc8\x59\x88\xbe\xf5\x5c\xab\xd1\x9e\xc3\xbd\x00\x56\xa5\x68\x0e\xf5\x33\xa7\x98\x0a\x46\x64\x6b\xb5\x42\x12\xe5\x82\xaa\xc5\xd8\x16\x7f\xec\x7e\xe0\xee\xec\x97\xa7\xf6\xc3\xe5\x1e\x6e\x97\x78\xee\xfa\xf3\xc5\x26\x33\x22\xa0\x92\x8d\xab\xc9\x12\x14\xb8\xb4\xc0\x02\xc4\x97\xc3\x81\xb0\xe1\xda\xb5\xdd\x16\x70\x8b\x9f\xc7\x41\x06\xd2\x38\xaa\x12\xc7\xaa\xc3\xda\x04\x8d\xb4\x6c\x92\x2f\x0c\x0e\xd4\xe2\x45\x7e\x81\x42\x18\x36\xcd\xc0\x34\xad\x07\x1c\xb8\x82\xc1\x5e\x59\x6c\x4c\x90\x1f\x6e\x95\xaa\x96\x71\x5a\x38\x9a\xa6\xe0\xa3\x25\x83\x1d\x04\x5f\x75\x18\x71\xd0\xc9\x8e\x86\xad\x0f\xba\x10\x79\xa6\xe8\xa4\x8e\xbe\xa2\x76\x57\x18\x73\x90\x40\x5a\xb2\x73\x33\x94\xba\x35\xd5\x32\x4b\x9c\xd8\xce\x4e\xcb\xff\x16\xea\xca\x81\xd8\x18\x10\xa0\x30\xef\xed\x3a\xa5\x4a\xb9\x00\x7b\x63\x80\xd6\xd4\x59\xb6\xcd\x7e\xe5\xc2\x3d\x30\xd4\xdc\x34\x26\xa2\xa3\x11\x1b\x48\xf4\x4c\x10\x23\x16\xe5\xa0\xa1\x9a\xa6\xb7\x6a\x43\x79\xa2\x09\xd1\x3d\xf9\xd8\x14\x2d\x3c\x50\x25\x7d\x85\x2c\xd3\xc7\x14\x27\x92\x1c\xe8\x86\xa1\xb0\xa6\xe2\x10\x34\x89\xd1\xb3\xc0\x59\x46\xc4\x88\xd9\xec\x07\x70\xb8\x70\x9e\x98\xf6\xdb\x42\x43\xed\x1a\x90\x71\x84\xa3\xf9\x2b\xed\x11\x86\xe4\x95\x68\x4e\x62\x97\x5f\x5b\xde\x1e\x37\x6f\x63\xb0\x5e\x63\xb3\xce\xa7\xae\xc2\xd3\x81\xed\x24\x89\x34\x47\xf1\x05\x7f\x33\x22\xf4\xa8\x35\x0d\x3f\x11\x86\xe8\xd4\x8d\xc3\xc6\xee\xa0\x67\xf0\x4c\x69\xd2\x7f\xc2\x34\x31\x09\xeb\xae\x6b\x27\x04\x1a\xf3\xfb\x88\x19\x77\x37\x8b\x4a\x19\x9d\x94\x51\x39\xd7\x9c\x3a\x07\x9f\x24\xa8\x19\x6b\x49\x9e\x71\x2c\xcb\x46\x46\xa3\xbe\xd1\xdf\x4a\xe6\x8d\xc3\x52\xb6\x5a\x14\x20\xcc\x40\xb0\xa4\x2b\x32\xb5\x4c\xce\xec\x43\xef\xeb\xa1\xf7\xcd\x6b\xb3\x8f\xe1\xf7\xfe\xb0\xac\x1b\x82\xdf\xb6\xfd\xbb\x90\x20\x77\x18\x8a\xff\xc6\x31\xeb\x2f\x13\xae\xfe\xb6\xf9\x05\x2f\x91\x5a\xd0\x07\xe0\xbf\xbf\x00\xfc\xf6\x63\xbb\x56\x10\xfe\x0a\x90\xa1\xa6\x5e\x2e\x89\x12\x34\x92\xbb\xe0\x0f\x32\xc3\x1d\xa3\xc7\x40\xdb\xca\x56\x48\x27\xfa\x05\xef\xec\x83\x78\x2c\x5f\xf2\x6d\x22\x08\x7e\x8c\xf9\x73\xcd\x26\x26\x43\x94\x87\x4b\xad\xaf\xeb\xc3\x44\x25\x29\x45\x8c\x50\x89\x18\x91\xd6\xa8\x88\x47\x6c\x4e\x89\xc0\x22\x9a\x43\xf6\x5d\xb1\x31\x26\x8b\xd3\x00\xed\x98\x98\x81\xd0\xab\xb3\xc6\xa6\x77\x58\xf7\xaa\x25\xc7\x43\x95\xd9\x3d\xd7\x23\x49\xcd\x27\x5e\xa6\xb6\x52\x46\x68\xfa\xea\xb4\xfd\xdb\x06\xbc\xfb\xc5\x7e\xd1\xa0\x77\x1f\xb4\x13\x7c\xd1\x31\xf0\xbd\xa0\x86\x3e\xf8\xfd\x85\x82\xdf\x1b\x96\x78\xbd\x00\xf8\x8d\x4c\x6b\xaf\x1f\x9b\xeb\x7a\x7e\x8d\xf8\xdc\x55\xc1\x51\xf9\x64\xfc\xe2\x47\xaf\x71\xce\x5d\x4f\xe0\xcf\x9e\x28\x8c\x44\x2c\x34\x9d\x4d\x48\x1c\x03\xa7\x55\xdc\x16\x0d\x2e\x68\xc7\xa9\xe1\xfa\xee\xc5\x52\x13\x3b\x4e\x38\x9b\x49\x1a\x1b\x10\x90\x0c\x43\xf1\xce\xd0\x48\x00\xc9\xef\xb0\xbf\x49\x42\x84\xb3\xfe\x0b\xf4\xb5\xa4\x5a\xed\x0b\x3c\x02\x02\xc5\x9c\x48\xf6\x95\x32\x4a\x39\x66\x0b\xf4\xc8\xf8\x73\x42\xe2\x19\xec\x50\x75\x30\x87\x88\x92\x03\x44\x95\xff\x4c\x40\xb6\x3c\xcf\xd5\x48\x8f\x1d\x62\xba\x8c\x06\x40\xec\xb7\x41\x79\x6c\xdf\xcc\x37\x47\x08\x9d\x33\x34\xc5\x91\x3a\x40\x32\x9f\x14\xed\xc7\xdc\xd4\x3b\xd6\x5a\x6e\x30\xf1\xa2\x91\x3e\x36\xbb\xa1\xf3\xe6\xb3\xe1\xb8\x83\x26\xd7\x41\x42\xf1\x56\x31\x6c\x4f\x78\x1b\xb4\xc9\xcb\x5c\xda\x60\x07\xc4\x99\x3f\xfa\x16\xf6\xc7\xc3\x05\x43\x91\x5a\x03\xbd\xcb\x78\xdc\x6a\x53\xac\x4c\x65\xdd\xb1\x14\x01\x87\x56\x50\xb2\x0e\x21\x68\xd7\x2c\xb7\x96\x9a\xa4\x12\x04\xa7\xd6\x08\xaf\xaf\x1a\x10\x6b\x4c\xb8\xa1\x1e\x3d\x15\x46\xc2\x5c\x67\x8b\x2f\x28\x7b\xd4\xbb\x5b\x00\x24\x43\xa9\x71\xe8\xb9\x69\xd3\x32\x7d\xe3\x91\x53\xce\x8c\x23\x6e\x2b\xb9\x93\xce\x18\x4e\xd6\xb4\x71\xd4\x56\xae\xee\x3b\x73\x72\x96\x15\x17\xb4\x14\x61\x8c\x6a\xc8\xf4\xb8\x96\x0d\xa9\x32\xdf\x50\xde\xc3\x28\x26\x19\x61\x31\x61\xd1\x02\x48\x84\x01\xa2\x8b\x60\x38\x41\x18\xbe\xc3\xc9\x11\x3a\x33\x79\x2c\x5e\xc2\xb3\xd7\x3a\x5c\xe8\x29\x66\x74\xaa\xf5\x04\x30\x76\xda\x51\x8e\x98\x19\xa6\xf3\x35\x04\xf5\xdb\xfd\x8a\x35\xec\xcc\xf7\x94\xe1\x52\xe2\xd0\x06\xe7\x29\xc9\xd7\x8a\x0d\x0f\xac\x96\x8b\x36\xd4\x70\x85\x57\x01\x79\xaf\xb1\x19\x48\x42\xe5\x7b\xa4\xbb\x43\x70\x65\x7a\x4c\x79\x0c\x0e\x8d\x39\x49\xb2\xa0\x7a\x74\x86\x85\xf2\x78\x22\x06\xfa\x55\xdf\x32\x69\xce\x0c\x36\x8c\x31\x34\x3d\x5b\x78\x4d\xeb\xcb\x2a\x1a\x3f\x1a\xb1\x73\xf5\x95\xd4\x9c\x8f\xb3\x59\xb2\x40\x38\x7e\xa2\xb2\x80\x11\x8f\x38\x93\x79\x4a\x84\xed\x82\x4a\x13\xab\x65\x21\x78\xb1\x23\x4d\x3d\x36\xad\xf2\x3d\xe1\x84\xc6\x0e\xea\x5e\xff\x38\x21\x53\x50\x75\xb0\x90\xce\x20\xda\xe0\xd1\xb6\x9b\x1b\xeb\xb5\x7a\x33\x6e\xf9\x53\xc8\x10\x51\x5a\xf0\x4e\x6c\x4d\x20\xc7\x55\xce\x69\x57\x7d\x09\xd7\x9c\xd4\x26\x85\x96\x0b\x38\x76\x15\xce\x56\x81\x17\x39\x00\xbd\xdc\x44\x30\xe9\x7e\x9c\x2c\x6d\x06\xb7\x16\x07\xa8\x4c\xd0\x8e\xda\xd8\xd9\x43\xae\x49\x28\x08\x17\x52\x61\x45\x23\x2b\xb6\x73\x61\x2f\x0e\x7b\xb1\xb4\x6f\xed\xd9\x96\x40\xcc\x32\xc2\x49\x7d\x87\x97\xa8\xf1\xe6\xfd\xe5\xbc\xd5\x1e\x37\xd3\xf6\xd2\x9c\xa5\x88\x27\xc9\x3a\x20\xe1\x95\x99\x9f\x16\x9f\x2f\x1f\x51\xd1\x8f\xde\x00\xb7\x17\x70\x6a\x8c\xeb\x19\x27\x56\x42\x95\xca\xee\x52\xf8\x92\xb9\xdd\x16\xd6\xb5\x3d\x62\x7c\x6a\x6a\x04\xb7\x39\xa5\x33\xc1\x53\xba\x0e\xa8\xa2\xf1\xd3\xde\x3a\x73\xc3\x0a\xe1\xcd\x19\x25\xf4\x29\xb2\xe4\x65\x7b\x84\x74\x03\xcc\x8c\xbc\xba\xe4\x0c\xa5\x38\xdb\x68\xc1\x57\x19\xdb\x06\x28\x35\x96\x4e\xbb\x7a\x00\xb3\x44\x00\x91\x1d\x16\xf9\x19\x2f\x8a\xcc\xae\x36\xb8\x3c\xb6\x16\x39\x3c\xe8\xd7\xcf\xd9\x94\xaf\x71\x38\x8b\x4c\x2c\x7b\xfa\xb0\xa3\xd9\xe0\xfc\x79\xe3\x8f\xd9\x7d\xb3\xa6\x5d\xce\xe3\x69\x13\x51\xaf\x7d\x32\xdd\x0a\xbe\xa4\xea\x17\x32\x91\x50\xeb\x5b\xe7\x6e\x2d\x1f\xad\xa0\x45\x04\xc3\x59\xbe\x54\x97\x25\x3a\xdc\xf9\x1a\x55\xda\x41\xc6\xc2\xe0\x62\xc1\x6e\x9a\x5b\x7d\x85\x35\xb3\x87\xa4\xd3\x62\x6d\x99\x7a\xba\x1e\xec\x9f\xeb\xd1\x83\xfd\x35\x9f\xd0\x95\x98\xc6\xeb\xe8\x8a\x53\x2d\x09\x19\xf5\xa1\x08\x2c\xb1\x11\xf6\x53\x9a\x10\x79\x84\xce\x1b\xf4\x46\x17\xdf\xee\xfd\xc1\x26\xd2\xcf\x49\x4f\xb9\xa0\x41\xe9\x2d\x27\x23\x21\x0a\x78\xe4\xa1\xed\x4c\x10\x3d\xe6\xc8\xb8\x6e\xb9\xc1\xf8\x83\xe0\x3a\x41\x35\xcf\x32\xc2\xaa\x02\x29\x5a\xf3\x02\x6a\xd1\x05\x8c\x0c\xef\x3f\xe0\x26\xe4\x01\xdb\xea\x82\xc5\xa8\x5a\xb6\x74\x17\x45\x14\xba\xa7\x0f\xb8\x5e\xef\xf5\x17\xf5\xbd\x69\x1c\xe1\x7d\xb9\xf5\xb5\x47\xe7\xa5\xfc\xf5\xfd\xd0\x1f\xe1\x53\x67\x15\xc5\x68\x2a\x08\xf8\x4d\x52\x9f\x12\x6c\xb0\xf4\x38\x87\xfb\xee\xee\xec\xc7\xe3\x87\x73\x44\x54\x84\x12\xfa\x48\x46\x2c\x92\x4f\x07\x5a\x3c\xfe\x7b\x4e\x94\xfe\xb9\xc5\xd0\x42\x53\xc2\x24\x70\x02\xaa\x6a\xd0\x09\xcd\x0b\xe9\x16\x46\xff\xf7\xac\xfc\xfd\x12\x92\xaf\x65\x3f\x01\xed\x3a\x78\x7b\x20\x53\x40\xf0\x36\x4b\x2b\x1b\x28\xc6\xa8\x78\xc3\xa6\x7a\x53\x1b\x44\x3b\xb3\xbf\xe5\x6c\x4d\xa1\xeb\xb4\xf8\x28\x18\x45\x8b\x4c\x97\x66\x18\x20\x2e\xd7\x0b\xa3\x36\xdf\x34\xb6\xbe\x8a\x89\x14\x59\x65\x4e\x65\x2f\x4a\x73\x21\x25\x08\x01\x16\xe2\xe9\xc9\xde\xf5\x36\x91\xd8\x4f\x2c\xf8\xe8\x68\xc4\x2e\x9d\x21\xbf\xf8\x55\xba\x26\x4c\x68\xbe\x47\xfe\x2c\xb7\x02\xcd\xc6\x54\xfa\x1f\x00\xbf\x5d\xe6\x89\x32\x35\x63\xa6\x54\x6b\xe9\x6e\xa0\xe6\x49\x13\x97\x10\x98\x45\xf3\xab\x2d\x4b\xc7\xd0\xe9\x98\x24\xeb\x48\xa2\xe7\xd3\x61\x22\x35\x7d\x47\x8f\x2d\xa7\x73\x93\xaa\x48\xc5\x64\x6c\xad\x37\x53\xe6\xc1\xe8\x38\xc6\x7a\x9c\x98\x9a\x2d\x04\x81\xe9\xb7\x1a\xfc\x6e\xf2\x5b\xf5\x2e\x5a\x49\xdd\x58\x7e\x4d\xd4\xa9\x8f\x28\x83\x5e\x10\x56\x23\x26\x72\x06\xd8\xd2\xde\x11\x84\x51\x01\x13\x1a\x39\xb3\x8c\x35\x92\xcd\x34\x9b\x30\x28\x9c\xe6\x65\xad\x9f\xf1\x5c\x42\x00\x6b\x4a\x94\xbe\xa0\xbe\x86\x4a\x6b\xc6\x13\x7b\x80\x32\x41\x53\xaa\xe8\x13\x91\xdf\x34\x6c\xdd\x29\x56\x38\xe1\xb3\x81\x50\x74\x8a\x23\x75\x8f\xb7\xd2\xc0\xb1\x6d\x66\xd3\xa8\x1e\x37\x0c\x74\x7e\xa6\x17\x7f\x46\x18\x11\x30\x51\xad\x93\x37\x1f\x61\x78\xb2\x11\xe7\x06\xef\x69\x64\x0a\x3b\x48\x6f\xb1\xc0\xb9\xe2\xa9\xd6\x6f\x71\x92\x2c\xa0\x60\x83\x7e\x32\xc7\x72\xee\x36\xda\x44\xa1\x75\xb9\x9b\xec\xe2\x9e\xe2\x68\x4e\xee\xa0\xee\x60\xd3\xe2\x56\x46\xf9\x81\xb0\x3c\xfd\x70\x82\xfe\xbb\x98\xe3\xe9\xe0\xf4\x87\xe1\xf8\xec\xfc\x6e\xf0\xfd\xc5\xf0\x2c\x98\x8f\x7d\x72\x79\x7e\x77\x57\xff\xf5\x87\xf3\xfb\xfa\x8f\x37\xd7\x37\x0f\x17\x83\xfb\xa6\x56\x2e\xae\xaf\x7f\x7c\xb8\x19\x7f\x1c\x9c\x5f\x3c\xdc\x0e\x1b\x3e\x7d\xb8\x6f\x7f\x78\xf7\xe3\xf9\xcd\xcd\xf0\xcc\xad\xca\xff\x04\xa7\x0b\xa2\xd3\x20\x72\xb4\x79\x1a\xd5\x03\x78\x88\xca\x2f\x9e\xa0\x87\x2a\xe2\xb1\x0d\xf1\x32\x69\xb8\xcf\x58\x6a\x1e\x06\x91\x7c\x23\x86\xdc\xe7\x7a\x51\xda\x3e\x35\x5e\xd0\x68\x4e\x50\xc2\xf9\x63\x9e\x59\xd6\x66\xdc\xee\x8c\x1b\xc3\x0f\x91\x41\x6b\x3f\x9c\xdf\x9f\xd4\x91\x97\x7d\x63\x01\xe0\x87\x3b\x03\x30\x2e\xec\xd8\x29\xd8\x52\x1c\x22\x6f\x61\x2a\x0d\x7a\xf0\x3b\xb3\xac\x1f\xd3\x1a\x66\xaa\xd2\x4d\x1c\xdb\xb2\x7a\x6e\x62\x41\xc3\xe5\x7d\x5d\xb6\x9a\x7e\x39\x4c\xa9\x09\x34\x21\x11\xce\x8d\xaf\x58\xdf\x53\x42\x70\x11\x0e\xb8\xa0\x87\xdd\x35\x6a\xe9\xa8\xb1\xc1\xca\x9e\xe9\x89\xcb\x47\x9a\x65\x24\xfe\x50\x97\x5f\xca\xf5\xd7\x6c\xd5\x4f\x3e\x45\xc1\x99\xd4\x7a\x3d\xe8\xfc\x0e\x27\x7d\x6e\xeb\x59\x50\x69\xfc\x61\x85\x87\x10\x70\x28\xf5\x9d\xe0\xf1\xac\x29\x78\xaf\xb1\x42\xcf\x04\x32\xc2\x72\x5b\x28\xc2\xe8\xde\xfa\x6c\x43\x77\xc6\x93\xe1\xca\xbe\x94\x32\xc5\x5a\x99\xf1\x2e\x04\x6e\xfd\xbd\x24\x4d\x8c\x78\x8b\xb4\x9e\x33\xd3\x28\x70\x67\x17\x4a\x00\x23\x6e\xf1\x19\xb9\xdb\xa0\xc1\x42\xbe\x44\xbe\xaa\xdf\x48\x2b\x2e\x0b\xcd\xb6\xbb\x8c\xc7\xa5\x32\x97\xf0\x39\xbb\x0f\xac\x84\xe1\xb8\x72\xad\xee\x79\x8c\x17\x9a\x38\x20\x84\x4b\xe6\x59\xc6\x85\x42\x2d\x6d\x18\xef\x88\x19\x1f\xdc\x39\x76\x1e\x9e\xc7\x41\x23\x5a\xc2\x90\x0d\x10\xda\xdd\xb2\x3b\xed\xba\x16\x8c\x23\x8c\x3b\x02\x45\xd0\x97\x39\x48\x4b\x2a\x75\x89\x42\x9b\x84\xdf\x6d\x02\x37\x33\x7d\xc1\x77\xad\xba\xd3\xd4\xfb\xb5\x6b\xa1\x71\xcb\x13\x32\x55\xe3\x46\xaf\xcf\x12\x03\xa7\x6e\x91\xb5\x25\xc4\xd3\xd9\x7c\x07\x2d\x76\xd7\x12\xbe\xb3\xfe\x52\xad\x1a\x04\x16\x02\xc1\xb9\x32\xf2\x69\xa1\xc3\x20\xb7\x9a\x60\x5e\xb0\x9d\xda\x50\x76\x2f\x04\x6a\x99\xff\x91\xf1\x67\xe6\x2d\xfb\xf2\x68\xc4\x86\x18\xea\x12\x7a\x45\xc4\x45\xb8\x83\x16\xb0\x52\xfe\x2f\xd5\x18\x7b\xd5\x20\x98\x76\x80\xba\x82\xee\x6d\x45\xda\x64\x81\x8a\x3a\x72\xa5\xef\xba\x9c\x1e\x63\xf5\x76\x22\xa0\x99\xb0\x2d\x94\xaa\x48\x66\x2d\xf3\x66\x9e\x85\x03\x15\xdc\xee\xba\xab\x23\xf4\xb3\xb3\xfc\x40\x3c\x51\x51\x82\xd1\x16\xd0\x4e\xf0\xc2\x61\x5a\x35\x2d\xec\x2e\x60\xa2\x76\x1d\x61\xb4\x7c\x81\x3d\x1e\x45\xc3\x2a\x97\x14\x70\xc6\x8c\x45\x76\x8d\x68\xda\x53\xff\xd1\x1d\x59\x1e\x6e\xff\x11\xaa\x6e\x59\x87\x35\x08\x1d\x2c\x59\xfc\x2f\xb3\x59\x26\x91\xc6\xd5\xd3\xb0\x55\x90\xac\x07\x55\x9f\x1f\xf0\x00\x9a\x3c\x1b\x34\xa5\x49\x02\x72\xc0\x11\x1a\x40\x35\x40\xc8\x43\xd1\x57\xa1\x8b\x5a\xa3\x33\xc6\x57\x85\xee\xb7\x10\x53\x14\x10\xd3\x5d\x3b\x31\x49\xa0\xa6\x22\x0d\x71\x37\x14\xb5\x83\x94\x74\xcd\x5b\x70\x1d\xd0\xb3\x7b\x22\xfa\x1a\xca\xfb\x5b\x04\x9d\xd5\x86\x1b\x7c\xf8\xcf\xe6\xa1\x7f\xca\xb1\xc0\x4c\x41\x28\x95\x15\xdd\x05\x09\x22\xba\xc9\x67\x08\x56\x64\xc6\x10\x0c\x3f\x85\x9b\xeb\x5c\xfe\x33\x0a\x79\x47\xf1\x01\xa2\x47\xe4\xe8\xc0\xd6\x48\x97\xf9\xa4\x78\x73\xae\x25\x87\x11\xab\x85\x88\x1c\xa1\x41\x22\xb9\xfd\x82\xb0\x28\x81\xea\x9b\x41\xd4\x97\xa7\x7c\xeb\x56\x9a\x2c\x40\x41\x81\xad\x2c\x9a\xe7\xf6\x41\xf0\x21\xd4\x16\x01\x9f\x78\x02\x27\xbd\xf8\xbd\xa9\x64\x71\x29\x4e\xe2\x05\xd1\xa8\x6b\xd7\xd0\x8b\x6d\x92\xa9\x10\xb4\x6c\x83\xe0\x0d\xd8\x98\x22\x74\x27\x48\x20\x47\x5f\x63\x85\x12\x82\xa5\x42\x7f\xfc\x66\xad\xd8\x10\x37\xc1\x82\xbb\xda\xe3\x5b\xc4\xdf\xbb\x08\xce\xb6\xba\xeb\x50\xc1\x0d\x61\xc4\xc8\x73\x18\xb0\xc3\x21\xc6\xca\xd5\x81\x21\x41\xca\x90\x29\x49\x69\x12\x0b\x21\x08\xd6\xa8\x4c\x2d\x7c\xc4\xa1\x35\x5a\xf7\xa9\x1d\x56\x03\x65\x59\xe5\x89\x1a\xf5\x0c\x10\x45\x8a\x58\xca\x39\x56\x23\x66\x39\xab\x0b\x1b\x09\xa2\xe7\x07\x49\x52\x8e\x5f\xc4\x10\xa2\xcb\xf4\x84\xa1\x1c\xeb\x91\x5f\xa0\x2b\x50\xbf\x7c\x10\x59\xb9\xd6\xbd\x3f\x2c\x5a\x53\x1b\x31\x0f\xd7\x10\xb6\xdd\x28\xed\x34\xd9\x97\x5f\x51\x08\x6e\xe8\xfe\xc2\xd4\xc5\xed\x20\x0c\x93\xa6\x21\xaf\x38\x58\x75\x9b\xfe\x12\xd9\x78\xd7\x1d\x74\x17\x95\x9b\xed\xe3\x70\xcd\x3e\xf3\x06\x73\x7b\xcb\xe6\x06\xb2\xc5\x36\x0a\xb8\x8f\x66\x7c\x2d\x8f\x6f\x69\xe8\xe7\x31\xe4\x52\xac\xe6\x82\x45\x6e\x82\x63\x1d\x60\xe8\xa6\x71\x10\x2a\x1d\x44\x66\x42\x28\xbd\x63\x7c\xf6\xcd\x16\xcf\x6b\xf6\xbe\xa7\x7f\x50\xcc\xdf\x4d\xc5\x07\xc1\xd5\x27\xde\x2e\xec\x0d\xe2\xbf\xe1\x08\x02\x28\xa1\x27\x17\xba\x59\xc7\x93\x70\x28\x9c\x18\x8c\xf9\x8d\xe2\xa1\x2d\x71\x7d\x84\x86\x70\xd1\xb8\x8a\xd7\x78\xea\x1c\x12\xc1\xcb\x23\xa6\x35\x13\x97\x7e\x1e\xb4\x5f\x26\xf1\xa6\x13\x60\xb0\x6c\xb6\xf2\xe5\xa4\xab\x21\xd6\xdb\xb4\x09\x07\xa5\x03\x6d\x00\x2a\x33\x1a\xce\x4e\x50\xcc\xa3\x47\x22\x8e\x05\x89\xa9\x3c\x01\xdf\xba\x6a\x75\xea\xa5\x5a\xdb\xde\x5a\xd2\x68\x0b\x14\x58\x91\x6b\x70\x6a\xfa\xb7\x41\xf4\xae\x8e\xe0\x01\xa2\x53\x50\x27\x5c\xa8\xab\x49\xb2\x71\xd9\xfa\x84\x29\xb1\xc8\x38\x65\xca\x9b\xb2\x2a\x0b\xe1\x34\x0d\x2d\xb4\xb5\x05\x69\x8b\x5d\xc4\xe0\x6c\x38\xed\xfb\x39\x91\xc4\x05\x1c\x98\x49\x29\x6e\x73\xd4\x0c\xbb\xc8\xb0\x9a\x4b\xc8\x08\x2a\xaf\x81\x55\xba\xe0\x53\xbd\x42\x38\x83\x78\x05\x63\xa5\x28\x3e\xf2\x79\x2b\x52\xd1\x24\x19\x31\x46\x48\x2c\x11\x24\xef\x7c\xd5\x98\x78\xa8\x3f\x3d\x40\x38\x8e\xd1\xff\xfe\xfa\xe3\xc5\x2f\xf7\xc3\xf1\xf9\x15\x18\xad\xcf\x2f\x86\xdf\x1c\xf8\x1f\xaf\x1f\xee\xfd\xaf\xc6\xc2\xf2\x44\x04\x4a\xf1\x23\xa8\x78\x4c\x1a\xf9\x0f\xb2\x3b\xc2\x91\xba\x94\x4c\xfd\x44\x12\x17\xe9\x6a\xc5\x14\x8f\x00\x65\xf7\xb0\xb5\x50\xa1\xb1\xf9\xad\xa1\xfc\xde\xfa\x4f\x96\xd3\xa0\x23\x1e\xdf\x85\x13\x03\x53\xc2\x20\x1a\xbb\xc8\xd1\xb3\xba\x6f\x41\x70\x84\xcd\x28\x6b\x8b\xc7\x23\xec\xe9\x25\x85\xf8\x1f\xc9\xe2\x27\xad\x5e\xdf\x60\x2a\x3a\xd3\xde\x90\x3d\x51\xc1\x19\x4c\xcd\x9b\xb5\xfc\x89\xd1\x7a\x3a\x96\xd5\x43\x25\x8d\x2c\x0c\x31\x1a\x59\x6b\xcc\x67\x13\x8e\xcd\x9b\x4f\xd7\xa2\x63\x90\xcf\x4a\xb8\xe4\x5f\x0f\xc2\xe2\x90\x28\xfc\x45\x53\xd0\xe0\x88\xdd\x5f\x9f\x5d\x9f\x20\x92\xe0\x09\x17\x90\x0d\x66\x42\x82\x5c\x13\x76\xc1\x22\x9e\x06\x0d\x95\x12\xbf\x0f\x50\x56\x24\x7e\x87\x46\xb4\x23\xd3\xc6\xaa\xfa\xdd\x5c\xd4\xd3\xa6\x77\xab\x02\xda\xc9\xde\x70\xd1\xe5\xfa\xd7\xaf\xc1\xd2\xf1\x4c\x2b\x72\x15\xce\x6b\xef\xe6\x29\xc1\xa6\x74\xae\x71\x0b\x59\x5b\xbe\x0d\x60\x4d\x92\x52\x39\x28\x7d\x70\xe4\x91\x75\xc1\x17\x6f\x72\x86\x7e\xfc\x8b\x44\x93\x5c\x8d\x58\xb9\x0d\xce\xd0\xe0\xe7\x3b\xf4\x3d\x56\xd1\xfc\x9b\x11\xbb\xd6\x6a\xe6\x8f\x7f\x69\x41\xa8\x58\x1b\x5c\x49\xaf\xc9\x19\x56\xf8\x82\xe3\x98\xb2\x59\x13\xb2\x52\x01\x7f\x3f\xbc\x1f\x9c\xa0\x6b\xab\xc3\xfb\xa4\xf2\x22\xd3\x2a\x68\x08\x18\x32\x4c\xc4\x71\x11\x60\xe5\xac\x8c\x3e\x63\x34\x33\xb8\xb0\x46\xec\xde\x40\x4a\x69\xae\x4a\x15\xca\xb8\x2d\xc1\xa0\xb5\x32\x03\xb6\x65\x4c\xd9\xd6\x92\xa8\x57\x07\xc8\xd8\x6f\x86\x95\xc7\x40\x9e\xa9\x33\xfb\x11\x03\x05\xdd\x67\x7a\x26\x3c\xc2\x09\xc4\xe4\x1d\x06\x36\x3d\xad\xb6\xf3\x1c\xd2\xee\x4c\xad\xd3\x45\x39\x74\xd6\x67\x82\x7a\xa1\x2c\xdc\x28\x30\x00\xc0\x3e\x5a\x6f\x6c\xca\x35\xc7\x31\x50\x32\x60\x7c\x4b\xcc\xea\xe8\x0f\x3d\xb4\x8c\x59\x16\xfd\xd4\xf1\x23\x28\x29\x6e\x53\xbc\x23\x30\xdf\xb3\x05\x84\x6f\x03\x66\x3a\x87\xd0\x8f\x82\x3b\x5b\xa2\xac\xed\xa2\xbf\x13\x83\xcf\x46\xcc\x44\x0a\x96\xf6\x25\x04\x45\x08\x7a\xe7\x0c\x02\x19\x8b\xeb\xd2\x0b\x18\x99\x0d\x6c\xb4\xb2\x7e\x26\xc8\x61\x4c\x14\x11\x29\xd8\x7b\xc2\x35\xd5\x37\xec\x11\xba\x0d\xd5\xeb\x98\x47\x79\xea\x80\x21\x21\x3d\xb1\xa8\x26\x5b\x92\x78\xcc\xc5\xbe\x8a\xe2\x21\xf9\x5d\x11\xc8\xca\xeb\xac\x1f\x1b\x82\x19\x84\x9f\xd6\x25\xf5\x76\xc1\x17\x78\xc7\x76\x51\x6b\xa6\xa1\x71\x56\x6e\xa9\xd4\xda\x6a\x5c\xbb\x15\x75\x4e\xae\x0a\xf0\x3a\x2e\x40\xd8\x22\x9f\x33\x0e\x46\x6e\x93\x53\xc5\xe3\xaf\x24\x3a\xbf\xd1\x12\x90\xd6\x78\xfd\x19\xcc\xa5\x32\xc1\x65\x90\xae\x63\xbe\x36\xe9\x02\x07\xe8\x5b\x53\xeb\x39\x42\x9f\xdd\x1f\x7f\xfe\x8f\xff\xf8\xd3\x9f\xd7\x49\x27\x71\x0a\x39\xb4\x5b\xac\x91\xaf\x86\x51\x16\x89\xc2\x1d\xa8\x73\xaa\x2d\x76\xc1\x1e\xc0\xb6\xe5\xdf\x04\xa4\x2a\x88\x1d\xc2\x33\x7b\xc2\x65\x78\x32\x51\xe9\x68\x16\x91\x04\x92\xa8\x83\x32\x87\xf0\xc2\xae\x95\xe8\xff\xd7\x12\x0c\x98\xb1\x3e\x2a\x9b\xc5\x38\xd1\xc4\x8b\xd7\xba\x11\xf4\xb5\xb5\xff\x29\x70\x20\x7e\xe3\x2e\x38\x9e\xc4\x44\xd8\x3a\xf1\xce\x64\xe7\x0d\x89\xc0\x1c\xc8\xe7\x2c\xe1\xb1\x43\x77\x93\x24\xc3\x20\x40\x68\x66\x70\x34\x62\x43\x57\x36\xdc\xa0\x93\x98\x8f\x8c\xe7\x65\x8a\x23\x03\x6a\x26\xd1\xd7\x9f\x4f\xf4\x6f\x07\x68\x71\x02\x41\xa4\x07\xe8\xb7\x13\x0b\x42\x80\x85\x1a\xeb\x9f\xbe\x71\xb2\xb6\x6d\x02\x06\x4d\x25\xfa\xea\xf8\x09\x0b\x53\xf2\xf2\xd8\x8c\xe8\x2b\xcb\x59\x7d\x59\x9f\x50\x36\x4f\x38\x7f\xb4\x01\xb6\xb5\x0f\x8f\x1d\x9e\x0d\x90\xb7\xf7\x9b\x98\xad\xf7\xf9\x8e\x0a\x1d\xda\xa2\xe7\x47\xd9\x04\x1d\xfd\x4d\x72\x86\x8e\x16\x38\x4d\xec\xaf\xee\xa9\x8d\xff\xc5\x12\xb9\xb2\xf7\x45\xd9\x6d\x63\x29\xfd\x3e\xe1\x13\x98\xd5\xa5\x9b\xa9\x89\xa0\x85\x81\x16\xb7\x4f\x71\x61\xd9\x89\x58\x49\xca\xc0\x32\xa4\x5c\x99\x57\x80\xc7\x35\xcd\xea\xb3\x1f\xd2\x7f\x19\xbf\x30\x2c\x8a\x4b\xe2\x33\xc6\x61\x1f\xbd\xa6\x1b\xfd\x8c\xbe\xb6\x2c\xe8\x1b\x7d\xc7\xd8\x70\x65\xb3\x0c\x4d\x1d\x2c\x7c\x07\xbf\x04\x1d\x50\x86\x4c\x5a\xe6\x92\x2f\x7f\x3b\x3e\x3a\x3a\xf2\x5f\x5f\xe9\xa9\xfc\xbf\x88\x2a\x49\x92\xa9\x69\xc9\xdd\x60\x8b\x11\xbb\x74\xb8\xd1\xce\x78\x5d\x20\x65\x41\xb9\xfa\x88\x27\xe8\xb0\x30\xe8\xc6\x3c\x92\xe8\x5f\xb5\x58\x1b\x2c\x25\xfc\xa8\xf5\xb8\x16\x14\x3b\x03\x54\xf9\x4a\x87\xca\x1a\xc4\xab\xc7\x2a\x04\xc7\xf1\x8a\x2d\x96\x21\x08\x39\xd0\x82\xa6\x9c\x63\x0b\xa0\x23\x84\x7e\x99\x7c\x56\xf0\xa8\x05\x9f\xa8\x31\x94\xbd\xf9\xa6\xac\xb1\xdb\x02\xa6\xc8\x90\x75\xcb\x02\x58\x18\x11\xcb\x19\xcc\x3c\x0f\x42\xf7\x89\xbe\x5c\x58\x88\x64\x2c\xf3\x34\xc5\x62\x71\x5c\x9c\xb6\x3a\x71\x16\x00\x36\xc0\x63\x12\xb7\x00\xe0\xc2\x4d\xec\xd1\xb2\x51\x0c\x56\xbc\x74\x37\x9a\x3f\xbb\x11\x94\x62\x82\x80\x3c\x53\x88\x8c\xb0\x88\xc7\x96\xae\x8b\xec\xd3\xb2\xc4\xe2\xdf\xa9\xcb\x2a\x2e\x22\x46\x16\xc6\x38\xa6\x4c\x66\xb4\x7d\xc3\x7d\xdc\xc2\xbe\xf9\x18\x8a\xfa\x91\xd9\x1a\xee\xd1\xf3\xeb\x3b\xf7\x4d\xf7\x4b\x17\xd6\xa1\x2c\xb2\xe3\x24\x84\x1d\x62\x33\x24\xf0\x73\x71\xfd\x42\x6c\x87\xb1\xce\xe4\x3e\x37\xd7\xfc\xfb\x94\xdf\xd0\x44\xdf\x5a\x40\xe3\x47\x23\x56\xfa\xf9\x00\x91\x84\xa6\x94\xf9\xd8\x3a\xc3\xdc\xf9\xd4\x48\xcf\x8f\x54\xe9\x2d\x93\xf1\xa3\xe6\x60\x0e\x2e\x23\x50\xa9\x06\x6c\xe1\x48\xc7\x3b\xa6\xac\x05\x22\x97\x7a\x5c\x85\x8e\xae\x85\x59\xdd\xc4\xa1\x15\x48\x69\x40\x78\x70\x7e\x47\x4c\xb7\xe6\xce\x52\x11\x2e\x1c\xb4\x17\x34\x77\xe8\xf0\x7c\x03\x0e\x00\x7d\x94\x62\x7e\xbd\xfc\xdb\x20\xa0\x0c\x59\x9e\x6e\x9b\x6c\x62\xc3\x87\xdf\xca\x4c\x77\x23\x88\xbb\xa9\x6c\xe2\x12\x61\x79\xea\x0e\xd4\x1a\x14\x37\xb4\xe2\x4f\x4c\xa2\x04\x1b\x00\x00\xdd\x10\x44\x3e\x1e\x18\x07\x69\x16\xf4\x65\xae\x17\xd3\x8d\x29\x11\x90\x10\xf6\xb5\xf9\xf7\x37\xc8\xde\x0d\xdf\x1e\xd8\xfb\x5c\x48\x07\x60\x6a\xf7\x1c\x4a\x4c\x91\xd8\xd8\xd0\x01\xec\x71\x86\x45\x6c\xac\xe5\xa1\x56\x61\x32\x78\xb5\xfc\xb5\xe0\x39\x7a\xa6\x72\x3e\x62\xf7\xdc\x19\x1c\x11\xe3\x1e\x2e\xf3\x00\x94\xd1\x5a\x7f\x58\x02\x13\x80\x51\x37\x51\x80\x66\xc2\x5b\xe5\x1a\x41\x14\xec\x98\xf1\x98\x6c\x87\x0b\x71\x5f\xf8\x2a\x9c\xff\x5a\x10\x93\x0f\x06\x37\x45\x5b\x3a\x2d\x91\x72\x4d\xdb\x7c\x75\xe3\xe1\x1e\xb2\xed\x40\x45\xc3\x67\xb6\x29\xe4\x8a\xbf\xd5\xa0\x15\xa7\x71\x06\xd9\xc0\xa5\xb5\xf7\x20\x94\xdb\x6e\x42\x54\x4e\x55\x59\xb9\x02\xfe\xea\x33\x73\x8f\x60\xd9\x7d\x80\x31\x46\x33\xc1\xf3\xcc\xa7\xcc\xbb\x74\x3f\xb3\x0d\x56\xa6\x39\x67\x53\x7e\x62\x75\xaa\x0b\xca\x1e\x0d\xc5\xbf\xd4\x1e\x19\x9c\x51\x12\x97\xd0\x71\x5c\x91\x39\x98\xc3\x21\xa2\x2c\x4a\x72\xb8\xf8\xa4\xc2\xd1\xa3\xc1\x4a\x6d\x33\xfa\xea\x6f\xc6\xab\x93\x29\x5b\x24\xa6\x3c\x49\x6c\xb7\xc5\x05\x5a\x54\xe1\x7c\xa2\x18\x61\xf4\x70\x7b\xde\xdc\xf7\x23\xad\x3b\x73\x9a\x6f\xcf\x32\x81\xc0\xff\xfc\x48\xd7\x8a\xbb\xac\xa0\x0d\x91\x12\xa9\x7b\xe3\x52\x1b\x96\x9d\x26\xd2\x4f\x58\x91\x6d\x33\xa1\x0c\xb4\xca\x1a\x91\x7a\x35\xcc\x9a\xa5\xd6\xe3\x2d\x01\x5f\x0a\xb0\x16\x08\x0d\x6a\x47\x9e\x09\x83\xb5\xe0\xe1\x1a\xd8\x0d\xf0\x7e\xb7\xf9\x54\xde\x5d\x31\x9d\xe5\xc3\x4c\x08\x59\x03\x6d\xe0\x4e\xbf\xde\x71\x90\xa5\x57\x97\x8d\xf1\x19\x1b\xf0\xe8\x3a\x96\x62\x9c\x97\xea\x43\x77\x22\x68\x47\x8e\x46\xbc\x96\x3e\x47\xc4\x8f\xc4\x85\xe1\x78\x59\xcc\xf5\x3b\x03\xdf\x16\x2f\x61\x53\x7b\x0b\x6d\x03\xe1\x07\x62\xeb\x96\x61\x13\x5a\xfc\x1a\xa7\x0d\x2c\xba\x79\x27\x8a\x8e\xcf\xec\xc7\x97\xfa\xdb\x66\x56\x74\x09\x59\x7c\x1e\x38\x25\xc5\x4c\x9f\x6c\xd7\x6b\x8b\x11\xd2\x48\x84\x1b\x0d\xe9\x21\xdb\x68\x40\xa6\xc7\x8e\x65\x9b\x6c\x57\xae\x95\x67\x63\x87\xc7\x89\xb1\x33\xa9\x39\x98\x20\x8a\x72\x07\x9a\xa3\x95\x4d\x11\xa6\x34\x42\x82\xc5\xcc\x28\x48\x92\x28\xf9\x4d\xc3\x0e\x17\x39\x0f\x5b\xec\xf0\x06\x25\xe5\x42\xbf\x27\x88\xdf\xcb\x4e\x9a\x1f\x65\x19\xb3\xcd\xdf\xca\xbe\x38\xa3\x15\x9a\xa8\x0c\x91\xb5\x22\x2e\x0c\xc0\x69\xac\xcf\x4a\x3b\x66\xca\x96\xa5\x45\xaf\x70\xea\x11\x01\x5c\x81\x43\x9b\xdf\x65\x06\x37\x21\x00\x37\xd8\x3e\x86\xad\x6b\x88\x86\x43\xb0\x35\xbd\xda\x46\x30\x62\x03\xf7\x8a\xcf\x2a\x06\xdd\x4e\x18\x01\x1c\xe2\x43\x4d\x34\x34\xe8\x57\xb8\x58\x75\x3b\xb9\x96\x49\xac\x9b\xbc\x59\x2d\x83\xaa\xf5\x3b\x7f\x1b\xd9\x82\x07\x1e\x1a\x6d\x69\xb1\x89\xa7\xf5\x0b\x55\x37\x03\xb3\x44\xd5\x42\xc2\x4d\x1d\xaf\xd6\xa5\x1c\x62\x84\x6d\x28\xac\x5d\x6c\x62\x48\x93\x45\x41\xa6\x7a\xc5\x8d\x4e\x5e\xe9\xac\x7e\x5a\xd5\x56\xdc\x98\xe2\x74\x2c\x78\x7b\x35\x8e\x0e\xcb\xe4\x9a\x28\xd9\x77\xe6\x06\x35\x7c\x81\xfe\x9e\xe3\xc4\x5c\x6e\xcc\x92\xa3\x1b\x36\x88\xca\xdf\xfd\x19\x0d\xe0\xf6\x41\x97\xc0\x17\xc1\xc1\x0f\xad\x29\x8e\x68\x9a\x11\x21\x39\xc3\xad\x65\x69\x1e\xff\x22\xc7\x16\xf2\x7f\x8c\xa3\x88\xe7\x75\x78\xff\x35\x66\xd2\xd0\x5a\x38\x29\x8c\x1e\xf3\x09\x11\x8c\x98\xd2\x3b\xf0\x1e\x72\xef\x75\x1a\x2e\xc7\xb9\x9a\x7f\x37\x8e\x12\xda\xb9\x0e\x01\x64\x17\x0d\xf4\x67\xa7\xe6\xab\x65\x13\x28\xb5\x5f\x1a\x3a\x43\xe6\x19\x32\xcf\x8e\xd0\xf7\x38\x7a\x24\x2c\x46\x59\x92\xcf\xa8\x05\x13\x80\x1b\x0a\xd8\x65\x60\x9e\x2d\x4f\xcc\xc8\x16\xa6\x7d\x7d\x0d\x8d\x58\x8a\x1f\x0d\x36\xa0\x15\x22\x23\x9c\x24\x6b\x99\x19\x3c\x3d\xd4\x50\x55\x5c\xe6\xbb\x2f\x73\x64\xce\x87\x32\xe7\x03\x0c\xaa\x80\x20\x99\x33\x84\x01\x98\xe5\x2b\x89\xf2\xcc\x49\x40\x60\xe9\x4b\xc0\xef\x6a\x26\x09\xf5\xab\xa9\xd6\x83\xe6\x64\xc4\x20\x96\xd5\xb5\xb8\xf0\x5c\x25\x74\xf5\xfb\x90\x93\xa6\xc3\x37\x35\xb0\x04\xdb\x79\x11\x6b\x00\x94\x2b\x28\xa1\x63\x9c\xae\x9a\x13\x06\x06\x88\xee\x2d\x83\x46\xd3\x7d\xd3\x4a\x31\xb9\x56\xd0\xf4\x16\x53\xbf\x84\x39\xa3\xb6\xf2\x85\x35\x92\x07\xe1\x72\xce\x93\x54\x7c\x4f\x25\x92\x58\x51\x39\xa5\x8d\x86\x99\x10\x0c\x62\x9b\x55\xc7\xeb\x21\x50\x34\xa0\x4f\x54\xd6\xc2\xc7\xfd\x1f\xa1\x8f\x60\x67\x0a\x64\x6f\xee\xb1\x1c\xda\x58\x82\x9a\x93\x56\x50\xc3\x5d\x04\xcc\xb8\x19\x04\xef\x2f\x35\x1f\xfa\x1c\x8f\x23\x34\x28\xec\xfb\x06\xcd\xc2\x58\xee\x57\xcc\x88\x24\x92\x6c\x42\x7c\x9d\x4c\x61\xe0\x03\x07\x02\x42\x20\xab\x48\xfd\x7b\x01\x7d\xeb\x87\xf9\x0c\x69\x94\xf8\x91\xb0\x65\xf6\x8e\xee\x23\x34\x06\xa9\xa5\x4a\xb7\xb7\x74\x71\x63\xec\xda\x64\x80\xdd\x8f\x5d\x01\x20\x42\xa7\xc7\x7a\xc9\xb5\xa0\x1f\x3d\xda\xe4\x0d\x63\xef\xb4\x10\x24\xcf\x73\x2e\xc3\x73\xe6\xf6\xcf\xe8\x8a\x22\x27\x2e\x49\x03\x92\x5f\xfc\x02\x9b\xa8\x17\xc6\x43\x84\x12\x18\xb5\x3f\xa4\xc6\x96\xeb\xf7\x1b\x39\x16\x0a\xcb\x00\x7e\x22\xd7\x54\xfd\x34\xff\xf8\x17\x79\x0d\x27\x76\x17\xb9\xf0\xcd\x75\xdb\xb6\x8f\x43\xdf\xd0\x02\xef\x23\xac\x8a\xa2\x6f\x38\xf6\xe8\x0d\x19\x8f\x51\x41\x5e\xeb\x57\x78\x7b\xfb\x69\x55\x2a\xc3\x75\x9a\xdb\x2a\xca\xbe\x0c\xdc\xf4\x68\x92\x53\x53\x64\xb5\x24\x72\xd9\x7c\x49\xd0\x7e\xed\xf5\x4f\xa5\xbf\x4f\x9a\x69\xec\x86\xc7\xdb\x10\xd6\xfa\x80\x75\x75\xba\xee\x10\xc5\x2b\x9b\x8a\xc2\x2e\x59\x89\x8c\xb7\xc7\x5f\xc6\xe3\xee\x65\x54\xc1\xe1\x3e\xc9\xa7\x77\x00\x8b\xde\x86\x09\x11\x94\x41\x71\x49\x5e\x7a\x9f\x75\x37\x3e\xe5\xa0\x6d\x53\xac\xff\xb6\xb8\xfe\x31\xfa\xbf\x77\xd7\x57\x87\x29\x16\x72\x8e\x21\xe7\xd6\xb5\x75\xe0\x2a\xcd\x18\x05\xd4\xf9\x95\x28\x1b\xb1\xff\x8f\xbd\x77\x6b\x72\x1b\x39\xd2\x86\xef\xfd\x2b\x2a\x62\x2f\x24\x7d\x1f\x9b\xed\xb1\x63\xdf\xb0\x15\xb1\x17\x3d\xad\x96\x87\xb6\xa6\x25\xf7\x61\xc6\xfb\x2e\x37\xa8\x22\x50\x24\xe1\x06\xab\x20\x14\xd0\x2d\x7a\xed\xff\xfe\x46\x65\x66\x1d\x70\x24\x40\xb2\x25\xd9\x3b\x17\xbb\x1e\x35\x81\x42\x1d\xb3\xb2\xb2\x9e\x7c\x9e\x33\xb6\x56\x13\xbc\xc5\x7c\xcd\x36\x45\x91\xe9\xd7\xe7\xe7\xeb\xa4\xd8\x94\xcb\x69\xa4\xb6\xe7\xbe\x6b\xce\x79\x96\x9c\x2f\x53\xb5\x3c\xcf\x05\xe0\x58\xcf\xbe\x9b\xfe\xe6\x3b\x18\x99\xf3\xc7\xef\xce\xe1\xee\x6a\xba\x56\xff\xf6\xee\x37\xbf\xff\xed\xff\x31\x05\x67\xbb\x62\xa3\xe4\x6b\xba\x22\xed\x2d\xfb\x0c\xfd\xde\x73\x7c\xa5\xf6\x95\xdf\x4f\x7f\x1d\x56\x83\x1e\xdd\xaa\x58\xa4\xfa\xfc\xf1\xbb\x85\x1d\x98\x69\xb6\xfb\x05\xf9\xf9\xd5\x90\x9f\x0f\x49\xf1\x0b\xf2\xf3\xab\x22\x3f\x87\x7b\x38\xce\xc6\xd4\x44\xb3\xcd\xdf\x9d\x8d\xb4\xc1\xed\x7d\x76\xa8\x65\x73\x08\x71\xf9\x47\x6c\x11\x0f\xa2\x81\xfc\x18\x11\x72\x70\x47\x87\x8e\x20\xd6\x58\x3a\xfb\x4e\x67\x7e\x54\x1a\x32\xe0\x2c\x92\x08\xa8\x92\x31\xe8\x96\xf1\xa4\x0d\xcf\x49\x78\xa2\x63\xfa\xef\x39\x49\xbf\x4f\xcd\xf6\x4d\xcd\x3d\x90\xe9\x3b\xc5\xb7\x2d\xfa\x49\x3d\x59\x86\xef\x53\xf0\x62\x0f\x14\xa0\x73\x74\xbf\x38\x79\xa0\x2e\xb6\x5e\x1d\xd5\xd8\x70\x7d\x18\x8c\xee\x02\x49\xf5\xdc\x4d\x98\x93\xcd\xa5\x0f\xda\x8d\xc3\xf2\x14\x80\xba\x29\xd1\x21\x65\x65\x9e\x29\x2d\xf4\x94\xbd\xad\x49\x34\x79\x68\xe0\xcd\xdb\x4b\xf6\xdd\xef\x7e\xff\xdb\xb9\x7c\xd9\xb2\x6f\x83\xbd\x57\xf9\x9a\x90\x8a\xb0\x5b\x6f\xb9\x2e\x44\x7e\x9e\xaf\xa2\x73\xb4\x72\xe7\xe6\xfd\x33\xfa\xe8\x99\x5a\x9d\x39\xd2\xdf\x33\xe2\x3f\x9d\x6e\xe3\x71\x29\xfc\x95\xa9\x87\x7b\x0d\x6d\x34\x1a\x36\x25\x24\xfb\x51\x2b\x47\xef\x8e\x99\x24\xa8\x04\xa1\x56\x2d\xff\x01\x62\xd6\xaf\x1c\xc5\x18\xd7\xf6\x1b\x9e\xf3\xa7\x7b\x69\x9e\x86\xff\xdb\x4e\x91\xe7\x0c\x54\x58\x5b\x12\x1e\x47\xc6\x74\x7c\xfb\x62\xf3\xdb\x3d\x32\x1e\x90\x1a\x32\xf2\x27\x2b\x29\xd4\x0a\x70\x72\xe0\x09\x5b\x1c\x00\x44\x43\xcd\x4e\xeb\xd9\x0d\x72\x91\xe1\x06\x13\xaa\x27\xb7\x74\xf7\x91\x1c\xe2\xfb\xfa\xf9\x39\x38\xc4\x8f\xed\x77\x32\x28\x5f\xa9\xc3\x8f\x05\xeb\xe1\x52\x1a\x83\x5b\x30\xcf\xef\xbd\xa3\x74\x76\x00\x2e\x25\x43\xc1\x62\x64\xf3\x02\x27\x4d\x9c\x15\xea\x0c\x68\x61\x80\x6c\x04\x59\xfd\xbb\x80\x0b\x70\xb7\x3b\x66\x9b\x34\xcf\x0f\xa8\x27\x3a\xe6\x9f\x83\x8a\x92\x4f\xa2\x91\x24\x93\x40\x4f\x89\x94\x22\xa7\x5b\xab\xbd\x3b\xea\xc8\x9b\xdf\x70\x28\xfb\x31\x4f\x81\x20\x67\xc0\xb8\xee\x10\xef\x3c\x30\x02\x53\x06\xde\xe7\x46\x6d\x95\x71\x67\x54\xa9\x83\x1f\xf1\xf4\x02\x9b\x70\xa7\xef\xb5\xe5\x19\xd2\xc0\x7d\xbd\xd6\x98\xa5\x65\x7e\xc2\xa0\x5e\xf8\xd0\x28\x11\x8b\x65\x95\xb6\x7f\x4f\xfd\x1d\xdf\x7a\xff\xbc\x01\x5c\xc1\x16\x2e\x51\x40\xe3\x8e\x58\x94\x93\xbf\x99\x73\x8d\x99\x52\xee\xa4\xe0\x76\x6e\x84\xc1\x20\xdb\x61\x48\xa8\x6a\xbd\xf9\xce\x7c\xe4\x72\x3b\x72\x0c\x1c\x8c\x77\xc8\x00\x70\x89\xc0\x56\x8b\x68\x3d\x6b\x85\xb4\x76\xad\x4b\xab\x28\x17\x2f\x2c\x23\xe7\xb8\xaa\xde\xba\x02\x88\x7c\xb3\x59\x6f\x4f\x68\x04\xf8\x67\xec\x63\x34\x08\xd6\xb7\xe8\x80\xb5\xc8\xf1\x8b\x11\x24\x4c\xc6\xf4\x1d\x7c\x04\x27\x67\xa3\x07\x83\xb5\xd0\xd5\x81\xe3\x42\x6c\x7d\x11\xab\x36\xc0\x3c\x72\xc0\xf9\xfc\x18\x53\xcb\xc6\xe1\xd1\xbd\xf8\xe8\xe5\x33\x77\x99\x98\xb0\x65\x09\xbf\x5f\xbf\xbf\x0b\xf1\x10\x09\xb6\xf6\x2c\xda\x88\xe8\x01\x02\x26\xb8\xe5\xe1\x62\xb0\xd2\xa9\xcb\xdd\x5c\x7a\x71\xad\x42\xd9\xcb\xfd\x9d\xe3\x1b\x77\x9c\xfb\x2a\x67\x71\xa2\xb3\x94\xef\xe0\x1a\x55\x22\x12\xde\x5f\xc1\xba\x14\x12\x63\x0a\xf6\xc5\x8b\x87\x8f\xb4\x19\x95\x0b\xff\xde\xd8\xbe\xe4\xf9\x32\x29\x72\x9e\xef\x98\xef\xcc\xa6\x3d\x60\x5a\x6c\xb9\x2c\x92\x68\x2e\xb7\x82\xcb\x10\xf7\x46\xd7\xc8\xa6\x93\x63\x25\x88\x91\x77\xb5\x12\x51\xe1\x29\xfd\xc0\x79\x77\x3d\xb5\x6f\x0d\x8e\x6b\xbb\x5b\x79\xbd\x4d\xff\x21\x91\x98\x40\x9e\x6c\x01\x55\x49\x73\x88\xb6\xc6\x03\x2f\x6f\x40\x8c\x8d\xb6\x5c\x7b\x18\x84\x7f\xd9\x39\xc5\x96\xa2\x78\x12\x90\xb1\x4e\x29\x76\x6d\x3e\xfe\xd1\x84\xfc\xc7\xc9\x16\xb6\x0b\x3e\x06\x58\x2b\x5c\x60\x21\x5c\xcb\x51\xeb\xc8\x1a\x47\xce\x0b\x4a\xfa\x83\x68\xcf\x0b\x8a\x5b\xbd\x80\x6d\xda\x9c\x1e\xf3\x47\x11\xcf\x65\x95\xb8\x88\x7c\x46\xbf\xe0\x98\x97\x9a\x3a\x8d\xb5\xb1\x7d\x3c\x28\x96\x7f\x05\x64\x0d\x9e\xa6\xd1\xa5\xb5\xf5\x48\x5f\xb5\x4b\xe5\x3f\x83\xaa\xd2\xe0\x4b\x1e\xaf\x46\x45\x52\x32\xa4\x3c\x57\xc1\x53\xb8\x49\xe9\x68\x59\x90\xb3\xcd\x41\x4c\x29\x2e\xd9\x88\x74\xb6\x95\x31\x97\x36\x5f\x79\x55\xa6\xc8\xc3\xd9\x25\xc6\x45\x2c\x4d\x36\xb7\xe2\xeb\xe5\xd8\xb8\xb8\x1a\x0b\xd4\xbb\x1c\xec\x21\x80\xfb\xa2\xad\xb3\xb3\x5e\x48\x8d\x4a\x9a\x56\xb8\x07\x02\xcf\x6b\x51\xc0\x6e\x1e\x97\x29\xa6\xdf\x42\xc4\x1c\x18\x9f\x78\x9a\xb2\xa4\xd0\x73\xe9\x08\xaa\x90\x6e\x1c\x2c\xac\x0d\xa9\xc7\x74\xe4\x82\x4f\x40\xb1\x24\x3a\x0c\x7e\x58\x12\x25\x45\x03\x24\xbd\x0b\xc5\x2e\xb2\x4c\x70\xcc\x16\xc3\x61\x9b\xcb\xf0\xcc\x55\x1f\x04\x4a\xad\x02\x71\xd5\x53\x64\x39\xf5\x60\xde\x41\x91\x76\xf4\x90\x4c\xd9\x05\xb6\x2e\x72\x1a\xfe\x8c\x6a\x4b\x19\xea\x84\x65\x34\xa7\x9a\x42\xdb\x18\xb9\x3f\xb7\x66\x3c\x2f\x92\xa8\x4c\x79\x9e\x02\xeb\xfb\xaa\x4c\x59\xb2\x0a\x24\x39\x61\x0c\x90\x9e\xc8\x0c\x57\xa4\x60\xaf\xb6\x51\x72\xcd\xb7\x22\xc8\x8c\xa6\xf0\x4e\x1a\x60\x28\x90\x73\x19\x2f\xe7\x4d\x59\xaf\xa6\xec\x4d\x5d\x1a\x17\xd6\x44\x40\x6b\x98\x68\x34\x7f\xae\xbe\x41\x52\x1f\x4a\xec\x26\x2b\x73\xa4\x7c\x11\xac\xba\x2e\x91\x79\xae\x1f\x46\x02\x34\x2c\x39\x7e\x3f\x2e\xb7\x35\xa9\xf7\x0e\x84\xc8\x2b\xb0\x0d\xb7\x20\x3a\x2a\x68\x77\x85\x91\x95\x0c\x29\x21\x0f\xa8\xe8\xcf\x81\xd2\x77\xbd\xb2\xdb\x1e\x05\x50\x18\xc7\x91\x55\x0d\xf4\x74\xc6\x57\x34\x98\x39\x21\x1c\x67\x48\xcf\xae\x79\x31\x16\x9b\xe3\xd2\x5d\xc6\x57\xb4\x15\x07\xd5\x59\xcd\xfd\x91\xa6\x9f\x2b\x02\x3c\xcc\xd4\xca\x9c\xf2\x05\xe2\xcc\xd4\x2a\x30\xc1\xb4\xdf\x90\x52\x0f\x90\x9f\x3b\x9b\xb0\x14\x2c\x4d\xe4\x83\xa5\x3a\x30\x13\x74\xc2\xb8\x2f\x1d\x6c\x04\x76\x32\xae\xb9\x0e\xcf\xab\x4d\x2a\xe0\x08\x67\x6c\x58\xc2\x60\xfb\x09\xd9\xd6\x64\x94\x1a\x84\x6d\x70\x5b\x3b\x86\x0f\x4b\x2f\xb2\xd9\x9d\x79\x2c\x9c\x19\xb7\xc1\x00\x63\x19\xc8\xb9\x77\xf6\xef\x87\x4d\x15\xb3\x37\x42\x58\xe7\xfe\xfa\xcd\xd5\xdb\xd9\x75\x55\x0d\xe7\xcf\xf7\x57\xf7\xd5\xbf\xdc\xdc\x5f\x5f\xcf\xae\xff\x10\xfe\xe9\xf6\xfe\xf2\xf2\xea\xea\x4d\xf5\xb9\xb7\x17\xb3\x77\xb5\xe7\xcc\x9f\xaa\x0f\x5d\x7c\xff\xfe\xa6\xa6\xbf\x63\xc5\x73\x82\x3f\xdd\xcd\x7e\xbc\x7a\xb3\x78\x7f\x5f\x91\xf0\x79\xf3\x9f\xd7\x17\x3f\xce\x2e\x17\x2d\xf5\xb9\xb9\xba\x7c\xff\xd3\xd5\xcd\x1e\x05\x1e\xdf\xde\xd6\x2e\x3d\x05\xd8\xea\x60\x3d\xa6\x0b\xb6\xca\x13\x21\xe3\x74\x87\x58\x70\x7b\x0e\xac\x41\x4f\xc3\x9d\x2a\xd9\x0a\x55\x1e\x03\xe9\xbe\xdb\x08\xa6\x1e\x45\x0e\xac\x0c\x58\x1a\xa5\x70\x72\xfd\xd0\xc9\xd9\x57\xe4\xcd\x18\x7a\x6f\xe6\x4a\x91\xef\x5c\x6e\x54\x5f\x75\x3c\xa3\x0f\x7d\x84\x65\x22\xef\xab\x0b\xf8\x11\x79\x99\x15\xc9\xb2\x1b\xa4\x3f\x90\xe9\x66\xfc\x49\x15\xf9\xe7\xda\xc9\x3a\xae\xdb\x0d\x63\x05\xab\x7e\x0c\x4c\x17\x4a\x38\x54\x66\xcc\xbd\x6d\xa1\x8d\x59\xb9\x4c\x93\x88\x25\x71\x3d\xfa\x80\x29\x55\x18\x60\xad\xd3\x54\x66\x22\x07\xc7\xce\xf8\xcb\x59\x2e\xce\x78\x59\x6c\xac\x02\xba\xcb\xac\x43\xda\x48\x11\xe5\xa2\x08\xd4\xfa\x49\x5f\x2a\xf8\x12\x54\x86\x32\x8a\x63\x20\x2f\x99\x06\x94\xe1\x1d\x11\x75\x7c\x13\x4b\x1f\x11\x52\xc4\xe7\x7b\xbb\x86\x6a\x9c\xe8\xba\xb8\x30\xb8\xb0\xf8\xa3\x55\xa9\x32\xed\x36\x96\xda\xa9\x34\xe1\x20\xdb\x5c\x82\xf6\x66\xec\x9b\x63\xe1\x44\xa9\x42\xff\xa9\x74\xfa\xe9\x32\x17\xb0\x89\xd0\xc5\xb9\x3d\xed\x03\xd0\x83\x72\x0f\x20\xe5\xc0\x1c\x6c\x96\x62\xc3\xd3\x15\xc6\xf0\xcc\xd0\xf8\x75\xd5\x9c\xa2\x77\xea\x41\xc8\x1b\x1c\xb0\xaf\x62\x0e\x25\x9e\x13\x7c\x8e\xb9\x8b\x9f\xf8\x80\x9f\xa9\xa3\x9d\x55\x36\xf7\x0a\x45\xfa\xd1\xab\x0e\x7e\xc6\x04\x08\xcf\x20\x6b\xd3\xb6\x56\xab\xe4\xb3\x29\x70\x2e\x45\x2b\x87\x26\xa0\x6b\x2c\xdb\x8f\xb3\xcb\x80\x24\x42\xca\x94\x07\x21\x41\xdf\x0a\xe5\x6f\xf7\xce\xd9\x71\xd1\xe6\xe6\x58\xf4\x84\xbf\x21\x42\x96\x54\x64\xbf\xc2\x3b\x11\xdb\x4f\x90\x64\xf9\x20\xa6\xec\x0d\x11\x41\x98\xbf\x5c\xbe\x9b\x5d\x5d\xdf\x2d\x2e\x6f\xae\xde\x5c\x5d\xdf\xcd\x2e\xde\xdd\x0e\x5d\x7e\xa7\xc8\xd3\xa9\xad\xbe\x7a\xaa\x94\xb3\x10\xe7\xb4\xf2\x7c\xba\xa8\x6b\x94\x5f\x76\x30\x24\xfb\x6b\x9f\xc4\xd9\x22\x4e\x74\x64\xb6\xbf\xdd\x42\xc8\x18\xc8\x87\x0f\x9a\xaa\xed\x45\xd5\x5b\xe1\x9e\x60\xee\x09\x6b\x41\x70\xb7\x7b\xb4\x33\xda\xfd\x0e\x18\x35\x08\xda\xe5\xc2\x2c\xfe\x78\x2e\x83\xdd\x66\xba\x5f\x71\xc2\x14\x77\x5c\xdb\xaa\x45\xd4\xdb\x84\xf5\x4d\xb4\x2e\xb9\xb1\x8f\xf6\x31\x00\xe8\x75\xf4\x0a\x31\xc2\x85\x0c\xc8\x49\xa0\xde\xc9\xcc\x49\x7e\xcb\x65\xcc\x0b\x95\xef\x3a\x9a\x38\xcc\x78\x86\xcb\xa6\x6a\x42\xc3\x2d\x5b\x0a\x11\xdb\x51\xc0\x47\xb9\xac\x4f\x25\xe4\x49\xbe\x7b\xff\xa7\xab\xeb\xdb\xc5\xd5\xf5\x4f\x8b\x0f\x37\x57\x6f\x67\x7f\x71\xb8\xc1\x8c\xeb\x36\xb5\xbe\x2c\x17\xc6\xba\x58\xda\x89\x56\xfb\x82\x12\x7a\xb6\x1c\x92\x4d\x4a\x56\x73\x69\x2d\x4b\xee\x8b\xdf\xe4\xaa\x5c\x6f\xda\x0b\xaa\xd7\xf2\xc3\xc5\xdd\x0f\x07\x55\x13\x48\x81\x50\x67\x0b\x57\x5b\x13\x3f\x99\xac\xc8\xee\x21\xe8\xb2\x56\x3d\xa0\xb6\x82\x47\xdb\x62\xf2\x1d\x16\xed\xa0\xd3\x4b\xd3\x68\xf5\x3a\xff\x2d\x8f\x77\x4d\xa0\xbb\xc0\x6e\x56\xb6\x11\xc0\xf3\xa2\x5c\x63\xa3\xb4\xd7\x2d\x7f\xab\xec\x60\xbf\x39\x4b\xc5\x7a\x2d\x62\x9c\x5e\xf5\x82\x29\x62\x45\x26\x30\xf2\xfb\x7a\x5b\x2f\x92\xa0\xda\x11\x1b\xb3\x43\x47\x0d\x37\xe0\x1f\xdc\x2b\xed\xb6\xe2\xd2\x8a\x36\x47\x4a\xea\x82\xcb\x8e\x6b\xd7\xc7\x26\x9e\x71\x90\x29\x7a\x9f\x33\x97\x2a\x44\x01\x12\x1b\x60\xf7\xeb\xe0\x90\x0b\x27\x12\x8e\x93\x14\xf1\x08\x04\xe5\x02\x95\xe9\x96\x41\x80\x48\xe3\x8d\xb5\x88\xcf\x1f\xdc\xe8\x3d\x3a\x11\x13\x12\x04\x46\x51\xb9\x87\xa0\xda\x18\x0d\x02\x39\xac\x4e\x18\xed\xa8\x01\xa9\x7d\xf9\x27\xea\x7a\x3c\xb5\x56\x03\xb3\xdc\x72\x8d\xb9\x01\x72\xce\xdb\xf8\xf8\x56\xc5\x0f\xf7\x25\x67\xb9\x8a\xcb\xc8\xb2\xb1\x40\xb1\x1e\x0f\x42\x01\x2d\xbb\xc1\xc6\xec\xcc\x0c\x33\x1d\x52\x44\x7c\x06\x48\xef\xb9\xec\xba\x7c\xb1\x36\xa0\x23\xcc\xf5\xc1\xee\x5a\xc7\x8c\x7d\x4b\xef\x77\x2f\x41\xdb\xd9\xc3\x32\x2e\x99\x7d\x1c\x9c\xbd\x0e\x38\x0d\x8d\xcb\x92\xe3\xcd\x6a\x75\x3b\xee\x22\x5f\x70\x56\x75\x1c\xea\x67\x18\x68\xa2\x9a\x4a\x81\x5b\xe4\x86\x6b\xf4\x5c\x8b\x68\x53\xad\x38\xb4\xa6\x4a\x58\x56\xaf\xae\xf3\x04\x8f\x8b\x10\x0c\xba\x5f\x99\xe0\x99\x3a\xd1\x54\xfb\x50\x7c\xca\x29\xe9\x8d\x9b\xf8\xa1\x73\xe4\x0e\x2f\x68\xf7\xc0\x60\xa5\xbc\x94\xd1\x86\x65\x29\xc7\x2c\xe3\x0d\xd7\x38\xa5\x2d\xc8\x80\x2f\x93\x34\x29\x80\x20\x05\xef\xbe\x6a\x3d\x6c\x4e\x34\x3c\x7f\xb0\x9c\xa4\xdc\xb3\xe1\xf4\x4d\xfa\x23\xc1\x9c\x5e\xb0\xfd\x4b\xc2\x39\xfd\x92\x0d\xde\xe8\xbd\x39\xf3\xd3\x92\xa0\x9c\x7e\x38\x8c\xc5\x83\x69\xe9\xdb\x32\x6e\x64\xa9\xc4\x0f\xf5\xd7\x2b\xfd\xdd\xb2\x51\x8f\x87\x32\x10\xd9\xf6\x08\x33\x5f\xa7\xe2\x6e\x5d\x59\xab\x54\xf1\x0e\x39\x58\x5b\x36\x32\x6b\x77\x95\x1d\xab\x72\xd9\xc5\xe5\x8a\xb5\xea\x2f\xbd\x2f\xee\x6f\xd7\xed\xa9\xe2\x82\xa1\x01\xe4\x85\x28\x92\x71\xa1\x8d\xa0\xd1\xbc\x10\x67\xf0\x7a\x7b\xe1\x94\x7a\x36\xb8\xcd\x8d\x89\xe6\xf5\x1d\x1c\x63\x2c\x80\xcc\x9a\xb3\xeb\xcf\x25\x37\xa6\xe1\xfd\xea\x16\x19\x3b\x8e\x99\x64\x45\xd2\x9c\x61\xed\x2b\xb1\xfe\xd5\xbb\xea\xa5\x4a\x38\x07\x06\x67\x6b\xb6\xb5\xe6\xd6\xbc\x3d\x7c\x41\x56\x35\xd3\xb3\x3c\x51\xc0\xab\x41\x4a\xed\x3d\xa4\x77\xad\xdf\x3d\xa2\x27\x3f\x95\xa2\x14\x66\xee\x2f\xcb\x78\xdd\x8c\x6d\x8e\xf0\xce\x7c\x93\x36\xea\x89\x6d\xcb\x68\xc3\x6c\xe1\x2c\x16\x29\xdf\x55\x9a\x06\xfe\x52\xa1\x52\xa0\x91\x3d\x90\xd3\x32\x2a\x75\xa1\xb6\x00\xc2\xf4\xe5\xe6\xa5\x84\x09\xcf\x78\x51\xe4\xc9\xb2\x2c\x5a\x01\x5b\x15\x8e\xab\x03\x2f\xb4\x6e\x3f\x5c\x5d\xce\xde\xce\x6a\xb7\x49\x17\xb7\x7f\x0a\xff\xfd\xf3\xfb\x9b\x3f\xbd\x7d\xf7\xfe\xe7\xf0\x6f\xef\x2e\xee\xaf\x2f\x7f\x58\x7c\x78\x77\x71\x5d\xb9\x73\xba\xb8\xbb\xb8\xbd\xba\xdb\x73\xad\xd4\xfc\x6a\xf7\x40\xf0\x80\x82\xcb\xc2\x42\x2d\x17\xb1\x3d\x5d\xd2\x57\x5f\xb3\x0b\x4b\x48\x56\xa1\xcc\xb3\x57\x83\x70\xf3\x8e\xca\xbc\x74\x83\xf8\x86\x17\x9c\x94\xce\xa7\xec\x82\x59\xc5\x7a\x00\x43\x6b\xe3\x2c\x10\x5b\x93\x19\x1d\x2c\xc2\x78\x0c\x91\x3f\xb9\x79\xb1\x35\xb5\x22\x9e\xb4\x54\x84\xb4\xdc\x36\xf3\x67\x2e\xaf\x1e\x85\x2c\x4a\xe0\x0c\xe6\x69\xca\xac\xc0\x3a\x3d\x10\x64\x35\xdb\x5a\xea\x64\x9b\xa4\x3c\xf7\xba\x58\xef\xa9\x2c\x70\xd8\x6d\x5d\x1d\x89\x4d\x33\x65\xd6\x1e\x1e\xee\x67\x0c\xea\x7d\xf9\x6e\x06\x2e\x50\x54\x58\xd1\x07\xfb\xf1\xb9\x44\x1e\x2e\xfa\xe2\x96\x03\x40\xbf\x50\x14\x4f\xc3\xcf\xd3\xc3\xdd\x13\x51\x1f\xb3\x88\x6d\xe4\xf9\xb9\x40\x40\xae\x92\xf6\x3f\xae\x64\x91\xef\x06\xfb\x35\x77\x90\x91\xaa\xc1\x37\x25\xbc\x4f\x55\x2b\x0b\xc3\x1d\xcc\x96\x7e\x0d\xce\x8e\x05\xa3\x51\x34\xde\x05\xdd\x05\x30\x13\x77\xf8\xdf\xa9\xd9\x84\xbe\xd5\x7e\x08\x49\x43\xa0\x17\x96\xaa\x94\xb1\x26\x64\xd2\x36\x91\xe7\x5b\xfe\xf9\x95\x6d\x29\x26\xe1\x3b\xc6\x7a\x20\x58\x12\xa9\x39\x89\xec\x8c\x91\xeb\xef\xae\xb9\xec\xe9\xaf\xfd\xde\xa2\xb5\xac\x70\xec\xf1\x67\x54\xc4\x58\x3d\x8a\x5d\xdb\xf8\x35\x54\x47\x10\xc7\x45\x0b\x1e\x0a\xc9\x72\x61\x1e\x74\x00\xae\x14\x71\x79\xee\xdf\x00\xd4\xae\x28\xa3\xb5\xdb\xee\xf0\x96\xf7\xa8\x65\xd3\x7a\xbf\xfc\x0c\xb2\x31\xf4\x25\x33\x66\x78\xdb\x6c\x03\x9d\x04\x4c\xa7\x6b\x34\x33\x58\x7f\x55\x4b\xb6\x82\x2c\x0d\x52\x3e\xce\x05\x04\xb6\x61\x28\x2c\xcf\x31\xd0\xf0\x34\xae\xb0\xed\x14\x48\x85\x86\x70\xaf\x34\xc7\x2d\xf1\xa9\xa4\x1b\xbb\xef\x7e\x3d\x6e\x9f\x2d\xf2\x1d\xb3\x9c\xfa\x61\x96\x08\x25\x49\xd1\x9e\x0b\xf5\x2a\x65\xd2\xc6\xcd\x75\x53\x4a\xb3\x15\x9f\x02\xec\x30\xfc\x36\xab\xf6\x51\xfa\xe7\xde\x44\x0a\x1b\x88\xcd\xf1\xf9\x67\x23\x33\xfc\xa9\xc6\x61\x48\x9f\x03\xd8\x2e\x95\x1e\x6e\x68\x4b\x1e\x3d\x3c\xf1\x3c\xc6\x58\x21\xa0\x0f\xa6\xec\x07\xf5\x24\x1e\x45\x3e\x61\x91\xc8\x0b\x4e\xf4\x46\x1a\xae\x5f\x61\x41\x51\x39\x73\x09\x28\x76\xe4\x8a\x92\x20\x1a\x5d\x24\xeb\x8d\x39\x4f\x06\x97\xe7\x2a\x37\xe6\xa8\x40\xee\xb8\x4c\x44\x44\x28\xd3\xd1\x01\xab\x94\x3f\x36\xf9\x9a\x0e\xc9\x84\x67\x33\x97\x8a\x67\x6f\xa7\x2c\x77\x7c\x1f\xdc\x81\x3a\x8c\x8c\x26\x52\x80\x4c\xd8\x5a\xa5\x5c\xae\xa7\xd3\x29\x13\x45\x34\x7d\x35\x6a\xa2\x53\x81\xe1\x7d\x97\x83\xa0\xa6\x4a\x69\x91\xee\x1c\x09\x8a\x4b\x12\x30\xdd\x0c\x39\x22\x3a\xc1\x90\x47\xcb\xf4\xbf\xad\x67\xd4\x7f\xd9\xd0\x79\xfb\x49\x75\x74\x0a\x5a\x47\x39\x20\x45\x33\xa2\x24\x7c\xbe\xfd\xe4\x75\x50\x4a\x65\x07\xcf\xa9\x92\x63\xf3\x04\x7f\x52\x5d\xc2\xca\x07\x71\x93\xb5\x96\x44\x44\x0e\x07\xe5\x56\x75\x45\x2c\x6a\xe9\x6e\x47\x64\xba\xf5\x24\xad\x8d\xcc\x57\x6b\x59\x77\x2d\xcb\xa2\x36\xdc\xa3\x97\xc5\x7e\x76\xfc\xd6\x06\x8d\xcc\x07\xf4\x89\xbb\x63\x5c\x27\x4c\x29\x4a\x77\x70\xe2\x72\xd9\x81\x10\x59\x8e\x83\xc8\x78\x25\xf0\x0f\x79\x2a\xfe\xe6\xc0\x11\xec\x04\x17\x05\xba\x50\x39\x5f\x0b\xb6\x15\x71\x52\x6e\x5b\x8d\x8d\xab\xee\x31\x68\x2f\x95\x96\xdb\x6e\xaa\xb3\x63\x1d\x68\x5f\x49\xfc\xaf\x4b\xf8\xdc\x60\x07\xda\x4b\x88\x5b\x91\x12\xaa\x2f\x86\xc1\xa9\xaf\xcd\x4e\x99\x27\x1a\x48\xf9\x0e\x49\x0b\x73\xc5\x60\xd1\x70\x5b\xb7\xcb\x30\xfc\x5a\x19\xdd\x33\x7b\xbb\x43\xaf\x68\x1c\x55\xb8\xe2\xeb\xde\x14\xea\x18\xb2\xd1\x63\x04\x12\x18\x07\xdd\x6b\x82\xdb\x18\x90\x51\x13\xc8\x05\x0a\xa4\x9b\xf8\x42\xb1\x95\x4d\x34\x7a\x10\x01\x75\x53\x0c\x34\xd5\x4f\xc8\x03\xf2\xa7\xdf\x69\x7b\x67\x4f\xb0\x0a\xef\xb1\x14\xfe\x23\x78\x37\xf0\xf8\x9d\x45\xd3\x60\x0b\xb1\x08\x20\x58\x8a\xb9\x2c\x5a\x0b\xf0\x60\x33\x28\x0b\x5f\xf9\x89\x97\x69\xfb\xe3\x54\x3e\x3c\x8a\x92\x37\x17\x3f\xdf\x32\xec\x6a\x22\x34\xce\xfb\x2a\x1a\x14\xb2\x1f\xcf\x03\xdd\xb5\x38\xc0\x13\xac\x8c\x03\x76\xba\x65\xb4\x36\xdd\x2e\x8a\x68\xe3\x3d\x8f\xaa\x76\x2d\xe9\x99\x51\x3b\xb7\x9e\xa2\x19\xa1\x92\x21\xe6\x2c\x59\x4b\x15\xaa\x0b\x28\x29\xe0\x92\xc6\x18\x20\x15\x16\xcb\x92\x62\x3f\xb0\x67\x24\xab\xd2\xbe\xa9\x56\x28\x04\x6c\x50\x3b\x2b\x77\x6d\x70\xa4\x48\x90\x8b\xc5\xa2\x22\xf1\x4c\x44\xf2\x58\x75\x62\xe1\x6a\x76\xfb\x5c\x56\x3f\xd5\xe8\x24\x8b\xbc\x49\x72\x81\x7c\xa0\xda\x78\x6f\x45\xf2\x68\x16\x6a\x73\x5a\xbb\x09\x0a\x16\xa0\x39\xf7\xe6\x12\xab\x1d\x90\x8a\x3e\x88\x9d\x0e\xb5\xb8\x68\x46\xb1\xae\x09\x99\x98\xf6\xd0\x78\xed\x1f\x0a\xe8\xb8\x45\xa0\x2d\x3e\x6c\x2f\xc3\x8f\xfe\x68\x5e\xee\x81\xf4\x35\x0a\x37\x73\xd0\x67\x72\xf9\x98\x22\x99\x09\xdf\xcf\x34\x86\x1e\xb5\xd3\xa2\x3b\xef\xc3\xb3\x70\xf0\x35\xe7\xdb\xb9\x24\xde\xe1\x60\x93\x33\x06\xa7\x39\x6c\x94\x5e\x8a\x6c\xa7\xbb\x0a\x35\x06\x50\xc3\x59\x9a\xbc\x76\xb9\x7f\x2b\xe5\x38\x97\x24\x98\x0f\x8a\xf7\x14\xc3\x6b\xfd\xe0\x81\x50\x30\x1a\xdc\x4e\xf8\x97\x3f\xc2\x50\xc7\x11\x3b\x1a\x8a\xba\xe1\xe9\x27\x12\xa6\xfb\x2e\x64\x2b\xf2\xca\xe2\xae\x6e\xaf\x2e\x6f\xae\xee\xbe\x18\x3c\xcc\x62\xb3\x46\xe3\xc3\x6c\x3d\xdf\x5c\xbd\xbd\xb8\x7f\x77\xb7\x78\x33\xbb\x79\x0e\x80\x18\xfd\x74\x00\x42\xec\x96\xe8\xcc\x2f\x95\x2c\xc4\xe7\xa3\xf6\xe4\xbc\x94\x0b\x3e\x22\x53\xc1\x49\x06\xf4\xb9\x3b\x58\x68\x93\x8e\xdd\x71\xa5\x13\x37\x1f\xee\x68\x8e\x7d\x7d\xe5\x83\x86\xab\x24\x4d\x21\xcd\xd1\x85\xd7\x29\x29\xc8\x74\x2a\xd8\x1f\x4b\x47\x48\x36\x75\x2e\x97\x15\x3e\x7a\x08\xf9\x6d\xcc\x21\x18\x13\x1c\x33\xd3\x01\x79\x02\xe9\x63\x7d\x8c\xed\xeb\x44\x0a\x5f\x0d\x14\x60\x2d\x25\xeb\xa4\xd9\xa5\x41\x7c\xce\x2c\x56\x72\xbc\x86\xfa\x9a\x76\xc6\x55\xe6\xa7\x75\x3f\xed\x8f\xae\x85\xb8\x88\x13\x89\x8e\x69\x65\x35\xdf\xb6\x4f\xdd\x73\xbf\x04\xa0\xdf\xcd\x48\x72\xb8\x83\x00\x8d\x53\x3f\x90\x34\x10\xa8\x95\xe2\x2f\x27\x1e\x12\x44\xd1\xa8\x55\xad\x9f\x8d\x29\x34\x7d\x9d\xc0\x4d\x05\x27\xe6\x86\x28\x2d\x75\x21\x72\x0a\x9b\x5c\xfc\x7c\x3b\x97\x28\x84\x4f\xbb\x10\xe9\x69\xe0\x27\x10\xc3\xa1\x2a\xdf\xb7\x1e\x4a\x68\xc1\x5e\x62\x8c\x7a\x2b\xb8\xd4\xa8\x3f\x9d\xa6\x22\xf7\x33\x03\xeb\x23\x44\x4c\x1a\x64\x40\x55\xe9\xdf\x27\x09\x62\x05\xab\xd6\xd4\x97\x7e\x25\x11\xde\xfa\x7c\xea\xca\xa2\x05\x80\xe8\x73\xce\x9c\x96\x3c\x85\xa1\xb3\x88\xb0\xb5\xad\x93\xa8\x9a\x35\x30\x68\x2e\xdd\x61\x71\xbf\x4c\xa5\x13\x4e\xa5\x01\xfb\x7a\xb8\x4b\xb0\x8d\x32\x06\xd4\x49\x61\xf8\x6b\x66\x97\xc5\x9f\x02\xfe\xc9\x74\x63\xeb\xae\x53\x13\x5c\x3b\x62\xd7\x41\x85\xb5\xe3\xe0\x9c\x17\x2d\x74\x21\x5e\xd9\xc7\xde\xed\xf4\x6a\xb9\x3d\x0f\x2d\xd7\x85\xc5\xdb\x49\x55\xd8\x04\x7b\x07\x71\x23\xbc\x9e\x79\xc0\x31\x3b\xf4\xd6\x91\xd8\x12\xac\x97\xb2\x38\x52\x0f\xe9\x2e\xc4\x05\x56\x92\x28\xb1\x16\xa1\xa4\x2a\x21\x88\x3d\xc1\xc1\x98\xc9\x77\xb8\xe2\x5e\x75\xce\x39\xb2\xbc\x83\xc0\x0e\xd7\xef\xaf\xaf\x42\xa8\xc2\xec\xfa\xee\xea\x0f\x57\x37\x95\xf4\xdb\x77\xef\x2f\x2a\x29\xb4\xb7\x77\x37\xb5\xcc\xd9\xef\xdf\xbf\x7f\x77\xd5\xc0\x3c\x5c\xdd\xcd\x7e\xac\x14\xfe\xe6\xfe\xe6\xe2\x6e\xf6\xbe\xf2\xdc\xf7\xb3\xeb\x8b\x9b\xff\x0c\xff\x72\x75\x73\xf3\xfe\xa6\xf6\xbd\xfb\xcb\x7e\xf4\x44\xa5\x19\xed\xe1\x1f\x7f\x39\x1b\xf0\x06\xb6\x2e\xe3\xaa\x22\xe1\x11\xab\x78\x20\x08\x6b\xdf\x74\xb4\xd9\xb5\x71\x48\x27\x8e\x0b\xc3\x54\x75\xd4\xac\x3b\xbd\x84\x62\xa5\xeb\x32\x7e\x9c\xd9\x33\xbb\xda\xe2\x14\xa0\xb8\x5e\x07\xd0\x7d\xa5\x16\xb8\xd5\x05\xa4\x20\x61\xd7\x66\x70\x83\xb5\xe6\x9d\xf2\x26\x32\x7e\xf6\x9a\xda\x6f\xec\xab\xa7\xe7\xa9\xd9\x43\xf7\x71\x2a\xf2\x82\xbe\x4a\x07\x1f\xb3\xb9\xc1\x49\x6c\x1d\x05\xfb\x63\xb0\x71\x43\x33\xcc\xcc\x09\xa6\x63\x97\xd6\x5d\x7b\x8e\x43\x3f\xb5\xd4\xd8\xfa\xd3\x47\x9a\x75\xaf\x31\x2b\x8c\xa8\x37\xf0\xc1\x8c\xa9\xf7\x1d\xd7\x0f\x63\xeb\x4d\x1f\x69\xd6\x1b\xdc\xbe\x83\xea\x0d\x01\xef\xa2\x9d\xf5\x62\x84\x11\x0b\x8b\xa9\x56\xcf\xa5\xe4\xba\x47\x02\x49\xc9\x61\x75\x34\x0b\xe0\x79\x8f\x97\x19\x1f\x7e\x91\x01\xb5\x71\xcb\x95\xd7\x28\x93\x6f\xe1\x57\x68\xe1\x32\x17\xfc\x21\x56\x4f\x34\x1e\x75\x64\x28\x1b\x64\xcd\xab\x1d\x64\x6c\xb8\xdd\x22\x40\x88\xda\x7c\x12\x51\x6a\xbe\x78\x80\xc9\x25\x44\xfa\x8b\x3e\x58\xa0\x85\x58\xe7\x0d\x01\xa6\x16\xe9\x47\x67\x2e\xd1\x9b\x6f\xd3\x53\x34\xa3\x6a\x6a\x44\x99\xfe\xd0\x54\xe7\x43\xe3\xe5\xba\x0e\x06\x96\x72\x19\xca\x1c\xc0\x74\xcb\x1c\xce\x4c\xd0\x21\x89\x84\x60\x72\x6e\x0e\x3c\xb9\x88\x12\x2d\x02\xc5\x9b\xd6\x1d\xfb\xd3\x71\xfc\xf8\x05\x2f\x5a\xc3\xae\x83\xe3\xe1\x3c\x2a\x4a\x9e\xb2\x4f\xa5\xc8\x77\x44\x2f\x86\xb1\x4a\xfc\x4b\xc4\x25\x26\x4d\x14\x62\x9b\x41\x12\x6e\x88\xf6\x9f\xcb\x9f\x01\x28\x81\x43\xf0\x42\xb3\x3f\x00\xe4\xc1\x3e\x4c\x9b\xf0\x96\x17\xb0\x17\xff\x19\xbf\xe1\x7e\x9b\xce\x65\x45\x41\x22\x78\xab\x22\x26\x31\x9d\x4b\x4b\xe1\x1e\xab\x48\x4f\xe1\xc4\x37\x55\xf9\xfa\x9c\xe4\x45\xcd\x64\x57\x0f\x4b\xa5\x1e\xce\x85\x3c\x87\x98\x54\x71\xce\xcb\x42\x9d\x03\x5c\x0a\xc7\x5f\x9f\x5b\x15\x42\x2b\xe3\xa8\xcf\x37\xc9\xa3\x80\xff\x37\xdd\x14\xdb\xf4\xdf\x74\xb6\xf9\x7c\xb6\x4e\xf3\x33\xf3\xee\x59\xf8\xee\x99\x7d\xf7\xcc\xbe\x7b\x66\x5e\xc3\xff\x97\xed\xf0\x7a\x47\x7c\xe6\x66\x2f\x9b\xcc\x65\x22\xb5\xc8\x0b\xf0\x7e\x9e\xf2\xa4\xf0\x52\x1d\x3b\xf6\xe2\x7f\xfe\x87\x4d\x73\xfe\x84\xe9\x73\x6f\x78\xc1\x3f\x60\x7c\xf1\x1f\xff\x78\x01\x17\xaa\x98\xdf\x92\xf1\xfc\x53\x29\x8a\xb9\xd4\xc2\x2c\x42\xf6\xff\xcd\x25\xdc\xc0\x6e\x77\x8b\x02\xe3\xae\x18\x83\x8c\x35\xfb\x0f\x2c\x73\x86\x54\x7b\xb1\x36\x25\x75\x20\xeb\x13\x9e\xb6\x08\xd7\x76\x84\xe8\x3f\xa5\x6f\xe8\xf9\x11\xcb\xfa\x53\x5a\x5d\xd5\x56\x2c\x42\x7f\x4a\x61\x03\x4d\x15\xb7\x60\x2d\xe6\x26\x2f\x9c\x93\xa9\x72\x6d\x6b\xa4\x01\x0d\x78\xd6\x6b\xfa\xf6\xb5\x72\x8b\x74\xbf\x36\x72\xdf\x30\x23\x70\x57\xe0\xef\x21\xe0\xf6\x3c\x31\x2b\xe4\x16\x23\xa1\xe0\xb9\x61\xcb\xc1\x27\xa5\xab\x73\x57\x1e\x06\x2e\xf4\x6f\x5f\x9f\x9f\x4f\xd8\x5a\xc3\xff\x2c\x3f\xc1\xff\x00\x7a\xe8\x54\x8c\x95\x8d\xce\x74\x40\xb8\xe6\x28\xef\x1f\x89\x53\xa0\xe8\xbe\x04\x49\x72\x6d\x9a\x7e\x5f\xca\x38\x15\x3e\x1b\xb0\x72\x25\x92\x2a\x2b\x9c\x8d\x81\xb1\xba\x1c\x05\x8c\xf1\x52\x44\xdc\x18\xbe\xc6\xb7\x11\x5c\xaa\x56\x85\x90\x18\x0d\xcb\xbd\x5a\x15\xc7\xc8\x15\xb8\xc5\x00\x85\xe4\x05\x41\xce\x05\xfc\x11\x3e\x02\xac\xc3\x93\xfa\x4f\x6c\xa7\x4a\x22\xd0\x05\x5a\xc8\x58\x44\x29\xb0\x94\x5b\xb2\x0f\x96\x8b\xa2\xcc\x25\xe3\x2c\xe3\x32\xe6\x1a\x66\xe0\x2a\x87\xdb\xce\x9c\xf1\x66\x45\x27\x08\xc7\x55\x65\x01\x14\x36\x88\x2c\x08\x7b\x02\x19\x8e\x83\x3a\x4f\x82\x4a\xe0\x9e\x00\x44\xab\x8d\x17\xa7\x73\x69\xf5\x94\x08\x0b\x87\x91\xb2\x48\x65\x3b\x22\x28\xa9\x77\x7a\x62\x23\x67\xd4\xdd\x13\x8f\x37\xa9\x3f\x3b\x61\x49\xf5\x6a\x0d\xc8\x94\x8b\x40\x11\xd6\xaa\xd6\xbe\x14\x32\x52\xb1\xc8\xf5\x2b\xb3\x0c\x13\x77\xee\x40\xff\x21\xd1\x7e\x30\xc0\x4a\x99\xcd\x8d\xa2\x85\xa6\x78\xa7\x3a\x62\x7a\xa7\x42\xbf\xdb\xe6\xe7\xec\x5f\x2a\xdf\x3a\x0a\xa6\xad\xbe\xf4\x9f\x5f\x14\x11\x13\xe2\x3a\xed\x99\xf3\xf0\x10\x04\x2e\xd9\xd0\xe2\x62\xa1\xe8\xe3\x90\x73\x62\xe5\x37\x93\x02\x14\xbe\x72\xa1\x8b\xb9\xa4\x1d\x78\xc2\x56\x82\x1b\x3f\x6f\xc2\x22\xfd\x88\xc6\x18\xb7\xfb\xe2\x49\x79\x0c\x8e\xd5\x6e\x00\x30\x6c\xa5\x70\x1f\x24\xc6\xc7\x00\x51\xc0\xa3\x02\x01\x06\x5d\x27\x74\xe7\xaa\x40\x67\xb5\x1a\xc4\x03\xfa\xc1\x4a\x01\xd4\x65\x77\x42\x25\x0a\xe8\x89\x1d\x5e\x14\xb3\x7a\x3d\xf0\x07\x63\x78\xb0\x75\x08\x03\x09\x8c\x23\x78\xdc\x84\xa5\xc5\x75\xe6\xef\x70\x43\x3e\x66\x88\xcd\x74\x2d\xaa\x9e\x8e\x80\x0a\x1c\x16\xb7\x30\xaf\xee\x0d\x58\x69\x91\x5b\x9d\x02\x6c\x2b\xf2\xc1\x6d\x92\x3c\x3e\xcb\x78\x5e\xec\xec\xf4\x4d\x93\x25\xd0\x9b\xa7\xc9\x83\x60\x17\x79\xae\x9e\x4e\xdd\x0b\x9d\xa6\xa5\xeb\x84\x7d\x0c\x92\x7d\xec\x29\xbf\x95\x0d\xb2\x1e\xee\x38\x8c\x79\xb2\x2b\xf0\xd1\xfa\x9d\x5c\x14\xf9\x6e\x61\x26\xe2\x36\xeb\xb4\x14\x83\x92\x26\x86\x3b\xb9\xe3\x48\x2d\x6b\x21\x8c\x4e\x52\xcb\xca\xa8\x7e\x3b\xa4\x96\x2d\x7c\x95\x4d\x52\xcb\xd9\xf5\xec\x6e\x76\xf1\x6e\xf6\x7f\x6b\x25\xfe\x7c\x31\xbb\x9b\x5d\xff\x61\xf1\xf6\xfd\xcd\xe2\xe6\xea\xf6\xfd\xfd\xcd\xe5\x55\x3f\x4b\x4d\xb3\xf6\xde\x05\x3f\x63\xe1\x77\x5e\xb3\xbb\x00\xa8\x81\xc9\x06\xe4\x7f\x93\xbe\x1f\xcc\x2a\xb3\x98\x13\xb9\x9e\xc0\x42\x7d\xcd\xae\xf2\x7c\xb6\xe5\x6b\xf1\xa1\x4c\x53\x80\x53\x61\x66\xcf\x65\x2e\xe0\xe0\x39\x61\x1f\x54\x3c\x0b\xde\x83\x74\xc4\xd6\x66\xc0\xf7\x79\x1c\xe7\x42\x6b\xfc\xfc\x84\xbe\x1f\x80\x87\x5c\xaa\x23\x81\xe7\xf8\x23\x4f\x52\x73\x7e\x7b\x0d\x1a\xfb\x6a\xb5\xc2\xf4\x99\x89\x4b\x9c\x62\x9f\x4a\x55\x70\x26\x3e\x47\xc0\xcc\xd4\x3e\x4f\xde\xa9\xf5\x57\x80\x2a\x0f\xb8\x9e\xea\x38\xa4\x80\x8e\xd3\xa2\x7d\x3b\x6f\x37\x04\xd4\xca\x1f\xf1\xd5\xb7\xf8\x66\x7b\x80\xb2\x48\x4f\x90\x29\xfe\x4e\xad\xdb\x55\x35\xc0\xbb\x26\x29\x10\xba\x48\x88\x88\x77\x42\xad\x99\x4e\xe4\xc3\x5c\xfe\xbc\x11\x92\xa9\x32\xc7\x3f\xc1\x31\xdf\xb8\x99\x69\xa9\x37\x02\x64\x36\x27\xec\x49\xb0\x2d\xdf\xa1\xdb\x0c\x67\x02\x27\x05\x00\x53\x06\x76\x11\xf3\x76\x9a\x48\x63\x2d\xb2\xc4\xe6\x25\xd4\x87\xfe\x14\x27\x2e\xcb\x4b\xc6\x8f\xa7\x0d\xed\xdb\x4f\x2b\xf8\x3c\x08\x95\x79\xdc\xa4\x05\x08\x91\xe5\x06\xa5\x41\xa5\x1e\xca\xcc\x33\x18\xbe\xb0\x97\x93\xd0\xdd\x8f\x2a\x89\x59\x5c\x66\x69\x12\x39\xbb\xfb\xa4\xf2\x4e\x9a\x56\x4c\xa0\x19\xbe\xeb\xd4\xd3\xc2\xfa\x1a\xd6\x92\x9d\x13\x20\xe9\x7a\x08\x5b\x9f\x99\xb2\x96\x25\x32\x4a\x4b\xd0\x50\x2a\xb5\xc8\xcf\x8a\x3c\x59\xaf\xc1\x01\xb7\xb9\x7e\xdf\x3e\xa7\xad\xe7\xcc\x3b\x3e\xad\x2d\x4c\x3a\x4f\xd5\x3a\x89\x78\x1a\x82\x9b\x3d\x2a\xc2\x91\x66\xda\x65\x4f\x0a\x93\x90\x07\x61\x2b\xd4\x49\x06\x94\xe5\x02\x78\x5b\x17\x60\xca\x17\x64\xee\x8e\xa9\xf7\x8a\x99\x03\x3a\xd6\x2b\xa4\xb4\xb4\xd7\x0b\x76\x87\xf3\xdf\xb6\x32\x43\x28\xac\x0f\x12\xc4\x4c\x3d\x49\x91\x83\x07\x0b\xb0\x0f\xd3\x52\xa9\xc0\x37\x71\xd2\x43\x0e\x9f\x6c\xa5\xb7\x56\x0e\x88\x8d\x99\xb3\xeb\xe4\x51\xc8\x2f\xcf\x41\x1c\x7c\x20\xe2\xd1\x46\x2c\xac\x5f\x7e\x6a\x93\xe5\x36\x80\x91\xc6\xca\x6a\x00\x84\xa6\xd4\x5d\x6f\xc2\xd1\x09\x6b\xdc\xb4\x5d\x78\x91\xd8\x93\x91\x65\x2a\xb1\x88\x45\xf4\xf0\xc5\x4d\xb3\x07\x59\xd9\x8a\x30\xce\xde\x88\xe8\x81\xdd\xdf\xcc\x30\x1b\x38\x29\x98\x31\x05\x7a\xe3\x35\x4d\x3a\xcf\x6e\x05\x5f\x3f\x03\xb9\xd1\x50\x51\x16\xcf\x2c\xee\xa4\xa8\x4c\x85\x08\x10\x05\xf9\x92\xc6\x48\x52\x2e\x0d\x00\xc1\x78\x61\xa5\x3a\x20\x10\xcf\xf4\x16\x94\x39\xca\x22\x90\xb3\x4a\xf9\x52\xa4\xba\xbd\xc1\x99\x8a\x17\xf6\x9e\xe4\x58\x30\x4f\xa3\x2c\x1b\xc7\xa0\x5b\x47\x9b\xc7\xc0\x8d\xc7\x7a\x47\x0f\xb2\x87\xdf\xe9\x80\x5e\x43\x85\x74\xbf\x70\xae\xe7\x5a\xd4\xf4\xdd\x93\x15\xe9\x87\x60\x42\x3f\x28\x65\x1b\x7b\x69\x4a\xfa\xa0\x62\x82\xe9\x39\x3e\x2f\xe3\x05\x09\x8a\x9e\x78\x5c\x45\x58\x05\xa7\x26\xae\x21\x36\xa0\x0b\xc1\x63\xa6\x56\x14\x4d\xcc\xb2\x34\x01\x22\xd7\x18\x39\xa3\x81\x3d\x43\x57\xd1\xf1\x61\x69\xb6\xb2\x01\xc9\xc7\x07\x0b\xc4\xeb\xbd\x6f\xf4\x97\x5c\xa6\x5d\xd5\x20\x77\xdd\xa7\x3a\x56\x29\xcb\xe5\x23\x1d\x7a\x84\xee\x8f\xa6\xad\x53\xb5\x84\x8e\xea\x06\xc5\xf5\x18\x68\x63\x9d\xf2\x24\x1e\xb3\xbd\xdb\x3e\x79\xef\x5e\xed\xab\xe0\x7b\x1b\xe9\x70\x5f\xb2\xc3\xcc\x88\x66\x3b\xbc\xc1\xaf\xa5\xb1\xef\x3b\x6b\xc3\x05\xa1\x76\x37\x84\xce\x1b\xb7\x24\xf3\xb0\x2a\x9c\x39\xee\x38\x56\x57\xdb\x72\xd4\x40\x37\x89\x51\xf6\xf4\xa5\xe7\x52\xe9\x1f\xe4\x23\xd8\x2d\x70\xe5\x3a\x8a\x8b\x31\x4c\xc1\x76\xe8\x10\xe3\x6b\xfa\xd3\x0f\x62\x25\xf9\x62\xd0\x88\xd6\xfb\xdd\xae\xe2\x63\xba\xfc\x39\x56\x54\x59\x28\x1f\xf2\x87\xf6\xcc\x80\x3f\x33\x4c\xeb\x02\xb3\x31\x8b\x3b\xe0\x02\xd6\x07\xb3\x4b\x73\x04\x08\x75\x14\x0c\x36\xcb\x85\xbd\x3c\xda\x89\xc2\x25\xf7\xa7\x56\x39\x09\xee\x46\x5c\xab\xab\xec\x26\x96\xc0\xc0\x31\x52\xc1\x4d\x06\xf9\x7b\x91\xda\x66\x4a\x02\x36\x05\x53\x95\xe6\x92\x0a\xb7\xfa\xb7\xee\x7a\xa5\x92\xef\x36\xa1\xa8\x16\x66\x4f\x08\xad\xd2\x47\xba\x47\x0b\x88\xe7\x41\x39\xcb\x54\xf0\xd2\x1c\x10\xcc\x71\x18\x2e\x78\xc9\xbc\x03\x1c\xbc\x26\x02\x9b\x8b\x75\xa2\x0b\x11\xa6\x08\x86\xef\x9f\x4c\xaf\xaf\x72\x82\xee\xeb\xfa\x4e\xbd\xbe\x7d\xae\xb0\x59\xb5\x23\xea\xb3\xcb\x44\x3c\x73\xef\xf5\x4f\x86\x5a\x16\xb7\x37\x12\x95\x5d\x00\xe7\x00\x1e\x01\x34\xf2\x3d\x69\x47\x19\xef\x06\x89\x98\x78\xb8\x47\xb5\x99\x21\x5a\x97\x3c\xe7\xb2\x10\x42\xcf\x25\xdd\x3e\x22\x6f\x59\x48\xcd\x51\x43\xc3\x39\x07\x37\x52\xba\x40\x1a\x20\x78\x65\xc5\x93\xb4\xcc\x3b\xcf\x9c\x38\x2b\x0f\xe2\x1e\xe8\xeb\xa5\x4b\x28\x96\xb5\x0d\x9a\xcb\x62\x0d\x56\x91\xa3\xce\xa8\xdf\x1d\x56\x93\x3c\x3b\x9a\x60\x4d\xee\xf0\xf1\x76\x01\xc7\x8e\xc4\xd6\xdf\xe9\x45\xa6\x46\x58\xbc\x3f\xfd\x4e\x7f\x50\x1d\x29\xc1\xfa\x53\x23\x30\xd6\x73\x87\xfe\xa9\x8b\x44\x9f\xeb\x07\xb8\x7e\xda\x77\x1e\xdf\x1f\x64\xff\xed\x6f\xf6\x5f\x52\x75\xda\x2e\x98\xb5\x1b\x2e\xe3\xd4\x9c\x53\x79\x51\xdb\x81\x3c\xd8\xd7\xf8\xc5\x85\x35\x8e\xdd\x99\x5d\x90\x28\xb1\x88\x1a\x59\x76\xfb\xfa\xa9\x96\x9e\xd7\x0b\xa8\xab\x7d\xa5\x9a\x34\xd7\x96\xac\xe1\x77\x76\x12\x7a\x74\x0b\xb6\x7b\x0a\xae\x92\xf5\x37\x70\xc8\xfa\xb1\x69\x29\x23\x5a\x8a\xb4\x7f\x39\xe4\xf7\x91\x8b\x11\x92\x6c\x8c\x31\x0b\x79\x7a\xe7\x92\x74\x60\xf1\xe6\x15\xae\xdc\x90\x8b\x4a\xb3\xef\x5c\xe6\xe5\x77\xff\x6e\x99\x88\x76\x6c\x05\x7d\x0d\x74\x5f\x2a\x8a\xca\x1c\xae\x45\x29\x74\xc3\x04\xee\x4d\x63\xe8\xd4\x2f\x70\x47\x76\x60\x16\x74\x9f\xda\xbc\x07\x17\xab\xab\x34\xea\x0e\x42\x34\xa8\x68\xeb\xf6\x42\x92\x5e\xc9\x75\xc1\x74\x21\xb2\x56\xab\x54\x71\xba\xaa\xa2\xcd\x47\xb8\x5d\x5e\x32\x7a\xa0\xaf\x3b\xc2\x46\x5f\x04\xc7\xe9\x3f\xde\xbe\xbf\x66\x19\xdf\x01\x2e\xac\x50\xa4\xb6\x0d\x64\x8c\xf5\xf5\xbb\x6f\x04\xaa\x8d\xaf\x2e\x36\xec\x53\x0b\x30\x6d\x8f\xdd\x72\xa7\xa6\x5f\xb3\x43\x30\x67\x68\x4a\x9a\xa5\x9c\xab\xf4\x2c\x4b\xb9\x0c\xa0\xbf\x7a\xca\x6a\x9f\x0f\xef\x7a\xdd\xad\x0f\xa1\x69\xa0\x02\x10\x4e\xa1\xb9\x90\x97\xad\xe0\xd0\xaa\x0e\xf5\x51\xd7\xbb\x9d\x36\xa2\x17\xf4\xf6\x23\xd2\xe9\xf3\xc8\x2c\x13\x64\x16\xb0\x57\xd6\x0e\xf5\xc0\x35\x00\x12\x47\x0c\x54\xbf\x68\xf6\x5c\x5a\x4d\x54\xf5\xa4\x59\x8c\xdc\x0b\x65\xa2\x37\x10\x9f\xc4\x0b\x01\x00\x07\x91\x7d\x41\xe4\x42\xce\xa5\x36\x03\x0a\x31\x4d\xf1\x28\x28\xb0\x51\xb9\x8c\x9b\xbd\x79\xe7\xee\xf7\x71\x90\x48\x88\xab\xa3\xeb\x03\xc7\xec\x98\x03\x4c\xab\x8a\xf3\x7e\x8e\xfb\x1f\x79\xd6\x97\x35\x76\x74\x89\xfb\x46\xc9\x31\xcf\xd4\xbd\x4e\xd0\x97\x05\x6d\x9e\x4a\xea\x58\xd8\x7b\xf7\xf2\x48\xf3\xd3\x4a\x7a\xbd\x9f\x5f\x7f\xf0\x21\x6c\x58\x26\xe0\x08\xdb\x13\x90\xc0\x39\x6c\x8d\xf3\x97\xcd\x2a\x07\xe5\x13\x60\xaf\xc2\x48\xda\x94\xdd\x0a\xc1\x3e\x42\x4f\x99\x8f\x7d\x24\x65\x2d\x80\x0b\x16\x3c\x69\x15\x3e\x81\xa7\x67\x72\xa5\x8e\x33\x06\xf9\xba\x01\x47\x3b\xaa\x57\xda\xeb\x79\x2c\xe0\x0d\x52\x19\xe5\xf3\xe6\xdf\xb7\xb6\x6b\x0f\xbc\xed\x83\x3f\x93\x53\x56\x9e\xad\xa9\xd9\x9f\x61\x88\x0f\x13\xfe\xaf\x4c\x12\xd3\xca\x09\xb2\x16\x3f\x48\xf5\x24\xd1\x17\xa0\x2f\xb1\x97\x66\xfd\xc1\x06\x86\x01\x54\x74\x0b\x4a\xb4\x86\xaf\x80\x46\xf9\xc2\xfd\x9b\xdd\xe2\x5d\x11\xd6\x19\x74\x42\x34\x38\x3f\xa4\xf0\x01\xd6\xfc\xe5\xc5\x84\x7d\x3f\x61\x97\x13\x36\x9d\x4e\x5f\x4d\x98\xe0\xd1\xc6\xd6\x08\x5f\x41\xe4\x58\xc1\xd7\xa6\x6c\x52\x4e\x58\x05\x1f\x00\xd9\x1b\xb3\x59\x59\xb6\x30\xee\x9f\x0a\x22\x0f\xb6\x09\x98\xc3\x48\x09\x17\x74\xaf\x1e\x6d\x54\xe2\x2b\x05\x10\x4d\x11\xa9\xdc\x82\x3c\x75\xa1\x72\x0b\x58\x7b\xe4\x39\x4f\x24\xa4\x76\xf3\x26\x5c\x97\xbe\x1c\x90\x3b\x8b\xcf\x7c\x0b\xed\x4f\xa4\xe3\xb7\x34\xdd\x74\xe7\xea\x5f\xec\x32\x0a\x48\x3f\xe5\x49\x51\x98\xdd\x59\xcf\xe5\x2d\x7b\xfd\x1f\xec\x22\xcb\x52\xc1\x2e\xd8\xdf\xd9\xf7\x5c\x72\xc9\xd9\xf7\xec\xef\xec\x92\xcb\x82\xa7\xaa\xcc\x04\xbb\x64\x7f\x37\xdd\x66\xca\xbb\x56\x66\x3b\xdc\x4d\x18\x67\xb2\x4c\x71\xd7\x7f\x69\xc1\x60\xaf\x5c\xbb\xb8\x1f\x9d\xa5\x28\x9e\x84\x90\x4c\xab\x2d\x6d\x85\x7f\x71\x77\x12\x3a\x91\xeb\x54\x14\x34\x1f\xaa\xb0\x3d\xfc\xc0\x19\xb4\xf4\xf5\x5c\xba\x58\xde\x5f\x4c\x8d\xff\xc2\xfe\xce\xae\xcb\x34\x35\x55\x32\x86\xc6\x4c\xa4\xd7\xcc\xa6\x51\x08\x39\x7d\x4a\x1e\x92\x4c\xc4\x09\x87\x44\x0a\xf3\xaf\xf3\x3b\x18\xed\x45\xe9\x39\xf3\xc2\x35\xed\xb4\x57\x8e\x31\x3d\xcf\x92\x94\xed\x24\x78\xec\xe0\xf7\x9c\xfc\xaa\xaf\x8e\xf7\x88\x3c\x53\x28\xad\x07\x72\x58\x51\x37\x27\x94\xfa\x39\xc8\x04\xd4\x36\x5b\x5b\x56\xcb\x56\x10\x6e\xea\xc7\x1a\x59\x50\x8e\x3a\xf9\x19\x72\x80\x8c\xcf\x50\x93\xdb\x10\x21\xa9\xa4\xb9\x83\x2f\xe9\xa9\x7e\x06\xdd\x0a\x39\xf1\x91\x9f\xaa\xd2\x59\x95\x2e\x56\xc9\x20\x8d\xb1\x5a\x65\xef\x29\x76\x81\x09\x6a\x66\x99\x26\xe9\xb9\x59\xaa\xe7\xd7\x4a\x9a\x63\xab\x4e\xd6\x48\x4f\x04\x30\x22\x0d\x84\xac\xd6\x29\xb8\xab\xba\xac\xc1\x12\x00\xff\xc0\x54\x09\xa1\x6d\x85\xb1\x02\x66\x08\xd2\xdd\x5c\x9a\x37\x68\x47\x02\x98\x7b\xe2\x58\x6c\xf1\x6b\x56\xcd\x9c\xbe\x45\x06\x39\x28\xbc\x65\x82\xf5\xe5\xd0\x1e\x31\xe1\x28\x65\xeb\x88\xa8\xf8\x75\xc0\xe0\x46\xa5\x59\x7a\x0f\xbc\xf7\x5c\x8a\x54\xc9\xb5\x99\x15\x5d\x46\x40\x6d\x79\x72\x0c\xb0\x24\xac\x02\x16\xd6\x59\x03\xb3\x59\xd2\x23\x34\x24\x66\x9f\x4c\x62\x7f\xbe\xd7\xe5\xd2\xf8\x11\x2e\x22\xeb\x76\x43\x6a\x5c\x57\x42\xf1\x71\xf7\xcb\xf7\x5a\xe4\x40\xb3\x8c\x08\x07\x17\xed\xc7\x8d\xd3\x93\x6d\x60\x8b\x86\x2d\xaa\x5e\x60\x6c\x7b\x28\x84\x6e\x13\x1a\xa9\xd5\x03\xe6\xe3\xd7\xc4\xc8\x3e\xa7\x1c\x7c\xab\xf6\x3b\x3c\x67\x4a\xa3\x3f\x8d\xd5\x77\xb7\xbd\x77\x0a\xf8\xe0\x27\x94\x7b\x59\xa8\x95\xcd\xa4\x1c\xbe\xa7\x37\x04\x77\x86\xa1\x54\x42\x92\xed\x50\x98\xa6\x39\x71\x3a\xf3\xc1\xe5\x82\x6e\x24\x86\x55\xb6\xde\x61\xef\xe5\x5b\x7c\xfd\x83\x4a\x93\xa8\x1f\xf4\x66\xb7\xab\x8d\x7a\x6a\x41\x11\x2d\x05\xa0\x40\x29\xfe\x43\x95\x42\x0f\xbd\x10\x51\xe1\x6f\xdc\x9a\x8d\xfb\x5f\x0d\xb4\xd9\x7f\x06\xc7\x88\xb2\xeb\x36\x10\x7d\x74\x77\x78\xb0\xb7\x02\xc1\x26\xf0\xca\x63\xac\x15\x72\xe9\xe0\x6e\x3b\xe2\x14\x82\xae\xf4\x3c\x18\xe8\xa7\x8d\x4a\xcd\x59\x4c\xc6\x44\x56\x3a\x97\x99\xc8\x23\x05\x00\x15\xcc\x83\x57\x2c\xda\x24\x69\xec\xc5\x5b\x5e\x02\xa2\x17\x70\x77\xaf\x48\xa1\x4e\xb8\x3b\x66\x5b\x7c\xcf\xae\x6b\xa7\x9d\x55\xa9\x3e\x2e\x02\x75\x3a\x88\x5e\xdf\xb4\xff\x99\xa0\x64\xd8\x15\x44\x2f\x54\xbb\x2d\x34\x9d\x5e\xa9\xcf\xa8\x08\x2f\xe8\x48\xaf\xac\x0e\xa6\x3d\x38\x15\xb5\x71\xa5\x69\x56\xef\x4a\x20\x9d\x45\x14\x15\x02\x48\xb4\x80\xea\x6c\x05\x47\x5f\xcc\x53\x40\xd2\xa0\xce\xa5\xbf\x1f\x7d\xa1\x43\xbf\xac\x75\x9c\x91\x53\xd5\x82\x00\x27\xec\x45\xa5\xa1\x2f\x80\x94\x54\x2a\xf8\x1e\xdd\x61\x55\xba\x06\xa6\xeb\x84\x25\xc5\x5c\x26\x1a\x67\x66\x2e\x52\xf1\x68\x6a\x17\x06\x8b\x09\xeb\x62\xcf\xce\xb6\xd9\x80\x23\xe7\x36\xfd\xd8\x89\x9b\xc3\x22\xcc\x43\x72\x4b\x0e\x81\xe9\x58\x68\xe3\x37\x82\x2c\x87\xf8\x6c\x16\x40\x02\x77\x21\x08\xff\x88\x85\xb4\xf5\x03\x54\x08\xea\xa7\xce\xe5\x6c\x05\x39\xa0\x90\x79\x1a\xc7\x78\x0a\xb5\x42\x0d\x8e\x69\x2c\xa1\xe0\xb0\xa2\x33\xb9\x1d\x08\x12\x58\xc4\x95\x24\x1e\x45\xbe\x2b\x20\xa8\x0b\xfd\x2a\x05\x2f\x36\x2c\x29\x26\x40\x11\x67\x2d\xe5\x5c\xf2\x98\xf4\xa9\xa9\x38\xd3\x35\x30\xef\x7b\xc6\x99\x7e\x5f\xaa\xc7\x3e\xc7\xf6\x58\xd4\x17\xae\xea\x2c\xe5\x72\x81\x3b\xc8\x57\xc0\x7d\x05\xda\x97\x5d\x57\x9d\xe5\x72\xe1\x68\x6d\x4e\x52\x4f\x67\xef\x6f\x2a\x8a\xb4\xc6\x8f\xb5\x1f\x9a\xe0\x64\xf0\xb4\xd6\xf6\x78\xe2\xe2\x34\x84\x2e\xc8\x99\xbd\x81\x1d\x6e\x05\x3c\x24\x8c\xd7\x90\x08\x76\xb6\xee\xc3\x84\xd9\x19\xf0\xad\xe2\x93\x86\x8c\x7c\x6d\x0f\xa9\x0f\xfb\x78\x68\x4c\xc3\x43\x3c\x08\x1e\xb3\xa7\x5a\xcf\x0b\x91\xe9\x8c\xa3\x34\xa1\x32\xb6\xb5\xc1\x75\x1f\x26\x4f\x08\x8c\xc3\xb9\x30\x4f\xbb\xb6\x69\x78\x0e\x53\x2d\xd8\xca\x53\xc6\xa8\xc1\x4e\x0d\x8d\x94\xf8\xdc\x6b\xa8\xd7\x94\xcd\x24\xb3\xee\xde\x84\xbd\xc0\x89\xa5\x5f\x50\x08\x92\x04\x72\xe9\xee\x3c\xa6\xd5\x43\xd9\xaa\x75\x28\x06\xe6\x0c\xf8\xe5\x86\x37\x41\xbd\xd4\x86\xcf\xda\x2f\xdf\x27\x90\xb3\x70\x48\x5a\x3a\xde\x22\x2e\xb1\x00\xda\x24\xf1\xd8\xbd\x43\xa7\x5d\xf9\x68\xb6\x6f\xb0\xbd\xef\x62\xdf\xdb\x17\x4d\x17\x65\x25\xed\xa7\xf6\x77\xa6\xf2\xb9\xb4\xa5\x51\x48\x52\xa3\x96\x52\xbd\xa8\x00\x42\x4d\x3e\x7f\x30\x53\x01\xc4\x60\xe5\xb3\x40\x95\xcd\xf3\xaf\xd6\xad\x00\x80\x22\x96\xc2\x4b\x7b\x4f\xd9\x85\xff\x9a\x71\x3c\xcc\x04\xdf\xe2\x36\x5f\xe7\x68\x4c\x53\xd3\x29\x49\x61\x29\x21\x83\xf4\x06\x5d\x02\xb1\xe9\xaa\x34\xc6\x28\x60\x7f\x9d\x4b\xd3\x79\x6c\x95\x00\xee\x97\xfa\x65\x2e\x7f\x54\xda\x66\xd3\x6b\xdf\x1f\x16\x43\x4a\xdd\xf6\xc2\xa9\x88\xd1\x1f\xde\xc0\xa6\x4d\x31\xff\x9a\xac\x3c\xe4\xb5\x10\x25\xc6\x4e\x95\xb9\x6f\x54\xc4\xe5\x5c\xfe\xd5\x74\x0f\x8a\x3a\x3b\x45\x74\xb5\xc2\x25\x6c\x65\xf8\xd9\xcb\x8f\x58\xe8\xcb\x7f\x7f\xf5\xf1\x15\xe2\xd0\x4b\x0d\xc2\x8d\x93\xea\x06\xe2\x88\xc0\xcb\x34\x85\x9b\x68\xdb\x02\x47\x46\xe1\x3f\xc1\xfb\x60\x39\x74\xa8\x5b\xc8\xaa\x8b\x31\x64\xa1\xf7\xcd\x60\x1f\x7c\xbe\x60\x11\x2f\xa2\xcd\x99\xf5\xe5\xc8\x8c\xd9\xdd\x8f\x86\x0f\x15\xdc\x8c\xa7\xd5\xce\x85\x6d\x0e\x9c\xf9\xd6\xb1\xf3\x55\xe6\x8b\x69\x02\x00\x6b\xee\xea\xc2\x30\x8e\x3c\x14\x27\xa7\xd7\x24\xf7\x7e\x9e\x7b\xdc\xca\xb2\xf9\x13\x27\x45\xc9\x25\xdf\x8a\x98\xbd\x80\x8c\xa9\x17\x76\xf0\xe7\x32\x5b\x4e\xd3\xdd\xaa\x20\x8a\x27\xd3\x29\x53\x10\x30\xda\xb3\xcb\x2d\xe2\xe6\x31\x69\x4f\x67\x77\x1e\xb4\xda\x7d\x1d\xd7\x37\xee\x4b\xc3\x1d\x16\x8c\x71\xb9\xde\xb9\xad\x42\x84\xaa\x4c\xea\x5c\x3f\x4c\xd8\x32\xe7\x12\xb4\x27\xe2\xd0\xa9\xf2\xab\x13\x0e\xcf\xc8\x9f\x64\x53\x28\x24\x4f\x77\x80\x1d\x9f\xcc\x25\x92\x4d\x01\x2b\xf1\x2e\x4a\x93\x88\xad\x73\x9e\x6d\x6a\x7e\x90\x78\x14\xb2\xb8\x22\x76\x05\x0b\x52\x3f\xf6\x6a\xd9\xb1\x35\x1c\xc5\xb9\x37\xab\x7a\x3b\xdc\xd3\x50\xf8\x08\x2b\x26\xaa\xd0\x89\xda\x82\x5a\xdd\x04\x9f\x90\x14\x1a\xf0\x71\xb1\x3f\x97\x4b\x95\x5a\x42\xb3\xd9\x1b\xa6\x72\xd0\x12\x28\x14\xfd\x29\x89\xbb\x76\xb1\x44\xc6\xe2\xf3\x51\xac\x02\xfd\x1b\x92\x75\xef\xcc\x67\x02\xca\xfa\x7a\x63\x61\x15\xe5\xc2\x6c\x16\x85\x3d\xc1\x35\x9e\xd2\x75\x84\xdd\x45\x5a\x6c\x00\xf6\x86\x80\x6b\xdf\xa9\x5b\xbe\x63\xd1\x86\xcb\x75\x70\x84\x06\x14\x92\xc8\x54\x8e\x9a\x7b\x8f\x40\xdf\xa5\x72\x9b\xb5\x49\xb9\x88\x84\xfa\x76\x01\x6f\x04\x5b\x2a\x9b\x70\xc8\xd7\xeb\x5c\xac\x21\x91\x7e\x2e\x2b\xd9\xd4\x40\x5d\x66\xe9\xfe\xf1\x3b\x7d\xc9\xa8\xa7\x61\x74\xe8\x3a\xb5\x14\xf9\xce\xa5\xf2\x91\x60\xa5\xeb\xba\x46\xb7\x4e\x58\x22\xa6\x13\xf6\x1b\x0f\x30\x15\x91\x92\x2e\x17\xb0\x23\x11\xac\x16\x9a\xde\x63\x8b\x5a\xa8\x1f\xda\xeb\x0e\xbf\x35\x64\x2f\x5b\x27\x4d\x6f\x32\x65\xc1\x8b\x72\x84\xad\x24\x69\xe3\x4b\xf3\xf2\x2d\xbe\xdb\x8b\xc1\xe6\x99\x31\x6f\x96\x76\xc7\x3c\x6f\x2c\xbc\xf9\xb6\xa7\xe5\x6d\xeb\xeb\xbd\x81\xce\x54\x75\x07\x3a\x4f\xe1\x52\x5a\x6e\x85\xfd\xb1\xce\xb4\x83\x2f\xa0\xa7\x4d\x63\x43\x99\x16\x8c\x4a\x30\x73\x5d\x3f\x6e\xb5\x58\x80\x2c\x57\x71\x19\x89\xd8\xac\x5c\xf0\xdb\x11\xb9\xe1\x68\x0b\x2a\x46\xb2\x6d\x43\xa8\x70\xaf\x80\xc0\xf5\x97\x3a\x1b\x0f\xa2\xbb\x75\xdd\x7f\xdf\x71\x2e\xb6\x9e\x49\x5b\xa7\x87\xeb\x13\xfb\x29\x1f\xb9\x4f\xb9\xcf\x57\x49\x6a\x55\x9e\xac\x13\xc9\x0b\x95\xb3\x97\x2e\x39\xf1\x95\x53\xb6\x81\x5e\x3c\x85\x99\xa8\x74\x11\x9a\x89\xf6\xb3\x17\xe0\x99\x45\xbc\x18\xc7\x9d\x35\x96\xe1\x19\x26\xa9\x79\x4a\x17\x7c\x9b\x85\xb4\x8f\x4e\x37\x98\x7a\x26\xc5\x4e\x60\xb6\x62\x10\xe3\x4b\xb4\xcf\xc1\x9a\x4b\x8a\x8c\xe3\xb8\xa9\x3c\xe4\x2d\xee\xdc\x9b\xb3\xb2\x58\x1c\x48\x65\x82\x2f\x8f\x0b\x90\xd0\x75\xf9\x8f\x3c\xeb\x27\x87\xe0\x74\x34\xc6\x24\x14\x27\xa6\x6c\x3d\x95\xea\xfc\xec\x57\x06\x18\x49\x56\x59\xbf\xe2\xbd\x79\x67\x2f\x34\xfc\xb9\xa5\x72\x10\x80\x81\x40\x96\x3c\x0d\x5e\x05\x1e\x41\x9d\x59\x33\xbb\xb8\x65\x94\xb8\x4c\x55\x19\x33\x32\x6a\x74\x5d\x9c\x4f\x71\x77\x04\xda\xca\xe9\xb4\x8b\xc3\x6b\xa4\x62\xa9\xb3\x3f\xf0\x5e\xfb\x0a\x84\xdf\x3a\x2c\x70\xef\xd2\xa7\x9e\x7d\xb6\xa1\xa7\x9e\x86\xb1\x77\xe6\x78\xd4\xd8\xbb\x68\x2d\x70\x68\x8d\x0b\xe4\xc1\xb9\x29\x89\x53\x58\x6f\x61\xa0\xbb\x85\xe5\xb3\x72\x81\xa8\x1f\x8e\xfe\x9c\xcd\xb4\xed\xff\x54\xc6\x73\x21\x8b\x05\x7c\x71\xdc\xc7\xe0\x23\x1f\xe0\xf5\x8a\xc3\x34\x28\x60\xf9\x5f\x77\x0a\xe3\xd0\x96\x30\xe3\xbf\xd9\x2d\xc5\x5e\xb4\x55\xb5\x37\xbb\xe3\xcb\x04\xb0\x31\xc1\x9d\x9d\x1b\xb8\x8e\xe1\xa2\x06\x1d\xd0\x7b\x41\x83\x2a\xa6\x7d\x50\x83\x7c\xed\xe1\x4a\x15\x4a\xa1\x30\x14\x65\x78\x1a\x53\x6b\xff\x16\x90\x68\x5f\x57\xfe\x0d\x84\x87\x66\xfc\x52\xf6\x37\x91\x2b\x9f\xb6\x80\x41\x95\xb0\xe0\x5e\x7f\xfd\x70\xfd\x4f\xf4\xc7\x51\x79\x32\x94\x5e\x83\xbf\x10\x27\x09\x9e\x7c\x97\x3b\x7b\x1c\xe9\xa2\x53\x17\xd1\xa2\x83\x67\x7f\x50\x55\x82\x83\x67\xc8\x9b\x9f\xd4\x36\x33\xbb\x40\xcf\xe1\x5c\x4d\xac\x7f\x5b\x9e\x11\x0e\x8d\x20\xaf\xf5\x4b\x86\x29\x34\xe2\xbf\xfe\xf2\xdf\xd3\x2e\x65\x67\xa8\xfa\x58\x58\x8f\xab\xfc\xdb\x3c\x11\x32\x86\x4b\x43\x1e\x37\x25\x60\x64\x25\x8a\x5c\x31\xcf\x66\x1a\x9e\x24\xbb\xaf\x7d\xab\xd5\x0b\x9c\x44\x5f\xe0\xe6\xd9\x1b\x59\xb7\x7c\x2b\xf7\x52\x5d\xae\x84\x5e\xc4\x3b\xc9\xb7\x4d\x2d\xec\x67\xad\xe3\x2e\x11\x69\x0c\x55\xa4\xaf\xef\xbb\x3d\x89\x45\xf4\x30\xd6\x27\x38\x98\xc0\x5a\x44\x0f\xec\x87\xbb\x1f\xdf\xa1\x5e\x61\xa2\xe7\xf2\x9a\x17\xc9\xa3\xb8\xcf\x53\x17\xb6\x26\x46\x92\x3c\xb5\x6b\xa4\x4a\xa8\x1a\x90\x77\x58\xf6\x55\xeb\x38\x84\x7c\xd7\xdb\xdd\xd9\xb2\x8c\x1e\x44\x71\x9e\x73\x19\xab\x2d\x36\xe3\x5c\x97\xab\x55\xf2\x79\x5a\xf0\xbc\x83\xfc\x1a\xe3\x08\x5f\xd1\xcf\xf5\x92\x26\x85\xf7\x79\xd1\xd5\x7d\x82\xec\x44\x12\xca\xad\x38\xb7\x70\x04\xce\xf9\x56\x00\x7b\x19\xab\x12\xc7\x43\x29\x98\xf0\x07\xfa\x6a\x5a\x13\xd2\x5b\x91\x7a\xeb\xc7\xc0\xb9\xff\x18\xd4\xaa\xaa\x20\x6c\x2b\xe5\x35\xcb\xb6\xfc\x01\xcf\x87\xeb\x5c\x68\x3d\x61\x5a\x41\x8d\xe7\xd2\x62\xa6\x6d\x5e\x0f\xe0\x33\x80\xff\x30\xdd\xb1\x48\x65\x09\x48\xbc\xb9\x76\x6d\xd4\x13\xc4\x93\xc3\xf4\x36\x50\xe5\x2c\x65\x91\xa4\x8c\xaf\x0a\x0a\x36\x03\xd9\xb3\x15\x77\xd1\xd3\xb9\x84\x2b\xc3\x08\x9a\x0f\x57\xf9\xee\x9a\xc0\x35\x42\xb3\x15\x8f\x92\x34\x29\x88\x82\x06\x92\x61\xb8\x69\xaf\xd9\x0f\x4c\x5f\xe6\x7c\xc7\x53\x7f\xb0\xe2\x69\xe9\x33\xfa\xce\xb4\xa8\x53\x9c\xfd\x2a\xfc\xdf\xca\x39\xb7\x6f\xd7\x3d\xe2\xc0\x7b\xcc\xe6\xd3\x3c\xd2\x3a\xc5\x51\xbf\x8f\x27\xb1\xc5\x89\x56\x5c\x5d\xcf\x3c\xeb\xb6\x1f\x88\x9d\x77\x1c\xaa\xa7\x56\x27\xa6\xf9\x85\x11\xbd\xd7\xee\x84\x7d\xa1\x70\x41\x17\x07\xee\x90\xea\xdb\x68\xf7\x07\xa5\xd2\x63\x23\xde\x3c\xb5\x06\x75\x01\xd2\x89\xc7\x1c\xd7\x70\x02\xb8\xc0\xd1\xec\x8d\xbb\x7b\x75\xa4\xb2\x55\xc1\x15\x82\x05\x51\x15\xc0\x50\x40\x25\x7a\x10\xc3\x3a\x6b\xb9\x7c\x1f\x89\x7c\x86\x32\x10\xb5\x63\x5d\xe7\x66\x08\x3e\xc8\x65\xe7\xbe\x8e\x40\xbc\x57\xab\xe1\xa8\x60\x18\x0a\x1d\xd6\x3e\xe5\x02\x63\x21\x41\xa7\xeb\xc7\xe0\xdb\xb6\x3f\x51\x5e\xd9\xec\x4f\xe4\x25\xcf\x65\xe0\x11\x23\xab\x8e\x85\x96\xbb\x5e\x6b\x8b\x97\x55\xa6\xe1\xd1\xf1\xb2\x63\x58\x98\x7b\x2f\x54\xde\x84\x7a\x4a\x80\x09\x88\xd4\x76\x99\x48\x9b\xaa\x4c\x41\x64\x70\xe5\x2f\x2c\xc9\x9d\x0b\xf8\x5b\x97\x1c\x59\xf6\x6b\x7d\xef\xdc\x88\x90\x2f\x30\x34\x59\xfb\x8e\xbb\xe1\xf9\xe9\xb4\x84\xd1\x1d\x28\xd5\x7a\x0b\x12\xcd\x78\xfa\xc4\x77\x1a\x34\x47\x85\xb1\x8a\x2b\x0c\x9c\x56\xeb\x3f\x09\xb6\x77\x4b\xa0\x48\x02\xde\x25\x49\x11\x53\x5b\x12\xe4\x6f\x10\xa9\x55\x57\xf5\xbc\x38\x2f\x74\x7b\xe7\x7c\x9d\xbb\x90\xbc\xf7\x2e\x04\x2f\x23\xff\x39\xae\x3f\x7a\x82\xac\x47\xc6\x7a\x83\x6d\x12\x3d\x32\x82\x8b\x40\x02\x0f\x98\x63\xf3\xed\x09\xdb\xf2\x44\xd2\x32\x40\x05\xab\x58\x2c\xcb\xf5\xba\x33\x04\xf9\xed\xdf\x65\x54\xd7\xc9\xbf\x7c\xac\xb9\x97\xd9\xe9\x14\xd1\xd8\x99\xfd\x12\x86\x87\xcd\xb9\xea\xcb\x04\x60\xbf\x62\xb4\xbb\xf5\xca\xa9\x31\x89\x4e\x13\xed\x9e\x0d\x89\x76\x5b\x8c\x0f\xa4\x5a\xd1\x71\xd5\xe2\x30\x7e\x09\x83\x7f\x99\x30\xf8\xa0\x49\x81\xf4\x1e\x8b\xa4\xea\xa0\xf7\xd4\xf0\x40\x96\x30\x47\x27\x09\xb5\x22\x35\x70\x2d\x64\xac\xd9\x92\x47\xcf\x40\x1b\x06\xbb\xe3\xf1\xf1\xb6\x3d\xe0\x92\x5b\xb5\x15\x0c\x3e\xa5\x51\xfb\x80\x51\x36\xdb\x04\x50\x8b\xa6\x81\x1e\x91\x41\x78\x0f\xd8\x4e\x11\x19\x12\x7b\xa7\xfa\xa5\x14\x4f\xcc\xec\x56\x93\x10\xc6\x15\x0c\x0f\x88\xe2\xbc\x32\xde\x61\x05\xf3\xed\x52\xf7\x73\xb1\xe6\x79\x0c\x99\x06\xb4\x24\x53\x1e\x3d\x98\xff\x86\xfa\xd1\x17\x09\x6a\x66\xf9\xb9\x11\xfe\xe8\x4b\x4b\x64\x94\x03\x29\x13\xa1\xda\x7c\xfd\xf0\x75\xcd\x78\x94\x2b\x8d\x41\x19\xa7\x25\x09\x99\xae\xe0\xc0\x3e\x26\x71\xc9\x53\xfc\x62\x67\x24\x9b\xeb\xa3\xf8\xc6\x2f\x02\xd9\x17\xf1\x39\x4b\xb9\xac\xae\x49\x6c\x2e\x70\xd5\x24\x3d\x33\xdf\x51\xae\x1d\x53\x95\xd1\xd4\x91\xb3\x40\x71\xd5\x2f\x2b\xf4\x8e\x73\xc1\xe3\x5d\x48\x4c\x95\x48\xd2\xdd\xe7\xf1\x36\x91\x66\xe8\xad\xaa\x97\xb3\xaf\x96\xe0\x17\x01\x97\x20\x7e\x91\xa6\xb5\xa5\xaf\x99\x14\xc6\xa5\xe2\x79\x92\xee\xc0\x8b\xce\x72\x71\x16\x7c\x27\x58\xdf\x94\xef\x01\x54\xc5\x44\xa2\x50\x6a\xb1\x2a\x53\xf4\xb5\xe1\x34\xea\x1a\x40\xeb\xf0\x7e\x36\x31\xdb\x6c\x41\x94\xf3\xc1\x87\x51\xc8\xe9\x14\xd8\xf9\xe6\x39\x70\xd0\xfd\x8d\x27\x4c\xcb\x01\xda\xbb\x51\x4f\x36\xc1\xe7\x89\x7b\x04\x67\xd7\x5e\x72\xb2\x98\x7d\xbf\xd7\x65\xcf\x3b\x76\x55\x62\xa7\xc7\x95\x8b\x1a\xfa\x4d\xc4\x6e\x25\x26\x12\x9a\x43\x1a\x88\x3e\x0e\x5a\x6a\xcc\x13\x32\x63\x08\xd6\xda\x1e\xeb\xab\x61\x50\xe6\x5a\x97\x68\x25\xd9\xbc\xfc\xf5\xaf\x7f\x2b\xd8\xaf\x21\x71\x8a\xbc\x6f\xbc\x6d\x01\xca\x34\x2c\x1d\x0c\x94\xfb\x80\x40\x3e\xb5\xc6\x88\xb0\x36\xc0\xa3\xcd\x52\x06\xc8\x20\x8f\x36\x4c\x97\x4b\xc4\xc3\x71\x0a\xd8\x73\xe9\x18\x49\xdf\x29\x80\xb6\xe1\x3e\x66\x6b\xff\xbf\x24\x3c\x8d\xac\xe0\x73\x99\x29\x24\xcd\x05\x20\xe1\x52\xb0\x2d\xcf\x1f\x40\xe4\x8d\x94\xbc\x19\x2f\xd8\xcb\x44\x4c\xab\xc1\xea\x57\x95\xfa\xd0\xf5\x00\x92\x61\xb2\xbc\x94\xd2\xaa\x56\x30\xe3\x86\xf9\xc8\xf1\x64\x2e\x97\x65\x78\xd2\xaa\x84\x9e\xfd\xd4\x82\xf0\x33\x18\x59\x05\x0c\x09\x54\x29\xae\x03\x85\x71\x36\x20\x06\x3d\x97\xcf\x14\x84\xee\x0a\x6f\x7d\x20\x8f\xc3\x86\xae\x02\x94\x36\x34\x37\x14\x56\x84\xe1\xc0\x69\x0f\x5b\xfa\x07\x50\x57\x9c\xb0\x1f\x92\x47\x31\x61\xb7\x19\xcf\x1f\x26\xec\x0d\x5e\x26\xfd\x51\x2d\xf7\x46\xac\x4e\x11\xb5\x75\x07\xab\x63\x19\xef\x31\xfe\x39\x09\x98\x99\x83\x0b\xcc\x66\x7c\xd1\xe2\xdb\x0a\xe0\xb5\x8f\x1e\x84\xec\x34\x96\x16\x95\xdc\x49\xdf\x7d\xaa\x73\x77\x37\xa8\xba\xf3\x14\x5e\xdf\xb7\xbd\x87\x45\x39\xab\x6d\x38\x3f\xe3\xd9\xa0\xf6\x34\x8f\x1e\xce\xc0\x57\x55\xb9\xcb\xab\xd6\x74\xb9\x86\xb3\x02\xd1\xcf\xe8\xa3\xd5\x32\x91\x87\xba\xe2\xf6\xc3\x8b\x4c\xa9\xb4\xd5\x23\x3f\x69\x07\x36\xe2\xf3\x43\x3b\x6f\x86\x19\x5c\x3a\xf4\x53\x6d\x2f\xfa\x58\xaf\x8f\x0c\x63\x18\x18\xa8\x58\x60\x36\xc5\x25\x5c\x91\xfa\xee\x08\x25\xfd\x8c\xad\x41\xcc\x39\xba\xa6\x56\x01\x96\xdb\x33\x43\xc4\x5d\xd0\x3b\xc4\x3a\x37\xa2\xd0\xba\xf9\x9d\x8e\x83\x02\x94\xbb\x48\xda\x78\x57\xc6\x2e\x2e\x94\x4e\x6f\x5c\x2d\x61\xcd\xed\x96\x6e\xb3\x7e\xf6\xb1\xce\xda\x14\xe7\x45\x94\x72\x3d\x10\x47\xdc\x6a\x77\x66\x54\xd0\x25\x94\x33\xdc\x66\xfe\x00\xb7\x00\xdb\x81\x2e\xd4\x5c\x5e\x38\xd6\x55\xef\x7c\xbb\x03\x03\x9a\x59\x3c\x2a\x35\x86\x06\x53\x89\x3c\x45\xef\x84\xe9\x32\xda\x40\xb2\x54\xd5\x4e\x85\x76\xab\xb9\x62\x27\x73\x69\xdc\x57\x54\xfe\xe2\x00\x77\x79\x02\x91\x98\xe4\x6f\xc2\xf9\xc7\x84\xc9\x0f\x5d\xe2\x25\x37\x43\xa3\x64\xeb\xf1\xc1\xe6\xad\xe1\x4e\xe7\x37\xf7\x32\x33\x9e\xc3\x74\xee\xdd\x9e\x04\xf5\xfc\xed\x76\x4b\xe7\x11\x1d\x36\x2c\x3c\x3e\xd5\x2c\x6d\x9a\xac\x44\xb4\x8b\x1a\x34\x54\x15\x90\xd9\xe9\x6e\x41\x0e\xbb\x04\xe8\xa3\x2b\x6a\x8f\x9d\xfc\xdc\xa0\xd7\x60\x5d\xc8\x9c\x7f\x4e\xbc\x70\x07\x63\xce\xbf\x7a\x1c\x77\x0f\x88\xe6\x17\x68\xed\xbf\x64\x4c\xb1\x9f\x2c\xe7\x57\xe1\xff\x5a\xfb\x65\xd1\xab\x10\xc3\x20\xaf\xb9\x15\x33\xfb\x6d\xd1\x03\x24\x71\xfd\x90\xd7\x64\x09\x18\xb6\x14\x88\x84\x21\x76\x04\x11\x23\x52\x82\xe8\x55\xdb\x5f\x97\xa9\xd2\x65\xde\xbf\xf8\x6f\xaa\xb5\xb6\x5f\x6f\x21\xcc\x85\xc9\xb6\x5d\x0a\xe0\xfe\x18\x0a\x8e\xc3\xc7\x16\x7f\x55\xcb\x05\x20\x41\x8f\x5b\xe1\x6d\xc5\x59\x09\x2e\x87\x27\xa0\xaa\xfa\x13\xd7\x6d\x26\x80\xb7\xcd\x87\x36\xfc\xf9\xa5\x36\xc3\x5c\x60\x79\x2e\x2d\x8d\x3d\xe6\x9d\xe7\xb9\x00\xbe\xed\x5c\x80\xb2\x1c\xcb\x78\xee\xe0\x58\xf6\x84\x1d\x44\xd0\x3c\x64\x2f\xcc\x15\x85\x94\x6f\x8a\xdb\x2d\x85\x90\xae\xb7\xc7\x1c\x4d\xcd\x69\xb3\xde\xfb\x84\xc5\x7d\x12\x2c\xc2\x34\xaf\x0e\x15\xcc\xc6\x7b\x41\x4c\x11\xfc\x96\xb5\x08\x7d\xa8\x9a\x6b\x51\x59\x9a\x95\xfb\xfd\x6f\x2a\x1f\xa9\xf5\x04\x5b\xa3\xb8\xab\x84\x9f\x07\x21\x22\x4e\x71\xdb\xf8\x81\x17\x1b\x0c\x8c\x6e\x55\x21\xd0\x66\x22\xd7\x16\xce\x17\xbc\xb3\x5b\xa6\x6a\x09\x92\x6e\xe6\x97\xae\xe3\x73\x44\x4b\x7b\x50\xd7\x35\x07\x6c\x88\x65\x30\xd6\x04\xf2\xd5\x73\xa1\x81\xb6\xa8\x79\xc7\x3f\x34\x7b\x62\x5c\xf0\xb6\x59\x5d\x63\xf4\xdf\x34\x82\xb7\x4d\x9d\x0b\xb3\xac\x01\x4a\x7f\x75\x40\x7e\xdf\x55\x98\xf3\x6d\x9c\x03\xa2\xfc\x26\x10\x0d\xb2\xfe\xd6\xda\x6b\x95\xc3\xe7\xf2\x02\x7f\x09\x36\x01\xee\xf5\x9c\x1c\x5a\x9d\x44\x62\xdd\xfa\xc3\x24\x70\x76\x11\xe2\xa3\xe9\x54\x34\xf1\xe7\x55\x08\x2e\x4d\x20\xe7\x5a\x16\x49\x6e\x4e\x23\x1a\x9c\x2d\x5d\x2e\xcf\x3c\xbd\x8f\xca\xc1\x3d\x03\xf6\xa7\x8c\x43\x68\x0c\x58\xbf\xce\x5a\xb6\x61\xbc\xd7\xf1\xba\x2c\x96\x06\x93\xa7\x64\xfc\xe1\x54\x8d\xfc\x12\xae\xed\xae\x1c\x73\x38\x82\xa8\xac\xe5\x36\xc0\xcd\xae\xcf\x5e\x80\x72\x14\xe4\x87\xdf\xe0\x71\xfc\x6b\x6f\xe0\x21\x96\x64\xe8\xd6\x0d\xc7\xef\xb9\xfc\xff\xed\xde\xd0\x9d\xf2\x30\x62\xa6\x9b\x9e\x31\x5b\x54\x67\x2a\x46\xa5\x6e\x36\x24\x19\x38\x81\xdd\x95\x6a\x4c\xf9\xb6\x52\xb9\x0b\x90\x04\x3a\x29\x8a\x92\xf9\xe1\xd7\xc7\x44\x07\xa4\xf9\xf0\xb5\x5b\x21\xd8\xeb\x5c\xac\x5e\x7f\xcc\xc5\x6a\x61\x47\x7a\x0a\x0d\x9a\x9a\x16\x35\xa9\xf3\x07\x4e\x0e\x9d\x29\xd9\x4e\x21\xba\x87\xe2\xb7\xd6\x24\x2c\x27\x68\x53\xb2\x62\x5e\x4e\x13\xa2\x08\x65\x14\x09\x11\xd7\x39\xfd\x1b\x35\xfb\xe2\xdb\x5c\x17\x8e\x76\x00\x50\xb5\x43\x86\xf2\x5f\x7f\x7b\xab\xf4\xd9\x90\xed\xed\xae\x1a\x4f\xb1\xc6\x9e\x4b\xb7\xe1\x75\x27\xa6\x7c\xd9\xdc\x19\x18\x40\x9d\xf1\x27\x49\x6c\x50\xa3\xae\x32\x86\x6d\x6b\xb5\xe8\x52\xb0\xad\x35\x10\xc4\x7e\x95\x49\x7b\x73\x94\x38\xcd\xc6\x49\x20\x77\xce\xd3\x34\x54\x26\xf1\xf1\xdf\xb9\xf4\x51\x42\xe3\xb5\xa6\xa9\xbd\x12\xaa\xf8\x1b\xc4\xfd\x15\x03\x5d\x81\x98\x58\xea\x22\x22\xfd\x24\x34\xc1\x19\x46\xe3\x7c\xcc\x6c\xdf\x6a\x3e\xd5\x21\xf2\x1b\x63\x6d\xd8\x83\xdb\xc1\xcf\x2e\x1e\xc4\x6e\x74\x5d\xdb\x6f\xce\xbd\x94\xef\x06\x16\xb3\xb5\xb2\x11\xcf\x73\x9b\x83\x44\x5f\x65\xe6\xac\xb4\xe2\x51\xe5\xda\xac\xa3\x9e\x1b\x11\x3d\x64\x2a\x91\xa3\x6d\x51\x50\x1f\xe3\x48\x15\x66\x3f\xf3\xa5\xb9\xd3\xe1\xa0\xcd\xb1\xe2\x4f\x62\x43\x34\x80\xd3\x2c\xb0\xde\x53\x1a\x72\xe6\xb4\x8a\xbb\xa7\xdd\xa9\xe3\x17\xc2\xef\x0d\xcf\x10\x8b\xed\xbf\xa4\x40\xab\xd1\xf4\x28\x2b\xb7\x58\xbc\x91\x9b\x3a\xb0\xb3\x39\xab\x10\x81\xb6\x76\x29\x84\x20\x7f\x89\x0c\xfd\x12\x19\xfa\x27\x8f\x0c\x7d\xc9\xb0\x10\x20\x0b\x9f\x33\x26\xd4\x4e\x36\xf0\xcb\xf6\xfa\x6d\x6d\xaf\xc8\x29\x8a\x99\x71\x63\xba\x96\xaa\x7a\xe3\x5f\x3f\xae\x73\x05\x0b\x6a\xa2\x47\xf4\xf3\x17\x74\x0f\x5a\x6c\xd5\x38\xbb\x3b\x78\xbf\xea\x47\x4f\x78\x07\xc4\x1f\x06\x82\x44\xfa\xc6\xf2\x0d\x83\xc0\x45\x38\x75\x8c\xe1\x19\x7c\xfd\xd2\xcd\x55\xf2\x4d\x5d\x22\x0f\x71\x30\x8c\x65\x74\xd7\xca\xd7\xd6\x22\x4a\x81\x06\xbc\xc7\x32\x06\x1c\xd6\xbc\x78\xa1\x5d\xaf\x57\x2d\xa0\x45\xb8\xbf\x4b\x74\xf1\x53\x4d\x21\xf1\x30\x89\xc5\x67\x43\x42\xd9\xaa\x62\x35\x83\x37\x7a\x01\x3c\x37\x55\x88\x8d\x5a\xd9\x39\x07\x9b\x9c\xd5\xc4\x32\xf5\x1e\xb3\x5f\x7d\x74\xfd\xf5\x11\xfd\xe8\xa7\x9c\x67\x99\xc8\x2d\x6e\xa4\x01\xed\x01\x81\x29\xf8\x0a\x28\xc4\x6d\x04\xca\xd4\xd6\xbc\x11\x63\x4a\x6a\x45\xc3\x63\xd0\x75\xd3\xf6\x91\xbb\x2e\xd3\xb4\x73\xe4\xf6\xeb\xd6\x5c\xdf\xbf\x7b\xb7\xf8\xe9\xe2\xdd\xfd\x95\x6d\x7e\xab\x0e\x4c\xf0\x58\x67\x9f\xb8\x9a\x50\x9f\x78\xa5\x39\xf3\x59\x61\xa5\x72\x95\x6f\x35\x1e\x46\xca\x34\xad\x6a\x04\xcd\xe5\x47\x2a\x07\x60\xd9\xa8\x7f\x68\xfa\x8d\xf5\x76\x5c\xf5\xfb\xf0\xd8\x47\x53\xf8\x47\x7c\xf7\x8c\xf9\x46\xbc\x06\x25\x3b\x52\xc8\x6a\xef\x57\xca\xf9\x38\x62\x39\x20\x08\xb8\x6b\x39\x9c\x5a\x05\xed\xb0\xe5\x71\x2f\x81\x7f\x59\xc4\x56\xbc\xec\x24\xab\x03\xfb\xee\x63\xf5\x3e\xc1\xd9\xf2\x18\x83\x6b\x50\xee\x04\xb5\xab\x40\x91\xd7\xcb\x3b\xcd\x25\x9e\x55\x4d\x9d\x0a\xd5\x5d\x27\x36\x23\x34\x55\xca\xe5\xba\xe4\x6b\xa1\x27\xcc\x7e\x7c\x2e\xb7\xc9\x7a\x83\x6c\x12\x65\xe6\x71\xc9\x9c\x49\x20\x1d\xa9\x4d\xa1\x1a\x2e\x39\x91\x73\x49\x6d\x92\x6b\x5f\x3c\x62\x64\xff\x78\xeb\x9a\x43\x60\x74\x2c\x88\xe4\xb7\xe4\x5c\xe2\xe0\x22\xcb\x85\x8d\x58\x81\xff\xce\x8b\xfa\xd4\xe5\x10\x63\x46\x89\x6a\x63\xd3\xd7\x10\x3b\x9b\x4b\x97\x88\x8a\x1e\x3e\xb5\x21\x90\x69\xc0\x2a\xed\xb7\x27\x76\x30\xec\x9a\xa0\xba\xb5\xcf\xfa\xa3\xf7\x00\xb3\xe0\x16\x23\xb4\x76\x9b\x66\x6c\xe0\xa9\x8e\x07\x86\xa3\x8b\x9d\x00\xb2\x8f\xdb\x6b\x63\xdb\x85\xcf\x74\x42\x90\x54\xb9\x4c\x47\x54\x09\x9f\xef\xad\x14\x9a\xe4\xfe\x4a\x0d\x38\x32\xde\xd4\x96\x96\x99\xa6\x7d\x9f\x5d\x2a\xd5\x31\x2e\x27\x0c\xfc\x56\x2a\x45\x2f\xec\xeb\x8c\x32\x2a\x0e\x99\x2f\x03\x52\xf2\xea\x5d\x64\xad\x4f\x5f\x85\xd2\x44\x1f\x54\x1d\xef\x3f\x0d\xae\x91\xf3\x10\x68\xb3\x1b\x65\x61\x69\x9f\xab\x18\xd8\x0e\x33\x49\x71\x3f\x2b\x5a\x9b\xa0\x79\x31\x8b\x07\x15\x65\xcd\xfc\x9f\xb8\x49\x34\xf1\x23\x37\x81\x4a\x46\x65\xae\x8d\xb9\x24\x7b\x47\x56\x5b\xe5\x8c\xcf\xa5\x55\x3f\xb0\xe6\xf8\xc2\x82\xa8\x72\xf7\x57\x4c\x73\xcc\x90\x3d\x1c\x3c\xd6\x82\x29\x29\xac\x35\x9c\x4b\xab\x74\x3c\x61\x7c\xa9\xad\x80\x30\x97\x3b\xa7\xea\x9b\x38\xc9\x36\x2e\x19\xa0\xd3\xf6\xdb\xbc\x9a\x1b\x50\xd9\xe7\x7f\x65\xfe\xef\x1f\xbf\xfa\x7f\x01\x00\x00\xff\xff\x4c\xbc\xab\x57\xc2\x97\x04\x00") func adminSwaggerJsonBytes() ([]byte, error) { return bindataRead( @@ -93,7 +93,7 @@ func adminSwaggerJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "admin.swagger.json", size: 300962, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} + info := bindataFileInfo{name: "admin.swagger.json", size: 300994, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/gen/pb-java/flyteidl/service/ExternalPluginServiceOuterClass.java b/gen/pb-java/flyteidl/service/ExternalPluginServiceOuterClass.java new file mode 100644 index 000000000..a1131d753 --- /dev/null +++ b/gen/pb-java/flyteidl/service/ExternalPluginServiceOuterClass.java @@ -0,0 +1,4742 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/service/external_plugin_service.proto + +package flyteidl.service; + +public final class ExternalPluginServiceOuterClass { + private ExternalPluginServiceOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + /** + *
+   * The state of the execution is used to control its visibility in the UI/CLI.
+   * 
+ * + * Protobuf enum {@code flyteidl.service.State} + */ + public enum State + implements com.google.protobuf.ProtocolMessageEnum { + /** + * RETRYABLE_FAILURE = 0; + */ + RETRYABLE_FAILURE(0), + /** + * PERMANENT_FAILURE = 1; + */ + PERMANENT_FAILURE(1), + /** + * PENDING = 2; + */ + PENDING(2), + /** + * RUNNING = 3; + */ + RUNNING(3), + /** + * SUCCEEDED = 4; + */ + SUCCEEDED(4), + UNRECOGNIZED(-1), + ; + + /** + * RETRYABLE_FAILURE = 0; + */ + public static final int RETRYABLE_FAILURE_VALUE = 0; + /** + * PERMANENT_FAILURE = 1; + */ + public static final int PERMANENT_FAILURE_VALUE = 1; + /** + * PENDING = 2; + */ + public static final int PENDING_VALUE = 2; + /** + * RUNNING = 3; + */ + public static final int RUNNING_VALUE = 3; + /** + * SUCCEEDED = 4; + */ + public static final int SUCCEEDED_VALUE = 4; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static State valueOf(int value) { + return forNumber(value); + } + + public static State forNumber(int value) { + switch (value) { + case 0: return RETRYABLE_FAILURE; + case 1: return PERMANENT_FAILURE; + case 2: return PENDING; + case 3: return RUNNING; + case 4: return SUCCEEDED; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + State> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public State findValueByNumber(int number) { + return State.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.getDescriptor().getEnumTypes().get(0); + } + + private static final State[] VALUES = values(); + + public static State valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private State(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:flyteidl.service.State) + } + + public interface TaskCreateRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.service.TaskCreateRequest) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * The inputs required to start the execution. All required inputs must be
+     * included in this map. If not required and not provided, defaults apply.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + boolean hasInputs(); + /** + *
+     * The inputs required to start the execution. All required inputs must be
+     * included in this map. If not required and not provided, defaults apply.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + flyteidl.core.Literals.LiteralMap getInputs(); + /** + *
+     * The inputs required to start the execution. All required inputs must be
+     * included in this map. If not required and not provided, defaults apply.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + flyteidl.core.Literals.LiteralMapOrBuilder getInputsOrBuilder(); + + /** + *
+     * Template of the task that encapsulates all the metadata of the task.
+     * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + boolean hasTemplate(); + /** + *
+     * Template of the task that encapsulates all the metadata of the task.
+     * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + flyteidl.core.Tasks.TaskTemplate getTemplate(); + /** + *
+     * Template of the task that encapsulates all the metadata of the task.
+     * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + flyteidl.core.Tasks.TaskTemplateOrBuilder getTemplateOrBuilder(); + + /** + *
+     * Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)
+     * 
+ * + * string output_prefix = 3; + */ + java.lang.String getOutputPrefix(); + /** + *
+     * Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)
+     * 
+ * + * string output_prefix = 3; + */ + com.google.protobuf.ByteString + getOutputPrefixBytes(); + } + /** + *
+   * Represents a request structure to create task.
+   * 
+ * + * Protobuf type {@code flyteidl.service.TaskCreateRequest} + */ + public static final class TaskCreateRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.service.TaskCreateRequest) + TaskCreateRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use TaskCreateRequest.newBuilder() to construct. + private TaskCreateRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private TaskCreateRequest() { + outputPrefix_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private TaskCreateRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + flyteidl.core.Literals.LiteralMap.Builder subBuilder = null; + if (inputs_ != null) { + subBuilder = inputs_.toBuilder(); + } + inputs_ = input.readMessage(flyteidl.core.Literals.LiteralMap.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(inputs_); + inputs_ = subBuilder.buildPartial(); + } + + break; + } + case 18: { + flyteidl.core.Tasks.TaskTemplate.Builder subBuilder = null; + if (template_ != null) { + subBuilder = template_.toBuilder(); + } + template_ = input.readMessage(flyteidl.core.Tasks.TaskTemplate.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(template_); + template_ = subBuilder.buildPartial(); + } + + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + outputPrefix_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskCreateRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskCreateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest.Builder.class); + } + + public static final int INPUTS_FIELD_NUMBER = 1; + private flyteidl.core.Literals.LiteralMap inputs_; + /** + *
+     * The inputs required to start the execution. All required inputs must be
+     * included in this map. If not required and not provided, defaults apply.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public boolean hasInputs() { + return inputs_ != null; + } + /** + *
+     * The inputs required to start the execution. All required inputs must be
+     * included in this map. If not required and not provided, defaults apply.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public flyteidl.core.Literals.LiteralMap getInputs() { + return inputs_ == null ? flyteidl.core.Literals.LiteralMap.getDefaultInstance() : inputs_; + } + /** + *
+     * The inputs required to start the execution. All required inputs must be
+     * included in this map. If not required and not provided, defaults apply.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public flyteidl.core.Literals.LiteralMapOrBuilder getInputsOrBuilder() { + return getInputs(); + } + + public static final int TEMPLATE_FIELD_NUMBER = 2; + private flyteidl.core.Tasks.TaskTemplate template_; + /** + *
+     * Template of the task that encapsulates all the metadata of the task.
+     * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public boolean hasTemplate() { + return template_ != null; + } + /** + *
+     * Template of the task that encapsulates all the metadata of the task.
+     * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public flyteidl.core.Tasks.TaskTemplate getTemplate() { + return template_ == null ? flyteidl.core.Tasks.TaskTemplate.getDefaultInstance() : template_; + } + /** + *
+     * Template of the task that encapsulates all the metadata of the task.
+     * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public flyteidl.core.Tasks.TaskTemplateOrBuilder getTemplateOrBuilder() { + return getTemplate(); + } + + public static final int OUTPUT_PREFIX_FIELD_NUMBER = 3; + private volatile java.lang.Object outputPrefix_; + /** + *
+     * Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)
+     * 
+ * + * string output_prefix = 3; + */ + public java.lang.String getOutputPrefix() { + java.lang.Object ref = outputPrefix_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + outputPrefix_ = s; + return s; + } + } + /** + *
+     * Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)
+     * 
+ * + * string output_prefix = 3; + */ + public com.google.protobuf.ByteString + getOutputPrefixBytes() { + java.lang.Object ref = outputPrefix_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + outputPrefix_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (inputs_ != null) { + output.writeMessage(1, getInputs()); + } + if (template_ != null) { + output.writeMessage(2, getTemplate()); + } + if (!getOutputPrefixBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, outputPrefix_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (inputs_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getInputs()); + } + if (template_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getTemplate()); + } + if (!getOutputPrefixBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, outputPrefix_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest)) { + return super.equals(obj); + } + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest other = (flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest) obj; + + if (hasInputs() != other.hasInputs()) return false; + if (hasInputs()) { + if (!getInputs() + .equals(other.getInputs())) return false; + } + if (hasTemplate() != other.hasTemplate()) return false; + if (hasTemplate()) { + if (!getTemplate() + .equals(other.getTemplate())) return false; + } + if (!getOutputPrefix() + .equals(other.getOutputPrefix())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasInputs()) { + hash = (37 * hash) + INPUTS_FIELD_NUMBER; + hash = (53 * hash) + getInputs().hashCode(); + } + if (hasTemplate()) { + hash = (37 * hash) + TEMPLATE_FIELD_NUMBER; + hash = (53 * hash) + getTemplate().hashCode(); + } + hash = (37 * hash) + OUTPUT_PREFIX_FIELD_NUMBER; + hash = (53 * hash) + getOutputPrefix().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Represents a request structure to create task.
+     * 
+ * + * Protobuf type {@code flyteidl.service.TaskCreateRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.service.TaskCreateRequest) + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskCreateRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskCreateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest.Builder.class); + } + + // Construct using flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (inputsBuilder_ == null) { + inputs_ = null; + } else { + inputs_ = null; + inputsBuilder_ = null; + } + if (templateBuilder_ == null) { + template_ = null; + } else { + template_ = null; + templateBuilder_ = null; + } + outputPrefix_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskCreateRequest_descriptor; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest getDefaultInstanceForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest build() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest buildPartial() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest result = new flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest(this); + if (inputsBuilder_ == null) { + result.inputs_ = inputs_; + } else { + result.inputs_ = inputsBuilder_.build(); + } + if (templateBuilder_ == null) { + result.template_ = template_; + } else { + result.template_ = templateBuilder_.build(); + } + result.outputPrefix_ = outputPrefix_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest) { + return mergeFrom((flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest other) { + if (other == flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest.getDefaultInstance()) return this; + if (other.hasInputs()) { + mergeInputs(other.getInputs()); + } + if (other.hasTemplate()) { + mergeTemplate(other.getTemplate()); + } + if (!other.getOutputPrefix().isEmpty()) { + outputPrefix_ = other.outputPrefix_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private flyteidl.core.Literals.LiteralMap inputs_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Literals.LiteralMap, flyteidl.core.Literals.LiteralMap.Builder, flyteidl.core.Literals.LiteralMapOrBuilder> inputsBuilder_; + /** + *
+       * The inputs required to start the execution. All required inputs must be
+       * included in this map. If not required and not provided, defaults apply.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public boolean hasInputs() { + return inputsBuilder_ != null || inputs_ != null; + } + /** + *
+       * The inputs required to start the execution. All required inputs must be
+       * included in this map. If not required and not provided, defaults apply.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public flyteidl.core.Literals.LiteralMap getInputs() { + if (inputsBuilder_ == null) { + return inputs_ == null ? flyteidl.core.Literals.LiteralMap.getDefaultInstance() : inputs_; + } else { + return inputsBuilder_.getMessage(); + } + } + /** + *
+       * The inputs required to start the execution. All required inputs must be
+       * included in this map. If not required and not provided, defaults apply.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public Builder setInputs(flyteidl.core.Literals.LiteralMap value) { + if (inputsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + inputs_ = value; + onChanged(); + } else { + inputsBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * The inputs required to start the execution. All required inputs must be
+       * included in this map. If not required and not provided, defaults apply.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public Builder setInputs( + flyteidl.core.Literals.LiteralMap.Builder builderForValue) { + if (inputsBuilder_ == null) { + inputs_ = builderForValue.build(); + onChanged(); + } else { + inputsBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * The inputs required to start the execution. All required inputs must be
+       * included in this map. If not required and not provided, defaults apply.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public Builder mergeInputs(flyteidl.core.Literals.LiteralMap value) { + if (inputsBuilder_ == null) { + if (inputs_ != null) { + inputs_ = + flyteidl.core.Literals.LiteralMap.newBuilder(inputs_).mergeFrom(value).buildPartial(); + } else { + inputs_ = value; + } + onChanged(); + } else { + inputsBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * The inputs required to start the execution. All required inputs must be
+       * included in this map. If not required and not provided, defaults apply.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public Builder clearInputs() { + if (inputsBuilder_ == null) { + inputs_ = null; + onChanged(); + } else { + inputs_ = null; + inputsBuilder_ = null; + } + + return this; + } + /** + *
+       * The inputs required to start the execution. All required inputs must be
+       * included in this map. If not required and not provided, defaults apply.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public flyteidl.core.Literals.LiteralMap.Builder getInputsBuilder() { + + onChanged(); + return getInputsFieldBuilder().getBuilder(); + } + /** + *
+       * The inputs required to start the execution. All required inputs must be
+       * included in this map. If not required and not provided, defaults apply.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + public flyteidl.core.Literals.LiteralMapOrBuilder getInputsOrBuilder() { + if (inputsBuilder_ != null) { + return inputsBuilder_.getMessageOrBuilder(); + } else { + return inputs_ == null ? + flyteidl.core.Literals.LiteralMap.getDefaultInstance() : inputs_; + } + } + /** + *
+       * The inputs required to start the execution. All required inputs must be
+       * included in this map. If not required and not provided, defaults apply.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap inputs = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Literals.LiteralMap, flyteidl.core.Literals.LiteralMap.Builder, flyteidl.core.Literals.LiteralMapOrBuilder> + getInputsFieldBuilder() { + if (inputsBuilder_ == null) { + inputsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Literals.LiteralMap, flyteidl.core.Literals.LiteralMap.Builder, flyteidl.core.Literals.LiteralMapOrBuilder>( + getInputs(), + getParentForChildren(), + isClean()); + inputs_ = null; + } + return inputsBuilder_; + } + + private flyteidl.core.Tasks.TaskTemplate template_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Tasks.TaskTemplate, flyteidl.core.Tasks.TaskTemplate.Builder, flyteidl.core.Tasks.TaskTemplateOrBuilder> templateBuilder_; + /** + *
+       * Template of the task that encapsulates all the metadata of the task.
+       * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public boolean hasTemplate() { + return templateBuilder_ != null || template_ != null; + } + /** + *
+       * Template of the task that encapsulates all the metadata of the task.
+       * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public flyteidl.core.Tasks.TaskTemplate getTemplate() { + if (templateBuilder_ == null) { + return template_ == null ? flyteidl.core.Tasks.TaskTemplate.getDefaultInstance() : template_; + } else { + return templateBuilder_.getMessage(); + } + } + /** + *
+       * Template of the task that encapsulates all the metadata of the task.
+       * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public Builder setTemplate(flyteidl.core.Tasks.TaskTemplate value) { + if (templateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + template_ = value; + onChanged(); + } else { + templateBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Template of the task that encapsulates all the metadata of the task.
+       * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public Builder setTemplate( + flyteidl.core.Tasks.TaskTemplate.Builder builderForValue) { + if (templateBuilder_ == null) { + template_ = builderForValue.build(); + onChanged(); + } else { + templateBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Template of the task that encapsulates all the metadata of the task.
+       * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public Builder mergeTemplate(flyteidl.core.Tasks.TaskTemplate value) { + if (templateBuilder_ == null) { + if (template_ != null) { + template_ = + flyteidl.core.Tasks.TaskTemplate.newBuilder(template_).mergeFrom(value).buildPartial(); + } else { + template_ = value; + } + onChanged(); + } else { + templateBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Template of the task that encapsulates all the metadata of the task.
+       * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public Builder clearTemplate() { + if (templateBuilder_ == null) { + template_ = null; + onChanged(); + } else { + template_ = null; + templateBuilder_ = null; + } + + return this; + } + /** + *
+       * Template of the task that encapsulates all the metadata of the task.
+       * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public flyteidl.core.Tasks.TaskTemplate.Builder getTemplateBuilder() { + + onChanged(); + return getTemplateFieldBuilder().getBuilder(); + } + /** + *
+       * Template of the task that encapsulates all the metadata of the task.
+       * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + public flyteidl.core.Tasks.TaskTemplateOrBuilder getTemplateOrBuilder() { + if (templateBuilder_ != null) { + return templateBuilder_.getMessageOrBuilder(); + } else { + return template_ == null ? + flyteidl.core.Tasks.TaskTemplate.getDefaultInstance() : template_; + } + } + /** + *
+       * Template of the task that encapsulates all the metadata of the task.
+       * 
+ * + * .flyteidl.core.TaskTemplate template = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Tasks.TaskTemplate, flyteidl.core.Tasks.TaskTemplate.Builder, flyteidl.core.Tasks.TaskTemplateOrBuilder> + getTemplateFieldBuilder() { + if (templateBuilder_ == null) { + templateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Tasks.TaskTemplate, flyteidl.core.Tasks.TaskTemplate.Builder, flyteidl.core.Tasks.TaskTemplateOrBuilder>( + getTemplate(), + getParentForChildren(), + isClean()); + template_ = null; + } + return templateBuilder_; + } + + private java.lang.Object outputPrefix_ = ""; + /** + *
+       * Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)
+       * 
+ * + * string output_prefix = 3; + */ + public java.lang.String getOutputPrefix() { + java.lang.Object ref = outputPrefix_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + outputPrefix_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)
+       * 
+ * + * string output_prefix = 3; + */ + public com.google.protobuf.ByteString + getOutputPrefixBytes() { + java.lang.Object ref = outputPrefix_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + outputPrefix_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)
+       * 
+ * + * string output_prefix = 3; + */ + public Builder setOutputPrefix( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + outputPrefix_ = value; + onChanged(); + return this; + } + /** + *
+       * Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)
+       * 
+ * + * string output_prefix = 3; + */ + public Builder clearOutputPrefix() { + + outputPrefix_ = getDefaultInstance().getOutputPrefix(); + onChanged(); + return this; + } + /** + *
+       * Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring)
+       * 
+ * + * string output_prefix = 3; + */ + public Builder setOutputPrefixBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + outputPrefix_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.service.TaskCreateRequest) + } + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskCreateRequest) + private static final flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest(); + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TaskCreateRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TaskCreateRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface TaskCreateResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.service.TaskCreateResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * string job_id = 1; + */ + java.lang.String getJobId(); + /** + * string job_id = 1; + */ + com.google.protobuf.ByteString + getJobIdBytes(); + } + /** + *
+   * Represents a create response structure.
+   * 
+ * + * Protobuf type {@code flyteidl.service.TaskCreateResponse} + */ + public static final class TaskCreateResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.service.TaskCreateResponse) + TaskCreateResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use TaskCreateResponse.newBuilder() to construct. + private TaskCreateResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private TaskCreateResponse() { + jobId_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private TaskCreateResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + jobId_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskCreateResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskCreateResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse.Builder.class); + } + + public static final int JOB_ID_FIELD_NUMBER = 1; + private volatile java.lang.Object jobId_; + /** + * string job_id = 1; + */ + public java.lang.String getJobId() { + java.lang.Object ref = jobId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + jobId_ = s; + return s; + } + } + /** + * string job_id = 1; + */ + public com.google.protobuf.ByteString + getJobIdBytes() { + java.lang.Object ref = jobId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + jobId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getJobIdBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, jobId_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getJobIdBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, jobId_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse)) { + return super.equals(obj); + } + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse other = (flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse) obj; + + if (!getJobId() + .equals(other.getJobId())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + JOB_ID_FIELD_NUMBER; + hash = (53 * hash) + getJobId().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Represents a create response structure.
+     * 
+ * + * Protobuf type {@code flyteidl.service.TaskCreateResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.service.TaskCreateResponse) + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskCreateResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskCreateResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse.Builder.class); + } + + // Construct using flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + jobId_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskCreateResponse_descriptor; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse getDefaultInstanceForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse build() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse buildPartial() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse result = new flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse(this); + result.jobId_ = jobId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse) { + return mergeFrom((flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse other) { + if (other == flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse.getDefaultInstance()) return this; + if (!other.getJobId().isEmpty()) { + jobId_ = other.jobId_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object jobId_ = ""; + /** + * string job_id = 1; + */ + public java.lang.String getJobId() { + java.lang.Object ref = jobId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + jobId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string job_id = 1; + */ + public com.google.protobuf.ByteString + getJobIdBytes() { + java.lang.Object ref = jobId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + jobId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string job_id = 1; + */ + public Builder setJobId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + jobId_ = value; + onChanged(); + return this; + } + /** + * string job_id = 1; + */ + public Builder clearJobId() { + + jobId_ = getDefaultInstance().getJobId(); + onChanged(); + return this; + } + /** + * string job_id = 1; + */ + public Builder setJobIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + jobId_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.service.TaskCreateResponse) + } + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskCreateResponse) + private static final flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse(); + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TaskCreateResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TaskCreateResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskCreateResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface TaskGetRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.service.TaskGetRequest) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * A predefined yet extensible Task type identifier.
+     * 
+ * + * string task_type = 1; + */ + java.lang.String getTaskType(); + /** + *
+     * A predefined yet extensible Task type identifier.
+     * 
+ * + * string task_type = 1; + */ + com.google.protobuf.ByteString + getTaskTypeBytes(); + + /** + *
+     * The unique id identifying the job.
+     * 
+ * + * string job_id = 2; + */ + java.lang.String getJobId(); + /** + *
+     * The unique id identifying the job.
+     * 
+ * + * string job_id = 2; + */ + com.google.protobuf.ByteString + getJobIdBytes(); + } + /** + *
+   * A message used to fetch a job state from backend plugin server.
+   * 
+ * + * Protobuf type {@code flyteidl.service.TaskGetRequest} + */ + public static final class TaskGetRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.service.TaskGetRequest) + TaskGetRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use TaskGetRequest.newBuilder() to construct. + private TaskGetRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private TaskGetRequest() { + taskType_ = ""; + jobId_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private TaskGetRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + taskType_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + jobId_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskGetRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskGetRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest.Builder.class); + } + + public static final int TASK_TYPE_FIELD_NUMBER = 1; + private volatile java.lang.Object taskType_; + /** + *
+     * A predefined yet extensible Task type identifier.
+     * 
+ * + * string task_type = 1; + */ + public java.lang.String getTaskType() { + java.lang.Object ref = taskType_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + taskType_ = s; + return s; + } + } + /** + *
+     * A predefined yet extensible Task type identifier.
+     * 
+ * + * string task_type = 1; + */ + public com.google.protobuf.ByteString + getTaskTypeBytes() { + java.lang.Object ref = taskType_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + taskType_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int JOB_ID_FIELD_NUMBER = 2; + private volatile java.lang.Object jobId_; + /** + *
+     * The unique id identifying the job.
+     * 
+ * + * string job_id = 2; + */ + public java.lang.String getJobId() { + java.lang.Object ref = jobId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + jobId_ = s; + return s; + } + } + /** + *
+     * The unique id identifying the job.
+     * 
+ * + * string job_id = 2; + */ + public com.google.protobuf.ByteString + getJobIdBytes() { + java.lang.Object ref = jobId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + jobId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getTaskTypeBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, taskType_); + } + if (!getJobIdBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, jobId_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getTaskTypeBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, taskType_); + } + if (!getJobIdBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, jobId_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest)) { + return super.equals(obj); + } + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest other = (flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest) obj; + + if (!getTaskType() + .equals(other.getTaskType())) return false; + if (!getJobId() + .equals(other.getJobId())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + TASK_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getTaskType().hashCode(); + hash = (37 * hash) + JOB_ID_FIELD_NUMBER; + hash = (53 * hash) + getJobId().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * A message used to fetch a job state from backend plugin server.
+     * 
+ * + * Protobuf type {@code flyteidl.service.TaskGetRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.service.TaskGetRequest) + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskGetRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskGetRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest.Builder.class); + } + + // Construct using flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + taskType_ = ""; + + jobId_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskGetRequest_descriptor; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest getDefaultInstanceForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest build() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest buildPartial() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest result = new flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest(this); + result.taskType_ = taskType_; + result.jobId_ = jobId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest) { + return mergeFrom((flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest other) { + if (other == flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest.getDefaultInstance()) return this; + if (!other.getTaskType().isEmpty()) { + taskType_ = other.taskType_; + onChanged(); + } + if (!other.getJobId().isEmpty()) { + jobId_ = other.jobId_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object taskType_ = ""; + /** + *
+       * A predefined yet extensible Task type identifier.
+       * 
+ * + * string task_type = 1; + */ + public java.lang.String getTaskType() { + java.lang.Object ref = taskType_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + taskType_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * A predefined yet extensible Task type identifier.
+       * 
+ * + * string task_type = 1; + */ + public com.google.protobuf.ByteString + getTaskTypeBytes() { + java.lang.Object ref = taskType_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + taskType_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * A predefined yet extensible Task type identifier.
+       * 
+ * + * string task_type = 1; + */ + public Builder setTaskType( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + taskType_ = value; + onChanged(); + return this; + } + /** + *
+       * A predefined yet extensible Task type identifier.
+       * 
+ * + * string task_type = 1; + */ + public Builder clearTaskType() { + + taskType_ = getDefaultInstance().getTaskType(); + onChanged(); + return this; + } + /** + *
+       * A predefined yet extensible Task type identifier.
+       * 
+ * + * string task_type = 1; + */ + public Builder setTaskTypeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + taskType_ = value; + onChanged(); + return this; + } + + private java.lang.Object jobId_ = ""; + /** + *
+       * The unique id identifying the job.
+       * 
+ * + * string job_id = 2; + */ + public java.lang.String getJobId() { + java.lang.Object ref = jobId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + jobId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * The unique id identifying the job.
+       * 
+ * + * string job_id = 2; + */ + public com.google.protobuf.ByteString + getJobIdBytes() { + java.lang.Object ref = jobId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + jobId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * The unique id identifying the job.
+       * 
+ * + * string job_id = 2; + */ + public Builder setJobId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + jobId_ = value; + onChanged(); + return this; + } + /** + *
+       * The unique id identifying the job.
+       * 
+ * + * string job_id = 2; + */ + public Builder clearJobId() { + + jobId_ = getDefaultInstance().getJobId(); + onChanged(); + return this; + } + /** + *
+       * The unique id identifying the job.
+       * 
+ * + * string job_id = 2; + */ + public Builder setJobIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + jobId_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.service.TaskGetRequest) + } + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskGetRequest) + private static final flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest(); + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TaskGetRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TaskGetRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskGetRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface TaskGetResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.service.TaskGetResponse) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * The state of the execution is used to control its visibility in the UI/CLI.
+     * 
+ * + * .flyteidl.service.State state = 1; + */ + int getStateValue(); + /** + *
+     * The state of the execution is used to control its visibility in the UI/CLI.
+     * 
+ * + * .flyteidl.service.State state = 1; + */ + flyteidl.service.ExternalPluginServiceOuterClass.State getState(); + + /** + *
+     * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+     * Structured dataset pointing to the query result table.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + boolean hasOutputs(); + /** + *
+     * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+     * Structured dataset pointing to the query result table.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + flyteidl.core.Literals.LiteralMap getOutputs(); + /** + *
+     * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+     * Structured dataset pointing to the query result table.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + flyteidl.core.Literals.LiteralMapOrBuilder getOutputsOrBuilder(); + } + /** + *
+   * Response to get an individual task state.
+   * 
+ * + * Protobuf type {@code flyteidl.service.TaskGetResponse} + */ + public static final class TaskGetResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.service.TaskGetResponse) + TaskGetResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use TaskGetResponse.newBuilder() to construct. + private TaskGetResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private TaskGetResponse() { + state_ = 0; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private TaskGetResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + int rawValue = input.readEnum(); + + state_ = rawValue; + break; + } + case 18: { + flyteidl.core.Literals.LiteralMap.Builder subBuilder = null; + if (outputs_ != null) { + subBuilder = outputs_.toBuilder(); + } + outputs_ = input.readMessage(flyteidl.core.Literals.LiteralMap.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(outputs_); + outputs_ = subBuilder.buildPartial(); + } + + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskGetResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskGetResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse.Builder.class); + } + + public static final int STATE_FIELD_NUMBER = 1; + private int state_; + /** + *
+     * The state of the execution is used to control its visibility in the UI/CLI.
+     * 
+ * + * .flyteidl.service.State state = 1; + */ + public int getStateValue() { + return state_; + } + /** + *
+     * The state of the execution is used to control its visibility in the UI/CLI.
+     * 
+ * + * .flyteidl.service.State state = 1; + */ + public flyteidl.service.ExternalPluginServiceOuterClass.State getState() { + @SuppressWarnings("deprecation") + flyteidl.service.ExternalPluginServiceOuterClass.State result = flyteidl.service.ExternalPluginServiceOuterClass.State.valueOf(state_); + return result == null ? flyteidl.service.ExternalPluginServiceOuterClass.State.UNRECOGNIZED : result; + } + + public static final int OUTPUTS_FIELD_NUMBER = 2; + private flyteidl.core.Literals.LiteralMap outputs_; + /** + *
+     * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+     * Structured dataset pointing to the query result table.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public boolean hasOutputs() { + return outputs_ != null; + } + /** + *
+     * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+     * Structured dataset pointing to the query result table.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public flyteidl.core.Literals.LiteralMap getOutputs() { + return outputs_ == null ? flyteidl.core.Literals.LiteralMap.getDefaultInstance() : outputs_; + } + /** + *
+     * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+     * Structured dataset pointing to the query result table.
+     * +optional
+     * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public flyteidl.core.Literals.LiteralMapOrBuilder getOutputsOrBuilder() { + return getOutputs(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (state_ != flyteidl.service.ExternalPluginServiceOuterClass.State.RETRYABLE_FAILURE.getNumber()) { + output.writeEnum(1, state_); + } + if (outputs_ != null) { + output.writeMessage(2, getOutputs()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (state_ != flyteidl.service.ExternalPluginServiceOuterClass.State.RETRYABLE_FAILURE.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, state_); + } + if (outputs_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getOutputs()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse)) { + return super.equals(obj); + } + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse other = (flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse) obj; + + if (state_ != other.state_) return false; + if (hasOutputs() != other.hasOutputs()) return false; + if (hasOutputs()) { + if (!getOutputs() + .equals(other.getOutputs())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + state_; + if (hasOutputs()) { + hash = (37 * hash) + OUTPUTS_FIELD_NUMBER; + hash = (53 * hash) + getOutputs().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Response to get an individual task state.
+     * 
+ * + * Protobuf type {@code flyteidl.service.TaskGetResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.service.TaskGetResponse) + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskGetResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskGetResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse.Builder.class); + } + + // Construct using flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + state_ = 0; + + if (outputsBuilder_ == null) { + outputs_ = null; + } else { + outputs_ = null; + outputsBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskGetResponse_descriptor; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse getDefaultInstanceForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse build() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse buildPartial() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse result = new flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse(this); + result.state_ = state_; + if (outputsBuilder_ == null) { + result.outputs_ = outputs_; + } else { + result.outputs_ = outputsBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse) { + return mergeFrom((flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse other) { + if (other == flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse.getDefaultInstance()) return this; + if (other.state_ != 0) { + setStateValue(other.getStateValue()); + } + if (other.hasOutputs()) { + mergeOutputs(other.getOutputs()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int state_ = 0; + /** + *
+       * The state of the execution is used to control its visibility in the UI/CLI.
+       * 
+ * + * .flyteidl.service.State state = 1; + */ + public int getStateValue() { + return state_; + } + /** + *
+       * The state of the execution is used to control its visibility in the UI/CLI.
+       * 
+ * + * .flyteidl.service.State state = 1; + */ + public Builder setStateValue(int value) { + state_ = value; + onChanged(); + return this; + } + /** + *
+       * The state of the execution is used to control its visibility in the UI/CLI.
+       * 
+ * + * .flyteidl.service.State state = 1; + */ + public flyteidl.service.ExternalPluginServiceOuterClass.State getState() { + @SuppressWarnings("deprecation") + flyteidl.service.ExternalPluginServiceOuterClass.State result = flyteidl.service.ExternalPluginServiceOuterClass.State.valueOf(state_); + return result == null ? flyteidl.service.ExternalPluginServiceOuterClass.State.UNRECOGNIZED : result; + } + /** + *
+       * The state of the execution is used to control its visibility in the UI/CLI.
+       * 
+ * + * .flyteidl.service.State state = 1; + */ + public Builder setState(flyteidl.service.ExternalPluginServiceOuterClass.State value) { + if (value == null) { + throw new NullPointerException(); + } + + state_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * The state of the execution is used to control its visibility in the UI/CLI.
+       * 
+ * + * .flyteidl.service.State state = 1; + */ + public Builder clearState() { + + state_ = 0; + onChanged(); + return this; + } + + private flyteidl.core.Literals.LiteralMap outputs_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Literals.LiteralMap, flyteidl.core.Literals.LiteralMap.Builder, flyteidl.core.Literals.LiteralMapOrBuilder> outputsBuilder_; + /** + *
+       * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+       * Structured dataset pointing to the query result table.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public boolean hasOutputs() { + return outputsBuilder_ != null || outputs_ != null; + } + /** + *
+       * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+       * Structured dataset pointing to the query result table.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public flyteidl.core.Literals.LiteralMap getOutputs() { + if (outputsBuilder_ == null) { + return outputs_ == null ? flyteidl.core.Literals.LiteralMap.getDefaultInstance() : outputs_; + } else { + return outputsBuilder_.getMessage(); + } + } + /** + *
+       * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+       * Structured dataset pointing to the query result table.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public Builder setOutputs(flyteidl.core.Literals.LiteralMap value) { + if (outputsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + outputs_ = value; + onChanged(); + } else { + outputsBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+       * Structured dataset pointing to the query result table.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public Builder setOutputs( + flyteidl.core.Literals.LiteralMap.Builder builderForValue) { + if (outputsBuilder_ == null) { + outputs_ = builderForValue.build(); + onChanged(); + } else { + outputsBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+       * Structured dataset pointing to the query result table.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public Builder mergeOutputs(flyteidl.core.Literals.LiteralMap value) { + if (outputsBuilder_ == null) { + if (outputs_ != null) { + outputs_ = + flyteidl.core.Literals.LiteralMap.newBuilder(outputs_).mergeFrom(value).buildPartial(); + } else { + outputs_ = value; + } + onChanged(); + } else { + outputsBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+       * Structured dataset pointing to the query result table.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public Builder clearOutputs() { + if (outputsBuilder_ == null) { + outputs_ = null; + onChanged(); + } else { + outputs_ = null; + outputsBuilder_ = null; + } + + return this; + } + /** + *
+       * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+       * Structured dataset pointing to the query result table.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public flyteidl.core.Literals.LiteralMap.Builder getOutputsBuilder() { + + onChanged(); + return getOutputsFieldBuilder().getBuilder(); + } + /** + *
+       * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+       * Structured dataset pointing to the query result table.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + public flyteidl.core.Literals.LiteralMapOrBuilder getOutputsOrBuilder() { + if (outputsBuilder_ != null) { + return outputsBuilder_.getMessageOrBuilder(); + } else { + return outputs_ == null ? + flyteidl.core.Literals.LiteralMap.getDefaultInstance() : outputs_; + } + } + /** + *
+       * The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a
+       * Structured dataset pointing to the query result table.
+       * +optional
+       * 
+ * + * .flyteidl.core.LiteralMap outputs = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Literals.LiteralMap, flyteidl.core.Literals.LiteralMap.Builder, flyteidl.core.Literals.LiteralMapOrBuilder> + getOutputsFieldBuilder() { + if (outputsBuilder_ == null) { + outputsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Literals.LiteralMap, flyteidl.core.Literals.LiteralMap.Builder, flyteidl.core.Literals.LiteralMapOrBuilder>( + getOutputs(), + getParentForChildren(), + isClean()); + outputs_ = null; + } + return outputsBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.service.TaskGetResponse) + } + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskGetResponse) + private static final flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse(); + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TaskGetResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TaskGetResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskGetResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface TaskDeleteRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.service.TaskDeleteRequest) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * A predefined yet extensible Task type identifier.
+     * 
+ * + * string task_type = 1; + */ + java.lang.String getTaskType(); + /** + *
+     * A predefined yet extensible Task type identifier.
+     * 
+ * + * string task_type = 1; + */ + com.google.protobuf.ByteString + getTaskTypeBytes(); + + /** + *
+     * The unique id identifying the job.
+     * 
+ * + * string job_id = 2; + */ + java.lang.String getJobId(); + /** + *
+     * The unique id identifying the job.
+     * 
+ * + * string job_id = 2; + */ + com.google.protobuf.ByteString + getJobIdBytes(); + } + /** + *
+   * A message used to delete a task.
+   * 
+ * + * Protobuf type {@code flyteidl.service.TaskDeleteRequest} + */ + public static final class TaskDeleteRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.service.TaskDeleteRequest) + TaskDeleteRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use TaskDeleteRequest.newBuilder() to construct. + private TaskDeleteRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private TaskDeleteRequest() { + taskType_ = ""; + jobId_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private TaskDeleteRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + taskType_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + jobId_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskDeleteRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskDeleteRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest.Builder.class); + } + + public static final int TASK_TYPE_FIELD_NUMBER = 1; + private volatile java.lang.Object taskType_; + /** + *
+     * A predefined yet extensible Task type identifier.
+     * 
+ * + * string task_type = 1; + */ + public java.lang.String getTaskType() { + java.lang.Object ref = taskType_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + taskType_ = s; + return s; + } + } + /** + *
+     * A predefined yet extensible Task type identifier.
+     * 
+ * + * string task_type = 1; + */ + public com.google.protobuf.ByteString + getTaskTypeBytes() { + java.lang.Object ref = taskType_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + taskType_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int JOB_ID_FIELD_NUMBER = 2; + private volatile java.lang.Object jobId_; + /** + *
+     * The unique id identifying the job.
+     * 
+ * + * string job_id = 2; + */ + public java.lang.String getJobId() { + java.lang.Object ref = jobId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + jobId_ = s; + return s; + } + } + /** + *
+     * The unique id identifying the job.
+     * 
+ * + * string job_id = 2; + */ + public com.google.protobuf.ByteString + getJobIdBytes() { + java.lang.Object ref = jobId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + jobId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getTaskTypeBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, taskType_); + } + if (!getJobIdBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, jobId_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getTaskTypeBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, taskType_); + } + if (!getJobIdBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, jobId_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest)) { + return super.equals(obj); + } + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest other = (flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest) obj; + + if (!getTaskType() + .equals(other.getTaskType())) return false; + if (!getJobId() + .equals(other.getJobId())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + TASK_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getTaskType().hashCode(); + hash = (37 * hash) + JOB_ID_FIELD_NUMBER; + hash = (53 * hash) + getJobId().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * A message used to delete a task.
+     * 
+ * + * Protobuf type {@code flyteidl.service.TaskDeleteRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.service.TaskDeleteRequest) + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskDeleteRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskDeleteRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest.Builder.class); + } + + // Construct using flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + taskType_ = ""; + + jobId_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskDeleteRequest_descriptor; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest getDefaultInstanceForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest build() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest buildPartial() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest result = new flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest(this); + result.taskType_ = taskType_; + result.jobId_ = jobId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest) { + return mergeFrom((flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest other) { + if (other == flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest.getDefaultInstance()) return this; + if (!other.getTaskType().isEmpty()) { + taskType_ = other.taskType_; + onChanged(); + } + if (!other.getJobId().isEmpty()) { + jobId_ = other.jobId_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object taskType_ = ""; + /** + *
+       * A predefined yet extensible Task type identifier.
+       * 
+ * + * string task_type = 1; + */ + public java.lang.String getTaskType() { + java.lang.Object ref = taskType_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + taskType_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * A predefined yet extensible Task type identifier.
+       * 
+ * + * string task_type = 1; + */ + public com.google.protobuf.ByteString + getTaskTypeBytes() { + java.lang.Object ref = taskType_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + taskType_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * A predefined yet extensible Task type identifier.
+       * 
+ * + * string task_type = 1; + */ + public Builder setTaskType( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + taskType_ = value; + onChanged(); + return this; + } + /** + *
+       * A predefined yet extensible Task type identifier.
+       * 
+ * + * string task_type = 1; + */ + public Builder clearTaskType() { + + taskType_ = getDefaultInstance().getTaskType(); + onChanged(); + return this; + } + /** + *
+       * A predefined yet extensible Task type identifier.
+       * 
+ * + * string task_type = 1; + */ + public Builder setTaskTypeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + taskType_ = value; + onChanged(); + return this; + } + + private java.lang.Object jobId_ = ""; + /** + *
+       * The unique id identifying the job.
+       * 
+ * + * string job_id = 2; + */ + public java.lang.String getJobId() { + java.lang.Object ref = jobId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + jobId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * The unique id identifying the job.
+       * 
+ * + * string job_id = 2; + */ + public com.google.protobuf.ByteString + getJobIdBytes() { + java.lang.Object ref = jobId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + jobId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * The unique id identifying the job.
+       * 
+ * + * string job_id = 2; + */ + public Builder setJobId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + jobId_ = value; + onChanged(); + return this; + } + /** + *
+       * The unique id identifying the job.
+       * 
+ * + * string job_id = 2; + */ + public Builder clearJobId() { + + jobId_ = getDefaultInstance().getJobId(); + onChanged(); + return this; + } + /** + *
+       * The unique id identifying the job.
+       * 
+ * + * string job_id = 2; + */ + public Builder setJobIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + jobId_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.service.TaskDeleteRequest) + } + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskDeleteRequest) + private static final flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest(); + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TaskDeleteRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TaskDeleteRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface TaskDeleteResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.service.TaskDeleteResponse) + com.google.protobuf.MessageOrBuilder { + } + /** + *
+   * Response to delete a task.
+   * 
+ * + * Protobuf type {@code flyteidl.service.TaskDeleteResponse} + */ + public static final class TaskDeleteResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.service.TaskDeleteResponse) + TaskDeleteResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use TaskDeleteResponse.newBuilder() to construct. + private TaskDeleteResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private TaskDeleteResponse() { + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private TaskDeleteResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskDeleteResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskDeleteResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse.Builder.class); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse)) { + return super.equals(obj); + } + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse other = (flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse) obj; + + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Response to delete a task.
+     * 
+ * + * Protobuf type {@code flyteidl.service.TaskDeleteResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.service.TaskDeleteResponse) + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskDeleteResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskDeleteResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse.class, flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse.Builder.class); + } + + // Construct using flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.internal_static_flyteidl_service_TaskDeleteResponse_descriptor; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse getDefaultInstanceForType() { + return flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse build() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse buildPartial() { + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse result = new flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse) { + return mergeFrom((flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse other) { + if (other == flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse.getDefaultInstance()) return this; + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.service.TaskDeleteResponse) + } + + // @@protoc_insertion_point(class_scope:flyteidl.service.TaskDeleteResponse) + private static final flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse(); + } + + public static flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TaskDeleteResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TaskDeleteResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.service.ExternalPluginServiceOuterClass.TaskDeleteResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_TaskCreateRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_TaskCreateRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_TaskCreateResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_TaskCreateResponse_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_TaskGetRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_TaskGetRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_TaskGetResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_TaskGetResponse_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_TaskDeleteRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_TaskDeleteRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_TaskDeleteResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_TaskDeleteResponse_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n.flyteidl/service/external_plugin_servi" + + "ce.proto\022\020flyteidl.service\032\034flyteidl/cor" + + "e/literals.proto\032\031flyteidl/core/tasks.pr" + + "oto\032\035flyteidl/core/interface.proto\"\204\001\n\021T" + + "askCreateRequest\022)\n\006inputs\030\001 \001(\0132\031.flyte" + + "idl.core.LiteralMap\022-\n\010template\030\002 \001(\0132\033." + + "flyteidl.core.TaskTemplate\022\025\n\routput_pre" + + "fix\030\003 \001(\t\"$\n\022TaskCreateResponse\022\016\n\006job_i" + + "d\030\001 \001(\t\"3\n\016TaskGetRequest\022\021\n\ttask_type\030\001" + + " \001(\t\022\016\n\006job_id\030\002 \001(\t\"e\n\017TaskGetResponse\022" + + "&\n\005state\030\001 \001(\0162\027.flyteidl.service.State\022" + + "*\n\007outputs\030\002 \001(\0132\031.flyteidl.core.Literal" + + "Map\"6\n\021TaskDeleteRequest\022\021\n\ttask_type\030\001 " + + "\001(\t\022\016\n\006job_id\030\002 \001(\t\"\024\n\022TaskDeleteRespons" + + "e*^\n\005State\022\025\n\021RETRYABLE_FAILURE\020\000\022\025\n\021PER" + + "MANENT_FAILURE\020\001\022\013\n\007PENDING\020\002\022\013\n\007RUNNING" + + "\020\003\022\r\n\tSUCCEEDED\020\0042\237\002\n\025ExternalPluginServ" + + "ice\022Y\n\nCreateTask\022#.flyteidl.service.Tas" + + "kCreateRequest\032$.flyteidl.service.TaskCr" + + "eateResponse\"\000\022P\n\007GetTask\022 .flyteidl.ser" + + "vice.TaskGetRequest\032!.flyteidl.service.T" + + "askGetResponse\"\000\022Y\n\nDeleteTask\022#.flyteid" + + "l.service.TaskDeleteRequest\032$.flyteidl.s" + + "ervice.TaskDeleteResponse\"\000B9Z7github.co" + + "m/flyteorg/flyteidl/gen/pb-go/flyteidl/s" + + "erviceb\006proto3" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + flyteidl.core.Literals.getDescriptor(), + flyteidl.core.Tasks.getDescriptor(), + flyteidl.core.Interface.getDescriptor(), + }, assigner); + internal_static_flyteidl_service_TaskCreateRequest_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_flyteidl_service_TaskCreateRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_service_TaskCreateRequest_descriptor, + new java.lang.String[] { "Inputs", "Template", "OutputPrefix", }); + internal_static_flyteidl_service_TaskCreateResponse_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_flyteidl_service_TaskCreateResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_service_TaskCreateResponse_descriptor, + new java.lang.String[] { "JobId", }); + internal_static_flyteidl_service_TaskGetRequest_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_flyteidl_service_TaskGetRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_service_TaskGetRequest_descriptor, + new java.lang.String[] { "TaskType", "JobId", }); + internal_static_flyteidl_service_TaskGetResponse_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_flyteidl_service_TaskGetResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_service_TaskGetResponse_descriptor, + new java.lang.String[] { "State", "Outputs", }); + internal_static_flyteidl_service_TaskDeleteRequest_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_flyteidl_service_TaskDeleteRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_service_TaskDeleteRequest_descriptor, + new java.lang.String[] { "TaskType", "JobId", }); + internal_static_flyteidl_service_TaskDeleteResponse_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_flyteidl_service_TaskDeleteResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_service_TaskDeleteResponse_descriptor, + new java.lang.String[] { }); + flyteidl.core.Literals.getDescriptor(); + flyteidl.core.Tasks.getDescriptor(); + flyteidl.core.Interface.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/gen/pb-js/flyteidl.d.ts b/gen/pb-js/flyteidl.d.ts index bf943b39c..e85f7b1e3 100644 --- a/gen/pb-js/flyteidl.d.ts +++ b/gen/pb-js/flyteidl.d.ts @@ -19437,6 +19437,438 @@ export namespace flyteidl { type CreateDownloadLinkCallback = (error: (Error|null), response?: flyteidl.service.CreateDownloadLinkResponse) => void; } + /** Represents an ExternalPluginService */ + class ExternalPluginService extends $protobuf.rpc.Service { + + /** + * Constructs a new ExternalPluginService service. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + */ + constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); + + /** + * Creates new ExternalPluginService service using the specified rpc implementation. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + * @returns RPC service. Useful where requests and/or responses are streamed. + */ + public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): ExternalPluginService; + + /** + * Calls CreateTask. + * @param request TaskCreateRequest message or plain object + * @param callback Node-style callback called with the error, if any, and TaskCreateResponse + */ + public createTask(request: flyteidl.service.ITaskCreateRequest, callback: flyteidl.service.ExternalPluginService.CreateTaskCallback): void; + + /** + * Calls CreateTask. + * @param request TaskCreateRequest message or plain object + * @returns Promise + */ + public createTask(request: flyteidl.service.ITaskCreateRequest): Promise; + + /** + * Calls GetTask. + * @param request TaskGetRequest message or plain object + * @param callback Node-style callback called with the error, if any, and TaskGetResponse + */ + public getTask(request: flyteidl.service.ITaskGetRequest, callback: flyteidl.service.ExternalPluginService.GetTaskCallback): void; + + /** + * Calls GetTask. + * @param request TaskGetRequest message or plain object + * @returns Promise + */ + public getTask(request: flyteidl.service.ITaskGetRequest): Promise; + + /** + * Calls DeleteTask. + * @param request TaskDeleteRequest message or plain object + * @param callback Node-style callback called with the error, if any, and TaskDeleteResponse + */ + public deleteTask(request: flyteidl.service.ITaskDeleteRequest, callback: flyteidl.service.ExternalPluginService.DeleteTaskCallback): void; + + /** + * Calls DeleteTask. + * @param request TaskDeleteRequest message or plain object + * @returns Promise + */ + public deleteTask(request: flyteidl.service.ITaskDeleteRequest): Promise; + } + + namespace ExternalPluginService { + + /** + * Callback as used by {@link flyteidl.service.ExternalPluginService#createTask}. + * @param error Error, if any + * @param [response] TaskCreateResponse + */ + type CreateTaskCallback = (error: (Error|null), response?: flyteidl.service.TaskCreateResponse) => void; + + /** + * Callback as used by {@link flyteidl.service.ExternalPluginService#getTask}. + * @param error Error, if any + * @param [response] TaskGetResponse + */ + type GetTaskCallback = (error: (Error|null), response?: flyteidl.service.TaskGetResponse) => void; + + /** + * Callback as used by {@link flyteidl.service.ExternalPluginService#deleteTask}. + * @param error Error, if any + * @param [response] TaskDeleteResponse + */ + type DeleteTaskCallback = (error: (Error|null), response?: flyteidl.service.TaskDeleteResponse) => void; + } + + /** State enum. */ + enum State { + RETRYABLE_FAILURE = 0, + PERMANENT_FAILURE = 1, + PENDING = 2, + RUNNING = 3, + SUCCEEDED = 4 + } + + /** Properties of a TaskCreateRequest. */ + interface ITaskCreateRequest { + + /** TaskCreateRequest inputs */ + inputs?: (flyteidl.core.ILiteralMap|null); + + /** TaskCreateRequest template */ + template?: (flyteidl.core.ITaskTemplate|null); + + /** TaskCreateRequest outputPrefix */ + outputPrefix?: (string|null); + } + + /** Represents a TaskCreateRequest. */ + class TaskCreateRequest implements ITaskCreateRequest { + + /** + * Constructs a new TaskCreateRequest. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.service.ITaskCreateRequest); + + /** TaskCreateRequest inputs. */ + public inputs?: (flyteidl.core.ILiteralMap|null); + + /** TaskCreateRequest template. */ + public template?: (flyteidl.core.ITaskTemplate|null); + + /** TaskCreateRequest outputPrefix. */ + public outputPrefix: string; + + /** + * Creates a new TaskCreateRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns TaskCreateRequest instance + */ + public static create(properties?: flyteidl.service.ITaskCreateRequest): flyteidl.service.TaskCreateRequest; + + /** + * Encodes the specified TaskCreateRequest message. Does not implicitly {@link flyteidl.service.TaskCreateRequest.verify|verify} messages. + * @param message TaskCreateRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.service.ITaskCreateRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TaskCreateRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TaskCreateRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.service.TaskCreateRequest; + + /** + * Verifies a TaskCreateRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + + /** Properties of a TaskCreateResponse. */ + interface ITaskCreateResponse { + + /** TaskCreateResponse jobId */ + jobId?: (string|null); + } + + /** Represents a TaskCreateResponse. */ + class TaskCreateResponse implements ITaskCreateResponse { + + /** + * Constructs a new TaskCreateResponse. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.service.ITaskCreateResponse); + + /** TaskCreateResponse jobId. */ + public jobId: string; + + /** + * Creates a new TaskCreateResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns TaskCreateResponse instance + */ + public static create(properties?: flyteidl.service.ITaskCreateResponse): flyteidl.service.TaskCreateResponse; + + /** + * Encodes the specified TaskCreateResponse message. Does not implicitly {@link flyteidl.service.TaskCreateResponse.verify|verify} messages. + * @param message TaskCreateResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.service.ITaskCreateResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TaskCreateResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TaskCreateResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.service.TaskCreateResponse; + + /** + * Verifies a TaskCreateResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + + /** Properties of a TaskGetRequest. */ + interface ITaskGetRequest { + + /** TaskGetRequest taskType */ + taskType?: (string|null); + + /** TaskGetRequest jobId */ + jobId?: (string|null); + } + + /** Represents a TaskGetRequest. */ + class TaskGetRequest implements ITaskGetRequest { + + /** + * Constructs a new TaskGetRequest. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.service.ITaskGetRequest); + + /** TaskGetRequest taskType. */ + public taskType: string; + + /** TaskGetRequest jobId. */ + public jobId: string; + + /** + * Creates a new TaskGetRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns TaskGetRequest instance + */ + public static create(properties?: flyteidl.service.ITaskGetRequest): flyteidl.service.TaskGetRequest; + + /** + * Encodes the specified TaskGetRequest message. Does not implicitly {@link flyteidl.service.TaskGetRequest.verify|verify} messages. + * @param message TaskGetRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.service.ITaskGetRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TaskGetRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TaskGetRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.service.TaskGetRequest; + + /** + * Verifies a TaskGetRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + + /** Properties of a TaskGetResponse. */ + interface ITaskGetResponse { + + /** TaskGetResponse state */ + state?: (flyteidl.service.State|null); + + /** TaskGetResponse outputs */ + outputs?: (flyteidl.core.ILiteralMap|null); + } + + /** Represents a TaskGetResponse. */ + class TaskGetResponse implements ITaskGetResponse { + + /** + * Constructs a new TaskGetResponse. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.service.ITaskGetResponse); + + /** TaskGetResponse state. */ + public state: flyteidl.service.State; + + /** TaskGetResponse outputs. */ + public outputs?: (flyteidl.core.ILiteralMap|null); + + /** + * Creates a new TaskGetResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns TaskGetResponse instance + */ + public static create(properties?: flyteidl.service.ITaskGetResponse): flyteidl.service.TaskGetResponse; + + /** + * Encodes the specified TaskGetResponse message. Does not implicitly {@link flyteidl.service.TaskGetResponse.verify|verify} messages. + * @param message TaskGetResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.service.ITaskGetResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TaskGetResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TaskGetResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.service.TaskGetResponse; + + /** + * Verifies a TaskGetResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + + /** Properties of a TaskDeleteRequest. */ + interface ITaskDeleteRequest { + + /** TaskDeleteRequest taskType */ + taskType?: (string|null); + + /** TaskDeleteRequest jobId */ + jobId?: (string|null); + } + + /** Represents a TaskDeleteRequest. */ + class TaskDeleteRequest implements ITaskDeleteRequest { + + /** + * Constructs a new TaskDeleteRequest. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.service.ITaskDeleteRequest); + + /** TaskDeleteRequest taskType. */ + public taskType: string; + + /** TaskDeleteRequest jobId. */ + public jobId: string; + + /** + * Creates a new TaskDeleteRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns TaskDeleteRequest instance + */ + public static create(properties?: flyteidl.service.ITaskDeleteRequest): flyteidl.service.TaskDeleteRequest; + + /** + * Encodes the specified TaskDeleteRequest message. Does not implicitly {@link flyteidl.service.TaskDeleteRequest.verify|verify} messages. + * @param message TaskDeleteRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.service.ITaskDeleteRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TaskDeleteRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TaskDeleteRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.service.TaskDeleteRequest; + + /** + * Verifies a TaskDeleteRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + + /** Properties of a TaskDeleteResponse. */ + interface ITaskDeleteResponse { + } + + /** Represents a TaskDeleteResponse. */ + class TaskDeleteResponse implements ITaskDeleteResponse { + + /** + * Constructs a new TaskDeleteResponse. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.service.ITaskDeleteResponse); + + /** + * Creates a new TaskDeleteResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns TaskDeleteResponse instance + */ + public static create(properties?: flyteidl.service.ITaskDeleteResponse): flyteidl.service.TaskDeleteResponse; + + /** + * Encodes the specified TaskDeleteResponse message. Does not implicitly {@link flyteidl.service.TaskDeleteResponse.verify|verify} messages. + * @param message TaskDeleteResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.service.ITaskDeleteResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TaskDeleteResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TaskDeleteResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.service.TaskDeleteResponse; + + /** + * Verifies a TaskDeleteResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + /** Properties of a UserInfoRequest. */ interface IUserInfoRequest { } diff --git a/gen/pb-js/flyteidl.js b/gen/pb-js/flyteidl.js index b8fad613c..4e4792dc8 100644 --- a/gen/pb-js/flyteidl.js +++ b/gen/pb-js/flyteidl.js @@ -45315,6 +45315,902 @@ return DataProxyService; })(); + service.ExternalPluginService = (function() { + + /** + * Constructs a new ExternalPluginService service. + * @memberof flyteidl.service + * @classdesc Represents an ExternalPluginService + * @extends $protobuf.rpc.Service + * @constructor + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + */ + function ExternalPluginService(rpcImpl, requestDelimited, responseDelimited) { + $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited); + } + + (ExternalPluginService.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = ExternalPluginService; + + /** + * Creates new ExternalPluginService service using the specified rpc implementation. + * @function create + * @memberof flyteidl.service.ExternalPluginService + * @static + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @returns {ExternalPluginService} RPC service. Useful where requests and/or responses are streamed. + */ + ExternalPluginService.create = function create(rpcImpl, requestDelimited, responseDelimited) { + return new this(rpcImpl, requestDelimited, responseDelimited); + }; + + /** + * Callback as used by {@link flyteidl.service.ExternalPluginService#createTask}. + * @memberof flyteidl.service.ExternalPluginService + * @typedef CreateTaskCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.service.TaskCreateResponse} [response] TaskCreateResponse + */ + + /** + * Calls CreateTask. + * @function createTask + * @memberof flyteidl.service.ExternalPluginService + * @instance + * @param {flyteidl.service.ITaskCreateRequest} request TaskCreateRequest message or plain object + * @param {flyteidl.service.ExternalPluginService.CreateTaskCallback} callback Node-style callback called with the error, if any, and TaskCreateResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(ExternalPluginService.prototype.createTask = function createTask(request, callback) { + return this.rpcCall(createTask, $root.flyteidl.service.TaskCreateRequest, $root.flyteidl.service.TaskCreateResponse, request, callback); + }, "name", { value: "CreateTask" }); + + /** + * Calls CreateTask. + * @function createTask + * @memberof flyteidl.service.ExternalPluginService + * @instance + * @param {flyteidl.service.ITaskCreateRequest} request TaskCreateRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link flyteidl.service.ExternalPluginService#getTask}. + * @memberof flyteidl.service.ExternalPluginService + * @typedef GetTaskCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.service.TaskGetResponse} [response] TaskGetResponse + */ + + /** + * Calls GetTask. + * @function getTask + * @memberof flyteidl.service.ExternalPluginService + * @instance + * @param {flyteidl.service.ITaskGetRequest} request TaskGetRequest message or plain object + * @param {flyteidl.service.ExternalPluginService.GetTaskCallback} callback Node-style callback called with the error, if any, and TaskGetResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(ExternalPluginService.prototype.getTask = function getTask(request, callback) { + return this.rpcCall(getTask, $root.flyteidl.service.TaskGetRequest, $root.flyteidl.service.TaskGetResponse, request, callback); + }, "name", { value: "GetTask" }); + + /** + * Calls GetTask. + * @function getTask + * @memberof flyteidl.service.ExternalPluginService + * @instance + * @param {flyteidl.service.ITaskGetRequest} request TaskGetRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link flyteidl.service.ExternalPluginService#deleteTask}. + * @memberof flyteidl.service.ExternalPluginService + * @typedef DeleteTaskCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.service.TaskDeleteResponse} [response] TaskDeleteResponse + */ + + /** + * Calls DeleteTask. + * @function deleteTask + * @memberof flyteidl.service.ExternalPluginService + * @instance + * @param {flyteidl.service.ITaskDeleteRequest} request TaskDeleteRequest message or plain object + * @param {flyteidl.service.ExternalPluginService.DeleteTaskCallback} callback Node-style callback called with the error, if any, and TaskDeleteResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(ExternalPluginService.prototype.deleteTask = function deleteTask(request, callback) { + return this.rpcCall(deleteTask, $root.flyteidl.service.TaskDeleteRequest, $root.flyteidl.service.TaskDeleteResponse, request, callback); + }, "name", { value: "DeleteTask" }); + + /** + * Calls DeleteTask. + * @function deleteTask + * @memberof flyteidl.service.ExternalPluginService + * @instance + * @param {flyteidl.service.ITaskDeleteRequest} request TaskDeleteRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + return ExternalPluginService; + })(); + + /** + * State enum. + * @name flyteidl.service.State + * @enum {string} + * @property {number} RETRYABLE_FAILURE=0 RETRYABLE_FAILURE value + * @property {number} PERMANENT_FAILURE=1 PERMANENT_FAILURE value + * @property {number} PENDING=2 PENDING value + * @property {number} RUNNING=3 RUNNING value + * @property {number} SUCCEEDED=4 SUCCEEDED value + */ + service.State = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "RETRYABLE_FAILURE"] = 0; + values[valuesById[1] = "PERMANENT_FAILURE"] = 1; + values[valuesById[2] = "PENDING"] = 2; + values[valuesById[3] = "RUNNING"] = 3; + values[valuesById[4] = "SUCCEEDED"] = 4; + return values; + })(); + + service.TaskCreateRequest = (function() { + + /** + * Properties of a TaskCreateRequest. + * @memberof flyteidl.service + * @interface ITaskCreateRequest + * @property {flyteidl.core.ILiteralMap|null} [inputs] TaskCreateRequest inputs + * @property {flyteidl.core.ITaskTemplate|null} [template] TaskCreateRequest template + * @property {string|null} [outputPrefix] TaskCreateRequest outputPrefix + */ + + /** + * Constructs a new TaskCreateRequest. + * @memberof flyteidl.service + * @classdesc Represents a TaskCreateRequest. + * @implements ITaskCreateRequest + * @constructor + * @param {flyteidl.service.ITaskCreateRequest=} [properties] Properties to set + */ + function TaskCreateRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TaskCreateRequest inputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} inputs + * @memberof flyteidl.service.TaskCreateRequest + * @instance + */ + TaskCreateRequest.prototype.inputs = null; + + /** + * TaskCreateRequest template. + * @member {flyteidl.core.ITaskTemplate|null|undefined} template + * @memberof flyteidl.service.TaskCreateRequest + * @instance + */ + TaskCreateRequest.prototype.template = null; + + /** + * TaskCreateRequest outputPrefix. + * @member {string} outputPrefix + * @memberof flyteidl.service.TaskCreateRequest + * @instance + */ + TaskCreateRequest.prototype.outputPrefix = ""; + + /** + * Creates a new TaskCreateRequest instance using the specified properties. + * @function create + * @memberof flyteidl.service.TaskCreateRequest + * @static + * @param {flyteidl.service.ITaskCreateRequest=} [properties] Properties to set + * @returns {flyteidl.service.TaskCreateRequest} TaskCreateRequest instance + */ + TaskCreateRequest.create = function create(properties) { + return new TaskCreateRequest(properties); + }; + + /** + * Encodes the specified TaskCreateRequest message. Does not implicitly {@link flyteidl.service.TaskCreateRequest.verify|verify} messages. + * @function encode + * @memberof flyteidl.service.TaskCreateRequest + * @static + * @param {flyteidl.service.ITaskCreateRequest} message TaskCreateRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TaskCreateRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.inputs != null && message.hasOwnProperty("inputs")) + $root.flyteidl.core.LiteralMap.encode(message.inputs, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.template != null && message.hasOwnProperty("template")) + $root.flyteidl.core.TaskTemplate.encode(message.template, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.outputPrefix != null && message.hasOwnProperty("outputPrefix")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputPrefix); + return writer; + }; + + /** + * Decodes a TaskCreateRequest message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.service.TaskCreateRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.service.TaskCreateRequest} TaskCreateRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TaskCreateRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.service.TaskCreateRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.inputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 2: + message.template = $root.flyteidl.core.TaskTemplate.decode(reader, reader.uint32()); + break; + case 3: + message.outputPrefix = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a TaskCreateRequest message. + * @function verify + * @memberof flyteidl.service.TaskCreateRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TaskCreateRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.inputs != null && message.hasOwnProperty("inputs")) { + var error = $root.flyteidl.core.LiteralMap.verify(message.inputs); + if (error) + return "inputs." + error; + } + if (message.template != null && message.hasOwnProperty("template")) { + var error = $root.flyteidl.core.TaskTemplate.verify(message.template); + if (error) + return "template." + error; + } + if (message.outputPrefix != null && message.hasOwnProperty("outputPrefix")) + if (!$util.isString(message.outputPrefix)) + return "outputPrefix: string expected"; + return null; + }; + + return TaskCreateRequest; + })(); + + service.TaskCreateResponse = (function() { + + /** + * Properties of a TaskCreateResponse. + * @memberof flyteidl.service + * @interface ITaskCreateResponse + * @property {string|null} [jobId] TaskCreateResponse jobId + */ + + /** + * Constructs a new TaskCreateResponse. + * @memberof flyteidl.service + * @classdesc Represents a TaskCreateResponse. + * @implements ITaskCreateResponse + * @constructor + * @param {flyteidl.service.ITaskCreateResponse=} [properties] Properties to set + */ + function TaskCreateResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TaskCreateResponse jobId. + * @member {string} jobId + * @memberof flyteidl.service.TaskCreateResponse + * @instance + */ + TaskCreateResponse.prototype.jobId = ""; + + /** + * Creates a new TaskCreateResponse instance using the specified properties. + * @function create + * @memberof flyteidl.service.TaskCreateResponse + * @static + * @param {flyteidl.service.ITaskCreateResponse=} [properties] Properties to set + * @returns {flyteidl.service.TaskCreateResponse} TaskCreateResponse instance + */ + TaskCreateResponse.create = function create(properties) { + return new TaskCreateResponse(properties); + }; + + /** + * Encodes the specified TaskCreateResponse message. Does not implicitly {@link flyteidl.service.TaskCreateResponse.verify|verify} messages. + * @function encode + * @memberof flyteidl.service.TaskCreateResponse + * @static + * @param {flyteidl.service.ITaskCreateResponse} message TaskCreateResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TaskCreateResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.jobId != null && message.hasOwnProperty("jobId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.jobId); + return writer; + }; + + /** + * Decodes a TaskCreateResponse message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.service.TaskCreateResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.service.TaskCreateResponse} TaskCreateResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TaskCreateResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.service.TaskCreateResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.jobId = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a TaskCreateResponse message. + * @function verify + * @memberof flyteidl.service.TaskCreateResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TaskCreateResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.jobId != null && message.hasOwnProperty("jobId")) + if (!$util.isString(message.jobId)) + return "jobId: string expected"; + return null; + }; + + return TaskCreateResponse; + })(); + + service.TaskGetRequest = (function() { + + /** + * Properties of a TaskGetRequest. + * @memberof flyteidl.service + * @interface ITaskGetRequest + * @property {string|null} [taskType] TaskGetRequest taskType + * @property {string|null} [jobId] TaskGetRequest jobId + */ + + /** + * Constructs a new TaskGetRequest. + * @memberof flyteidl.service + * @classdesc Represents a TaskGetRequest. + * @implements ITaskGetRequest + * @constructor + * @param {flyteidl.service.ITaskGetRequest=} [properties] Properties to set + */ + function TaskGetRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TaskGetRequest taskType. + * @member {string} taskType + * @memberof flyteidl.service.TaskGetRequest + * @instance + */ + TaskGetRequest.prototype.taskType = ""; + + /** + * TaskGetRequest jobId. + * @member {string} jobId + * @memberof flyteidl.service.TaskGetRequest + * @instance + */ + TaskGetRequest.prototype.jobId = ""; + + /** + * Creates a new TaskGetRequest instance using the specified properties. + * @function create + * @memberof flyteidl.service.TaskGetRequest + * @static + * @param {flyteidl.service.ITaskGetRequest=} [properties] Properties to set + * @returns {flyteidl.service.TaskGetRequest} TaskGetRequest instance + */ + TaskGetRequest.create = function create(properties) { + return new TaskGetRequest(properties); + }; + + /** + * Encodes the specified TaskGetRequest message. Does not implicitly {@link flyteidl.service.TaskGetRequest.verify|verify} messages. + * @function encode + * @memberof flyteidl.service.TaskGetRequest + * @static + * @param {flyteidl.service.ITaskGetRequest} message TaskGetRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TaskGetRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.taskType != null && message.hasOwnProperty("taskType")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.taskType); + if (message.jobId != null && message.hasOwnProperty("jobId")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.jobId); + return writer; + }; + + /** + * Decodes a TaskGetRequest message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.service.TaskGetRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.service.TaskGetRequest} TaskGetRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TaskGetRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.service.TaskGetRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.taskType = reader.string(); + break; + case 2: + message.jobId = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a TaskGetRequest message. + * @function verify + * @memberof flyteidl.service.TaskGetRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TaskGetRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.taskType != null && message.hasOwnProperty("taskType")) + if (!$util.isString(message.taskType)) + return "taskType: string expected"; + if (message.jobId != null && message.hasOwnProperty("jobId")) + if (!$util.isString(message.jobId)) + return "jobId: string expected"; + return null; + }; + + return TaskGetRequest; + })(); + + service.TaskGetResponse = (function() { + + /** + * Properties of a TaskGetResponse. + * @memberof flyteidl.service + * @interface ITaskGetResponse + * @property {flyteidl.service.State|null} [state] TaskGetResponse state + * @property {flyteidl.core.ILiteralMap|null} [outputs] TaskGetResponse outputs + */ + + /** + * Constructs a new TaskGetResponse. + * @memberof flyteidl.service + * @classdesc Represents a TaskGetResponse. + * @implements ITaskGetResponse + * @constructor + * @param {flyteidl.service.ITaskGetResponse=} [properties] Properties to set + */ + function TaskGetResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TaskGetResponse state. + * @member {flyteidl.service.State} state + * @memberof flyteidl.service.TaskGetResponse + * @instance + */ + TaskGetResponse.prototype.state = 0; + + /** + * TaskGetResponse outputs. + * @member {flyteidl.core.ILiteralMap|null|undefined} outputs + * @memberof flyteidl.service.TaskGetResponse + * @instance + */ + TaskGetResponse.prototype.outputs = null; + + /** + * Creates a new TaskGetResponse instance using the specified properties. + * @function create + * @memberof flyteidl.service.TaskGetResponse + * @static + * @param {flyteidl.service.ITaskGetResponse=} [properties] Properties to set + * @returns {flyteidl.service.TaskGetResponse} TaskGetResponse instance + */ + TaskGetResponse.create = function create(properties) { + return new TaskGetResponse(properties); + }; + + /** + * Encodes the specified TaskGetResponse message. Does not implicitly {@link flyteidl.service.TaskGetResponse.verify|verify} messages. + * @function encode + * @memberof flyteidl.service.TaskGetResponse + * @static + * @param {flyteidl.service.ITaskGetResponse} message TaskGetResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TaskGetResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.state != null && message.hasOwnProperty("state")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); + if (message.outputs != null && message.hasOwnProperty("outputs")) + $root.flyteidl.core.LiteralMap.encode(message.outputs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Decodes a TaskGetResponse message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.service.TaskGetResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.service.TaskGetResponse} TaskGetResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TaskGetResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.service.TaskGetResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.state = reader.int32(); + break; + case 2: + message.outputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a TaskGetResponse message. + * @function verify + * @memberof flyteidl.service.TaskGetResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TaskGetResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.state != null && message.hasOwnProperty("state")) + switch (message.state) { + default: + return "state: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.outputs != null && message.hasOwnProperty("outputs")) { + var error = $root.flyteidl.core.LiteralMap.verify(message.outputs); + if (error) + return "outputs." + error; + } + return null; + }; + + return TaskGetResponse; + })(); + + service.TaskDeleteRequest = (function() { + + /** + * Properties of a TaskDeleteRequest. + * @memberof flyteidl.service + * @interface ITaskDeleteRequest + * @property {string|null} [taskType] TaskDeleteRequest taskType + * @property {string|null} [jobId] TaskDeleteRequest jobId + */ + + /** + * Constructs a new TaskDeleteRequest. + * @memberof flyteidl.service + * @classdesc Represents a TaskDeleteRequest. + * @implements ITaskDeleteRequest + * @constructor + * @param {flyteidl.service.ITaskDeleteRequest=} [properties] Properties to set + */ + function TaskDeleteRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TaskDeleteRequest taskType. + * @member {string} taskType + * @memberof flyteidl.service.TaskDeleteRequest + * @instance + */ + TaskDeleteRequest.prototype.taskType = ""; + + /** + * TaskDeleteRequest jobId. + * @member {string} jobId + * @memberof flyteidl.service.TaskDeleteRequest + * @instance + */ + TaskDeleteRequest.prototype.jobId = ""; + + /** + * Creates a new TaskDeleteRequest instance using the specified properties. + * @function create + * @memberof flyteidl.service.TaskDeleteRequest + * @static + * @param {flyteidl.service.ITaskDeleteRequest=} [properties] Properties to set + * @returns {flyteidl.service.TaskDeleteRequest} TaskDeleteRequest instance + */ + TaskDeleteRequest.create = function create(properties) { + return new TaskDeleteRequest(properties); + }; + + /** + * Encodes the specified TaskDeleteRequest message. Does not implicitly {@link flyteidl.service.TaskDeleteRequest.verify|verify} messages. + * @function encode + * @memberof flyteidl.service.TaskDeleteRequest + * @static + * @param {flyteidl.service.ITaskDeleteRequest} message TaskDeleteRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TaskDeleteRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.taskType != null && message.hasOwnProperty("taskType")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.taskType); + if (message.jobId != null && message.hasOwnProperty("jobId")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.jobId); + return writer; + }; + + /** + * Decodes a TaskDeleteRequest message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.service.TaskDeleteRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.service.TaskDeleteRequest} TaskDeleteRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TaskDeleteRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.service.TaskDeleteRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.taskType = reader.string(); + break; + case 2: + message.jobId = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a TaskDeleteRequest message. + * @function verify + * @memberof flyteidl.service.TaskDeleteRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TaskDeleteRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.taskType != null && message.hasOwnProperty("taskType")) + if (!$util.isString(message.taskType)) + return "taskType: string expected"; + if (message.jobId != null && message.hasOwnProperty("jobId")) + if (!$util.isString(message.jobId)) + return "jobId: string expected"; + return null; + }; + + return TaskDeleteRequest; + })(); + + service.TaskDeleteResponse = (function() { + + /** + * Properties of a TaskDeleteResponse. + * @memberof flyteidl.service + * @interface ITaskDeleteResponse + */ + + /** + * Constructs a new TaskDeleteResponse. + * @memberof flyteidl.service + * @classdesc Represents a TaskDeleteResponse. + * @implements ITaskDeleteResponse + * @constructor + * @param {flyteidl.service.ITaskDeleteResponse=} [properties] Properties to set + */ + function TaskDeleteResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new TaskDeleteResponse instance using the specified properties. + * @function create + * @memberof flyteidl.service.TaskDeleteResponse + * @static + * @param {flyteidl.service.ITaskDeleteResponse=} [properties] Properties to set + * @returns {flyteidl.service.TaskDeleteResponse} TaskDeleteResponse instance + */ + TaskDeleteResponse.create = function create(properties) { + return new TaskDeleteResponse(properties); + }; + + /** + * Encodes the specified TaskDeleteResponse message. Does not implicitly {@link flyteidl.service.TaskDeleteResponse.verify|verify} messages. + * @function encode + * @memberof flyteidl.service.TaskDeleteResponse + * @static + * @param {flyteidl.service.ITaskDeleteResponse} message TaskDeleteResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TaskDeleteResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Decodes a TaskDeleteResponse message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.service.TaskDeleteResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.service.TaskDeleteResponse} TaskDeleteResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TaskDeleteResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.service.TaskDeleteResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a TaskDeleteResponse message. + * @function verify + * @memberof flyteidl.service.TaskDeleteResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TaskDeleteResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + return TaskDeleteResponse; + })(); + service.UserInfoRequest = (function() { /** diff --git a/gen/pb_python/flyteidl/service/external_plugin_service_pb2.py b/gen/pb_python/flyteidl/service/external_plugin_service_pb2.py new file mode 100644 index 000000000..c6b2b050f --- /dev/null +++ b/gen/pb_python/flyteidl/service/external_plugin_service_pb2.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: flyteidl/service/external_plugin_service.proto +"""Generated protocol buffer code.""" +from google.protobuf.internal import builder as _builder +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from flyteidl.core import literals_pb2 as flyteidl_dot_core_dot_literals__pb2 +from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 +from flyteidl.core import interface_pb2 as flyteidl_dot_core_dot_interface__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.flyteidl/service/external_plugin_service.proto\x12\x10\x66lyteidl.service\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x1d\x66lyteidl/core/interface.proto\"\xa4\x01\n\x11TaskCreateRequest\x12\x31\n\x06inputs\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x06inputs\x12\x37\n\x08template\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplateR\x08template\x12#\n\routput_prefix\x18\x03 \x01(\tR\x0coutputPrefix\"+\n\x12TaskCreateResponse\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\"D\n\x0eTaskGetRequest\x12\x1b\n\ttask_type\x18\x01 \x01(\tR\x08taskType\x12\x15\n\x06job_id\x18\x02 \x01(\tR\x05jobId\"u\n\x0fTaskGetResponse\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x17.flyteidl.service.StateR\x05state\x12\x33\n\x07outputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x07outputs\"G\n\x11TaskDeleteRequest\x12\x1b\n\ttask_type\x18\x01 \x01(\tR\x08taskType\x12\x15\n\x06job_id\x18\x02 \x01(\tR\x05jobId\"\x14\n\x12TaskDeleteResponse*^\n\x05State\x12\x15\n\x11RETRYABLE_FAILURE\x10\x00\x12\x15\n\x11PERMANENT_FAILURE\x10\x01\x12\x0b\n\x07PENDING\x10\x02\x12\x0b\n\x07RUNNING\x10\x03\x12\r\n\tSUCCEEDED\x10\x04\x32\x9f\x02\n\x15\x45xternalPluginService\x12Y\n\nCreateTask\x12#.flyteidl.service.TaskCreateRequest\x1a$.flyteidl.service.TaskCreateResponse\"\x00\x12P\n\x07GetTask\x12 .flyteidl.service.TaskGetRequest\x1a!.flyteidl.service.TaskGetResponse\"\x00\x12Y\n\nDeleteTask\x12#.flyteidl.service.TaskDeleteRequest\x1a$.flyteidl.service.TaskDeleteResponse\"\x00\x42\xcc\x01\n\x14\x63om.flyteidl.serviceB\x1a\x45xternalPluginServiceProtoP\x01Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service\xa2\x02\x03\x46SX\xaa\x02\x10\x46lyteidl.Service\xca\x02\x10\x46lyteidl\\Service\xe2\x02\x1c\x46lyteidl\\Service\\GPBMetadata\xea\x02\x11\x46lyteidl::Serviceb\x06proto3') + +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flyteidl.service.external_plugin_service_pb2', globals()) +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\024com.flyteidl.serviceB\032ExternalPluginServiceProtoP\001Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service\242\002\003FSX\252\002\020Flyteidl.Service\312\002\020Flyteidl\\Service\342\002\034Flyteidl\\Service\\GPBMetadata\352\002\021Flyteidl::Service' + _STATE._serialized_start=652 + _STATE._serialized_end=746 + _TASKCREATEREQUEST._serialized_start=157 + _TASKCREATEREQUEST._serialized_end=321 + _TASKCREATERESPONSE._serialized_start=323 + _TASKCREATERESPONSE._serialized_end=366 + _TASKGETREQUEST._serialized_start=368 + _TASKGETREQUEST._serialized_end=436 + _TASKGETRESPONSE._serialized_start=438 + _TASKGETRESPONSE._serialized_end=555 + _TASKDELETEREQUEST._serialized_start=557 + _TASKDELETEREQUEST._serialized_end=628 + _TASKDELETERESPONSE._serialized_start=630 + _TASKDELETERESPONSE._serialized_end=650 + _EXTERNALPLUGINSERVICE._serialized_start=749 + _EXTERNALPLUGINSERVICE._serialized_end=1036 +# @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/service/external_plugin_service_pb2.pyi b/gen/pb_python/flyteidl/service/external_plugin_service_pb2.pyi new file mode 100644 index 000000000..da6f4ce35 --- /dev/null +++ b/gen/pb_python/flyteidl/service/external_plugin_service_pb2.pyi @@ -0,0 +1,61 @@ +from flyteidl.core import literals_pb2 as _literals_pb2 +from flyteidl.core import tasks_pb2 as _tasks_pb2 +from flyteidl.core import interface_pb2 as _interface_pb2 +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor +PENDING: State +PERMANENT_FAILURE: State +RETRYABLE_FAILURE: State +RUNNING: State +SUCCEEDED: State + +class TaskCreateRequest(_message.Message): + __slots__ = ["inputs", "output_prefix", "template"] + INPUTS_FIELD_NUMBER: _ClassVar[int] + OUTPUT_PREFIX_FIELD_NUMBER: _ClassVar[int] + TEMPLATE_FIELD_NUMBER: _ClassVar[int] + inputs: _literals_pb2.LiteralMap + output_prefix: str + template: _tasks_pb2.TaskTemplate + def __init__(self, inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., template: _Optional[_Union[_tasks_pb2.TaskTemplate, _Mapping]] = ..., output_prefix: _Optional[str] = ...) -> None: ... + +class TaskCreateResponse(_message.Message): + __slots__ = ["job_id"] + JOB_ID_FIELD_NUMBER: _ClassVar[int] + job_id: str + def __init__(self, job_id: _Optional[str] = ...) -> None: ... + +class TaskDeleteRequest(_message.Message): + __slots__ = ["job_id", "task_type"] + JOB_ID_FIELD_NUMBER: _ClassVar[int] + TASK_TYPE_FIELD_NUMBER: _ClassVar[int] + job_id: str + task_type: str + def __init__(self, task_type: _Optional[str] = ..., job_id: _Optional[str] = ...) -> None: ... + +class TaskDeleteResponse(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + +class TaskGetRequest(_message.Message): + __slots__ = ["job_id", "task_type"] + JOB_ID_FIELD_NUMBER: _ClassVar[int] + TASK_TYPE_FIELD_NUMBER: _ClassVar[int] + job_id: str + task_type: str + def __init__(self, task_type: _Optional[str] = ..., job_id: _Optional[str] = ...) -> None: ... + +class TaskGetResponse(_message.Message): + __slots__ = ["outputs", "state"] + OUTPUTS_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + outputs: _literals_pb2.LiteralMap + state: State + def __init__(self, state: _Optional[_Union[State, str]] = ..., outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ...) -> None: ... + +class State(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] diff --git a/gen/pb_python/flyteidl/service/external_plugin_service_pb2_grpc.py b/gen/pb_python/flyteidl/service/external_plugin_service_pb2_grpc.py new file mode 100644 index 000000000..6607d3671 --- /dev/null +++ b/gen/pb_python/flyteidl/service/external_plugin_service_pb2_grpc.py @@ -0,0 +1,138 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from flyteidl.service import external_plugin_service_pb2 as flyteidl_dot_service_dot_external__plugin__service__pb2 + + +class ExternalPluginServiceStub(object): + """ExternalPluginService defines an RPC Service that allows propeller to send the request to the backend plugin server. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.CreateTask = channel.unary_unary( + '/flyteidl.service.ExternalPluginService/CreateTask', + request_serializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskCreateRequest.SerializeToString, + response_deserializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskCreateResponse.FromString, + ) + self.GetTask = channel.unary_unary( + '/flyteidl.service.ExternalPluginService/GetTask', + request_serializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskGetRequest.SerializeToString, + response_deserializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskGetResponse.FromString, + ) + self.DeleteTask = channel.unary_unary( + '/flyteidl.service.ExternalPluginService/DeleteTask', + request_serializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskDeleteRequest.SerializeToString, + response_deserializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskDeleteResponse.FromString, + ) + + +class ExternalPluginServiceServicer(object): + """ExternalPluginService defines an RPC Service that allows propeller to send the request to the backend plugin server. + """ + + def CreateTask(self, request, context): + """Send a task create request to the backend plugin server. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetTask(self, request, context): + """Get job status. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteTask(self, request, context): + """Delete the task resource. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_ExternalPluginServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'CreateTask': grpc.unary_unary_rpc_method_handler( + servicer.CreateTask, + request_deserializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskCreateRequest.FromString, + response_serializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskCreateResponse.SerializeToString, + ), + 'GetTask': grpc.unary_unary_rpc_method_handler( + servicer.GetTask, + request_deserializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskGetRequest.FromString, + response_serializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskGetResponse.SerializeToString, + ), + 'DeleteTask': grpc.unary_unary_rpc_method_handler( + servicer.DeleteTask, + request_deserializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskDeleteRequest.FromString, + response_serializer=flyteidl_dot_service_dot_external__plugin__service__pb2.TaskDeleteResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'flyteidl.service.ExternalPluginService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class ExternalPluginService(object): + """ExternalPluginService defines an RPC Service that allows propeller to send the request to the backend plugin server. + """ + + @staticmethod + def CreateTask(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.service.ExternalPluginService/CreateTask', + flyteidl_dot_service_dot_external__plugin__service__pb2.TaskCreateRequest.SerializeToString, + flyteidl_dot_service_dot_external__plugin__service__pb2.TaskCreateResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetTask(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.service.ExternalPluginService/GetTask', + flyteidl_dot_service_dot_external__plugin__service__pb2.TaskGetRequest.SerializeToString, + flyteidl_dot_service_dot_external__plugin__service__pb2.TaskGetResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def DeleteTask(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.service.ExternalPluginService/DeleteTask', + flyteidl_dot_service_dot_external__plugin__service__pb2.TaskDeleteRequest.SerializeToString, + flyteidl_dot_service_dot_external__plugin__service__pb2.TaskDeleteResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/gen/pb_python/flyteidl/service/flyteadmin/README.md b/gen/pb_python/flyteidl/service/flyteadmin/README.md index ebafe47c1..2e98e2925 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/README.md +++ b/gen/pb_python/flyteidl/service/flyteadmin/README.md @@ -225,8 +225,6 @@ Class | Method | HTTP request | Description - [AdminSystemMetadata](docs/AdminSystemMetadata.md) - [AdminTask](docs/AdminTask.md) - [AdminTaskClosure](docs/AdminTaskClosure.md) - - [AdminTaskCreateRequest](docs/AdminTaskCreateRequest.md) - - [AdminTaskCreateResponse](docs/AdminTaskCreateResponse.md) - [AdminTaskExecutionClosure](docs/AdminTaskExecutionClosure.md) - [AdminTaskExecutionEventRequest](docs/AdminTaskExecutionEventRequest.md) - [AdminTaskExecutionEventResponse](docs/AdminTaskExecutionEventResponse.md) @@ -367,6 +365,8 @@ Class | Method | HTTP request | Description - [ExecutionMetadataExecutionMode](docs/ExecutionMetadataExecutionMode.md) - [FlyteidladminDynamicWorkflowNodeMetadata](docs/FlyteidladminDynamicWorkflowNodeMetadata.md) - [FlyteidladminNodeExecution](docs/FlyteidladminNodeExecution.md) + - [FlyteidladminTaskCreateRequest](docs/FlyteidladminTaskCreateRequest.md) + - [FlyteidladminTaskCreateResponse](docs/FlyteidladminTaskCreateResponse.md) - [FlyteidladminTaskExecution](docs/FlyteidladminTaskExecution.md) - [FlyteidladminTaskNodeMetadata](docs/FlyteidladminTaskNodeMetadata.md) - [FlyteidladminWorkflowNodeMetadata](docs/FlyteidladminWorkflowNodeMetadata.md) diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py index 6e52db863..37e126b53 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py @@ -116,8 +116,6 @@ from flyteadmin.models.admin_system_metadata import AdminSystemMetadata from flyteadmin.models.admin_task import AdminTask from flyteadmin.models.admin_task_closure import AdminTaskClosure -from flyteadmin.models.admin_task_create_request import AdminTaskCreateRequest -from flyteadmin.models.admin_task_create_response import AdminTaskCreateResponse from flyteadmin.models.admin_task_execution_closure import AdminTaskExecutionClosure from flyteadmin.models.admin_task_execution_event_request import AdminTaskExecutionEventRequest from flyteadmin.models.admin_task_execution_event_response import AdminTaskExecutionEventResponse @@ -258,6 +256,8 @@ from flyteadmin.models.execution_metadata_execution_mode import ExecutionMetadataExecutionMode from flyteadmin.models.flyteidladmin_dynamic_workflow_node_metadata import FlyteidladminDynamicWorkflowNodeMetadata from flyteadmin.models.flyteidladmin_node_execution import FlyteidladminNodeExecution +from flyteadmin.models.flyteidladmin_task_create_request import FlyteidladminTaskCreateRequest +from flyteadmin.models.flyteidladmin_task_create_response import FlyteidladminTaskCreateResponse from flyteadmin.models.flyteidladmin_task_execution import FlyteidladminTaskExecution from flyteadmin.models.flyteidladmin_task_node_metadata import FlyteidladminTaskNodeMetadata from flyteadmin.models.flyteidladmin_workflow_node_metadata import FlyteidladminWorkflowNodeMetadata diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/api/admin_service_api.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/api/admin_service_api.py index a31196904..01e9838ee 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/api/admin_service_api.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/api/admin_service_api.py @@ -333,8 +333,8 @@ def create_task(self, body, **kwargs): # noqa: E501 >>> result = thread.get() :param async_req bool - :param AdminTaskCreateRequest body: (required) - :return: AdminTaskCreateResponse + :param FlyteidladminTaskCreateRequest body: (required) + :return: FlyteidladminTaskCreateResponse If the method is called asynchronously, returns the request thread. """ @@ -354,8 +354,8 @@ def create_task_with_http_info(self, body, **kwargs): # noqa: E501 >>> result = thread.get() :param async_req bool - :param AdminTaskCreateRequest body: (required) - :return: AdminTaskCreateResponse + :param FlyteidladminTaskCreateRequest body: (required) + :return: FlyteidladminTaskCreateResponse If the method is called asynchronously, returns the request thread. """ @@ -413,7 +413,7 @@ def create_task_with_http_info(self, body, **kwargs): # noqa: E501 body=body_params, post_params=form_params, files=local_var_files, - response_type='AdminTaskCreateResponse', # noqa: E501 + response_type='FlyteidladminTaskCreateResponse', # noqa: E501 auth_settings=auth_settings, async_req=params.get('async_req'), _return_http_data_only=params.get('_return_http_data_only'), diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py index 5f4976930..f1bf924e4 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py @@ -109,8 +109,6 @@ from flyteadmin.models.admin_system_metadata import AdminSystemMetadata from flyteadmin.models.admin_task import AdminTask from flyteadmin.models.admin_task_closure import AdminTaskClosure -from flyteadmin.models.admin_task_create_request import AdminTaskCreateRequest -from flyteadmin.models.admin_task_create_response import AdminTaskCreateResponse from flyteadmin.models.admin_task_execution_closure import AdminTaskExecutionClosure from flyteadmin.models.admin_task_execution_event_request import AdminTaskExecutionEventRequest from flyteadmin.models.admin_task_execution_event_response import AdminTaskExecutionEventResponse @@ -251,6 +249,8 @@ from flyteadmin.models.execution_metadata_execution_mode import ExecutionMetadataExecutionMode from flyteadmin.models.flyteidladmin_dynamic_workflow_node_metadata import FlyteidladminDynamicWorkflowNodeMetadata from flyteadmin.models.flyteidladmin_node_execution import FlyteidladminNodeExecution +from flyteadmin.models.flyteidladmin_task_create_request import FlyteidladminTaskCreateRequest +from flyteadmin.models.flyteidladmin_task_create_response import FlyteidladminTaskCreateResponse from flyteadmin.models.flyteidladmin_task_execution import FlyteidladminTaskExecution from flyteadmin.models.flyteidladmin_task_node_metadata import FlyteidladminTaskNodeMetadata from flyteadmin.models.flyteidladmin_workflow_node_metadata import FlyteidladminWorkflowNodeMetadata diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_create_request.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/flyteidladmin_task_create_request.py similarity index 78% rename from gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_create_request.py rename to gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/flyteidladmin_task_create_request.py index 8eddeb420..4fa700a48 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_create_request.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/flyteidladmin_task_create_request.py @@ -20,7 +20,7 @@ from flyteadmin.models.core_identifier import CoreIdentifier # noqa: F401,E501 -class AdminTaskCreateRequest(object): +class FlyteidladminTaskCreateRequest(object): """NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. @@ -44,7 +44,7 @@ class AdminTaskCreateRequest(object): } def __init__(self, id=None, spec=None): # noqa: E501 - """AdminTaskCreateRequest - a model defined in Swagger""" # noqa: E501 + """FlyteidladminTaskCreateRequest - a model defined in Swagger""" # noqa: E501 self._id = None self._spec = None @@ -57,20 +57,20 @@ def __init__(self, id=None, spec=None): # noqa: E501 @property def id(self): - """Gets the id of this AdminTaskCreateRequest. # noqa: E501 + """Gets the id of this FlyteidladminTaskCreateRequest. # noqa: E501 - :return: The id of this AdminTaskCreateRequest. # noqa: E501 + :return: The id of this FlyteidladminTaskCreateRequest. # noqa: E501 :rtype: CoreIdentifier """ return self._id @id.setter def id(self, id): - """Sets the id of this AdminTaskCreateRequest. + """Sets the id of this FlyteidladminTaskCreateRequest. - :param id: The id of this AdminTaskCreateRequest. # noqa: E501 + :param id: The id of this FlyteidladminTaskCreateRequest. # noqa: E501 :type: CoreIdentifier """ @@ -78,20 +78,20 @@ def id(self, id): @property def spec(self): - """Gets the spec of this AdminTaskCreateRequest. # noqa: E501 + """Gets the spec of this FlyteidladminTaskCreateRequest. # noqa: E501 - :return: The spec of this AdminTaskCreateRequest. # noqa: E501 + :return: The spec of this FlyteidladminTaskCreateRequest. # noqa: E501 :rtype: AdminTaskSpec """ return self._spec @spec.setter def spec(self, spec): - """Sets the spec of this AdminTaskCreateRequest. + """Sets the spec of this FlyteidladminTaskCreateRequest. - :param spec: The spec of this AdminTaskCreateRequest. # noqa: E501 + :param spec: The spec of this FlyteidladminTaskCreateRequest. # noqa: E501 :type: AdminTaskSpec """ @@ -118,7 +118,7 @@ def to_dict(self): )) else: result[attr] = value - if issubclass(AdminTaskCreateRequest, dict): + if issubclass(FlyteidladminTaskCreateRequest, dict): for key, value in self.items(): result[key] = value @@ -134,7 +134,7 @@ def __repr__(self): def __eq__(self, other): """Returns true if both objects are equal""" - if not isinstance(other, AdminTaskCreateRequest): + if not isinstance(other, FlyteidladminTaskCreateRequest): return False return self.__dict__ == other.__dict__ diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_create_response.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/flyteidladmin_task_create_response.py similarity index 89% rename from gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_create_response.py rename to gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/flyteidladmin_task_create_response.py index de1ecdf4d..00389aca0 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_create_response.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/flyteidladmin_task_create_response.py @@ -17,7 +17,7 @@ import six -class AdminTaskCreateResponse(object): +class FlyteidladminTaskCreateResponse(object): """NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. @@ -37,7 +37,7 @@ class AdminTaskCreateResponse(object): } def __init__(self): # noqa: E501 - """AdminTaskCreateResponse - a model defined in Swagger""" # noqa: E501 + """FlyteidladminTaskCreateResponse - a model defined in Swagger""" # noqa: E501 self.discriminator = None def to_dict(self): @@ -61,7 +61,7 @@ def to_dict(self): )) else: result[attr] = value - if issubclass(AdminTaskCreateResponse, dict): + if issubclass(FlyteidladminTaskCreateResponse, dict): for key, value in self.items(): result[key] = value @@ -77,7 +77,7 @@ def __repr__(self): def __eq__(self, other): """Returns true if both objects are equal""" - if not isinstance(other, AdminTaskCreateResponse): + if not isinstance(other, FlyteidladminTaskCreateResponse): return False return self.__dict__ == other.__dict__ diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_task_create_request.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_flyteidladmin_task_create_request.py similarity index 58% rename from gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_task_create_request.py rename to gen/pb_python/flyteidl/service/flyteadmin/test/test_flyteidladmin_task_create_request.py index e951b0247..f48dc0d86 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_task_create_request.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_flyteidladmin_task_create_request.py @@ -16,12 +16,12 @@ import unittest import flyteadmin -from flyteadmin.models.admin_task_create_request import AdminTaskCreateRequest # noqa: E501 +from flyteadmin.models.flyteidladmin_task_create_request import FlyteidladminTaskCreateRequest # noqa: E501 from flyteadmin.rest import ApiException -class TestAdminTaskCreateRequest(unittest.TestCase): - """AdminTaskCreateRequest unit test stubs""" +class TestFlyteidladminTaskCreateRequest(unittest.TestCase): + """FlyteidladminTaskCreateRequest unit test stubs""" def setUp(self): pass @@ -29,10 +29,10 @@ def setUp(self): def tearDown(self): pass - def testAdminTaskCreateRequest(self): - """Test AdminTaskCreateRequest""" + def testFlyteidladminTaskCreateRequest(self): + """Test FlyteidladminTaskCreateRequest""" # FIXME: construct object with mandatory attributes with example values - # model = flyteadmin.models.admin_task_create_request.AdminTaskCreateRequest() # noqa: E501 + # model = flyteadmin.models.flyteidladmin_task_create_request.FlyteidladminTaskCreateRequest() # noqa: E501 pass diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_task_create_response.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_flyteidladmin_task_create_response.py similarity index 58% rename from gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_task_create_response.py rename to gen/pb_python/flyteidl/service/flyteadmin/test/test_flyteidladmin_task_create_response.py index 63330c529..3dbeb80b8 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_task_create_response.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_flyteidladmin_task_create_response.py @@ -16,12 +16,12 @@ import unittest import flyteadmin -from flyteadmin.models.admin_task_create_response import AdminTaskCreateResponse # noqa: E501 +from flyteadmin.models.flyteidladmin_task_create_response import FlyteidladminTaskCreateResponse # noqa: E501 from flyteadmin.rest import ApiException -class TestAdminTaskCreateResponse(unittest.TestCase): - """AdminTaskCreateResponse unit test stubs""" +class TestFlyteidladminTaskCreateResponse(unittest.TestCase): + """FlyteidladminTaskCreateResponse unit test stubs""" def setUp(self): pass @@ -29,10 +29,10 @@ def setUp(self): def tearDown(self): pass - def testAdminTaskCreateResponse(self): - """Test AdminTaskCreateResponse""" + def testFlyteidladminTaskCreateResponse(self): + """Test FlyteidladminTaskCreateResponse""" # FIXME: construct object with mandatory attributes with example values - # model = flyteadmin.models.admin_task_create_response.AdminTaskCreateResponse() # noqa: E501 + # model = flyteadmin.models.flyteidladmin_task_create_response.FlyteidladminTaskCreateResponse() # noqa: E501 pass diff --git a/protos/flyteidl/service/external_plugin_service.proto b/protos/flyteidl/service/external_plugin_service.proto new file mode 100644 index 000000000..a5458a07c --- /dev/null +++ b/protos/flyteidl/service/external_plugin_service.proto @@ -0,0 +1,74 @@ +syntax = "proto3"; +package flyteidl.service; + +option go_package = "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service"; +import "flyteidl/core/literals.proto"; +import "flyteidl/core/tasks.proto"; +import "flyteidl/core/interface.proto"; + +// ExternalPluginService defines an RPC Service that allows propeller to send the request to the backend plugin server. +service ExternalPluginService { + // Send a task create request to the backend plugin server. + rpc CreateTask (TaskCreateRequest) returns (TaskCreateResponse){}; + // Get job status. + rpc GetTask (TaskGetRequest) returns (TaskGetResponse){}; + // Delete the task resource. + rpc DeleteTask (TaskDeleteRequest) returns (TaskDeleteResponse){}; +} + +// The state of the execution is used to control its visibility in the UI/CLI. +enum State { + RETRYABLE_FAILURE = 0; + PERMANENT_FAILURE = 1; + PENDING = 2; + RUNNING = 3; + SUCCEEDED = 4; +} + +// Represents a request structure to create task. +message TaskCreateRequest { + // The inputs required to start the execution. All required inputs must be + // included in this map. If not required and not provided, defaults apply. + // +optional + core.LiteralMap inputs = 1; + // Template of the task that encapsulates all the metadata of the task. + core.TaskTemplate template = 2; + // Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) + string output_prefix = 3; +} + +// Represents a create response structure. +message TaskCreateResponse { + string job_id = 1; +} + +// A message used to fetch a job state from backend plugin server. +message TaskGetRequest { + // A predefined yet extensible Task type identifier. + string task_type = 1; + // The unique id identifying the job. + string job_id = 2; +} + +// Response to get an individual task state. +message TaskGetResponse { + // The state of the execution is used to control its visibility in the UI/CLI. + State state = 1; + // The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a + // Structured dataset pointing to the query result table. + // +optional + core.LiteralMap outputs = 2; +} + +// A message used to delete a task. +message TaskDeleteRequest { + // A predefined yet extensible Task type identifier. + string task_type = 1; + // The unique id identifying the job. + string job_id = 2; +} + +// Response to delete a task. +message TaskDeleteResponse { +} +