From 7974d84bf0d1c4f002e540179354d373ebd1d7ae Mon Sep 17 00:00:00 2001 From: 0x19 Date: Mon, 16 Oct 2023 14:17:56 +0200 Subject: [PATCH] Bunch of improvements --- Makefile | 14 +- ast/import.proto | 2 + ast/inline_array.proto | 18 + ast/types.proto | 1 + contracts/service.proto | 22 - contracts/service_parameters.proto | 27 - dist/docs/docs.json | 519 ++++++++----- dist/go/ast/import.pb.go | 29 +- dist/go/ast/inline_array.pb.go | 232 ++++++ dist/go/ast/types.pb.go | 120 +-- dist/go/server/parameters.pb.go | 393 ++++++++++ dist/go/server/server.pb.go | 34 +- dist/go/server/server_grpc.pb.go | 90 ++- dist/js/ast/import_pb.d.ts | 10 + dist/js/ast/import_pb.js | 90 ++- dist/js/ast/inline_array_pb.d.ts | 58 ++ dist/js/ast/inline_array_pb.js | 450 ++++++++++++ dist/js/ast/types_pb.d.ts | 1 + dist/js/ast/types_pb.js | 3 +- dist/js/contracts/service_grpc_web_pb.d.ts | 43 -- dist/js/contracts/service_grpc_web_pb.js | 206 ------ dist/js/contracts/service_parameters_pb.d.ts | 60 -- dist/js/contracts/service_parameters_pb.js | 490 ------------- dist/js/server/parameters_pb.d.ts | 89 +++ dist/js/server/parameters_pb.js | 687 ++++++++++++++++++ dist/js/server/server_grpc_web_pb.d.ts | 31 + dist/js/server/server_grpc_web_pb.js | 145 ++++ .../service_pb.d.ts => server/server_pb.d.ts} | 2 +- .../service_pb.js => server/server_pb.js} | 6 +- dist/protosets/txpull.protoset | Bin 279434 -> 0 bytes dist/protosets/unpack.protoset | Bin 285659 -> 287267 bytes server/parameters.proto | 34 + server/server.proto | 16 + 33 files changed, 2798 insertions(+), 1124 deletions(-) create mode 100644 ast/inline_array.proto delete mode 100644 contracts/service.proto delete mode 100644 contracts/service_parameters.proto create mode 100644 dist/go/ast/inline_array.pb.go create mode 100644 dist/go/server/parameters.pb.go create mode 100644 dist/js/ast/inline_array_pb.d.ts create mode 100644 dist/js/ast/inline_array_pb.js delete mode 100644 dist/js/contracts/service_grpc_web_pb.d.ts delete mode 100644 dist/js/contracts/service_grpc_web_pb.js delete mode 100644 dist/js/contracts/service_parameters_pb.d.ts delete mode 100644 dist/js/contracts/service_parameters_pb.js create mode 100644 dist/js/server/parameters_pb.d.ts create mode 100644 dist/js/server/parameters_pb.js create mode 100644 dist/js/server/server_grpc_web_pb.d.ts create mode 100644 dist/js/server/server_grpc_web_pb.js rename dist/js/{contracts/service_pb.d.ts => server/server_pb.d.ts} (57%) rename dist/js/{contracts/service_pb.js => server/server_pb.js} (71%) delete mode 100644 dist/protosets/txpull.protoset create mode 100644 server/parameters.proto create mode 100644 server/server.proto diff --git a/Makefile b/Makefile index fb95507..87a76e3 100644 --- a/Makefile +++ b/Makefile @@ -12,11 +12,10 @@ PROTOC := protoc PROTOC_PLUGIN_GO := --go-grpc_out=paths=source_relative:$(PROTO_GO_OUT) --go_out=paths=source_relative:$(PROTO_GO_OUT) PROTOC_PLUGIN_JS := --js_out=import_style=commonjs,binary:$(PROTO_JS_OUT) --grpc-web_out=import_style=commonjs+dts,mode=grpcwebtext:$(PROTO_JS_OUT) -# Define color codes for output +# Define the colors for the output messages GREEN := "\033[32m" RESET := "\033[0m" -# Define the input files for your protobuf definitions PROTO_FILES := $(wildcard $(PWD)/common/*.proto \ $(PWD)/health/*.proto \ $(PWD)/sources/*.proto \ @@ -29,6 +28,7 @@ PROTO_FILES := $(wildcard $(PWD)/common/*.proto \ $(PWD)/opcode/*.proto \ $(PWD)/audit/*.proto \ $(PWD)/contracts/*.proto \ + $(PWD)/server/*.proto \ ) # Define the commands to generate protobuf files for Golang and JavaScript @@ -82,11 +82,11 @@ deps: submodule help: @echo "Available targets:" - @echo " build : Build Golang and JavaScript protobuf files" - @echo " build-go : Build Golang protobuf files" - @echo " build-js : Build JavaScript protobuf files" - @echo " clean : Remove all generated protobuf files" - @echo " deps : Install missing dependencies" + @echo " build : Build Golang and JavaScript protobuf files" + @echo " build-go : Build Golang protobuf files" + @echo " build-js : Build JavaScript protobuf files" + @echo " clean : Remove all generated protobuf files" + @echo " deps : Install missing dependencies" .DEFAULT_GOAL := help diff --git a/ast/import.proto b/ast/import.proto index 393812a..2a45499 100644 --- a/ast/import.proto +++ b/ast/import.proto @@ -15,4 +15,6 @@ message Import { int64 scope = 7; string unit_alias = 8; int64 source_unit = 9; + string as = 10; + repeated string unit_aliases = 11; } \ No newline at end of file diff --git a/ast/inline_array.proto b/ast/inline_array.proto new file mode 100644 index 0000000..639732e --- /dev/null +++ b/ast/inline_array.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; +option go_package = "github.com/unpackdev/protos/dist/go/ast;ast_pb"; +package unpack.v1.ast; + +import "ast/types.proto"; +import "ast/src.proto"; +import "ast/type_name.proto"; +import "xds/type/v3/typed_struct.proto"; + +message InlineArray { + int64 id = 1; + unpack.v1.ast.NodeType node_type = 2; + unpack.v1.ast.Src src = 3; + bool is_empty = 4; + repeated xds.type.v3.TypedStruct expressions = 5; + repeated unpack.v1.ast.TypeDescription type_descriptions = 6; + unpack.v1.ast.TypeDescription type_description = 7; +} \ No newline at end of file diff --git a/ast/types.proto b/ast/types.proto index 52bf107..656d42a 100644 --- a/ast/types.proto +++ b/ast/types.proto @@ -109,6 +109,7 @@ enum NodeType { SHIFT_OPERATION = 103; KIND_UNARY_PREFIX = 104; KIND_UNARY_SUFFIX = 105; + INLINE_ARRAY = 106; } enum Mutability { diff --git a/contracts/service.proto b/contracts/service.proto deleted file mode 100644 index 87040b9..0000000 --- a/contracts/service.proto +++ /dev/null @@ -1,22 +0,0 @@ -syntax = "proto3"; -package unpack.v1.contracts; -option go_package = "github.com/unpackdev/protos/dist/go/contracts;contracts_pb"; - -import "contracts/service_parameters.proto"; -import "google/api/annotations.proto"; - -// Service definition for the contracts operations. -service Service { - rpc Get(unpack.v1.contracts.Request) returns (unpack.v1.contracts.Response) { - option (google.api.http) = { - get: "/v1/contracts/{chain_id}/{address}" // Path with chain_id and address placeholders. - }; - }; - - rpc Unpack(unpack.v1.contracts.Request) returns (unpack.v1.contracts.Response) { - option (google.api.http) = { - post: "/v1/contracts/unpack" // Endpoint for the decompile operation. - body: "*" // The entire request object is used as the HTTP request body. - }; - }; -} diff --git a/contracts/service_parameters.proto b/contracts/service_parameters.proto deleted file mode 100644 index 4f8a867..0000000 --- a/contracts/service_parameters.proto +++ /dev/null @@ -1,27 +0,0 @@ -syntax = "proto3"; -package unpack.v1.contracts; -option go_package = "github.com/unpackdev/protos/dist/go/contracts;contracts_pb"; - -import "common/status.proto"; -import "contracts/contract.proto"; - -// Represents a contract request message with details about a transaction. -message Request { - // Identifier for the blockchain chain. - int64 network_id = 1; - - // Address associated with the transaction. - repeated string addresses = 2; -} - -// Represents a contract response message with details about a transaction. -message Response { - // Status of the transaction. - unpack.v1.common.Status status = 1; - - // Identifier for the blockchain chain. - int64 network_id = 2; - - // Contract details associated with the transaction. - repeated unpack.v1.contracts.Contract contracts = 4; -} diff --git a/dist/docs/docs.json b/dist/docs/docs.json index 3283080..e6acc5a 100644 --- a/dist/docs/docs.json +++ b/dist/docs/docs.json @@ -6957,6 +6957,30 @@ "isoneof": false, "oneofdecl": "", "defaultValue": "" + }, + { + "name": "as", + "description": "", + "label": "", + "type": "string", + "longType": "string", + "fullType": "string", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "unit_aliases", + "description": "", + "label": "repeated", + "type": "string", + "longType": "string", + "fullType": "string", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" } ] } @@ -7183,6 +7207,116 @@ ], "services": [] }, + { + "name": "ast/inline_array.proto", + "description": "", + "package": "unpack.v1.ast", + "hasEnums": false, + "hasExtensions": false, + "hasMessages": true, + "hasServices": false, + "enums": [], + "extensions": [], + "messages": [ + { + "name": "InlineArray", + "longName": "InlineArray", + "fullName": "unpack.v1.ast.InlineArray", + "description": "", + "hasExtensions": false, + "hasFields": true, + "hasOneofs": false, + "extensions": [], + "fields": [ + { + "name": "id", + "description": "", + "label": "", + "type": "int64", + "longType": "int64", + "fullType": "int64", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "node_type", + "description": "", + "label": "", + "type": "NodeType", + "longType": "NodeType", + "fullType": "unpack.v1.ast.NodeType", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "src", + "description": "", + "label": "", + "type": "Src", + "longType": "Src", + "fullType": "unpack.v1.ast.Src", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "is_empty", + "description": "", + "label": "", + "type": "bool", + "longType": "bool", + "fullType": "bool", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "expressions", + "description": "", + "label": "repeated", + "type": "TypedStruct", + "longType": "xds.type.v3.TypedStruct", + "fullType": "xds.type.v3.TypedStruct", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "type_descriptions", + "description": "", + "label": "repeated", + "type": "TypeDescription", + "longType": "TypeDescription", + "fullType": "unpack.v1.ast.TypeDescription", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "type_description", + "description": "", + "label": "", + "type": "TypeDescription", + "longType": "TypeDescription", + "fullType": "unpack.v1.ast.TypeDescription", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + } + ] + } + ], + "services": [] + }, { "name": "ast/member_access.proto", "description": "", @@ -12335,6 +12469,11 @@ "name": "KIND_UNARY_SUFFIX", "number": "105", "description": "" + }, + { + "name": "INLINE_ARRAY", + "number": "106", + "description": "" } ] }, @@ -18875,171 +19014,6 @@ ], "services": [] }, - { - "name": "contracts/service.proto", - "description": "", - "package": "unpack.v1.contracts", - "hasEnums": false, - "hasExtensions": false, - "hasMessages": false, - "hasServices": true, - "enums": [], - "extensions": [], - "messages": [], - "services": [ - { - "name": "Service", - "longName": "Service", - "fullName": "unpack.v1.contracts.Service", - "description": "Service definition for the contracts operations.", - "methods": [ - { - "name": "Get", - "description": "", - "requestType": "Request", - "requestLongType": "Request", - "requestFullType": "unpack.v1.contracts.Request", - "requestStreaming": false, - "responseType": "Response", - "responseLongType": "Response", - "responseFullType": "unpack.v1.contracts.Response", - "responseStreaming": false, - "options": { - "google.api.http": { - "rules": [ - { - "method": "GET", - "pattern": "/v1/contracts/{chain_id}/{address}" - } - ] - } - } - }, - { - "name": "Unpack", - "description": "", - "requestType": "Request", - "requestLongType": "Request", - "requestFullType": "unpack.v1.contracts.Request", - "requestStreaming": false, - "responseType": "Response", - "responseLongType": "Response", - "responseFullType": "unpack.v1.contracts.Response", - "responseStreaming": false, - "options": { - "google.api.http": { - "rules": [ - { - "method": "POST", - "pattern": "/v1/contracts/unpack", - "body": "*" - } - ] - } - } - } - ] - } - ] - }, - { - "name": "contracts/service_parameters.proto", - "description": "", - "package": "unpack.v1.contracts", - "hasEnums": false, - "hasExtensions": false, - "hasMessages": true, - "hasServices": false, - "enums": [], - "extensions": [], - "messages": [ - { - "name": "Request", - "longName": "Request", - "fullName": "unpack.v1.contracts.Request", - "description": "Represents a contract request message with details about a transaction.", - "hasExtensions": false, - "hasFields": true, - "hasOneofs": false, - "extensions": [], - "fields": [ - { - "name": "network_id", - "description": "Identifier for the blockchain chain.", - "label": "", - "type": "int64", - "longType": "int64", - "fullType": "int64", - "ismap": false, - "isoneof": false, - "oneofdecl": "", - "defaultValue": "" - }, - { - "name": "addresses", - "description": "Address associated with the transaction.", - "label": "repeated", - "type": "string", - "longType": "string", - "fullType": "string", - "ismap": false, - "isoneof": false, - "oneofdecl": "", - "defaultValue": "" - } - ] - }, - { - "name": "Response", - "longName": "Response", - "fullName": "unpack.v1.contracts.Response", - "description": "Represents a contract response message with details about a transaction.", - "hasExtensions": false, - "hasFields": true, - "hasOneofs": false, - "extensions": [], - "fields": [ - { - "name": "status", - "description": "Status of the transaction.", - "label": "", - "type": "Status", - "longType": "unpack.v1.common.Status", - "fullType": "unpack.v1.common.Status", - "ismap": false, - "isoneof": false, - "oneofdecl": "", - "defaultValue": "" - }, - { - "name": "network_id", - "description": "Identifier for the blockchain chain.", - "label": "", - "type": "int64", - "longType": "int64", - "fullType": "int64", - "ismap": false, - "isoneof": false, - "oneofdecl": "", - "defaultValue": "" - }, - { - "name": "contracts", - "description": "Contract details associated with the transaction.", - "label": "repeated", - "type": "Contract", - "longType": "Contract", - "fullType": "unpack.v1.contracts.Contract", - "ismap": false, - "isoneof": false, - "oneofdecl": "", - "defaultValue": "" - } - ] - } - ], - "services": [] - }, { "name": "contracts/vulnerability.proto", "description": "", @@ -19281,6 +19255,221 @@ } ], "services": [] + }, + { + "name": "server/parameters.proto", + "description": "", + "package": "unpack.v1.server", + "hasEnums": false, + "hasExtensions": false, + "hasMessages": true, + "hasServices": false, + "enums": [ + { + "name": "ContractQueueStatus", + "longName": "UnpackResponse.ContractQueueResponse.ContractQueueStatus", + "fullName": "unpack.v1.server.UnpackResponse.ContractQueueResponse.ContractQueueStatus", + "description": "", + "values": [ + { + "name": "CQR_UNKNOWN", + "number": "0", + "description": "" + }, + { + "name": "CQR_QUEUED", + "number": "1", + "description": "" + }, + { + "name": "CQR_ERROR", + "number": "3", + "description": "" + } + ] + } + ], + "extensions": [], + "messages": [ + { + "name": "UnpackRequest", + "longName": "UnpackRequest", + "fullName": "unpack.v1.server.UnpackRequest", + "description": "Represents a contract request message with details about a transaction.", + "hasExtensions": false, + "hasFields": true, + "hasOneofs": false, + "extensions": [], + "fields": [ + { + "name": "network_id", + "description": "Identifier for the blockchain chain.", + "label": "", + "type": "int64", + "longType": "int64", + "fullType": "int64", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "addresses", + "description": "Address associated with the transaction.", + "label": "repeated", + "type": "string", + "longType": "string", + "fullType": "string", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + } + ] + }, + { + "name": "UnpackResponse", + "longName": "UnpackResponse", + "fullName": "unpack.v1.server.UnpackResponse", + "description": "Represents a contract response message with details about a transaction.", + "hasExtensions": false, + "hasFields": true, + "hasOneofs": false, + "extensions": [], + "fields": [ + { + "name": "status", + "description": "Status of the transaction.", + "label": "", + "type": "bool", + "longType": "bool", + "fullType": "bool", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "network_id", + "description": "Identifier for the blockchain chain.", + "label": "", + "type": "int64", + "longType": "int64", + "fullType": "int64", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "contracts", + "description": "", + "label": "repeated", + "type": "ContractQueueResponse", + "longType": "UnpackResponse.ContractQueueResponse", + "fullType": "unpack.v1.server.UnpackResponse.ContractQueueResponse", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + } + ] + }, + { + "name": "ContractQueueResponse", + "longName": "UnpackResponse.ContractQueueResponse", + "fullName": "unpack.v1.server.UnpackResponse.ContractQueueResponse", + "description": "", + "hasExtensions": false, + "hasFields": true, + "hasOneofs": false, + "extensions": [], + "fields": [ + { + "name": "status", + "description": "", + "label": "", + "type": "ContractQueueStatus", + "longType": "UnpackResponse.ContractQueueResponse.ContractQueueStatus", + "fullType": "unpack.v1.server.UnpackResponse.ContractQueueResponse.ContractQueueStatus", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "address", + "description": "", + "label": "", + "type": "string", + "longType": "string", + "fullType": "string", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + }, + { + "name": "error", + "description": "", + "label": "", + "type": "string", + "longType": "string", + "fullType": "string", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" + } + ] + } + ], + "services": [] + }, + { + "name": "server/server.proto", + "description": "", + "package": "unpack.v1.server", + "hasEnums": false, + "hasExtensions": false, + "hasMessages": false, + "hasServices": true, + "enums": [], + "extensions": [], + "messages": [], + "services": [ + { + "name": "Unpack", + "longName": "Unpack", + "fullName": "unpack.v1.server.Unpack", + "description": "Service definition for the contracts operations.", + "methods": [ + { + "name": "Unpack", + "description": "", + "requestType": "UnpackRequest", + "requestLongType": "UnpackRequest", + "requestFullType": "unpack.v1.server.UnpackRequest", + "requestStreaming": false, + "responseType": "UnpackResponse", + "responseLongType": "UnpackResponse", + "responseFullType": "unpack.v1.server.UnpackResponse", + "responseStreaming": false, + "options": { + "google.api.http": { + "rules": [ + { + "method": "POST", + "pattern": "/v1/unpack", + "body": "*" + } + ] + } + } + } + ] + } + ] } ], "scalarValueTypes": [ diff --git a/dist/go/ast/import.pb.go b/dist/go/ast/import.pb.go index f86cb50..24d118e 100644 --- a/dist/go/ast/import.pb.go +++ b/dist/go/ast/import.pb.go @@ -34,6 +34,8 @@ type Import struct { Scope int64 `protobuf:"varint,7,opt,name=scope,proto3" json:"scope,omitempty"` UnitAlias string `protobuf:"bytes,8,opt,name=unit_alias,json=unitAlias,proto3" json:"unit_alias,omitempty"` SourceUnit int64 `protobuf:"varint,9,opt,name=source_unit,json=sourceUnit,proto3" json:"source_unit,omitempty"` + As string `protobuf:"bytes,10,opt,name=as,proto3" json:"as,omitempty"` + UnitAliases []string `protobuf:"bytes,11,rep,name=unit_aliases,json=unitAliases,proto3" json:"unit_aliases,omitempty"` } func (x *Import) Reset() { @@ -131,6 +133,20 @@ func (x *Import) GetSourceUnit() int64 { return 0 } +func (x *Import) GetAs() string { + if x != nil { + return x.As + } + return "" +} + +func (x *Import) GetUnitAliases() []string { + if x != nil { + return x.UnitAliases + } + return nil +} + var File_ast_import_proto protoreflect.FileDescriptor var file_ast_import_proto_rawDesc = []byte{ @@ -138,7 +154,7 @@ var file_ast_import_proto_rawDesc = []byte{ 0x74, 0x6f, 0x12, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x73, 0x74, 0x1a, 0x0f, 0x61, 0x73, 0x74, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x61, 0x73, 0x74, 0x2f, 0x73, 0x72, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0xbc, 0x02, 0x0a, 0x06, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x6f, 0x22, 0xef, 0x02, 0x0a, 0x06, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x73, 0x74, 0x2e, @@ -158,10 +174,13 @@ var file_ast_import_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x6e, 0x69, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, - 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, - 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x64, 0x65, 0x76, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, - 0x64, 0x69, 0x73, 0x74, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x73, 0x74, 0x3b, 0x61, 0x73, 0x74, 0x5f, - 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x61, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x69, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, + 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x69, 0x74, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x65, 0x73, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x64, 0x65, 0x76, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x73, 0x74, 0x3b, 0x61, + 0x73, 0x74, 0x5f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/dist/go/ast/inline_array.pb.go b/dist/go/ast/inline_array.pb.go new file mode 100644 index 0000000..2479b99 --- /dev/null +++ b/dist/go/ast/inline_array.pb.go @@ -0,0 +1,232 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.30.0 +// protoc v3.12.4 +// source: ast/inline_array.proto + +package ast_pb + +import ( + v3 "github.com/cncf/xds/go/xds/type/v3" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type InlineArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + NodeType NodeType `protobuf:"varint,2,opt,name=node_type,json=nodeType,proto3,enum=unpack.v1.ast.NodeType" json:"node_type,omitempty"` + Src *Src `protobuf:"bytes,3,opt,name=src,proto3" json:"src,omitempty"` + IsEmpty bool `protobuf:"varint,4,opt,name=is_empty,json=isEmpty,proto3" json:"is_empty,omitempty"` + Expressions []*v3.TypedStruct `protobuf:"bytes,5,rep,name=expressions,proto3" json:"expressions,omitempty"` + TypeDescriptions []*TypeDescription `protobuf:"bytes,6,rep,name=type_descriptions,json=typeDescriptions,proto3" json:"type_descriptions,omitempty"` + TypeDescription *TypeDescription `protobuf:"bytes,7,opt,name=type_description,json=typeDescription,proto3" json:"type_description,omitempty"` +} + +func (x *InlineArray) Reset() { + *x = InlineArray{} + if protoimpl.UnsafeEnabled { + mi := &file_ast_inline_array_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InlineArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InlineArray) ProtoMessage() {} + +func (x *InlineArray) ProtoReflect() protoreflect.Message { + mi := &file_ast_inline_array_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InlineArray.ProtoReflect.Descriptor instead. +func (*InlineArray) Descriptor() ([]byte, []int) { + return file_ast_inline_array_proto_rawDescGZIP(), []int{0} +} + +func (x *InlineArray) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *InlineArray) GetNodeType() NodeType { + if x != nil { + return x.NodeType + } + return NodeType_NT_DEFAULT +} + +func (x *InlineArray) GetSrc() *Src { + if x != nil { + return x.Src + } + return nil +} + +func (x *InlineArray) GetIsEmpty() bool { + if x != nil { + return x.IsEmpty + } + return false +} + +func (x *InlineArray) GetExpressions() []*v3.TypedStruct { + if x != nil { + return x.Expressions + } + return nil +} + +func (x *InlineArray) GetTypeDescriptions() []*TypeDescription { + if x != nil { + return x.TypeDescriptions + } + return nil +} + +func (x *InlineArray) GetTypeDescription() *TypeDescription { + if x != nil { + return x.TypeDescription + } + return nil +} + +var File_ast_inline_array_proto protoreflect.FileDescriptor + +var file_ast_inline_array_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x61, 0x73, 0x74, 0x2f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, + 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x73, 0x74, 0x1a, 0x0f, 0x61, 0x73, 0x74, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x61, 0x73, 0x74, 0x2f, 0x73, 0x72, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x61, 0x73, 0x74, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x78, 0x64, + 0x73, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8, 0x02, 0x0a, + 0x0b, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x09, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x17, 0x2e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x73, 0x74, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x73, 0x74, 0x2e, + 0x53, 0x72, 0x63, 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x64, 0x73, 0x2e, 0x74, + 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x4b, 0x0a, 0x11, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x75, 0x6e, 0x70, + 0x61, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x73, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x79, 0x70, 0x65, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x10, + 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, + 0x76, 0x31, 0x2e, 0x61, 0x73, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x79, 0x70, 0x65, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x64, 0x65, 0x76, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x2f, 0x67, 0x6f, 0x2f, 0x61, + 0x73, 0x74, 0x3b, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_ast_inline_array_proto_rawDescOnce sync.Once + file_ast_inline_array_proto_rawDescData = file_ast_inline_array_proto_rawDesc +) + +func file_ast_inline_array_proto_rawDescGZIP() []byte { + file_ast_inline_array_proto_rawDescOnce.Do(func() { + file_ast_inline_array_proto_rawDescData = protoimpl.X.CompressGZIP(file_ast_inline_array_proto_rawDescData) + }) + return file_ast_inline_array_proto_rawDescData +} + +var file_ast_inline_array_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_ast_inline_array_proto_goTypes = []interface{}{ + (*InlineArray)(nil), // 0: unpack.v1.ast.InlineArray + (NodeType)(0), // 1: unpack.v1.ast.NodeType + (*Src)(nil), // 2: unpack.v1.ast.Src + (*v3.TypedStruct)(nil), // 3: xds.type.v3.TypedStruct + (*TypeDescription)(nil), // 4: unpack.v1.ast.TypeDescription +} +var file_ast_inline_array_proto_depIdxs = []int32{ + 1, // 0: unpack.v1.ast.InlineArray.node_type:type_name -> unpack.v1.ast.NodeType + 2, // 1: unpack.v1.ast.InlineArray.src:type_name -> unpack.v1.ast.Src + 3, // 2: unpack.v1.ast.InlineArray.expressions:type_name -> xds.type.v3.TypedStruct + 4, // 3: unpack.v1.ast.InlineArray.type_descriptions:type_name -> unpack.v1.ast.TypeDescription + 4, // 4: unpack.v1.ast.InlineArray.type_description:type_name -> unpack.v1.ast.TypeDescription + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_ast_inline_array_proto_init() } +func file_ast_inline_array_proto_init() { + if File_ast_inline_array_proto != nil { + return + } + file_ast_types_proto_init() + file_ast_src_proto_init() + file_ast_type_name_proto_init() + if !protoimpl.UnsafeEnabled { + file_ast_inline_array_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InlineArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_ast_inline_array_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_ast_inline_array_proto_goTypes, + DependencyIndexes: file_ast_inline_array_proto_depIdxs, + MessageInfos: file_ast_inline_array_proto_msgTypes, + }.Build() + File_ast_inline_array_proto = out.File + file_ast_inline_array_proto_rawDesc = nil + file_ast_inline_array_proto_goTypes = nil + file_ast_inline_array_proto_depIdxs = nil +} diff --git a/dist/go/ast/types.pb.go b/dist/go/ast/types.pb.go index 6ac2357..5c0c333 100644 --- a/dist/go/ast/types.pb.go +++ b/dist/go/ast/types.pb.go @@ -129,6 +129,7 @@ const ( NodeType_SHIFT_OPERATION NodeType = 103 NodeType_KIND_UNARY_PREFIX NodeType = 104 NodeType_KIND_UNARY_SUFFIX NodeType = 105 + NodeType_INLINE_ARRAY NodeType = 106 ) // Enum value maps for NodeType. @@ -240,6 +241,7 @@ var ( 103: "SHIFT_OPERATION", 104: "KIND_UNARY_PREFIX", 105: "KIND_UNARY_SUFFIX", + 106: "INLINE_ARRAY", } NodeType_value = map[string]int32{ "NT_DEFAULT": 0, @@ -348,6 +350,7 @@ var ( "SHIFT_OPERATION": 103, "KIND_UNARY_PREFIX": 104, "KIND_UNARY_SUFFIX": 105, + "INLINE_ARRAY": 106, } ) @@ -696,7 +699,7 @@ var File_ast_types_proto protoreflect.FileDescriptor var file_ast_types_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x61, 0x73, 0x74, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x61, 0x73, 0x74, - 0x2a, 0x85, 0x10, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, + 0x2a, 0x97, 0x10, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, @@ -824,63 +827,64 @@ var file_ast_types_proto_rawDesc = []byte{ 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x67, 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x10, 0x68, 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x41, 0x52, 0x59, 0x5f, - 0x53, 0x55, 0x46, 0x46, 0x49, 0x58, 0x10, 0x69, 0x2a, 0x68, 0x0a, 0x0a, 0x4d, 0x75, 0x74, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x5f, 0x44, 0x45, 0x46, 0x41, - 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4d, 0x4d, 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, - 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x59, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0e, - 0x0a, 0x0a, 0x4e, 0x4f, 0x4e, 0x50, 0x41, 0x59, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x12, 0x08, - 0x0a, 0x04, 0x56, 0x49, 0x45, 0x57, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x55, 0x52, 0x45, - 0x10, 0x06, 0x2a, 0x55, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, - 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x02, 0x12, 0x0b, - 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, - 0x41, 0x4c, 0x4c, 0x44, 0x41, 0x54, 0x41, 0x10, 0x04, 0x2a, 0x50, 0x0a, 0x0a, 0x56, 0x69, 0x73, - 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x5f, 0x44, 0x45, 0x46, - 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, - 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, - 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x03, 0x12, 0x0c, 0x0a, - 0x08, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x04, 0x2a, 0xad, 0x04, 0x0a, 0x08, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x5f, 0x44, 0x45, - 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x44, 0x44, 0x49, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x55, 0x42, 0x54, 0x52, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x50, - 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, - 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x4f, 0x44, 0x55, - 0x4c, 0x4f, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x58, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, - 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x52, 0x45, 0x41, - 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x07, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, - 0x55, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, - 0x41, 0x4e, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, - 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0a, 0x12, 0x09, 0x0a, 0x05, - 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0b, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x45, - 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4c, 0x55, 0x53, 0x5f, 0x45, - 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0d, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x55, 0x53, 0x5f, - 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x55, 0x4c, 0x5f, 0x45, - 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x56, 0x5f, 0x45, 0x51, - 0x55, 0x41, 0x4c, 0x10, 0x10, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x4f, 0x44, 0x5f, 0x45, 0x51, 0x55, - 0x41, 0x4c, 0x10, 0x11, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4e, 0x44, 0x5f, 0x45, 0x51, 0x55, 0x41, - 0x4c, 0x10, 0x12, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, - 0x13, 0x12, 0x0d, 0x0a, 0x09, 0x58, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x14, - 0x12, 0x14, 0x0a, 0x10, 0x53, 0x48, 0x49, 0x46, 0x54, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x45, - 0x51, 0x55, 0x41, 0x4c, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x48, 0x49, 0x46, 0x54, 0x5f, - 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x16, 0x12, 0x11, 0x0a, - 0x0d, 0x42, 0x49, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x17, - 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x49, 0x54, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, - 0x10, 0x18, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x49, 0x54, 0x5f, 0x58, 0x4f, 0x52, 0x5f, 0x45, 0x51, - 0x55, 0x41, 0x4c, 0x10, 0x19, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x4f, 0x57, 0x5f, 0x45, 0x51, 0x55, - 0x41, 0x4c, 0x10, 0x1a, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, - 0x54, 0x10, 0x1b, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, - 0x10, 0x1c, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x49, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x10, 0x1d, 0x12, - 0x0b, 0x0a, 0x07, 0x42, 0x49, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x10, 0x1e, 0x12, 0x07, 0x0a, 0x03, - 0x4e, 0x4f, 0x54, 0x10, 0x1f, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x55, 0x42, 0x54, 0x52, 0x41, 0x43, - 0x54, 0x10, 0x20, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x52, 0x10, 0x21, 0x42, 0x30, 0x5a, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, - 0x64, 0x65, 0x76, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x2f, - 0x67, 0x6f, 0x2f, 0x61, 0x73, 0x74, 0x3b, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x53, 0x55, 0x46, 0x46, 0x49, 0x58, 0x10, 0x69, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x4c, 0x49, + 0x4e, 0x45, 0x5f, 0x41, 0x52, 0x52, 0x41, 0x59, 0x10, 0x6a, 0x2a, 0x68, 0x0a, 0x0a, 0x4d, 0x75, + 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x5f, 0x44, 0x45, + 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x55, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4d, 0x4d, 0x55, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x59, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, + 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x4e, 0x50, 0x41, 0x59, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, + 0x12, 0x08, 0x0a, 0x04, 0x56, 0x49, 0x45, 0x57, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x55, + 0x52, 0x45, 0x10, 0x06, 0x2a, 0x55, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x5f, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, + 0x4c, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x02, + 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, + 0x08, 0x43, 0x41, 0x4c, 0x4c, 0x44, 0x41, 0x54, 0x41, 0x10, 0x04, 0x2a, 0x50, 0x0a, 0x0a, 0x56, + 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x5f, 0x44, + 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, + 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x03, 0x12, + 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x04, 0x2a, 0xad, 0x04, + 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x5f, + 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x44, 0x44, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x55, 0x42, 0x54, 0x52, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x55, 0x4c, 0x54, + 0x49, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, + 0x44, 0x49, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x4f, + 0x44, 0x55, 0x4c, 0x4f, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x58, 0x50, 0x4f, 0x4e, 0x45, + 0x4e, 0x54, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x52, + 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x07, 0x12, 0x19, 0x0a, 0x15, + 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, + 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x53, 0x53, 0x5f, + 0x54, 0x48, 0x41, 0x4e, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, + 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0a, 0x12, 0x09, + 0x0a, 0x05, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0b, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, + 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x4c, 0x55, 0x53, + 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0d, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x55, + 0x53, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x55, 0x4c, + 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x56, 0x5f, + 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x10, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x4f, 0x44, 0x5f, 0x45, + 0x51, 0x55, 0x41, 0x4c, 0x10, 0x11, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4e, 0x44, 0x5f, 0x45, 0x51, + 0x55, 0x41, 0x4c, 0x10, 0x12, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, + 0x4c, 0x10, 0x13, 0x12, 0x0d, 0x0a, 0x09, 0x58, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, + 0x10, 0x14, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x48, 0x49, 0x46, 0x54, 0x5f, 0x4c, 0x45, 0x46, 0x54, + 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x48, 0x49, 0x46, + 0x54, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x16, 0x12, + 0x11, 0x0a, 0x0d, 0x42, 0x49, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, + 0x10, 0x17, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x49, 0x54, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, + 0x41, 0x4c, 0x10, 0x18, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x49, 0x54, 0x5f, 0x58, 0x4f, 0x52, 0x5f, + 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x19, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x4f, 0x57, 0x5f, 0x45, + 0x51, 0x55, 0x41, 0x4c, 0x10, 0x1a, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, + 0x45, 0x4e, 0x54, 0x10, 0x1b, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, + 0x4e, 0x54, 0x10, 0x1c, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x49, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x10, + 0x1d, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x49, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x10, 0x1e, 0x12, 0x07, + 0x0a, 0x03, 0x4e, 0x4f, 0x54, 0x10, 0x1f, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x55, 0x42, 0x54, 0x52, + 0x41, 0x43, 0x54, 0x10, 0x20, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x52, 0x10, 0x21, 0x42, 0x30, 0x5a, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x70, 0x61, + 0x63, 0x6b, 0x64, 0x65, 0x76, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, + 0x74, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x73, 0x74, 0x3b, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/dist/go/server/parameters.pb.go b/dist/go/server/parameters.pb.go new file mode 100644 index 0000000..488af40 --- /dev/null +++ b/dist/go/server/parameters.pb.go @@ -0,0 +1,393 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.30.0 +// protoc v3.12.4 +// source: server/parameters.proto + +package server_pb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type UnpackResponse_ContractQueueResponse_ContractQueueStatus int32 + +const ( + UnpackResponse_ContractQueueResponse_CQR_UNKNOWN UnpackResponse_ContractQueueResponse_ContractQueueStatus = 0 + UnpackResponse_ContractQueueResponse_CQR_QUEUED UnpackResponse_ContractQueueResponse_ContractQueueStatus = 1 + UnpackResponse_ContractQueueResponse_CQR_ERROR UnpackResponse_ContractQueueResponse_ContractQueueStatus = 3 +) + +// Enum value maps for UnpackResponse_ContractQueueResponse_ContractQueueStatus. +var ( + UnpackResponse_ContractQueueResponse_ContractQueueStatus_name = map[int32]string{ + 0: "CQR_UNKNOWN", + 1: "CQR_QUEUED", + 3: "CQR_ERROR", + } + UnpackResponse_ContractQueueResponse_ContractQueueStatus_value = map[string]int32{ + "CQR_UNKNOWN": 0, + "CQR_QUEUED": 1, + "CQR_ERROR": 3, + } +) + +func (x UnpackResponse_ContractQueueResponse_ContractQueueStatus) Enum() *UnpackResponse_ContractQueueResponse_ContractQueueStatus { + p := new(UnpackResponse_ContractQueueResponse_ContractQueueStatus) + *p = x + return p +} + +func (x UnpackResponse_ContractQueueResponse_ContractQueueStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UnpackResponse_ContractQueueResponse_ContractQueueStatus) Descriptor() protoreflect.EnumDescriptor { + return file_server_parameters_proto_enumTypes[0].Descriptor() +} + +func (UnpackResponse_ContractQueueResponse_ContractQueueStatus) Type() protoreflect.EnumType { + return &file_server_parameters_proto_enumTypes[0] +} + +func (x UnpackResponse_ContractQueueResponse_ContractQueueStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UnpackResponse_ContractQueueResponse_ContractQueueStatus.Descriptor instead. +func (UnpackResponse_ContractQueueResponse_ContractQueueStatus) EnumDescriptor() ([]byte, []int) { + return file_server_parameters_proto_rawDescGZIP(), []int{1, 0, 0} +} + +// Represents a contract request message with details about a transaction. +type UnpackRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identifier for the blockchain chain. + NetworkId int64 `protobuf:"varint,1,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + // Address associated with the transaction. + Addresses []string `protobuf:"bytes,2,rep,name=addresses,proto3" json:"addresses,omitempty"` +} + +func (x *UnpackRequest) Reset() { + *x = UnpackRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_server_parameters_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnpackRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnpackRequest) ProtoMessage() {} + +func (x *UnpackRequest) ProtoReflect() protoreflect.Message { + mi := &file_server_parameters_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnpackRequest.ProtoReflect.Descriptor instead. +func (*UnpackRequest) Descriptor() ([]byte, []int) { + return file_server_parameters_proto_rawDescGZIP(), []int{0} +} + +func (x *UnpackRequest) GetNetworkId() int64 { + if x != nil { + return x.NetworkId + } + return 0 +} + +func (x *UnpackRequest) GetAddresses() []string { + if x != nil { + return x.Addresses + } + return nil +} + +// Represents a contract response message with details about a transaction. +type UnpackResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Status of the transaction. + Status bool `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` + // Identifier for the blockchain chain. + NetworkId int64 `protobuf:"varint,2,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` + Contracts []*UnpackResponse_ContractQueueResponse `protobuf:"bytes,3,rep,name=contracts,proto3" json:"contracts,omitempty"` +} + +func (x *UnpackResponse) Reset() { + *x = UnpackResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_server_parameters_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnpackResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnpackResponse) ProtoMessage() {} + +func (x *UnpackResponse) ProtoReflect() protoreflect.Message { + mi := &file_server_parameters_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnpackResponse.ProtoReflect.Descriptor instead. +func (*UnpackResponse) Descriptor() ([]byte, []int) { + return file_server_parameters_proto_rawDescGZIP(), []int{1} +} + +func (x *UnpackResponse) GetStatus() bool { + if x != nil { + return x.Status + } + return false +} + +func (x *UnpackResponse) GetNetworkId() int64 { + if x != nil { + return x.NetworkId + } + return 0 +} + +func (x *UnpackResponse) GetContracts() []*UnpackResponse_ContractQueueResponse { + if x != nil { + return x.Contracts + } + return nil +} + +type UnpackResponse_ContractQueueResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status UnpackResponse_ContractQueueResponse_ContractQueueStatus `protobuf:"varint,1,opt,name=status,proto3,enum=unpack.v1.server.UnpackResponse_ContractQueueResponse_ContractQueueStatus" json:"status,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *UnpackResponse_ContractQueueResponse) Reset() { + *x = UnpackResponse_ContractQueueResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_server_parameters_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnpackResponse_ContractQueueResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnpackResponse_ContractQueueResponse) ProtoMessage() {} + +func (x *UnpackResponse_ContractQueueResponse) ProtoReflect() protoreflect.Message { + mi := &file_server_parameters_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnpackResponse_ContractQueueResponse.ProtoReflect.Descriptor instead. +func (*UnpackResponse_ContractQueueResponse) Descriptor() ([]byte, []int) { + return file_server_parameters_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *UnpackResponse_ContractQueueResponse) GetStatus() UnpackResponse_ContractQueueResponse_ContractQueueStatus { + if x != nil { + return x.Status + } + return UnpackResponse_ContractQueueResponse_CQR_UNKNOWN +} + +func (x *UnpackResponse_ContractQueueResponse) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *UnpackResponse_ContractQueueResponse) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +var File_server_parameters_proto protoreflect.FileDescriptor + +var file_server_parameters_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x4c, 0x0a, 0x0d, 0x55, + 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x92, 0x03, 0x0a, 0x0e, 0x55, 0x6e, + 0x70, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x64, 0x12, 0x54, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x1a, 0xf2, 0x01, 0x0a, 0x15, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x4a, 0x2e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x45, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, + 0x0a, 0x0b, 0x43, 0x51, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, + 0x0e, 0x0a, 0x0a, 0x43, 0x51, 0x52, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x44, 0x10, 0x01, 0x12, + 0x0d, 0x0a, 0x09, 0x43, 0x51, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x42, 0x36, + 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x70, + 0x61, 0x63, 0x6b, 0x64, 0x65, 0x76, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x64, 0x69, + 0x73, 0x74, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3b, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_server_parameters_proto_rawDescOnce sync.Once + file_server_parameters_proto_rawDescData = file_server_parameters_proto_rawDesc +) + +func file_server_parameters_proto_rawDescGZIP() []byte { + file_server_parameters_proto_rawDescOnce.Do(func() { + file_server_parameters_proto_rawDescData = protoimpl.X.CompressGZIP(file_server_parameters_proto_rawDescData) + }) + return file_server_parameters_proto_rawDescData +} + +var file_server_parameters_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_server_parameters_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_server_parameters_proto_goTypes = []interface{}{ + (UnpackResponse_ContractQueueResponse_ContractQueueStatus)(0), // 0: unpack.v1.server.UnpackResponse.ContractQueueResponse.ContractQueueStatus + (*UnpackRequest)(nil), // 1: unpack.v1.server.UnpackRequest + (*UnpackResponse)(nil), // 2: unpack.v1.server.UnpackResponse + (*UnpackResponse_ContractQueueResponse)(nil), // 3: unpack.v1.server.UnpackResponse.ContractQueueResponse +} +var file_server_parameters_proto_depIdxs = []int32{ + 3, // 0: unpack.v1.server.UnpackResponse.contracts:type_name -> unpack.v1.server.UnpackResponse.ContractQueueResponse + 0, // 1: unpack.v1.server.UnpackResponse.ContractQueueResponse.status:type_name -> unpack.v1.server.UnpackResponse.ContractQueueResponse.ContractQueueStatus + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_server_parameters_proto_init() } +func file_server_parameters_proto_init() { + if File_server_parameters_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_server_parameters_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnpackRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_parameters_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnpackResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_parameters_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnpackResponse_ContractQueueResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_server_parameters_proto_rawDesc, + NumEnums: 1, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_server_parameters_proto_goTypes, + DependencyIndexes: file_server_parameters_proto_depIdxs, + EnumInfos: file_server_parameters_proto_enumTypes, + MessageInfos: file_server_parameters_proto_msgTypes, + }.Build() + File_server_parameters_proto = out.File + file_server_parameters_proto_rawDesc = nil + file_server_parameters_proto_goTypes = nil + file_server_parameters_proto_depIdxs = nil +} diff --git a/dist/go/server/server.pb.go b/dist/go/server/server.pb.go index 4a0b37b..3b8d38d 100644 --- a/dist/go/server/server.pb.go +++ b/dist/go/server/server.pb.go @@ -7,6 +7,7 @@ package server_pb import ( + _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -24,18 +25,32 @@ var File_server_server_proto protoreflect.FileDescriptor var file_server_server_proto_rawDesc = []byte{ 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, 0x76, 0x31, - 0x2e, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x32, 0x08, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x64, 0x65, 0x76, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, - 0x2f, 0x64, 0x69, 0x73, 0x74, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3b, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x1a, 0x17, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x6c, + 0x0a, 0x06, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x12, 0x62, 0x0a, 0x06, 0x55, 0x6e, 0x70, 0x61, + 0x63, 0x6b, 0x12, 0x1f, 0x2e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x3a, 0x01, 0x2a, + 0x22, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x42, 0x36, 0x5a, 0x34, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, + 0x6b, 0x64, 0x65, 0x76, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, + 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x5f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -var file_server_server_proto_goTypes = []interface{}{} +var file_server_server_proto_goTypes = []interface{}{ + (*UnpackRequest)(nil), // 0: unpack.v1.server.UnpackRequest + (*UnpackResponse)(nil), // 1: unpack.v1.server.UnpackResponse +} var file_server_server_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type + 0, // 0: unpack.v1.server.Unpack.Unpack:input_type -> unpack.v1.server.UnpackRequest + 1, // 1: unpack.v1.server.Unpack.Unpack:output_type -> unpack.v1.server.UnpackResponse + 1, // [1:2] is the sub-list for method output_type + 0, // [0:1] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -46,6 +61,7 @@ func file_server_server_proto_init() { if File_server_server_proto != nil { return } + file_server_parameters_proto_init() type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/dist/go/server/server_grpc.pb.go b/dist/go/server/server_grpc.pb.go index d9c435c..f9fa9aa 100644 --- a/dist/go/server/server_grpc.pb.go +++ b/dist/go/server/server_grpc.pb.go @@ -3,7 +3,10 @@ package server_pb import ( + context "context" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" ) // This is a compile-time assertion to ensure that this generated file @@ -11,51 +14,88 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -// ServerClient is the client API for Server service. +// UnpackClient is the client API for Unpack service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type ServerClient interface { +type UnpackClient interface { + Unpack(ctx context.Context, in *UnpackRequest, opts ...grpc.CallOption) (*UnpackResponse, error) } -type serverClient struct { +type unpackClient struct { cc grpc.ClientConnInterface } -func NewServerClient(cc grpc.ClientConnInterface) ServerClient { - return &serverClient{cc} +func NewUnpackClient(cc grpc.ClientConnInterface) UnpackClient { + return &unpackClient{cc} } -// ServerServer is the server API for Server service. -// All implementations must embed UnimplementedServerServer +func (c *unpackClient) Unpack(ctx context.Context, in *UnpackRequest, opts ...grpc.CallOption) (*UnpackResponse, error) { + out := new(UnpackResponse) + err := c.cc.Invoke(ctx, "/unpack.v1.server.Unpack/Unpack", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// UnpackServer is the server API for Unpack service. +// All implementations must embed UnimplementedUnpackServer // for forward compatibility -type ServerServer interface { - mustEmbedUnimplementedServerServer() +type UnpackServer interface { + Unpack(context.Context, *UnpackRequest) (*UnpackResponse, error) + mustEmbedUnimplementedUnpackServer() } -// UnimplementedServerServer must be embedded to have forward compatible implementations. -type UnimplementedServerServer struct { +// UnimplementedUnpackServer must be embedded to have forward compatible implementations. +type UnimplementedUnpackServer struct { } -func (UnimplementedServerServer) mustEmbedUnimplementedServerServer() {} +func (UnimplementedUnpackServer) Unpack(context.Context, *UnpackRequest) (*UnpackResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Unpack not implemented") +} +func (UnimplementedUnpackServer) mustEmbedUnimplementedUnpackServer() {} -// UnsafeServerServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to ServerServer will +// UnsafeUnpackServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to UnpackServer will // result in compilation errors. -type UnsafeServerServer interface { - mustEmbedUnimplementedServerServer() +type UnsafeUnpackServer interface { + mustEmbedUnimplementedUnpackServer() +} + +func RegisterUnpackServer(s grpc.ServiceRegistrar, srv UnpackServer) { + s.RegisterService(&Unpack_ServiceDesc, srv) } -func RegisterServerServer(s grpc.ServiceRegistrar, srv ServerServer) { - s.RegisterService(&Server_ServiceDesc, srv) +func _Unpack_Unpack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UnpackRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UnpackServer).Unpack(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/unpack.v1.server.Unpack/Unpack", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UnpackServer).Unpack(ctx, req.(*UnpackRequest)) + } + return interceptor(ctx, in, info, handler) } -// Server_ServiceDesc is the grpc.ServiceDesc for Server service. +// Unpack_ServiceDesc is the grpc.ServiceDesc for Unpack service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) -var Server_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "unpack.v1.opcode.Server", - HandlerType: (*ServerServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{}, - Metadata: "server/server.proto", +var Unpack_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "unpack.v1.server.Unpack", + HandlerType: (*UnpackServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Unpack", + Handler: _Unpack_Unpack_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "server/server.proto", } diff --git a/dist/js/ast/import_pb.d.ts b/dist/js/ast/import_pb.d.ts index 6eb3791..0116fec 100644 --- a/dist/js/ast/import_pb.d.ts +++ b/dist/js/ast/import_pb.d.ts @@ -36,6 +36,14 @@ export class Import extends jspb.Message { getSourceUnit(): number; setSourceUnit(value: number): Import; + getAs(): string; + setAs(value: string): Import; + + getUnitAliasesList(): Array; + setUnitAliasesList(value: Array): Import; + clearUnitAliasesList(): Import; + addUnitAliases(value: string, index?: number): Import; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): Import.AsObject; static toObject(includeInstance: boolean, msg: Import): Import.AsObject; @@ -55,6 +63,8 @@ export namespace Import { scope: number, unitAlias: string, sourceUnit: number, + as: string, + unitAliasesList: Array, } } diff --git a/dist/js/ast/import_pb.js b/dist/js/ast/import_pb.js index 9e54c9b..f97d70e 100644 --- a/dist/js/ast/import_pb.js +++ b/dist/js/ast/import_pb.js @@ -28,7 +28,7 @@ goog.exportSymbol('proto.unpack.v1.ast.Import', null, global); * @constructor */ proto.unpack.v1.ast.Import = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, null, null); + jspb.Message.initialize(this, opt_data, 0, -1, proto.unpack.v1.ast.Import.repeatedFields_, null); }; goog.inherits(proto.unpack.v1.ast.Import, jspb.Message); if (goog.DEBUG && !COMPILED) { @@ -39,6 +39,13 @@ if (goog.DEBUG && !COMPILED) { proto.unpack.v1.ast.Import.displayName = 'proto.unpack.v1.ast.Import'; } +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.unpack.v1.ast.Import.repeatedFields_ = [11]; + if (jspb.Message.GENERATE_TO_OBJECT) { @@ -78,7 +85,9 @@ proto.unpack.v1.ast.Import.toObject = function(includeInstance, msg) { file: jspb.Message.getFieldWithDefault(msg, 6, ""), scope: jspb.Message.getFieldWithDefault(msg, 7, 0), unitAlias: jspb.Message.getFieldWithDefault(msg, 8, ""), - sourceUnit: jspb.Message.getFieldWithDefault(msg, 9, 0) + sourceUnit: jspb.Message.getFieldWithDefault(msg, 9, 0), + as: jspb.Message.getFieldWithDefault(msg, 10, ""), + unitAliasesList: (f = jspb.Message.getRepeatedField(msg, 11)) == null ? undefined : f }; if (includeInstance) { @@ -153,6 +162,14 @@ proto.unpack.v1.ast.Import.deserializeBinaryFromReader = function(msg, reader) { var value = /** @type {number} */ (reader.readInt64()); msg.setSourceUnit(value); break; + case 10: + var value = /** @type {string} */ (reader.readString()); + msg.setAs(value); + break; + case 11: + var value = /** @type {string} */ (reader.readString()); + msg.addUnitAliases(value); + break; default: reader.skipField(); break; @@ -247,6 +264,20 @@ proto.unpack.v1.ast.Import.serializeBinaryToWriter = function(message, writer) { f ); } + f = message.getAs(); + if (f.length > 0) { + writer.writeString( + 10, + f + ); + } + f = message.getUnitAliasesList(); + if (f.length > 0) { + writer.writeRepeatedString( + 11, + f + ); + } }; @@ -450,4 +481,59 @@ proto.unpack.v1.ast.Import.prototype.setSourceUnit = function(value) { }; +/** + * optional string as = 10; + * @return {string} + */ +proto.unpack.v1.ast.Import.prototype.getAs = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, "")); +}; + + +/** + * @param {string} value + * @return {!proto.unpack.v1.ast.Import} returns this + */ +proto.unpack.v1.ast.Import.prototype.setAs = function(value) { + return jspb.Message.setProto3StringField(this, 10, value); +}; + + +/** + * repeated string unit_aliases = 11; + * @return {!Array} + */ +proto.unpack.v1.ast.Import.prototype.getUnitAliasesList = function() { + return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 11)); +}; + + +/** + * @param {!Array} value + * @return {!proto.unpack.v1.ast.Import} returns this + */ +proto.unpack.v1.ast.Import.prototype.setUnitAliasesList = function(value) { + return jspb.Message.setField(this, 11, value || []); +}; + + +/** + * @param {string} value + * @param {number=} opt_index + * @return {!proto.unpack.v1.ast.Import} returns this + */ +proto.unpack.v1.ast.Import.prototype.addUnitAliases = function(value, opt_index) { + return jspb.Message.addToRepeatedField(this, 11, value, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.unpack.v1.ast.Import} returns this + */ +proto.unpack.v1.ast.Import.prototype.clearUnitAliasesList = function() { + return this.setUnitAliasesList([]); +}; + + goog.object.extend(exports, proto.unpack.v1.ast); diff --git a/dist/js/ast/inline_array_pb.d.ts b/dist/js/ast/inline_array_pb.d.ts new file mode 100644 index 0000000..ca95a1b --- /dev/null +++ b/dist/js/ast/inline_array_pb.d.ts @@ -0,0 +1,58 @@ +import * as jspb from 'google-protobuf' + +import * as ast_types_pb from '../ast/types_pb'; +import * as ast_src_pb from '../ast/src_pb'; +import * as ast_type_name_pb from '../ast/type_name_pb'; +import * as xds_type_v3_typed_struct_pb from '../xds/type/v3/typed_struct_pb'; + + +export class InlineArray extends jspb.Message { + getId(): number; + setId(value: number): InlineArray; + + getNodeType(): ast_types_pb.NodeType; + setNodeType(value: ast_types_pb.NodeType): InlineArray; + + getSrc(): ast_src_pb.Src | undefined; + setSrc(value?: ast_src_pb.Src): InlineArray; + hasSrc(): boolean; + clearSrc(): InlineArray; + + getIsEmpty(): boolean; + setIsEmpty(value: boolean): InlineArray; + + getExpressionsList(): Array; + setExpressionsList(value: Array): InlineArray; + clearExpressionsList(): InlineArray; + addExpressions(value?: xds_type_v3_typed_struct_pb.TypedStruct, index?: number): xds_type_v3_typed_struct_pb.TypedStruct; + + getTypeDescriptionsList(): Array; + setTypeDescriptionsList(value: Array): InlineArray; + clearTypeDescriptionsList(): InlineArray; + addTypeDescriptions(value?: ast_type_name_pb.TypeDescription, index?: number): ast_type_name_pb.TypeDescription; + + getTypeDescription(): ast_type_name_pb.TypeDescription | undefined; + setTypeDescription(value?: ast_type_name_pb.TypeDescription): InlineArray; + hasTypeDescription(): boolean; + clearTypeDescription(): InlineArray; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): InlineArray.AsObject; + static toObject(includeInstance: boolean, msg: InlineArray): InlineArray.AsObject; + static serializeBinaryToWriter(message: InlineArray, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): InlineArray; + static deserializeBinaryFromReader(message: InlineArray, reader: jspb.BinaryReader): InlineArray; +} + +export namespace InlineArray { + export type AsObject = { + id: number, + nodeType: ast_types_pb.NodeType, + src?: ast_src_pb.Src.AsObject, + isEmpty: boolean, + expressionsList: Array, + typeDescriptionsList: Array, + typeDescription?: ast_type_name_pb.TypeDescription.AsObject, + } +} + diff --git a/dist/js/ast/inline_array_pb.js b/dist/js/ast/inline_array_pb.js new file mode 100644 index 0000000..6b2e655 --- /dev/null +++ b/dist/js/ast/inline_array_pb.js @@ -0,0 +1,450 @@ +// source: ast/inline_array.proto +/** + * @fileoverview + * @enhanceable + * @suppress {messageConventions} JS Compiler reports an error if a variable or + * field starts with 'MSG_' and isn't a translatable message. + * @public + */ +// GENERATED CODE -- DO NOT EDIT! + +var jspb = require('google-protobuf'); +var goog = jspb; +var global = Function('return this')(); + +var ast_types_pb = require('../ast/types_pb.js'); +goog.object.extend(proto, ast_types_pb); +var ast_src_pb = require('../ast/src_pb.js'); +goog.object.extend(proto, ast_src_pb); +var ast_type_name_pb = require('../ast/type_name_pb.js'); +goog.object.extend(proto, ast_type_name_pb); +var xds_type_v3_typed_struct_pb = require('../xds/type/v3/typed_struct_pb.js'); +goog.object.extend(proto, xds_type_v3_typed_struct_pb); +goog.exportSymbol('proto.unpack.v1.ast.InlineArray', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.unpack.v1.ast.InlineArray = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.unpack.v1.ast.InlineArray.repeatedFields_, null); +}; +goog.inherits(proto.unpack.v1.ast.InlineArray, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.unpack.v1.ast.InlineArray.displayName = 'proto.unpack.v1.ast.InlineArray'; +} + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.unpack.v1.ast.InlineArray.repeatedFields_ = [5,6]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.unpack.v1.ast.InlineArray.prototype.toObject = function(opt_includeInstance) { + return proto.unpack.v1.ast.InlineArray.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.unpack.v1.ast.InlineArray} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.unpack.v1.ast.InlineArray.toObject = function(includeInstance, msg) { + var f, obj = { + id: jspb.Message.getFieldWithDefault(msg, 1, 0), + nodeType: jspb.Message.getFieldWithDefault(msg, 2, 0), + src: (f = msg.getSrc()) && ast_src_pb.Src.toObject(includeInstance, f), + isEmpty: jspb.Message.getBooleanFieldWithDefault(msg, 4, false), + expressionsList: jspb.Message.toObjectList(msg.getExpressionsList(), + xds_type_v3_typed_struct_pb.TypedStruct.toObject, includeInstance), + typeDescriptionsList: jspb.Message.toObjectList(msg.getTypeDescriptionsList(), + ast_type_name_pb.TypeDescription.toObject, includeInstance), + typeDescription: (f = msg.getTypeDescription()) && ast_type_name_pb.TypeDescription.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.unpack.v1.ast.InlineArray} + */ +proto.unpack.v1.ast.InlineArray.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.unpack.v1.ast.InlineArray; + return proto.unpack.v1.ast.InlineArray.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.unpack.v1.ast.InlineArray} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.unpack.v1.ast.InlineArray} + */ +proto.unpack.v1.ast.InlineArray.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {number} */ (reader.readInt64()); + msg.setId(value); + break; + case 2: + var value = /** @type {!proto.unpack.v1.ast.NodeType} */ (reader.readEnum()); + msg.setNodeType(value); + break; + case 3: + var value = new ast_src_pb.Src; + reader.readMessage(value,ast_src_pb.Src.deserializeBinaryFromReader); + msg.setSrc(value); + break; + case 4: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setIsEmpty(value); + break; + case 5: + var value = new xds_type_v3_typed_struct_pb.TypedStruct; + reader.readMessage(value,xds_type_v3_typed_struct_pb.TypedStruct.deserializeBinaryFromReader); + msg.addExpressions(value); + break; + case 6: + var value = new ast_type_name_pb.TypeDescription; + reader.readMessage(value,ast_type_name_pb.TypeDescription.deserializeBinaryFromReader); + msg.addTypeDescriptions(value); + break; + case 7: + var value = new ast_type_name_pb.TypeDescription; + reader.readMessage(value,ast_type_name_pb.TypeDescription.deserializeBinaryFromReader); + msg.setTypeDescription(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.unpack.v1.ast.InlineArray.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.unpack.v1.ast.InlineArray.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.unpack.v1.ast.InlineArray} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.unpack.v1.ast.InlineArray.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getId(); + if (f !== 0) { + writer.writeInt64( + 1, + f + ); + } + f = message.getNodeType(); + if (f !== 0.0) { + writer.writeEnum( + 2, + f + ); + } + f = message.getSrc(); + if (f != null) { + writer.writeMessage( + 3, + f, + ast_src_pb.Src.serializeBinaryToWriter + ); + } + f = message.getIsEmpty(); + if (f) { + writer.writeBool( + 4, + f + ); + } + f = message.getExpressionsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 5, + f, + xds_type_v3_typed_struct_pb.TypedStruct.serializeBinaryToWriter + ); + } + f = message.getTypeDescriptionsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 6, + f, + ast_type_name_pb.TypeDescription.serializeBinaryToWriter + ); + } + f = message.getTypeDescription(); + if (f != null) { + writer.writeMessage( + 7, + f, + ast_type_name_pb.TypeDescription.serializeBinaryToWriter + ); + } +}; + + +/** + * optional int64 id = 1; + * @return {number} + */ +proto.unpack.v1.ast.InlineArray.prototype.getId = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.unpack.v1.ast.InlineArray} returns this + */ +proto.unpack.v1.ast.InlineArray.prototype.setId = function(value) { + return jspb.Message.setProto3IntField(this, 1, value); +}; + + +/** + * optional NodeType node_type = 2; + * @return {!proto.unpack.v1.ast.NodeType} + */ +proto.unpack.v1.ast.InlineArray.prototype.getNodeType = function() { + return /** @type {!proto.unpack.v1.ast.NodeType} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {!proto.unpack.v1.ast.NodeType} value + * @return {!proto.unpack.v1.ast.InlineArray} returns this + */ +proto.unpack.v1.ast.InlineArray.prototype.setNodeType = function(value) { + return jspb.Message.setProto3EnumField(this, 2, value); +}; + + +/** + * optional Src src = 3; + * @return {?proto.unpack.v1.ast.Src} + */ +proto.unpack.v1.ast.InlineArray.prototype.getSrc = function() { + return /** @type{?proto.unpack.v1.ast.Src} */ ( + jspb.Message.getWrapperField(this, ast_src_pb.Src, 3)); +}; + + +/** + * @param {?proto.unpack.v1.ast.Src|undefined} value + * @return {!proto.unpack.v1.ast.InlineArray} returns this +*/ +proto.unpack.v1.ast.InlineArray.prototype.setSrc = function(value) { + return jspb.Message.setWrapperField(this, 3, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.unpack.v1.ast.InlineArray} returns this + */ +proto.unpack.v1.ast.InlineArray.prototype.clearSrc = function() { + return this.setSrc(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.unpack.v1.ast.InlineArray.prototype.hasSrc = function() { + return jspb.Message.getField(this, 3) != null; +}; + + +/** + * optional bool is_empty = 4; + * @return {boolean} + */ +proto.unpack.v1.ast.InlineArray.prototype.getIsEmpty = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.unpack.v1.ast.InlineArray} returns this + */ +proto.unpack.v1.ast.InlineArray.prototype.setIsEmpty = function(value) { + return jspb.Message.setProto3BooleanField(this, 4, value); +}; + + +/** + * repeated xds.type.v3.TypedStruct expressions = 5; + * @return {!Array} + */ +proto.unpack.v1.ast.InlineArray.prototype.getExpressionsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, xds_type_v3_typed_struct_pb.TypedStruct, 5)); +}; + + +/** + * @param {!Array} value + * @return {!proto.unpack.v1.ast.InlineArray} returns this +*/ +proto.unpack.v1.ast.InlineArray.prototype.setExpressionsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 5, value); +}; + + +/** + * @param {!proto.xds.type.v3.TypedStruct=} opt_value + * @param {number=} opt_index + * @return {!proto.xds.type.v3.TypedStruct} + */ +proto.unpack.v1.ast.InlineArray.prototype.addExpressions = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.xds.type.v3.TypedStruct, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.unpack.v1.ast.InlineArray} returns this + */ +proto.unpack.v1.ast.InlineArray.prototype.clearExpressionsList = function() { + return this.setExpressionsList([]); +}; + + +/** + * repeated TypeDescription type_descriptions = 6; + * @return {!Array} + */ +proto.unpack.v1.ast.InlineArray.prototype.getTypeDescriptionsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, ast_type_name_pb.TypeDescription, 6)); +}; + + +/** + * @param {!Array} value + * @return {!proto.unpack.v1.ast.InlineArray} returns this +*/ +proto.unpack.v1.ast.InlineArray.prototype.setTypeDescriptionsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 6, value); +}; + + +/** + * @param {!proto.unpack.v1.ast.TypeDescription=} opt_value + * @param {number=} opt_index + * @return {!proto.unpack.v1.ast.TypeDescription} + */ +proto.unpack.v1.ast.InlineArray.prototype.addTypeDescriptions = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.unpack.v1.ast.TypeDescription, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.unpack.v1.ast.InlineArray} returns this + */ +proto.unpack.v1.ast.InlineArray.prototype.clearTypeDescriptionsList = function() { + return this.setTypeDescriptionsList([]); +}; + + +/** + * optional TypeDescription type_description = 7; + * @return {?proto.unpack.v1.ast.TypeDescription} + */ +proto.unpack.v1.ast.InlineArray.prototype.getTypeDescription = function() { + return /** @type{?proto.unpack.v1.ast.TypeDescription} */ ( + jspb.Message.getWrapperField(this, ast_type_name_pb.TypeDescription, 7)); +}; + + +/** + * @param {?proto.unpack.v1.ast.TypeDescription|undefined} value + * @return {!proto.unpack.v1.ast.InlineArray} returns this +*/ +proto.unpack.v1.ast.InlineArray.prototype.setTypeDescription = function(value) { + return jspb.Message.setWrapperField(this, 7, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.unpack.v1.ast.InlineArray} returns this + */ +proto.unpack.v1.ast.InlineArray.prototype.clearTypeDescription = function() { + return this.setTypeDescription(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.unpack.v1.ast.InlineArray.prototype.hasTypeDescription = function() { + return jspb.Message.getField(this, 7) != null; +}; + + +goog.object.extend(exports, proto.unpack.v1.ast); diff --git a/dist/js/ast/types_pb.d.ts b/dist/js/ast/types_pb.d.ts index 02e6a4d..2b0fc32 100644 --- a/dist/js/ast/types_pb.d.ts +++ b/dist/js/ast/types_pb.d.ts @@ -109,6 +109,7 @@ export enum NodeType { SHIFT_OPERATION = 103, KIND_UNARY_PREFIX = 104, KIND_UNARY_SUFFIX = 105, + INLINE_ARRAY = 106, } export enum Mutability { M_DEFAULT = 0, diff --git a/dist/js/ast/types_pb.js b/dist/js/ast/types_pb.js index 21d952e..aeeafe9 100644 --- a/dist/js/ast/types_pb.js +++ b/dist/js/ast/types_pb.js @@ -126,7 +126,8 @@ proto.unpack.v1.ast.NodeType = { BIT_XOR_OPERATION: 102, SHIFT_OPERATION: 103, KIND_UNARY_PREFIX: 104, - KIND_UNARY_SUFFIX: 105 + KIND_UNARY_SUFFIX: 105, + INLINE_ARRAY: 106 }; /** diff --git a/dist/js/contracts/service_grpc_web_pb.d.ts b/dist/js/contracts/service_grpc_web_pb.d.ts deleted file mode 100644 index f5380bf..0000000 --- a/dist/js/contracts/service_grpc_web_pb.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import * as grpcWeb from 'grpc-web'; - -import * as contracts_service_parameters_pb from '../contracts/service_parameters_pb'; - - -export class ServiceClient { - constructor (hostname: string, - credentials?: null | { [index: string]: string; }, - options?: null | { [index: string]: any; }); - - get( - request: contracts_service_parameters_pb.Request, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.RpcError, - response: contracts_service_parameters_pb.Response) => void - ): grpcWeb.ClientReadableStream; - - unpack( - request: contracts_service_parameters_pb.Request, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.RpcError, - response: contracts_service_parameters_pb.Response) => void - ): grpcWeb.ClientReadableStream; - -} - -export class ServicePromiseClient { - constructor (hostname: string, - credentials?: null | { [index: string]: string; }, - options?: null | { [index: string]: any; }); - - get( - request: contracts_service_parameters_pb.Request, - metadata?: grpcWeb.Metadata - ): Promise; - - unpack( - request: contracts_service_parameters_pb.Request, - metadata?: grpcWeb.Metadata - ): Promise; - -} - diff --git a/dist/js/contracts/service_grpc_web_pb.js b/dist/js/contracts/service_grpc_web_pb.js deleted file mode 100644 index 7da342f..0000000 --- a/dist/js/contracts/service_grpc_web_pb.js +++ /dev/null @@ -1,206 +0,0 @@ -/** - * @fileoverview gRPC-Web generated client stub for unpack.v1.contracts - * @enhanceable - * @public - */ - -// Code generated by protoc-gen-grpc-web. DO NOT EDIT. -// versions: -// protoc-gen-grpc-web v1.4.1 -// protoc v3.12.4 -// source: contracts/service.proto - - -/* eslint-disable */ -// @ts-nocheck - - - -const grpc = {}; -grpc.web = require('grpc-web'); - - -var contracts_service_parameters_pb = require('../contracts/service_parameters_pb.js') - -var google_api_annotations_pb = require('../google/api/annotations_pb.js') -const proto = {}; -proto.unpack = {}; -proto.unpack.v1 = {}; -proto.unpack.v1.contracts = require('./service_pb.js'); - -/** - * @param {string} hostname - * @param {?Object} credentials - * @param {?grpc.web.ClientOptions} options - * @constructor - * @struct - * @final - */ -proto.unpack.v1.contracts.ServiceClient = - function(hostname, credentials, options) { - if (!options) options = {}; - options.format = 'text'; - - /** - * @private @const {!grpc.web.GrpcWebClientBase} The client - */ - this.client_ = new grpc.web.GrpcWebClientBase(options); - - /** - * @private @const {string} The hostname - */ - this.hostname_ = hostname.replace(/\/+$/, ''); - -}; - - -/** - * @param {string} hostname - * @param {?Object} credentials - * @param {?grpc.web.ClientOptions} options - * @constructor - * @struct - * @final - */ -proto.unpack.v1.contracts.ServicePromiseClient = - function(hostname, credentials, options) { - if (!options) options = {}; - options.format = 'text'; - - /** - * @private @const {!grpc.web.GrpcWebClientBase} The client - */ - this.client_ = new grpc.web.GrpcWebClientBase(options); - - /** - * @private @const {string} The hostname - */ - this.hostname_ = hostname.replace(/\/+$/, ''); - -}; - - -/** - * @const - * @type {!grpc.web.MethodDescriptor< - * !proto.unpack.v1.contracts.Request, - * !proto.unpack.v1.contracts.Response>} - */ -const methodDescriptor_Service_Get = new grpc.web.MethodDescriptor( - '/unpack.v1.contracts.Service/Get', - grpc.web.MethodType.UNARY, - contracts_service_parameters_pb.Request, - contracts_service_parameters_pb.Response, - /** - * @param {!proto.unpack.v1.contracts.Request} request - * @return {!Uint8Array} - */ - function(request) { - return request.serializeBinary(); - }, - contracts_service_parameters_pb.Response.deserializeBinary -); - - -/** - * @param {!proto.unpack.v1.contracts.Request} request The - * request proto - * @param {?Object} metadata User defined - * call metadata - * @param {function(?grpc.web.RpcError, ?proto.unpack.v1.contracts.Response)} - * callback The callback function(error, response) - * @return {!grpc.web.ClientReadableStream|undefined} - * The XHR Node Readable Stream - */ -proto.unpack.v1.contracts.ServiceClient.prototype.get = - function(request, metadata, callback) { - return this.client_.rpcCall(this.hostname_ + - '/unpack.v1.contracts.Service/Get', - request, - metadata || {}, - methodDescriptor_Service_Get, - callback); -}; - - -/** - * @param {!proto.unpack.v1.contracts.Request} request The - * request proto - * @param {?Object=} metadata User defined - * call metadata - * @return {!Promise} - * Promise that resolves to the response - */ -proto.unpack.v1.contracts.ServicePromiseClient.prototype.get = - function(request, metadata) { - return this.client_.unaryCall(this.hostname_ + - '/unpack.v1.contracts.Service/Get', - request, - metadata || {}, - methodDescriptor_Service_Get); -}; - - -/** - * @const - * @type {!grpc.web.MethodDescriptor< - * !proto.unpack.v1.contracts.Request, - * !proto.unpack.v1.contracts.Response>} - */ -const methodDescriptor_Service_Unpack = new grpc.web.MethodDescriptor( - '/unpack.v1.contracts.Service/Unpack', - grpc.web.MethodType.UNARY, - contracts_service_parameters_pb.Request, - contracts_service_parameters_pb.Response, - /** - * @param {!proto.unpack.v1.contracts.Request} request - * @return {!Uint8Array} - */ - function(request) { - return request.serializeBinary(); - }, - contracts_service_parameters_pb.Response.deserializeBinary -); - - -/** - * @param {!proto.unpack.v1.contracts.Request} request The - * request proto - * @param {?Object} metadata User defined - * call metadata - * @param {function(?grpc.web.RpcError, ?proto.unpack.v1.contracts.Response)} - * callback The callback function(error, response) - * @return {!grpc.web.ClientReadableStream|undefined} - * The XHR Node Readable Stream - */ -proto.unpack.v1.contracts.ServiceClient.prototype.unpack = - function(request, metadata, callback) { - return this.client_.rpcCall(this.hostname_ + - '/unpack.v1.contracts.Service/Unpack', - request, - metadata || {}, - methodDescriptor_Service_Unpack, - callback); -}; - - -/** - * @param {!proto.unpack.v1.contracts.Request} request The - * request proto - * @param {?Object=} metadata User defined - * call metadata - * @return {!Promise} - * Promise that resolves to the response - */ -proto.unpack.v1.contracts.ServicePromiseClient.prototype.unpack = - function(request, metadata) { - return this.client_.unaryCall(this.hostname_ + - '/unpack.v1.contracts.Service/Unpack', - request, - metadata || {}, - methodDescriptor_Service_Unpack); -}; - - -module.exports = proto.unpack.v1.contracts; - diff --git a/dist/js/contracts/service_parameters_pb.d.ts b/dist/js/contracts/service_parameters_pb.d.ts deleted file mode 100644 index 2429f31..0000000 --- a/dist/js/contracts/service_parameters_pb.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import * as jspb from 'google-protobuf' - -import * as common_status_pb from '../common/status_pb'; -import * as contracts_contract_pb from '../contracts/contract_pb'; - - -export class Request extends jspb.Message { - getNetworkId(): number; - setNetworkId(value: number): Request; - - getAddressesList(): Array; - setAddressesList(value: Array): Request; - clearAddressesList(): Request; - addAddresses(value: string, index?: number): Request; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): Request.AsObject; - static toObject(includeInstance: boolean, msg: Request): Request.AsObject; - static serializeBinaryToWriter(message: Request, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): Request; - static deserializeBinaryFromReader(message: Request, reader: jspb.BinaryReader): Request; -} - -export namespace Request { - export type AsObject = { - networkId: number, - addressesList: Array, - } -} - -export class Response extends jspb.Message { - getStatus(): common_status_pb.Status | undefined; - setStatus(value?: common_status_pb.Status): Response; - hasStatus(): boolean; - clearStatus(): Response; - - getNetworkId(): number; - setNetworkId(value: number): Response; - - getContractsList(): Array; - setContractsList(value: Array): Response; - clearContractsList(): Response; - addContracts(value?: contracts_contract_pb.Contract, index?: number): contracts_contract_pb.Contract; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): Response.AsObject; - static toObject(includeInstance: boolean, msg: Response): Response.AsObject; - static serializeBinaryToWriter(message: Response, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): Response; - static deserializeBinaryFromReader(message: Response, reader: jspb.BinaryReader): Response; -} - -export namespace Response { - export type AsObject = { - status?: common_status_pb.Status.AsObject, - networkId: number, - contractsList: Array, - } -} - diff --git a/dist/js/contracts/service_parameters_pb.js b/dist/js/contracts/service_parameters_pb.js deleted file mode 100644 index cd98c36..0000000 --- a/dist/js/contracts/service_parameters_pb.js +++ /dev/null @@ -1,490 +0,0 @@ -// source: contracts/service_parameters.proto -/** - * @fileoverview - * @enhanceable - * @suppress {messageConventions} JS Compiler reports an error if a variable or - * field starts with 'MSG_' and isn't a translatable message. - * @public - */ -// GENERATED CODE -- DO NOT EDIT! - -var jspb = require('google-protobuf'); -var goog = jspb; -var global = Function('return this')(); - -var common_status_pb = require('../common/status_pb.js'); -goog.object.extend(proto, common_status_pb); -var contracts_contract_pb = require('../contracts/contract_pb.js'); -goog.object.extend(proto, contracts_contract_pb); -goog.exportSymbol('proto.unpack.v1.contracts.Request', null, global); -goog.exportSymbol('proto.unpack.v1.contracts.Response', null, global); -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.unpack.v1.contracts.Request = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, proto.unpack.v1.contracts.Request.repeatedFields_, null); -}; -goog.inherits(proto.unpack.v1.contracts.Request, jspb.Message); -if (goog.DEBUG && !COMPILED) { - /** - * @public - * @override - */ - proto.unpack.v1.contracts.Request.displayName = 'proto.unpack.v1.contracts.Request'; -} -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.unpack.v1.contracts.Response = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, proto.unpack.v1.contracts.Response.repeatedFields_, null); -}; -goog.inherits(proto.unpack.v1.contracts.Response, jspb.Message); -if (goog.DEBUG && !COMPILED) { - /** - * @public - * @override - */ - proto.unpack.v1.contracts.Response.displayName = 'proto.unpack.v1.contracts.Response'; -} - -/** - * List of repeated fields within this message type. - * @private {!Array} - * @const - */ -proto.unpack.v1.contracts.Request.repeatedFields_ = [2]; - - - -if (jspb.Message.GENERATE_TO_OBJECT) { -/** - * Creates an object representation of this proto. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * Optional fields that are not set will be set to undefined. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * net/proto2/compiler/js/internal/generator.cc#kKeyword. - * @param {boolean=} opt_includeInstance Deprecated. whether to include the - * JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @return {!Object} - */ -proto.unpack.v1.contracts.Request.prototype.toObject = function(opt_includeInstance) { - return proto.unpack.v1.contracts.Request.toObject(opt_includeInstance, this); -}; - - -/** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Deprecated. Whether to include - * the JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.unpack.v1.contracts.Request} msg The msg instance to transform. - * @return {!Object} - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.unpack.v1.contracts.Request.toObject = function(includeInstance, msg) { - var f, obj = { - networkId: jspb.Message.getFieldWithDefault(msg, 1, 0), - addressesList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; -}; -} - - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.unpack.v1.contracts.Request} - */ -proto.unpack.v1.contracts.Request.deserializeBinary = function(bytes) { - var reader = new jspb.BinaryReader(bytes); - var msg = new proto.unpack.v1.contracts.Request; - return proto.unpack.v1.contracts.Request.deserializeBinaryFromReader(msg, reader); -}; - - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.unpack.v1.contracts.Request} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.unpack.v1.contracts.Request} - */ -proto.unpack.v1.contracts.Request.deserializeBinaryFromReader = function(msg, reader) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - var field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {number} */ (reader.readInt64()); - msg.setNetworkId(value); - break; - case 2: - var value = /** @type {string} */ (reader.readString()); - msg.addAddresses(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.unpack.v1.contracts.Request.prototype.serializeBinary = function() { - var writer = new jspb.BinaryWriter(); - proto.unpack.v1.contracts.Request.serializeBinaryToWriter(this, writer); - return writer.getResultBuffer(); -}; - - -/** - * Serializes the given message to binary data (in protobuf wire - * format), writing to the given BinaryWriter. - * @param {!proto.unpack.v1.contracts.Request} message - * @param {!jspb.BinaryWriter} writer - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.unpack.v1.contracts.Request.serializeBinaryToWriter = function(message, writer) { - var f = undefined; - f = message.getNetworkId(); - if (f !== 0) { - writer.writeInt64( - 1, - f - ); - } - f = message.getAddressesList(); - if (f.length > 0) { - writer.writeRepeatedString( - 2, - f - ); - } -}; - - -/** - * optional int64 network_id = 1; - * @return {number} - */ -proto.unpack.v1.contracts.Request.prototype.getNetworkId = function() { - return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); -}; - - -/** - * @param {number} value - * @return {!proto.unpack.v1.contracts.Request} returns this - */ -proto.unpack.v1.contracts.Request.prototype.setNetworkId = function(value) { - return jspb.Message.setProto3IntField(this, 1, value); -}; - - -/** - * repeated string addresses = 2; - * @return {!Array} - */ -proto.unpack.v1.contracts.Request.prototype.getAddressesList = function() { - return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 2)); -}; - - -/** - * @param {!Array} value - * @return {!proto.unpack.v1.contracts.Request} returns this - */ -proto.unpack.v1.contracts.Request.prototype.setAddressesList = function(value) { - return jspb.Message.setField(this, 2, value || []); -}; - - -/** - * @param {string} value - * @param {number=} opt_index - * @return {!proto.unpack.v1.contracts.Request} returns this - */ -proto.unpack.v1.contracts.Request.prototype.addAddresses = function(value, opt_index) { - return jspb.Message.addToRepeatedField(this, 2, value, opt_index); -}; - - -/** - * Clears the list making it empty but non-null. - * @return {!proto.unpack.v1.contracts.Request} returns this - */ -proto.unpack.v1.contracts.Request.prototype.clearAddressesList = function() { - return this.setAddressesList([]); -}; - - - -/** - * List of repeated fields within this message type. - * @private {!Array} - * @const - */ -proto.unpack.v1.contracts.Response.repeatedFields_ = [4]; - - - -if (jspb.Message.GENERATE_TO_OBJECT) { -/** - * Creates an object representation of this proto. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * Optional fields that are not set will be set to undefined. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * net/proto2/compiler/js/internal/generator.cc#kKeyword. - * @param {boolean=} opt_includeInstance Deprecated. whether to include the - * JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @return {!Object} - */ -proto.unpack.v1.contracts.Response.prototype.toObject = function(opt_includeInstance) { - return proto.unpack.v1.contracts.Response.toObject(opt_includeInstance, this); -}; - - -/** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Deprecated. Whether to include - * the JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.unpack.v1.contracts.Response} msg The msg instance to transform. - * @return {!Object} - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.unpack.v1.contracts.Response.toObject = function(includeInstance, msg) { - var f, obj = { - status: (f = msg.getStatus()) && common_status_pb.Status.toObject(includeInstance, f), - networkId: jspb.Message.getFieldWithDefault(msg, 2, 0), - contractsList: jspb.Message.toObjectList(msg.getContractsList(), - contracts_contract_pb.Contract.toObject, includeInstance) - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; -}; -} - - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.unpack.v1.contracts.Response} - */ -proto.unpack.v1.contracts.Response.deserializeBinary = function(bytes) { - var reader = new jspb.BinaryReader(bytes); - var msg = new proto.unpack.v1.contracts.Response; - return proto.unpack.v1.contracts.Response.deserializeBinaryFromReader(msg, reader); -}; - - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.unpack.v1.contracts.Response} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.unpack.v1.contracts.Response} - */ -proto.unpack.v1.contracts.Response.deserializeBinaryFromReader = function(msg, reader) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - var field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = new common_status_pb.Status; - reader.readMessage(value,common_status_pb.Status.deserializeBinaryFromReader); - msg.setStatus(value); - break; - case 2: - var value = /** @type {number} */ (reader.readInt64()); - msg.setNetworkId(value); - break; - case 4: - var value = new contracts_contract_pb.Contract; - reader.readMessage(value,contracts_contract_pb.Contract.deserializeBinaryFromReader); - msg.addContracts(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.unpack.v1.contracts.Response.prototype.serializeBinary = function() { - var writer = new jspb.BinaryWriter(); - proto.unpack.v1.contracts.Response.serializeBinaryToWriter(this, writer); - return writer.getResultBuffer(); -}; - - -/** - * Serializes the given message to binary data (in protobuf wire - * format), writing to the given BinaryWriter. - * @param {!proto.unpack.v1.contracts.Response} message - * @param {!jspb.BinaryWriter} writer - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.unpack.v1.contracts.Response.serializeBinaryToWriter = function(message, writer) { - var f = undefined; - f = message.getStatus(); - if (f != null) { - writer.writeMessage( - 1, - f, - common_status_pb.Status.serializeBinaryToWriter - ); - } - f = message.getNetworkId(); - if (f !== 0) { - writer.writeInt64( - 2, - f - ); - } - f = message.getContractsList(); - if (f.length > 0) { - writer.writeRepeatedMessage( - 4, - f, - contracts_contract_pb.Contract.serializeBinaryToWriter - ); - } -}; - - -/** - * optional unpack.v1.common.Status status = 1; - * @return {?proto.unpack.v1.common.Status} - */ -proto.unpack.v1.contracts.Response.prototype.getStatus = function() { - return /** @type{?proto.unpack.v1.common.Status} */ ( - jspb.Message.getWrapperField(this, common_status_pb.Status, 1)); -}; - - -/** - * @param {?proto.unpack.v1.common.Status|undefined} value - * @return {!proto.unpack.v1.contracts.Response} returns this -*/ -proto.unpack.v1.contracts.Response.prototype.setStatus = function(value) { - return jspb.Message.setWrapperField(this, 1, value); -}; - - -/** - * Clears the message field making it undefined. - * @return {!proto.unpack.v1.contracts.Response} returns this - */ -proto.unpack.v1.contracts.Response.prototype.clearStatus = function() { - return this.setStatus(undefined); -}; - - -/** - * Returns whether this field is set. - * @return {boolean} - */ -proto.unpack.v1.contracts.Response.prototype.hasStatus = function() { - return jspb.Message.getField(this, 1) != null; -}; - - -/** - * optional int64 network_id = 2; - * @return {number} - */ -proto.unpack.v1.contracts.Response.prototype.getNetworkId = function() { - return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); -}; - - -/** - * @param {number} value - * @return {!proto.unpack.v1.contracts.Response} returns this - */ -proto.unpack.v1.contracts.Response.prototype.setNetworkId = function(value) { - return jspb.Message.setProto3IntField(this, 2, value); -}; - - -/** - * repeated Contract contracts = 4; - * @return {!Array} - */ -proto.unpack.v1.contracts.Response.prototype.getContractsList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, contracts_contract_pb.Contract, 4)); -}; - - -/** - * @param {!Array} value - * @return {!proto.unpack.v1.contracts.Response} returns this -*/ -proto.unpack.v1.contracts.Response.prototype.setContractsList = function(value) { - return jspb.Message.setRepeatedWrapperField(this, 4, value); -}; - - -/** - * @param {!proto.unpack.v1.contracts.Contract=} opt_value - * @param {number=} opt_index - * @return {!proto.unpack.v1.contracts.Contract} - */ -proto.unpack.v1.contracts.Response.prototype.addContracts = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.unpack.v1.contracts.Contract, opt_index); -}; - - -/** - * Clears the list making it empty but non-null. - * @return {!proto.unpack.v1.contracts.Response} returns this - */ -proto.unpack.v1.contracts.Response.prototype.clearContractsList = function() { - return this.setContractsList([]); -}; - - -goog.object.extend(exports, proto.unpack.v1.contracts); diff --git a/dist/js/server/parameters_pb.d.ts b/dist/js/server/parameters_pb.d.ts new file mode 100644 index 0000000..b1511f3 --- /dev/null +++ b/dist/js/server/parameters_pb.d.ts @@ -0,0 +1,89 @@ +import * as jspb from 'google-protobuf' + + + +export class UnpackRequest extends jspb.Message { + getNetworkId(): number; + setNetworkId(value: number): UnpackRequest; + + getAddressesList(): Array; + setAddressesList(value: Array): UnpackRequest; + clearAddressesList(): UnpackRequest; + addAddresses(value: string, index?: number): UnpackRequest; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): UnpackRequest.AsObject; + static toObject(includeInstance: boolean, msg: UnpackRequest): UnpackRequest.AsObject; + static serializeBinaryToWriter(message: UnpackRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): UnpackRequest; + static deserializeBinaryFromReader(message: UnpackRequest, reader: jspb.BinaryReader): UnpackRequest; +} + +export namespace UnpackRequest { + export type AsObject = { + networkId: number, + addressesList: Array, + } +} + +export class UnpackResponse extends jspb.Message { + getStatus(): boolean; + setStatus(value: boolean): UnpackResponse; + + getNetworkId(): number; + setNetworkId(value: number): UnpackResponse; + + getContractsList(): Array; + setContractsList(value: Array): UnpackResponse; + clearContractsList(): UnpackResponse; + addContracts(value?: UnpackResponse.ContractQueueResponse, index?: number): UnpackResponse.ContractQueueResponse; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): UnpackResponse.AsObject; + static toObject(includeInstance: boolean, msg: UnpackResponse): UnpackResponse.AsObject; + static serializeBinaryToWriter(message: UnpackResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): UnpackResponse; + static deserializeBinaryFromReader(message: UnpackResponse, reader: jspb.BinaryReader): UnpackResponse; +} + +export namespace UnpackResponse { + export type AsObject = { + status: boolean, + networkId: number, + contractsList: Array, + } + + export class ContractQueueResponse extends jspb.Message { + getStatus(): UnpackResponse.ContractQueueResponse.ContractQueueStatus; + setStatus(value: UnpackResponse.ContractQueueResponse.ContractQueueStatus): ContractQueueResponse; + + getAddress(): string; + setAddress(value: string): ContractQueueResponse; + + getError(): string; + setError(value: string): ContractQueueResponse; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ContractQueueResponse.AsObject; + static toObject(includeInstance: boolean, msg: ContractQueueResponse): ContractQueueResponse.AsObject; + static serializeBinaryToWriter(message: ContractQueueResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ContractQueueResponse; + static deserializeBinaryFromReader(message: ContractQueueResponse, reader: jspb.BinaryReader): ContractQueueResponse; + } + + export namespace ContractQueueResponse { + export type AsObject = { + status: UnpackResponse.ContractQueueResponse.ContractQueueStatus, + address: string, + error: string, + } + + export enum ContractQueueStatus { + CQR_UNKNOWN = 0, + CQR_QUEUED = 1, + CQR_ERROR = 3, + } + } + +} + diff --git a/dist/js/server/parameters_pb.js b/dist/js/server/parameters_pb.js new file mode 100644 index 0000000..dd744e1 --- /dev/null +++ b/dist/js/server/parameters_pb.js @@ -0,0 +1,687 @@ +// source: server/parameters.proto +/** + * @fileoverview + * @enhanceable + * @suppress {messageConventions} JS Compiler reports an error if a variable or + * field starts with 'MSG_' and isn't a translatable message. + * @public + */ +// GENERATED CODE -- DO NOT EDIT! + +var jspb = require('google-protobuf'); +var goog = jspb; +var global = Function('return this')(); + +goog.exportSymbol('proto.unpack.v1.server.UnpackRequest', null, global); +goog.exportSymbol('proto.unpack.v1.server.UnpackResponse', null, global); +goog.exportSymbol('proto.unpack.v1.server.UnpackResponse.ContractQueueResponse', null, global); +goog.exportSymbol('proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.ContractQueueStatus', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.unpack.v1.server.UnpackRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.unpack.v1.server.UnpackRequest.repeatedFields_, null); +}; +goog.inherits(proto.unpack.v1.server.UnpackRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.unpack.v1.server.UnpackRequest.displayName = 'proto.unpack.v1.server.UnpackRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.unpack.v1.server.UnpackResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.unpack.v1.server.UnpackResponse.repeatedFields_, null); +}; +goog.inherits(proto.unpack.v1.server.UnpackResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.unpack.v1.server.UnpackResponse.displayName = 'proto.unpack.v1.server.UnpackResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.unpack.v1.server.UnpackResponse.ContractQueueResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.displayName = 'proto.unpack.v1.server.UnpackResponse.ContractQueueResponse'; +} + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.unpack.v1.server.UnpackRequest.repeatedFields_ = [2]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.unpack.v1.server.UnpackRequest.prototype.toObject = function(opt_includeInstance) { + return proto.unpack.v1.server.UnpackRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.unpack.v1.server.UnpackRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.unpack.v1.server.UnpackRequest.toObject = function(includeInstance, msg) { + var f, obj = { + networkId: jspb.Message.getFieldWithDefault(msg, 1, 0), + addressesList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.unpack.v1.server.UnpackRequest} + */ +proto.unpack.v1.server.UnpackRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.unpack.v1.server.UnpackRequest; + return proto.unpack.v1.server.UnpackRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.unpack.v1.server.UnpackRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.unpack.v1.server.UnpackRequest} + */ +proto.unpack.v1.server.UnpackRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {number} */ (reader.readInt64()); + msg.setNetworkId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.addAddresses(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.unpack.v1.server.UnpackRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.unpack.v1.server.UnpackRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.unpack.v1.server.UnpackRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.unpack.v1.server.UnpackRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getNetworkId(); + if (f !== 0) { + writer.writeInt64( + 1, + f + ); + } + f = message.getAddressesList(); + if (f.length > 0) { + writer.writeRepeatedString( + 2, + f + ); + } +}; + + +/** + * optional int64 network_id = 1; + * @return {number} + */ +proto.unpack.v1.server.UnpackRequest.prototype.getNetworkId = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.unpack.v1.server.UnpackRequest} returns this + */ +proto.unpack.v1.server.UnpackRequest.prototype.setNetworkId = function(value) { + return jspb.Message.setProto3IntField(this, 1, value); +}; + + +/** + * repeated string addresses = 2; + * @return {!Array} + */ +proto.unpack.v1.server.UnpackRequest.prototype.getAddressesList = function() { + return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 2)); +}; + + +/** + * @param {!Array} value + * @return {!proto.unpack.v1.server.UnpackRequest} returns this + */ +proto.unpack.v1.server.UnpackRequest.prototype.setAddressesList = function(value) { + return jspb.Message.setField(this, 2, value || []); +}; + + +/** + * @param {string} value + * @param {number=} opt_index + * @return {!proto.unpack.v1.server.UnpackRequest} returns this + */ +proto.unpack.v1.server.UnpackRequest.prototype.addAddresses = function(value, opt_index) { + return jspb.Message.addToRepeatedField(this, 2, value, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.unpack.v1.server.UnpackRequest} returns this + */ +proto.unpack.v1.server.UnpackRequest.prototype.clearAddressesList = function() { + return this.setAddressesList([]); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.unpack.v1.server.UnpackResponse.repeatedFields_ = [3]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.unpack.v1.server.UnpackResponse.prototype.toObject = function(opt_includeInstance) { + return proto.unpack.v1.server.UnpackResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.unpack.v1.server.UnpackResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.unpack.v1.server.UnpackResponse.toObject = function(includeInstance, msg) { + var f, obj = { + status: jspb.Message.getBooleanFieldWithDefault(msg, 1, false), + networkId: jspb.Message.getFieldWithDefault(msg, 2, 0), + contractsList: jspb.Message.toObjectList(msg.getContractsList(), + proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.unpack.v1.server.UnpackResponse} + */ +proto.unpack.v1.server.UnpackResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.unpack.v1.server.UnpackResponse; + return proto.unpack.v1.server.UnpackResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.unpack.v1.server.UnpackResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.unpack.v1.server.UnpackResponse} + */ +proto.unpack.v1.server.UnpackResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setStatus(value); + break; + case 2: + var value = /** @type {number} */ (reader.readInt64()); + msg.setNetworkId(value); + break; + case 3: + var value = new proto.unpack.v1.server.UnpackResponse.ContractQueueResponse; + reader.readMessage(value,proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.deserializeBinaryFromReader); + msg.addContracts(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.unpack.v1.server.UnpackResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.unpack.v1.server.UnpackResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.unpack.v1.server.UnpackResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.unpack.v1.server.UnpackResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getStatus(); + if (f) { + writer.writeBool( + 1, + f + ); + } + f = message.getNetworkId(); + if (f !== 0) { + writer.writeInt64( + 2, + f + ); + } + f = message.getContractsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 3, + f, + proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.serializeBinaryToWriter + ); + } +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.prototype.toObject = function(opt_includeInstance) { + return proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.toObject = function(includeInstance, msg) { + var f, obj = { + status: jspb.Message.getFieldWithDefault(msg, 1, 0), + address: jspb.Message.getFieldWithDefault(msg, 2, ""), + error: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse} + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.unpack.v1.server.UnpackResponse.ContractQueueResponse; + return proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse} + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.ContractQueueStatus} */ (reader.readEnum()); + msg.setStatus(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setAddress(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setError(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getStatus(); + if (f !== 0.0) { + writer.writeEnum( + 1, + f + ); + } + f = message.getAddress(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getError(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * @enum {number} + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.ContractQueueStatus = { + CQR_UNKNOWN: 0, + CQR_QUEUED: 1, + CQR_ERROR: 3 +}; + +/** + * optional ContractQueueStatus status = 1; + * @return {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.ContractQueueStatus} + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.prototype.getStatus = function() { + return /** @type {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.ContractQueueStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.ContractQueueStatus} value + * @return {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse} returns this + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.prototype.setStatus = function(value) { + return jspb.Message.setProto3EnumField(this, 1, value); +}; + + +/** + * optional string address = 2; + * @return {string} + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.prototype.getAddress = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse} returns this + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.prototype.setAddress = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string error = 3; + * @return {string} + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.prototype.getError = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse} returns this + */ +proto.unpack.v1.server.UnpackResponse.ContractQueueResponse.prototype.setError = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional bool status = 1; + * @return {boolean} + */ +proto.unpack.v1.server.UnpackResponse.prototype.getStatus = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.unpack.v1.server.UnpackResponse} returns this + */ +proto.unpack.v1.server.UnpackResponse.prototype.setStatus = function(value) { + return jspb.Message.setProto3BooleanField(this, 1, value); +}; + + +/** + * optional int64 network_id = 2; + * @return {number} + */ +proto.unpack.v1.server.UnpackResponse.prototype.getNetworkId = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.unpack.v1.server.UnpackResponse} returns this + */ +proto.unpack.v1.server.UnpackResponse.prototype.setNetworkId = function(value) { + return jspb.Message.setProto3IntField(this, 2, value); +}; + + +/** + * repeated ContractQueueResponse contracts = 3; + * @return {!Array} + */ +proto.unpack.v1.server.UnpackResponse.prototype.getContractsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.unpack.v1.server.UnpackResponse.ContractQueueResponse, 3)); +}; + + +/** + * @param {!Array} value + * @return {!proto.unpack.v1.server.UnpackResponse} returns this +*/ +proto.unpack.v1.server.UnpackResponse.prototype.setContractsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 3, value); +}; + + +/** + * @param {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse=} opt_value + * @param {number=} opt_index + * @return {!proto.unpack.v1.server.UnpackResponse.ContractQueueResponse} + */ +proto.unpack.v1.server.UnpackResponse.prototype.addContracts = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.unpack.v1.server.UnpackResponse.ContractQueueResponse, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.unpack.v1.server.UnpackResponse} returns this + */ +proto.unpack.v1.server.UnpackResponse.prototype.clearContractsList = function() { + return this.setContractsList([]); +}; + + +goog.object.extend(exports, proto.unpack.v1.server); diff --git a/dist/js/server/server_grpc_web_pb.d.ts b/dist/js/server/server_grpc_web_pb.d.ts new file mode 100644 index 0000000..2088fd9 --- /dev/null +++ b/dist/js/server/server_grpc_web_pb.d.ts @@ -0,0 +1,31 @@ +import * as grpcWeb from 'grpc-web'; + +import * as server_parameters_pb from '../server/parameters_pb'; + + +export class UnpackClient { + constructor (hostname: string, + credentials?: null | { [index: string]: string; }, + options?: null | { [index: string]: any; }); + + unpack( + request: server_parameters_pb.UnpackRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.RpcError, + response: server_parameters_pb.UnpackResponse) => void + ): grpcWeb.ClientReadableStream; + +} + +export class UnpackPromiseClient { + constructor (hostname: string, + credentials?: null | { [index: string]: string; }, + options?: null | { [index: string]: any; }); + + unpack( + request: server_parameters_pb.UnpackRequest, + metadata?: grpcWeb.Metadata + ): Promise; + +} + diff --git a/dist/js/server/server_grpc_web_pb.js b/dist/js/server/server_grpc_web_pb.js new file mode 100644 index 0000000..29b35cc --- /dev/null +++ b/dist/js/server/server_grpc_web_pb.js @@ -0,0 +1,145 @@ +/** + * @fileoverview gRPC-Web generated client stub for unpack.v1.server + * @enhanceable + * @public + */ + +// Code generated by protoc-gen-grpc-web. DO NOT EDIT. +// versions: +// protoc-gen-grpc-web v1.4.1 +// protoc v3.12.4 +// source: server/server.proto + + +/* eslint-disable */ +// @ts-nocheck + + + +const grpc = {}; +grpc.web = require('grpc-web'); + + +var server_parameters_pb = require('../server/parameters_pb.js') + +var google_api_annotations_pb = require('../google/api/annotations_pb.js') +const proto = {}; +proto.unpack = {}; +proto.unpack.v1 = {}; +proto.unpack.v1.server = require('./server_pb.js'); + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.unpack.v1.server.UnpackClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.unpack.v1.server.UnpackPromiseClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.unpack.v1.server.UnpackRequest, + * !proto.unpack.v1.server.UnpackResponse>} + */ +const methodDescriptor_Unpack_Unpack = new grpc.web.MethodDescriptor( + '/unpack.v1.server.Unpack/Unpack', + grpc.web.MethodType.UNARY, + server_parameters_pb.UnpackRequest, + server_parameters_pb.UnpackResponse, + /** + * @param {!proto.unpack.v1.server.UnpackRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + server_parameters_pb.UnpackResponse.deserializeBinary +); + + +/** + * @param {!proto.unpack.v1.server.UnpackRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.unpack.v1.server.UnpackResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.unpack.v1.server.UnpackClient.prototype.unpack = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/unpack.v1.server.Unpack/Unpack', + request, + metadata || {}, + methodDescriptor_Unpack_Unpack, + callback); +}; + + +/** + * @param {!proto.unpack.v1.server.UnpackRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.unpack.v1.server.UnpackPromiseClient.prototype.unpack = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/unpack.v1.server.Unpack/Unpack', + request, + metadata || {}, + methodDescriptor_Unpack_Unpack); +}; + + +module.exports = proto.unpack.v1.server; + diff --git a/dist/js/contracts/service_pb.d.ts b/dist/js/server/server_pb.d.ts similarity index 57% rename from dist/js/contracts/service_pb.d.ts rename to dist/js/server/server_pb.d.ts index 8af9dd9..55aab1c 100644 --- a/dist/js/contracts/service_pb.d.ts +++ b/dist/js/server/server_pb.d.ts @@ -1,6 +1,6 @@ import * as jspb from 'google-protobuf' -import * as contracts_service_parameters_pb from '../contracts/service_parameters_pb'; +import * as server_parameters_pb from '../server/parameters_pb'; import * as google_api_annotations_pb from '../google/api/annotations_pb'; diff --git a/dist/js/contracts/service_pb.js b/dist/js/server/server_pb.js similarity index 71% rename from dist/js/contracts/service_pb.js rename to dist/js/server/server_pb.js index aa07bbc..a150013 100644 --- a/dist/js/contracts/service_pb.js +++ b/dist/js/server/server_pb.js @@ -1,4 +1,4 @@ -// source: contracts/service.proto +// source: server/server.proto /** * @fileoverview * @enhanceable @@ -12,7 +12,7 @@ var jspb = require('google-protobuf'); var goog = jspb; var global = Function('return this')(); -var contracts_service_parameters_pb = require('../contracts/service_parameters_pb.js'); -goog.object.extend(proto, contracts_service_parameters_pb); +var server_parameters_pb = require('../server/parameters_pb.js'); +goog.object.extend(proto, server_parameters_pb); var google_api_annotations_pb = require('../google/api/annotations_pb.js'); goog.object.extend(proto, google_api_annotations_pb); diff --git a/dist/protosets/txpull.protoset b/dist/protosets/txpull.protoset deleted file mode 100644 index 6584d311ce503a9cd2d2e69792398dadcf465302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279434 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

$h$UW+8F>_taVHh*l zH8)$wJvjA_9fom5%?p#{)Lxhrhhbb%^PpUcuAaeD8ukpHqN@kxqR{35Llj-x90XV# zh7K@9>7>m8hQwhQhY7ShL0KGzPEZzyVcf3Q8@KBzSmEC6dMeZ)k``n3>AA$N=PWjy zDxaPUQhv9=R>5|MYTfC)F*0$gx(`}Q6{o7(zz23<*P~{GD9nCtI_mLkyx(LpL!2Uw zXR6ttfSI=$u{5BOQO7juX+YzEv1Llyu{}oDKmpbE7+nJ;w7{wY|oci4v;qHMUF{%|4gai?+;t#@>gY zP;Fm}&FV!xexJ+g1zYBRvkih^H@dvv7`RbFBm3K#JDdwZ%jW)W-4rOHk^N><1jxnS z7^R;!FE*o*$TdPcXVk8iO}vOkq9ae(H_=G+6ap8Ztp?0;b|5`seriD@2V5g9=*a=s z6IwkFbSusV)zHX+8Z<#$J!#&`AD}nnX}SBl+QzP9^>A zR#i!32|afvGSyQ_^Pf+Lt?_K24^BkdmcW42;r0A>Rd7Ld-NoU8$HFea1?&3nI+iNa zbhA4TUOfkzdhn{fR9iaG;Kqxk*R1cx^Vu{Dv6rhnfFXp3S`XqT9>9cij*hz>JLlB1 zS3T?p;GFyab}6?9vw@+>C+@^)rCttY+p6eBF|V>t8O1z}U>Y@4?ed1I<_5#Ui27+p zY@Ax0zInL4W!rZN53(YO!h>3bS^?~gN$~lmh1)xk1f(mIwx}YK^NgX(YL?A7R1wK} z#-WNpti1h}RHwr*lYnBNTjpJPMBQ+BHe9# zOt?}O)vQZVFPOD1MU+sj+xVE|g4rJ9V?qJdY-UisZq{Z7MG4h78^-R@LG*Afgw`#i4kGJq5n#ZO%QTD~-EOkag4~dZSeK2$lda2!lqlm|Hl#$E zn9Jq|41~9YJdHa$3R`XcKLmt#0Bux1y`B&_-9F(>DLb+=;Lneb?52cn*U zpQ{T{$bS|J$pk)Bb2jSP6X1DkVN0RiJr#>!f~VYP@6>3x`v%jmta%*! zX2?bRVqG+vf)*Zv!21ycEUtzm)C#;R&+>X2Bl>Q`C$-NyX{#U!F=+gbfoWE()PNX; zWo-kJ;Eo&Q!#3w_<#B6kwIU~vo5#45k2sgGavU3?A{@uLglWoXcP?S!IQDCI84&ZB zkq8Nm?=adpWM7=p4tKaEJm!!Z7w{Xt-QfaO@S+!K6`)|l@+1h*iL?Sxh=t{S!yxK4 z@!tJQ15y8U{~+*16HM{9t>c|Iw?x?2hQ0A33TlP1+eWsh&L<&5%GS0I8LAi3M&19R z1nwe?Q4G|bRb2AEpJ04|#z=`-0p8zfuMhhKTTzn?^DaO|_9*HJwtQAju;a6Gf*qfg z6Kv5zdV($bNMuHb4icHsp@T&6)Y}-$nRWW4oLP7HKYag; zhmT)+#}D67*h02_`$l=AA~^Wwf`3qj=F?+!Z%6Z?G1txTe)s)oev{++SHzCIhyW7%h7ZvddKYaw|9pFw4yK}#XAz?{-q#n zXJU%YBis{Q_5NZ|>gD55Km6tz<90&Mx6(Sd6>|Px34eA9ZA(LfKfi;aANDjWf3}QP zBy7iM>qyu(n!BD&$LguVpItP!@MkM3D}T18ARz)Snp^m@6OMPxpZ~{hy=G6Z@wl(i zboJHW8hrj%rlj8l0_UP!GE!RmW=0bIn;>kq<9Nr#6GWfgTv}V-C@ve}#1^Z3W27kC z_KhVKj-AFRX!4ECP0;!825Q(&7JoYDt?aDtuQ*&nye4&YzSPQXrOOq_B9 zVg-Scv~zA{RcW`is7Y3`-xjvp1FuFUo%CvGlbvNAyF#0-!O{*apI4haYh$%5}!1QoFwCnF61N`XLO+zB!Noum&;Pq>qwxI zI^w9LP6yv7C+SR}k~$sVA}8tesHE(+ z4SgUVr>fUX6);Mu)@!CpbN~B5K1@}gnJPsk`TO`dRecW3#Hs2tQzfXR{zSB4zZtVe z8}^$qql9YxMk$uN1_#`Wl)MLAj2xNnfQymiR1KJ{G6*6h-bjsAC}4(tARi@fAIL|^ z+XwRD#avnicD-vbXYe{Gp<2!e?0VN=&Is&s*WjS>_Mm`9d{`e{x`W2sgWvGALEN}u z5Lf#eaN;cDYF~3sHlrY}_9qZm`^|bP;)*JSM_lcXBd($Z;wm!hsfep6fw+p|h^qq$ z#MJ=@o#J{PNFc5b#1U8d1mY_1s&VV*6NsyP9C39pfw(%DKwKR(+dvUl2hBDR#ML9l z2Y~`;$s-Ol#MOPofrhxcj~E|>;;$YtJ_x~I9ZElI=B^2i9CD4&XnDva*Hkptq2o{4 zH?e4k-t&xE9Jucv^=K?qd(;hwYyIec-F1q;di3Ne=g9c_ZWZTnAKKa)QV?%9IYM3c zMO9c$eUru8fv*Yo}ALqrg-vt z2GfUbmC4>Cb5)KC>f2;u@v$v;H#nC^*nkgMgK5~TH;GCVW^00t`rB~H8(Ix5Q8wBd zXQOQiHtKyB(=)iN$FlC&ffSsN^Q zL*|4c3B}3Ykzk`82{zi1V51$*&I;bp>6kX*KK5!}h5K|mrcK_^>6kXU)#Y$Iq!(Sz z&Pv|U;H>YM_R`7h*&;sr4x&^3D`Fp5JCN?7~H!8*3}G zK9GMvp^hVbZK8n=6nz&|UtlN&QiKs>tg-7`;_t!71Kt6c*84l>UNT zv;b{sf`MBb@L5ZATjTen?^t)Sq>f<%o_dPz;;5(SE=~y%-6fuaty*`nHfPaYTnszL z=cy-&uBV=&yEy7eqU)(A<|3x82=%ntAt{h|x-^fXySOxuc(E&ivFvhSNs4S;35;b| z9AlYvs7DfA4__qF_3%X!-K;}BLP+a2=|2FtM73^*dZdunZPI_>H&p93=|2FSBw*3z zR3}Kj$2r4^xa?`SKuRJmdq%9&jfl&hGfx{;5{S!Q*9bxKy{-}BFMHcnKm-~Sjr0yH z(jFx=()*Nc1o+E7myMVB%Ra{u35)MDiiqMb`-W{cUc~eEJ03;+WxuP&)FAzlHD3~c z+5axRnY|$Z@OZ#6Go}U^FwqV83DpK1T8*he2KGfxrv0Pcp-7_0v$iv?cDK0Ae+|It z^K~5fJ7ZYJS%2sBdAzn^X$AKoO*qChHj#7a>WE{}C zo>Rf%OU0?+@TDN99qD8qTkDGu&*BhnuNUi>covg+Y%MHRfjSnJDnK1~&;_UygQb3F zmyuyNR_5iZpa+cAQJK|APfA?s3bNHAaQ=%;5Nu61YXsYRIKBk!*g|&o=_9PLy9J^z zA?$9U-EJ+?x-cM~ahJYtbFG-R<4v{VqPP8hzs{7 z&z^C7WD}Ben+U%5AUU_+tK^))G`5c3S?JwTa_-nhBb!Ukol<*qqFxu)*(H^>azJ#f zC$kRjKnVZ$4BM+UOIN}O(v>iRbU87e45TY=1j#1k@oYjK&nD#YY+N4ic2mNbr*1cs zWFXxp`Jcu-b-O8nJl^9>E(}_=9tud{sMh05E|kZ6oXG|9c(0TGDS`JoF`g25uM1wH z1m5d-DkShe2Uw@f-RG)N=I(RSKV|N|Qx>8QnY-V~y-devQw?g&Q@_(}81vL`((y^m z(?I$e!){x#90N|?rvyIWlm<%R15Rn61U_))Jx0WV1ir^94Q*&-k86bT_#US;P#)jo zlm^PpXr!-_xZO|zV8B`l| zN<#;ur7g_21J#DySXM+=1Ob`I#JE0Aw&t)Y#Kt8P%WN@ z@Kc?7b=)<>+h=+2{LZwFx+e9lzz)CP7`9otVjQ2Yku4H(#I~VLR*u+0@JPrJTNur1 zJ<+>_18&6#syxv1C zD5ff^)oevYb%A1{q8_!kUO~cm7#B*3pqa|1dmFF^Y4{bSgz?-6^Sw6s?pmvU?fJ(`#fN_h#)cc z7>N-Dd~J^dSWwX1V+>M0LwtNoVm;fB~;6qh0(mvIkPZ=#27T99}3ta zgKkP_sTee(AAX~BVMIRwEGSQ?P@+f-D{CkcW5{^h6p1ku^S0SY@}+A#lMU|HBFRYd z$!qtCLu@a4Xs1R+8%eGf#m#le9VmdCMUvlx7pA^}FmXTZw<5{!5J~=%yTeWf10We& zd2MI0f|Nd_9EiCQ_;Z>Nc;Es~@5`2&A*Tv@EQfRXeFXI{W1M{X50m&ji zF#q;xa#V&f*IU3{hpS=MXJNoE5|x=c(o$&QlQBNXB8!gRd@{>txR#kVvrr#h!IK>v zhaWd#uJ;}!XAB#=<8b@k%^7bQZ%!CCnw>gM!v-C5Y6d3quQ_hmXmJ(_@|y>9AFb&m zKHZw$YdS*kr_bn3e$(2@6k*e9ox7mdso=jU-N_|6#Cj+EKoL4LkTetJy4{7_Ff?!1-jRpNKvZWX7~ zAvI!m-s0|ENdd`FC%sTz2*I7MhLoI{eiHxhfAIeDq@Xu>WWz7;HnUTv(5|JjB4IJ zPS11J<@TiKIqPzJ!t>ni9M<$ace@L}>3QyU#%p?>yN~Mqad0owA^x1{KT{%m+$pi2 zJtip&vUQy&eHST>j*zR&%LqSoBzJa#F>}YixRnd z|MbxO_c5{>?J~BtMmW2FV5|p9!|RbRHKA@r2k(Q9_RE{3=)5N#%@~!cE)efD8|lCL z48d`l<*h@cS?vj$)gGr=83&P|P?d3Ki!>|a&K8BLOiZZyp=QmY{;3_g96-knTu`{GD&( zRgl6%IL?2$N%pjRQkUFuj_F9v&9Rg$JHFn-$`Z5@hYpTLJ4@(LY!pF4Cre-;txlGp z2-51{XcR$Ooh(5Sq}9n1DD3!p4~^(mw{^RNO;KZNcZ^dGw_}_XNZR9WYajcshuca` za=6_{<#4-^qWum>6X>Y!a5RAeNr$5e6i7N^G~w+7n$eUu$=p9mut`dnx&eV(8C8BA zqAb&(syg-n`SuR!hapaPhEwPNG7Qtq(D(rRzdgAlerFQoT-F(SskXh?WzxZ0eOw}sW?rMs3z%E?U(Py zys8Q2ya&H->o$%mdr1!UnhRUrXfi0T)w|I|_}xlei?OFy~kwPgF{Jl4OK3@hexPHWPjJld_vL>w1w&QwT=08Llbu3ZvWk^#sEKAW#id~RMqIO`%Rm?3aGWq1R8*IH~H{`-9G%F z+2=0`A397yt2XfhB~+m1 zvJIy_YA)NXX}JY8*PTGk*`Naagyv}2@u<1(IBKrP#3BG0htBsT@)z|a@)z}(SOkFK zXcx-l2Y)}D^ap`tdU=5qC z2?ccWpgUp=);MUOJNOON4i4@$%hARBOlovZ1zo82h^y9xYLB>+*@bG40JTLsH11hv zMkZS=i)x1)R5XifhfHu0FJwo_RqJLBCN-9)f^JlM)K%+7wMPvG2fv}(qXTLzPX#^M z#=|Cr76t5?!*0*?ppnCFO-}ojt2Fi+EH`8QYz@rHXd^?_Ty{E+@9%2wPWs_ z_M_Udeg!F|f`M$~ahINK0M(AWY6GZt+);%AR6D*GGMFsKo^0a@V^B^7d(g=fM!`i1 z)lL`%7bR3X@%WRbS}xl-?5gEZZP-=Iq1v#kmP55+S8XucIAZMksbCPD9C4i-M70r< zVi~`o+DNb3_fx@8w(+D%9fSf_@uXYDAvAK*(V!tTa?)H$h&R#5NpmG(D%hKCJmt>A zUQ|2fR&g(?oiaBy;6+qBHMGx+bYHgdF_UE?73{;eA9LT{hjBkXjes|{+CZ8R0$D#2jOyek_@h4o`H1gRe4k_)xZ)p69;SmQ``*ce-HPfpPc!8r}XuT04=9$jpEMQlTrF;vLXmck~X| z+CjGmKdbVuCIYoI>FDP1R#U?k3# z3Zl~KLV%cJvC|M7LVb156_oxtfJ;x zRGcestVh?&x8#?#QgK~=H?7aZ=olR-jVz9w@Kp>GJ30c^X|9@S2DW}&0+p3Spb_HtqD{Kc`^bCZRM z@tMi@O}I|co8zMi>CN%T5PEZn47n+t0x`~{_vMzN%Gx}pZDqZPC9n&&w1TuxH;P;h zGx?k&_V7eh*_gi`711qhfaRr?QdC@7Km*GgH&!Az7Um#5a2K#bV)@O~&~cPWIF2$2 z$596Q^`GJ%Lk0~Hn{gob2Pu3HGP^ubl# zbUkIxOK%i!tS)1C7`W7{UiT<(o*;NdH}?lmjXXYb>gha}spPwOtGuzi5Jq#Q=#{*E z7w_ah$p1OT{~6)`JnsHFm4DT(A5&pu9bF}3$Qoru8AH}+$r@3S-5-VTmZ?HD7))}< zBT^8zyZHB}!#3+dE@G`KaI|5^SnG<$fWo@sgvDQJGs5E9(v9NU?FZxb{*5$*LH)oT zT;KHoCP<;9SUUm)TMAmp4u&n)5r?6_(02{`iwBCrOURTI=B%6MMLvPX1i5q*Zh%Lm(v9X(H-C4ZGni)W#fT}G>Cd2A`PM*h)9E|2O`2C>Vb$f zhT$VHd@5h>0bLiS_08YJojhCD7mRJjp-2E8Jbs4&5h(z%qs{ z5bAf6@#R}-l1-X>WnAA%lZ;ceSU!ov^fdl|c6IK>zfNhAJH+%Ux#_=^CYg+_(-D8+ z5^-?6=Na_-eJf4!H)WdS&ze*WniqX%d~HWz-oJwU4F$>JexG>P_F%#933Dz>TWtz? zg$57UH?)5adQz#1S5lDQ=JxD(yiz^Q;GrS)AMC}*F@tst<=Ya^1hL~lqd3aEZperWq z7(n-jo79ZFhMSRhm^mf4l{f2;U}i2z`w#VGCR|0dGv6r`Fy<=Sah|yy7^?q)!N_Os z9?i9xXULtN<_5GHxAoH1Et1HNRcyPT9}Y(Tv^_646m8xHh~3@hd@G`GJKu^Z+|IXx zYVC=$)b1kGMB#Q3YNBu-J?6}M{||DRP&rd`t)$A?86%SfTVltS9O5}q`C!Gr;cg+% z|9L9R5I#6v-dLM2F$Yi0Awd8v-iLWH)*lH8ZY*@j53#xl``s2=m$%>H9*9`m6}WtP zTJ}^yCjDm$CW{ceTgi@w&1OuzW1Kbns%nnwkPGg;{MV7oz_(X3WGH#dOY^0bij94? zMW#ZMkZ3h&%HP=<)UaALlR1=L2s@EL1?in&{!?_X?d{&G-onZ%uT2Xw7;~H`i$#!Y zDvpb-!0djGp$e~Ioh2tzEk4*HNDK0ky&_CK)SKE!;}cH|`*tS&RU(MXx8D{(x zl1*{8YiC%eKQY5QAb%feQ84R)D)Ltw@yGnv@KOaH!fG9LFyf`n-8Eo|yBY>V_31S= z^nv<`^RA^KkxI>8S$;2$aeJ|V1}t07E?HSZ7tDZQC?#Fx4|G6!vv2GYe0k~A1dYgfadhqQJX z^shi#vk6FR)?w1<1mtz`9@3hPLt4Aj{pKf5W48k$aT>c@^`3c61leuwnHNZ_N5V1< zr}fp~Cseb(8kEp^kAy{`*CggbvPV?&7l4w5^g47OSxB!*%mt(>k+5ncL_tb+G!)MI z+La?Jz_st#88aMCT;DSqtt#S^|)AC za6K*-7F?h5lF4m+%1c^seacH(aDB>4966g%8?aT3G-o(2N@yh4Zb5;x=jO~7QGjdC zY!P6y_BP-sTWr?eW<6;DSrK5`C6j{!W`CdAA}FCb!bP}66pgjdY!O+{{RZ`n0;=sd zTSRa9+;7bKC}Al3jafe+>NzrNjRLCq%R#wCBD2=`4b`H-A;vt8YJxccTMxKHdZ zu=?!3n{2PVa*}~I8}63{tX&jC8q^rOjb(kx5{g;&n_(tq{PY9 zVxCMc@B)eA!UFSunQS1o2nW?})3&*HUABe+(N0c3V1;&dn#0hDN%k?rSXKM2X68xRO4;iUIF&_|?C9EP&GLh-x2s{l-0y%L%21Oifw){%v(Qq+rTaPkbaqouhcJZ;5&=()K^ zqe+kCurB>M#P_^De;q)FNdDJ(-FZZ-F3)sH0STCFMN+^grFjf0lkU$Qi^gEA;J{cFAjeIF*~IH|=^V?sncehF-u?kD}MY z75meNb3>6H91AkfpYq?fyfL%3^{Qk}U7JtHsoCk(^`6>}4)g z52f-}203ssg}3hA!D6B!7IUv--|XgI$G$o1d$E}M2^6CA0QSpSLj>wf48b%-17R@> zt32D%ag^|hsMUr`kY`6ogTnnHJp14__X}Re+#hs;0oB5TX20M!G&rIY19dccNdkmWym7pfcz?`L80&iETOyVqPgN1L;;?6V3r7 zi7i7>Yg{a?E3*$|v+^UubrFYZAD%@8%xE`QGH%N&uN0SO=a3YTn5zNJ8&!WTvcAGu^ZwZu zLan7!`KQCKnx3+Muj5@a!Rji-Gt{|mL;?Bx>}!aOEZ>NY`fQ5~c&)r%zMT5NnAsbP zt=H?4HoWr(=KrMJn~lAbo!9^5l!3uY|j^ zyD|;m2vXs{Oou7>!7~ln(a)u$@$%~JwWY=D>k%OPr=#=Ia&+Osco;?(RHa`4xNrf0 zLb8Uj)#5z(NF9jD>JOf+?fY z8}p@A9!o(yBG)mpk4BCGnKl5qeA%>6o+G{wWM&@ywKT}Q78TdgS^m3@4Rhw?$y>K> z;n=aGGHuH`jLOLilj9SYrYDBcSyZ^Pf|FPgt_}3(LNs?fDz2{LWyTRi%V1uFGA^!_ z@EZV~`1-9iY@U@xKnTm%)^8QpN+E!wgzn8D8+3e@Y{xL#_zMIhu0;8<>1c8~ADtbW zo}4}rMlVgyyfAfTCVFYCP#C*3GdVFGO%h zDzFwH0@&LXc9CK8OQi)&)^v$e>{iD?0V{gJ`aA};vbaGE>>|NaD;P_(T3WlYR3SM5 z5nloBZ+Yp)lG#kLbvGjdjZ|&Dv!R=RK?}*MjMR)^5&o$UyBpq5!KoQ>Yy49m_B7<> zAyZ1>Pkq?ia7-SeCH|=o`x*|*Ly%tnsSo>2^+&*A@#p_!kiJ6=M^m|9OGW1>T>yy7 z33y><<}xv%*OnGH))WOw848n+!w?yDVI-Pd=SvD4En?u1;mX&-=oL#ZUwx$xeSQ^d zfUOnjq~7Kn@{>2PclbBpiug?7@;Jni_3LF!DE3YnC{uj@MtRNjtuQe?BYn}AC=Xdt za0s!dpH%!P)UYVnm-~?vkjJKX^@b)a1)TtNlpFZA?$(7R0FyV0%T=F=jvc!+H8XMM z7(~G3WjhyDlcgU$H3xzmegEdxZr6?7|j6P3-$3=Hu)1SzIw@u!37X7wQusTv+q#e_W*>nI=?l{$5I21xX!z40 zmHX^;bTC@vj+>!wf&OCb=x_BS#U5V+@)&4Kp$&G=&OwhYVGW8}NB1PDf!VlW_0BD= zEUcE7fS{K%gbSz2w?OIOGFmQ!p2(EUZ7c!W46#rbB6jX@BDhs68>=+iR-(Bw7Fs%s zmxKsK_IRNEi^Ubd@NXlDihgKXY`ecm7C@IwM+a34E~MV_%8lDif{uI>`YDIX zdIcAcl~`>-LlNxxCV`2rTDo=>YvqY$1t;T1(ehLd@}$ha*&QRY@$FVItfW*4C7fYl z>Do1>4quPBmcm2~URxHlS|bL_6hf&Sm1GkqJ(Q!ahaL*_+U?k>KOu7_Zd>(g`th9D@I_Y16!>jm9Qu2?IoM1B3yH;D*+N$%?A85?zh) z1@647=%y9HaAt%dNI&!_aq=g~GiqiL2gK1j?C{lPY!(?Zc!>1SG$3n0iilp>*C<#? z=Jsk1BT)q|hN0dXyg!%WM$4o;EBeu{TH~WOGP+GJhK1a0XM!e};!g7bU2N1mVN_ zLloiAMdwTF`b+7E|FfX>nWLCBkU+>gN6b4%edQ=BOEQ+|NYxS_jh>0W#XdkoIuqqj z-hAxjhv{^A#*CzL^4ME>+nFeO3v#gjdrSW?|1odJx@!98Kci705gW(XAA34Fc@p%{ z?qa)fF!B6X)vOs>O=A*YVH@Lufgg%1Q;rf&vTKg(iTzMop*&2wtUFR@19+b9ZzJ_! z7tMkA-{SJfzI{`E52IoJdsF@w1nB(4OvL$eGxgZ$>32Q;#MLNz6F>Sjbb4%pp5b|KtzM*y$& zI=#)N@b-uunr-eaY}DlG(H-;R^wcGiYtawx%h`F(j^vrqN8>$t=32RYHF}eW&Yvqk zxj0>V_VRA_&P1bJqBF6XIAX_jCXDiEFn?5z;H5ISln8O=Ao>&MnJmdu)wF{L!>$uS zbOw_H+jrbV!w4BT==e^(9}|qpZaKqyCY9?_0T3O`x5O7T#La0F&=XduOSrE=xi<_) zIO5fjk&)-*?Ptaw)&HKo3ZbL=8}U9EwNQ7s@;J!N<}f704+zC2Hi}7fJ#t}*STKGZ zlRZ+z$NAs6XU@uh=bstJ{!%&<6Aq~IQuPyMjWdW@$1Ia5>9DWz&#Ou_p?Rn=z-Y=w zA{l`l2sTApd5S81Z>%n`gGLunnZ}PN#x#~`PsHKdCds=Z?OxP*Ig%(D{&%1FGf4gX zb;F;{GE`1(Lir+@Ezfc8f_>K;fv0_j@|o|0-a4Y@4~pA(q+F4aXgKp4u54%;NLsQA z7u9lp6}?nnrz|A9qaLks{CvSGz4&^_b3nBirVy^ARRyF0b28$)iYyRrEgFtiAQI1^ z8)BBML{dXkX7pkUS>W>6%=ioSq=D$eQJzvt9_#VK(t&*R7U)=XH8Igg{EU(`SyE=_ z?86d9>go&8ngRQly$_R!NK{vkUA1%odK3bw^>lMyouCd#YV7Uu97iFee99AM2mI4p3albO zt*I>0q`h8-(oWth*OfggS7=FK3YC0uR(>7 zIoBz;>ODiwm2}li!ALam*G*gXx~id(ci@F}M&^&4GAZ92R(K6<@jp~2ylS^8t2K%$ z8@hMh*o?+<)~cg#dL?>6oL6ECShY4uae?Q-N$^y6Ge%n3f*x$D=qB}C-+LT%!^Cjb zy`rqMd!yv1)oRSihRi_G%8gRqiVm2R7;_XFa`0e8AG2<3l_6CN!O?hZB)U*4UUU4( zP=g}~dEG!lEzk{TF^}MAp~uVaB};+~Ym=!qza14td>%f83e%F1hJdNAUx!-_+;_dS zSYBHyVLG`ThNI`15Q9EBo?DSEL@rOL?P8FGuMWESDq6)`H{AjG(#B!L4{=-61ADgI!)Bmk<{dgil%Kxr&Vgf)|D+Q znL}h=sw6Zs?<4RTS@p)WB>k`=j}!SYe<1&k{MD#z-uGL9RmL<$0g9UQD3qdW-eI=Y zgp&5=k0Egg=f#>*FbQa>>bsZ)$B^`!RnuqJdJ_XN>YTp&zLjC!#J*1U&#ZG?Y?Iz; zx9Tr$qIdOHnY`#APUGbwoFC3yTDc7o{0;oXe>2w5`wWbX`Dj{QS(WG&I^E}@S0f|P zxF4Re?@)sFHKMnw-i$yGu?i5X^T*^r7ba&W3S$@W;C;olC2@b7wp|%DKAhL%DP4Xg z%0Cn9)2mVbt-Sq=9AbIvnP~Fd#HAVbXC!a_cD<2NaG+@WOg^%mcpAf>p{y=*AtHeF z-Z^iQn_lDJlY{DOKqfL(!stV#HTYkR@3p!fL?0C-#4Z6*okvUDoj7$a^^C0r@n2C3 zeCsN^FY0)_vv$5*2dLrKG{ggE)o?LQA}Rw?g;{T&+?#eC>_fGjP%<+fYeQS?i}b|7 z^Xw`@RW~kAH)%pF%!E-s1R=3IjIIQX-fe&8qKdA57>&OLZbWYRw>OrMfQF79P;dF= znPYF&4BxDwAH7LlB6B)8s#h{7LickXR}0C1=X!i@KVZ3CTmsTLX)h5+)&kRa9ws zuqCgQTLGCix|rcUR;Cy8^{721ng?)WWgRvdSYDLk#fD}!+tpWwXGi|dso|%J!yg(O z{=lp7HIefrM=J+_US%M})}*;;p=?Y%Fc3mSqXwz2;Sm`4U>|oohjVx<+E_K~1OMo` zC3ulh35xx>^85xp=-%Dw-Mn!}DPS&Ih30*CpD@u$6-WTs-DWr4VFeruicddIXmb8( z*QA35`x2+xuEISn1Gb&4!#0-T~jX_eSgXPfUY(Tv4{6chuo0Ro%)=}>$&k12&u|^zD zDHH|F{zg5{Koo2nAV$V(Q>3oBHhir(&)19xJa#Pn7x}>oK~w4ydU@>P1xiYF3}A6L zuNf`2o!Gjp=*y`Y6X#f5Z9uoILl~U_3U1BRBKGZsz~X3uwgUqmOP~b;Hr7MR!zlIa zNcG)FddpTo@QICEpe&66K{-{9B7h_q*JHkHF%QECrIMri?F5@dT5im}7U%#fG=F^w z{uK0^v{_}o61@ELFfnTjIstZoNVKb#0Ao`p!&{o)03Jd0f8cfKJi}m&^?`0=KpfFL zly!7{t%Q{m^P8gpX3!X;cQp_P5}P1z$d;pd8mKGQgH}D5gk@wgpp07u zwS5|CTDr)^tAO1v{3EhX!R4uMC`wEA@&@?`gM& zPz3SXRy;;3AyMP-+y+r6m6HqQ`N~Oc>fmdY@(Pn>Vl>2;%6`DC;ZGy-IEH5oth$#g zfW9DM<~%`T;CvRn<-4+82D)TqskDAgu%y@5Z!Di&yEadV*HJ9DxIUn2jE;;(({h0k z0tjev;?8mSGWJF`cWq~m9TP^4wE!Z|Op)z{Z9kL`oQ?_>y5^cz!50ZdF?z0;oGE^- z_ElKjC=pPE6g_^yS;J#8$MVwa5N)3$o@F7rdQe0gI@2X5BoJ{$#WOCgKp2EG1EL(x zDCi$Q2?7di+X>zI@tuTiBqUxi-HND_38HbW{;UXGX$EbIDBvZPW5;AC>0~+V3y-!{ zbw$+2Spz{4%?zk3Fo+_$V43{#(j1JFJc^W~I34rA3e!FcgCn@@0&;>bs?cFStP{qa z%ni0xztEf@>^LW!F*Zka%uREA(L}m-t9Apxde9?d1f_ul{WfB!U%pK~05QfQ4K)ob z4qyeCRtUs!1X7)@noXI@3hJ2S0-YX{rNBlGv|!Ve8k2%GWY{&p%Onj3R7J7AN{I(u zFq0o*qLT}7TMQ8f1gO)EfeZXvEK6#ZVmGMQtO$yA1yF44wK5442$B$@;@TRN7j7l1 zpv#{zT$k9w$(+zvwcT#^rt(9#m1F~rL@$(YQG$jbN_2>F>iG6{*OmzpBhE|#?{;j$ zpABpe<7q|67jT{FF9e7^`iBJiGWaO{YeCSL`_5F1gBaH&dzKa7rE9eOjkwoj&WynUx`9Ngp~ZH@b)rMNq({xRi2nXsfcs#~ugLrNYXL5V z`5ozgb3?Z2H-q47L1XTV#9~iU}GPK>G@5>p}ff;ls7fz4p4zk_zQ>&7Jt9`@_^JANtOrnu)cU$ z_qH8>Gmy*a-wY6x_qSwyQ2Mt)x;uA?@GIGYVmpPEcLY)~X$>|V5!yWKB%SD_{GA9p zVgw-Fe>TR`PBt*VY~B^+YpoeG*+Bi`*RE{%ZPFD4?fy2qGMenl7U<)s+AWS@f ze$S4L!C!2`ehxrv6y4_#{)Hkw_kQ^tN?!_)nD@o1&rMCozcrAz~;ZMEI<9Bb`luIY{^A-j(dexrqxCGZV2j zko}PCi2EQC1+x+RL5385IcT+e8o^^IVo#6B2l4J#f^={0bn=6j>9mf0Ph7B@d=K}B zvkm(_#F3$h6s0;q1d^eMP7;jBQfU4+QSr0JBr!JWjU^ipXqI`YEI#S2Fbo1h4wGlfuk zPED^ZVjjO5^bOe}=JBfm@<{)N&g1TE`VSC-n)??zkK*Y!q{EVZq3a;3WpEM6s;q>` zGBQq<9B=bJBnY?(WQOREb?#BfME&R3$t66OrXZ1h>gM#)?2<<;S30`x5%b%V3aU2#-qR*^}T z(`e~G5)q)-(r$mnoc}@4*%khT&Ute-{hxwhDEGZVG$rWS;<9dvoQaZCh`oczEs`94&kn_gijaW_p3BX*dsRI(b{=QY*pBB>Kkl(niHSsRUCxc2 zNF-xGv8B&UB(m$GxMwi@g319c+4P?T!Eo-gi1=}lin;-8xT5S3j>j@`=*a4fb8m19 zP~h^mVo=}u{%TzdG?VkjQ`8B^{2tUN zLmuUrLN=R2Cn#5um;HHw?9`*6smM-|O@E!V;1MCIelw!UIt{R&sDlMVC0#HS(c;(b z&PNg5{yKO5nK zi9N~U8sXKAIRs%M?Ag5*;YN2&%>K-L&yCu+BpZpype zQtuCu@67CnS(r6(4A<+lctSqIkJMOrUPSY0BJ?XrMUvM zS)p7cFPbYr9$o?k%YBGx*UYqPHC)btoI7jlLg;oCw2*%93-A%S!J?`9-VS8c#NV%}BPv_qZd+RoxeSg@4`+*>AuR$!t=9|?6J@9`h0jb?{ zNEGPb)(#fB6HVyDV=c}9=kCt$#J?c_ubRT1dW5I$@x}4iyLKeG#IAxVfynM!E+Ujj z(o1AUkJrpyy)TShV3mT_%sz`NsX(vgN~+B0vF)|M<5-Y-yl;i|^|ERvDMFSEKH$D! z1`RnT5Pb}5b7dx>fPljIU~^duuS~(lG7t5_7NnQcQ-u@}r8k6n?kea(o8%LIp0;fL ze5jx21Nr=uesgKAL6dM&*6Sz_}6Nd8O`3qBHGo67ePhOgN;$668)mFHo57O}$PLJY-R@}~^ z4NSg&;vA|pC70I?wJc?XD2SqPF-gHhOrBnJNK+G@$FY|>D4*RU+mfCiLn_xYs}AwJ@p7` z-6Is+3jvlgmO;hs1!=2#FXaCq2)paZDRn>coV}7r+3eAp)5L~kXIJw8b9+%t)KGF* zD{8Qb>P}`~ts(x(AD^h(gQ|~@u*n1sEo{XE$TX{&0MfhEG_-AE{C88~z-E(Ecd9)} zU2?)%`^7y-tOT%p$&^RHSuNSWWYpUDt}sl~SQYe})@Se`O7kKh|P3$X9#~ z{n^#X|4>WVN?pr*JbNH)d#!l0hy;hKR59CNOQDs|F6$$Fq(@%C7=gqVysZc~WD_lg zEPtEgPvb=5@)ukT+buP$*L{|XAulP3^{k6;Tx7}$K;zk?3dF*_QVq$7N{nHf1vU)h zo`u_Yn>?WA^hG9c3mhJRnvgYS!Wz5h`xn2O2R0cZZo$Z>Rm%%R0n>}8^ zdFb_%6|X4F*X|e@Wp!12arJiX7qf{kuHLS$_GH+zdVRIF-m!SSEMBRuct|vJfW5J% z3j_V}*QubJAF?CZ{`0eno}Y#5aHUuo*e@@qnY*QsnV+AKi19J`4JpsM%5$&H>yDg7 zGuM{h7u&*7F*D`n>|1JbKzR6ReA3Z9swc(-v;=95=z6A1EWH3qW?Gy4g zryV3ie)P4_&$W%Y+iqhGYd`tSZmkCBzC+=%^g8hr>=0`gZ=f50;nWUzceNWhr8Dp>xPQ?1`Ef`~YAYlR% zCCSmZ9`hCqP%q&f95=j@y%6qSDT5?}aKLQG+FXFp@+)ogP6lHj|F@$C!g8peCx`xbOX7peUQ;NSmGEP=@rb&h4g4U#A1qbJKoMD;0f+=OshfS|l zq;2w^%xJCBmuUONX=%LW#p&5gQ-zCT7Ye3&c2AgIE`I2ClIh8#?JfdZpn)#QYUI&_ zTY~(_aF@(iHVn;-bv9(1!}R!6;T#SGPJqti?B&Ucah!?#<6)Cd0uPIu22|3bQAy+| z@z*OC&rTFNgXFx>K^ll(aro%rNWHi^!2-U;2rJW{~m;`!%sHTAUGJ=`E* z_lTdef7BRu*D;lWjH^#XmFD3ZDqg3~2xW%LurHb$93Tr}mdst=#-5~VOoxB2CZ!W$ z7GN03%LJ3WH9k?TNyBMkewkcZcW{Sf7fE$fU_!Xr>|6OET`UyqJ42Y_{`2L)Z%D z1fr7|T?0sr&3wQ~qWp(@gT)jlo{%64V9aV=syG8^{%0YuB%Kh@U7C?XTfk7@urz2N zsacz3m5~eP{er8R`w~*I+s9zHn%R}j?K&HDrjQV~xPG0_AxknxuY1liWn2Ragbzh7 zmZ@ld-9m?XK5ib<7Y4xd67h)sUA-!$)BfOIJ`?V-?Gnrdg=)c9qKl)Y&~IJKCA?m&3(OBo@H&$u)(_#)k;dTF0s(dTYayQsw2jzHfaG;a zsc6ghEXw^yX(UxX$27}uEu6hFGgX*IA{mpKnZGdQ^2GZuBhW$e zF;8B+d|?u;`7F&RqRC6+7p|OxW8y@F7Kq70&g{vHP^8aAGgBwzv$ge@&-vm+Vf+Oo zdmcMG3BCJe>B{qyGne?W=cfvYDT*$S6=o*KuUr@_M3=7=E>BHQL>$?<$?5S6W6;sh zA%5}_z8Outk0G|xFN|HdkQ`_jLD-rom~7H+n9?>YPmW^hDu($kjdlbaY{g)Bk*QWqJY~IX5;lCZ9$dm@fQ|0i3-8 zrwk_!u9=BK;fi=&j$)Nx!psz+@iElpa-NHjdkw3~y)rRXc$v*|9%KbhL@&KCf#(HI zs%(leP6(B}@tOE*_#pNQ7TS+9x-@bA!sK~~xD)Kp6q|Wza(dz@7HkrIJI^+`on9Kl zN3l`xVeUxu3robmV_O%KjP;Brk@Nf9`_Kq_t#4xoOi!Baf=AO=#$PaVJ`#?8Er`Z8 zKyTO1M6W|=EU$c6S)Ldicp}-WQB1C1n#!9 z2y(_0Q`5zj*MR>z&or^Oiiq%d5%FNac^65}K_`XMROAqXW*A$K$v=woOtUi1IjuWD zkCCh>j7uyYp!ZDA2tuYXCV3leNenbYOk$5CgW`tlvr<{6tb*+7uuC#*7i6Z0@boy` zNydasG0KO~Q$X18b>wW0-34((LY?h9u-Hqu27{vk>t}jm;@gma9G99L#jRzUiTrrO z6`S3hf9k^%4JT~Qa{j3ghZ`QV+0FTc(UPuJVbVL{;3a7`P}OK zQy;#oVJQ3#D{GlxqwAkn+1jMwxkoOd^zN##DM=r_BCu;o^<5Nonr>T;=B z8(0Db{R{pK=~gy{_8o9x)Wz&0Z&49UgWJkxMt?VeeR?+=5~DvA9I-jak%9cFLOgW%BPPKYRMH&jh^;_>pEdoJNQ=g2 zfkJ10QNl-_g>Y<2=*q7fM$(EILj3*>3$frJLUE| z0-6QGwh@(vMPMgoy|J`tZXh6jb_4dw19BTS+3yz4V>xH;dYw-@RS zH|Gx?3ZIZZSyLoZ&uq|PZ zUOaYOP8~xO8s8fXo1dD{$a`HQyzcJ3=G5UuH1gj4dOlG?Bkw(a!Zd>G?k)r)rjgxf zF!rvy$SJR|R*;riXl}e$=se@=aNHE=4bE@$ zM7cph<6!Lsg_y1@Zn|(OXycVuOHo2h*OlBcvjQQe>&oy*_^Qkn?gM!lH(Fd4j$tyq znCJ|s1fZKd>X?BUPyrJ^hYpEdN#iy1^4chpBtUA=!s)y_Nv-JC%dT6kI3O=OLez?G zy$ocs?ygpJ>*c|{;bDQFr(bP&E0r5eumU5;nB3;Vgh*_%n$0N6ewXh^X6W2`SyY#5h$RM1=k2~?piP;0>7b=1w$fGLL&>uPhfDE6Wkk{ zz81U=*BAl$jhww};Q(%FZDNVjzL?&dZ=*K4yurL=SpH17TYtnS7jY4$D`O!R+kv#Q zzoW6m?g3xMhZk{ssBIiSUr!IB@rgHT8|U&|k2OxVdOg-S8SC}#KG!&a{EgSK((R__ zSf3Y;TRF1P+wS63veDanR4Txm=;3Wh1>Y?z z7l4nx863)O_=QpKM4_1WK*`2Wc9vWpyFB%lg6iKQPWFmgpjg>PAGtkI#*JZiMTC97 z={nznS$NZtU$XBv;Q-ZPl6}9Ke*~w9RA<+BG<+v>_8rZ8!zpY>+*_SZe^)9v zlN(drhN=i6FQH;lN>yh)brhylUeDPw-nAflttqDDud zi0G*AN`V}jU$OnaE4BZ$Eg}TyyHZa)6@CCgO$?O%Xe!u~yBLj2o+3mqA)rgdJlHff ztAgv(ir?%azl+phcv-SvB(}KWl#RC!=!bWK*s`cWvG@_u#ve`f4&XXVQuC(oNj3c6 zsZ{Pzf>C-|1WQ?T$4Miy7-joCspcV2u{8c6Qv7>U!Oy1}<$EaO=kHDJZVjhFBT?kM ze}4+`#^cc`MrFFyhS57hCKuQdAstNd1}gr1tF(lGQ~n0o3yZ^x98ibZFsL|ofa*)5 z_zGI>@DDJq?@z(qmocBk3qO!b!~JJ!;N0**#y>!fA4nlA`j)AI@(-a#ZjmW!q7N)B zegHJehhZ#AbH~7JT zE%3{}YY0HY19Z&}2Ak)HF^8`2q^)@1hu?@AKg{9V!C-Ix=zSZ^>Cx>EhT8*Q_Jctz zARfd9gU$bADFpx8m0=h)9(4K#sPSVd1XA1K<7EAKyasp|ANU$gsPW_R8i*PGI4G%W zlHsm+(C#0g#>Z0#`?KFb#OqJQrbs zxo8j4t#g55XP;jyBM}=>I^5nKb|>O4>8BTpao9u_J{`+YAto=R)u~QNVY1{QmJ^yH zSfr#ofwV0q7SRM2<-|vGV##`PPb|;IX|4Qp-X5 zigBT|vbcV|{yeyehc3bQ{n~|S@E@nTd&7gK!Pad0 zlbqIW9JyQM>)_S&2qQJAKQoa1`IhfjE1LNv`(+ojEt~!)@lDf)8hGFrv<)@>Neb>q zTcbUj{#2Y~w4(+d_)XJ}8lOsa`g57drazrZ_q)MmPy-LT`~%eZbgG9Eq*B9!d-($)^9ApEQ*9fv*8$F5ZaMK>6)>4K{%Xz6MF`+pIyJnPz`K zpMvT~-i;EdCyL71Q3S>Md{_+|D9 zfF=$P#b2eo@%<_0-XSp(uq!DNV4lWjN?U=I=TLxY6b)9`0 zk>n8bg$*(q2Ocv<9GO@i3hq*tSRZU%ok6Ik?4B!PXup~=c|%l>_|;Trk9}Fjf(x^M zg_#P{oR%-9f++WMff(zoj?dnfpkPRsC7T(>ivOcA()vL8H%Fu+wZ9;R8G{0OJtf@U z#pv+JVaYdy%5qWVFj4Q4_!{-5P;2ehQU$i+@#DvbCD|6zW-^rovK>fXZcdaaFk%bg zB%04gN0vtL?Q2VGND(DpmoQT8v3y+wY2I7sMkSM81a82jG{z0K=%u{Jq!hfj4{0rs zZyzj2lTy%Z4LO98JJHuRxE~XzGiPU=xm3RBH#yn(7gIp&=n_G&MseT%@bAc^z>Fk!zb4Q@t^%L-Pn0-7RUi{GL!sTTZpT17W(REF znV03)ecvfi{CWz3ecE^CW%>2g-hJWcbjM(O{Z=Y?B=o}6Hll~ zb@>ZEQsIq!$n1s-AeoN~YfOI^?y1BQ>c=Q|Ry8#4-q&tLVo4SWHF_48bdA1S4z6hw z4b4oQn>wNn#-nG{k2s9`w^ZzX&Q35437j)m#C-pjpKpp|zmA^fM5 zrYQ3igj9i+Tg{FllWwRg9V;Tv(FtokXf{K#q{4!ZgWZi8LErN(LKK@uv{4>oA-vK) zX*A?E{Rz_{U!p5i#Xl05kvKJ4S|`w`M3{;~F=RhWQ}{vpkN#nrAzU#Z2qa7pA!KyJ z(OVve`_N4stOy*uoj9gH`HEkAipgK`bb{$mzLMHU?*@r8B;?=2Q8OEZ=|oVpEx{y@ zVyoqTlr(=YHDGrUw0ab=i+-s^nu3`5$0-;kKGh;DOfD6c>5-*ZxjD+~{2=IcM3c*y z%%rDvk+?GU4bpTz8yV5}}At;I84cu+y3+BvJB9-2; zo3N8;guh+_2njohXG&fAzOtg2pfk`XUID=(f02`OMD7hWU9uBprVjbf=)=XlKuvI; z&@UW?8Nz6R1@Ks*UM6Z(cU#Pu4pQz|!AV>*i0 z0D_VXhZML<)KQ4Twz?hSR? zF1`KWVwUS%>~ZVqUBD+|LwY-t`V$`di5MNRrh7+R2lhOX`8Tww!MEiOh`DZ>{{+a2+L zi`O|Y^nq)~oKw&+HHWC|)z~~pPw^ro4@pl8$CpAdke}6|7T8fyS_NHjm}jyCnzlri zpvMUv)+w@;j z4L^h|PVYC$WdEFOW#Prv7&u~HuhI3IG430svRiW zmZ**WRSNE9^DA2Vs}%gprihmQDg_7g+Y~^X;0;gphK0cx~X2I3QhP<-G_#BLSQQVug_h*fJjt;6!n6puvv@aM8F2SfY;x z@X^>W;DwI`;-rZ?CGG3nNch=*fr|ad;$Psg_*eixjjMt$d<-hMddHfml7C+ioT~2~ z+jI*gf2iIH$ZL38wO+GTs<#6qLLi=8bzb1popISU;tY67--e*Y}1bf4L<=|budn=Ogc%U zWgFImjY+CSrQt_{W)*gKb5s6kU~EVzp(iM6Pf$cpe$@5^MO6LKz}S#bL{EN{n}f7w zH>uW-A^W0CC`xDvMcWd$+K<_+qxe-`HZ~*_(bA6v#)h<;R<4f+z}0bfP(n*6+LlPQ zJ|48Hj*nl_(#L}#C2=UCrH==|);)sRY0ftNRM7C>Vs`oxv%@t2+TBbDm4TlMnu)7P zr<*w;KW!%jC43x3{Wyvk#!uS`K@nAd+D-_H`1nuT32A1}J`upL$zh;`mQb`Uk&J&L zXpQWz^6~*qONf`z(kBA=HnmTfke>6GI3Yh1z`JdJMN2;uz`bpXXz6DH z__t4CLRzv-p9&g2j|s^qCIlf3*UJFhP<%;F4)vQ)1#m~QBQ2bqPus~s2^~REJAxu6 z=hJp_P(;;F+sQ!@9r-jT=f|m?ws3ZSK7e-m_hH>*1`QFe4NQ}^6Fp_3FyqjO0RX3` zTw`&8Fe?|kJYOf*+=w&6KsLfBMCtFsh$t+E<+)EYxR$Aa8!;LZN6|V#4Fk_?9>Wp9zrgL0jU^{Y(%MmcZ#j>9av_ z$oxoJhN5kWwCuA1+~Qi5wCuCN9^Ff*Ds>M&5>7}LA3O_dL0x}NpE*m2hH>94${1ac5DY}Ui+NyAjQtl`3};&_Br3dUFhKF zdI>X@0DSX%@>;QYtlwHS`uP<}8RV?|J)w%Fc)Jrq4Fsik3VXe9@9LS(mu zumO=1R0#PHi?CTz0TzG->feBH=XE+o>)1|u3pd>T%h2x=iRp~BMU5UtDHQr6>&dQ( zyh~XEeu?=t+>R@z0o%Htg6JjbG4G@09}rhn#l&i^mUR_4B3=t;P1;n=VP(fX3LD6W zjRAO52CNwCW_PTXv9$70S;GpmJ@e`XUX3f-Eo#Ez0gV;oi?>eifJ{4=dcuCyVGLxi zB=I0zGpyA-lU-v%xu2K@fER8a6XS>KrgqixaiIo^RQ%1$IvB^?lnZd2(ykPh=uJ;&G8}ZG{fW3>hcC+dvN(0 zc2c6stP;d^04yxk@oiR4`ywvOLi3MtakvA++HekZ$Sn(q6uy zmn?X4fy<7D4K-A(6Oa42o`@-f+NyAdU@hl;Kiqa8|F}lTY+AW?iH9S)+hAEXqQSxk z%^=tad>BGFa3KtwL<0L3R-p6)cZw82Eat52=M3~TFKytm67&x=U}GH$E-bV%!@Nfq zfm!+uw?|aPpo!>rgXV6fAs#mg$hD4Ij(Z^7;ki?(Y1Mq*U~1fzyLf?>NNctu6d{j%Er7MeZ%OQroh7qa@p4#+FM`Nh(^ZQtGODfsg?l$6#kX17>VD zVVjT{Gcd`(fSoxu4uP1QaRMhZNruT{2*;rT+eu?W4w*pk%ly1*R@LMl&bdYnU< zJKlnPsh^A|6i{t0Bd25VJeWsLQNx^dO|u1Ch1N3xng%!~DgW6chXFc=b=kTA&ujxd z>uD2}*#u6zZjMy8diE)e*GKj7y&+rdn(ad?!G;TYyw`*nDGs1fWwarn;^<(UYnxYpW0XF4H~PILSS)3)Tca;Oo=;f{>BD^@8cS>Z1Syq}m{;LB|T zPA))_75;MD0Vh)+3Euy5+o6X;Rp9+Ew>|Jsa>$mSysx#joy8I3g3y+yapBoAz1$Z& zA;yfnp%b!^eJ$;T7_-;f1}1$oV$5D^J2o4VbmFzP<7dobC~3<{4f$Hz1E-VUbu@sg zc>&-JrT-_;fM&aJ)}ivXwqbGPrYd-Z2ZF z$j@^VFHOGf!jqE^N?6C1u0jq>^{9J69GY;qAu6EF(=HYpP$IZ?x{V1=(jp4>k}Ga6 z>yQVo9@)ChHBU^nTU-~h@!Ga!fty_)sik?{%fAuH&1x7pf=6px?*L=rV(v+C4aM0q z(P0fGe*5Ee4JCf#sf9o)#M%CF+aV`6G#L}gqmTI|MIcA=)T7B$+DI}p{*$)0{|}k@ zqvbcnV-g6sSBGhPDI}y*mpbp*z-(3dJ@nIzl>elyV<b88K@SGds##>0nw)K-{XkQHrgtntQ>4Gj8#|R#*&(qRaj;>B z`JMHYR#A9T+o^6zCAn73x{#;w7^iSGS@be~_yk?;f zCusFDTRo+v8$%y3UCk>r*-E{EMK-F1O;(I*V$gC@yfrummW(qQq!6KJPU}fWZ(qmk z;Hr?7#Yo}U>6Oro5t)`DlmZ|@Mqot*KlCA^&-K-?H-7uM zOIzl#T~xkE9VC8WDG+2*DBT0_7R(@G2C+T0XhSNi+HRC5!u-sqPxd(GOTh!&dCCsz zMPY8OknuOq!%1of1nA*=Ar2+A^_Dl&f<36~t(#47<3l_ca#pM%WCDIZLT%hSHXAQ8 z3PU3(-?`gSrOCd)@Xgiv7a&%2z@2p8aot*Q*XXAI-Ie8%KstBtttgboyx8j&vIz z%?&s)GO-$H=cBoa!=CDOT2)6L4N2PhXzt`Az8%bQlPv!tffhAv%)l5s`WsAH1({PA=?<&f~> zxdCT%$_z1|Kc3s^Y&%FYpFf@}&xER&&mYenIY!hEO{ZKHa_ANQLfHjcc6`00VA3O5 z)Me|NCed-#p3^bf6{p_|NIl~TqpIhUFnhoSvs?ts%s@RgzcWNzj}@`G-x;8gKbxwb>4_huv(M2U7n zt@35hN3-%ok@kdxl_71iIOBxGu4js5`J^}?*(umWxO+}hA)-uG09j9~;&6KzE}aU) z?Pa(>m0ogk`}nDx-u^IoLNCMpDV@M`wpO@&{7jAz7mv7r8eG=qU(-0rkA!B8C%2_@ zKqYpgk8V&`=tdvi_?fgD@+JA1T+wO3lD0m&@iRH1Tl|0nLpYNBTn@eZ_qJsOH|6t+ zpdI?6z+HAU%u_AhJON+`_nii=n7yajZ=|n`V)ag0#1>eUA=SMsS-}NiilbB>ae=eO*dD{G3E{cizna`ig?b&MH8>~g}>v@7=AsU%3&M(zqT4X zk(qDJpARyqWioRM+p-Xrrky67iR+>n^SC}b%hznJq5HOi5wIHc4Yb&}Md*w+1M)JW zS%{+6bRrIZkij#6F!(_R|EYBFaz^@8&RcCHZG#N{Q#s7!{(&2O5zmBN+f?b(cQJVQ zD~s|T2qYk{VWl>l1rwLrHJF_U|LCzO?#2^QWFi<$n1~`1@k{AM6q$%$$`u2*RAeH4 zDR*Qt`4u-2L&f}OMG<~}qlpOTpFN&`IhYHb*_yYZ`=mfwC_sX z2}4W(g9sBa!~}dcoq!=G;Iruw9%2GMt0VjujWQ1x^PkJ%;JswLn3#2>F`IVqCMF&p z-rAqFu@|*)`nB?`(>91Paq5PwH+a%EOwVaP^n4g*^>aDz4bE43{<)m@1}90+KbONB z{Qa%i5eb?7dJcn*?}*A?r%DkK-I_c2osYs0q=^Wok!uS7r4&QMZ zKP7hG|#rA)kYx%)E;moN*1Vg#9POe(7$ks-|R_4|*Bo#FdlM?fw zin&BkUIOdbm8a$Q@{v%xp-@yda5>+KB;9-8YWv5FOAU)FbrI<>w7_K@kD7CG#E?S) z%+6JUrY^#IhRBlN?H_$tS$F%C0x2A8y3Wle^oT@yP8LO`VHy z){cH)!lfu?+2vv*eqQ^=HfN2;kE00eYzPEfJ0>~wuLg|GSI)t!xdCUjMiK(?Y7VP4 zp#zd&>{oMMHcAqV{b~-`=$A$LyCtCeQm*aE(&t;tXBMkc{yGlALlUPOweBHPvgbC+ zmDG%3;t-}V{?UzKipe}GrtQ*IbVNE|<_YQa{49zF8ci-t;KIad>*D(+?Gn3%&0`(zjnbE8 zD!-E3eJmuI%CF=OPbWXoZd;Ohe}A61U_a0<+{7T=EgGiN9kg0KcnY9-zC|V&M4+~l z@2_A2-=NrT7F{(=w%4VrB`0ilSApH+h>_rf z93qW$O!`iaNH~1bcfLRG#em&rRR8|`fHOrVY3GTcp8JHEfL`C9Z|fx_gcQzF+vxo= zVuB;cg7_<>AJ>8~+4twWd)x^%OqNYT>@2z4*Z2X|ShO0K=6S|xzIstLhsq!ZA4n?` znaw7t%#sSV)Ge~|q5QoIwM2!k#xPen7SVtQ*Lr=i{8UX&YviWOh@DKbqWYIwT$@AhssrNBzRqr zK^kv>t>FIo;=)0oo>6$5_~bGK5TH+-Om4ANjH?zx*q1$S)tMwV0kag7Y=T$vK9&Yw znbKGCJ^}_wHo+@-Y~*!Yk>s{|CBNO750K=xdL@70DE0zOzm&^AoNxOd@;R5=)WbiV zC!EP{)V6%q`us>f-(TvFVga5&kcL7!Qp-T=OB zV-<>F@?$z-ih80Pq<F~F zGRO4aMIEpT(-Vn_u78Ka1~249G>1!evTiRBw-_rS<{nu)wQ2>J(Fx2yPdDfgcEOrMaimOlBBK4=uoxX2#=;TLOz=vkumhwKnug@Osh0 zJc+f0`CtoOm-U^uKAA70=e-715Tw(lfIC5{Bb_G%5TbEo8Cr*k(V1eW%>q5n%m4W5 z%laDMb&CoWKM1o~tYMp|IjzMJU2U8I5;ET^&i1)tGiqc~w%_o#dfdX(Uie{|R{B*> ztRwacpT-gis3X@f8`$G=3fO)uFd5PnW?IaDjzPP{E@za~wxXI3PC7r!TvMUN(U|av z%@p#B>r>~j^}VJSPdsJRWzFV{NvP^CM!JX zIx8$PLsfqvKQZH}DnX(?k#GAuk*eyDd?Me`YvHJRT#%^0&COo2$X0eig-OylB6W2U zqR8otU92Q0>Tl;Ub~$9Ul88{qgjLlx6M$!y#_hRaIis@b26@xUM0h`yt&H?%npWmb z+%r8>!{kjX(^>zFD*FRrupUj==kr*f{&r6=i7;->9U@lAvmiXbxOn4b>>r-u9mZ%n zYG;_$^x$?<)8bFQ0uG+TdqmM@L~rGY;4LbhX<`7x+FeUfU$eP&tr?LOuvL5=pAR9G z3=Y|IUT37cJ?)=dzB~|iB2}|A@N}6jp+@!lzNS`BUoYQww&ZDj)>%;{@pFoQA=JBX_U;n#NeoDH?Q`^ONG3@q5`lKkj(OPgwufZ7-z0xOQD z*g=hFjTVDl9lkF9?y$AgqLu&zd1NOQ5=<00`!m*E^U)B7C}VHzI59mZ|BF zX~%6M#GUd7{0{OKRhBv0gcf@K`Go}+SxOGN*X3cuj__9GKGHXn5s3+aDo&^Gbg;Z6 zfW}qC*sjMs28V41RDWURs??cGgd})@K~(VbD+{op(!+X_Qww4ulvZUr&8SA*HG9Nz z`N>uK&qXA25n52}gh>THkAcgz_d;WgS6j{X2a;>dQ(T2dv@6*j-T*E%rrPWlmj%63 zvqgsk*Pw0Z%d0ES6U*)#>=R`FSX-es{o>Lp$BLQr(Ja6W!H3;#OJ*@E_KXwkxz$GA z+8)0S)kUF}?#xBxYP!nUk2S6hka;%HB7#Z{N!#>X^_)AmGHAru*BepPoNkFk6ir^v z2u@aRVLCjYTzeE{)Om9eUjsV=E^LRp%(GJRr3F3ItH-~B8NbQ172?b`OKqLTIXFQs z(|3tk^z;lIZ=qT=t6Wo}4_4eJ=BR|jNMh9!J2I;)ylH6rP7~uQ;Uh=zaX6KlbMH+A z+<|vnhbEfNHv{DpK9 zC2#mb-kbW6nMwRY-U~)aGKpWvd%-A4Ch-e-1fy@XIi#jn^E~k}W3GDc6}C-2E#lTl z_O;Xyx+dS;SJSS^zV_90ePv(!YJSW~k$T!>U;AplDsIL{f8|;c8{FjzjzO& zHdIJgsWEhw`12&a)P}Eg^@~AjLz1q3F-UD>fb?(flhme1Qk#Dhq&B4J2T3QjAqjx{ zHd8cWs}roNy&eDi|v1yZ}|^i z{v#8kKa~7O^0Hou7yjrT&O8+|^VH~Oo+LB>M`7kk()u5TnJ3B2|52EE*+TvCeVX}R z&HNvSnI}a*NV=IP$$b5BkeBrp+y7&}<*yc;mRPn>|1pmn+KF!yk<%#(@=XAsw z28p}Ca2fw{jpE*jC|8gvm5sSK2C#ZEDMvspiNk=NiqZlTNE2=XNir*c7ET#Sy7OoG z0T(!fBop{&d4glUDmvLGp5VO&=;UvtbkbP1`$i@;3g_~~O>rNoq^VNl97z$!IKv!C zB=X*Z7hp39HVd9el4OqFTku4ZB$VjA1y3YNLW$m6fJjOh-N&JOUtt|#bf3=M`wCvN zO^T+nN%oN?b-4P(kbPg_-U*|rka1IE7`N!=_Z2)@<13x{zJeDH4s? z@9)=bU&kfg_f70h;{Dcz+JST;HNT-5I19_j-NKS&wLTm+G)boE!v(*gNwTmX4jY;z z8~VdxLz84fe^?t@d$3=7;v@HP4^kmrrN+=zg~0hp*n@nv_WT|sNmoA-_FzAwdgVUt z!G7(*SHd17ML$ToJxG#0_)6G=1I6|qDYX18zXxUD_#*|(fd0AMMhCP9KVHDVJfn#Z z?iBZR1Nuhp_wMt}061qkWzS$xgQd`urk(aOrt*w9XN#Y}>kE=~_;3PF80>%}LK|bG z6;Bio7-@*Fu5h(UVG4sou#5Ry%Qu#<=@k<(IoFqQvi4jT{8ng+%aQ;D)dd0q0klo! zTUNvib888)51rtGo8~4WTQ1Z~<_@B4#1wN6K8t~Nik|0W3yBqsdgLF#_NR=cW$UuG zZtId{KYl!%GLmeBkB3u6lCAskf;Xcl$tnAI!JE;O;jPv65+Mul{h z8beog%6>YWGQL`S{*;lVt3Mr1*#M*ZoA>FI4d|5p&2Y*{(GQaDl#%3={mpR728-=K zTWI-pf68P@`?H14k>odY$_91HKCM%R-OxEn5fQt1`ObYkWUh_-ea5`V=^F^^<0qZd@T5s*C!jedszV&~<_i~|ldJ-35u(t$#lM1mIkXS8pM^?Va`Kcny1e#= ztvUA9Nq{oqwl|%f1pab?7<~KCPUr_R{7NA|UKuuF7I9_D zX`@yQRM|ngDP}Tfuq3!P%oNG2|HV{9A4J5+%s|6n@kgwGCtA!m-nNE@o^s5E$ zi%*gb^!E$x&OL}E8|d#B2KO0_9uyk?+&!exR7h8;F?3aE{Bwau^OdfCE}(IeboFzA zM$66M*X|RI9u$rKwLqgu(GQZ2Mw4V3eoZv`gE?da#bWz!6k5JiXf6FG9{r9YzNkpm zjZFk`XT56zQ)k;Ah57NVGVcK<#R+0&l&555ll!t&r<_1Ej!0gLQ*WpwVVX>o9)9>a zSFw3jp*2i{O+3fL20|bT8fZ#V;DhOKEGm{dnCA7qT4<;)$OjAHA+J%_{n!OMl`*?> z-d$A}_K0>Q&vyMwt9|%kU&X{BM=sE`xbXH2Bb)8?@~xLIEKeLdi6e8h>cTbe&@C;%mF3%$A+!lEuK?UAyI8##Euf_gGI0imJ(<$k zDp4n-*(cB$Lr-0ZFA-ZvtKtXL>;YN#*bi9~IJq^SMN@qAJImkZ-=Q`GiFX|(eQAD$ z2dTe<2dUK=`{^&NzNDA3<@o!q@^@thnYj0>Cw!ShQ_AUSDU-?Me!h^n2b4&Pmi}fT zUok>uX-+dgxWKyh1BdiC3%!mg+7DFmn}y+>X%Wu!Zx)F5D7zWuAj5AJ@_SB z>y)J8w{#dq9<78G!8I)YK%Ku;Acl~XxJC8yw+n49yd){=Bk3p(Nhr>57rKW`Xik#4 ze!DR2MCv4|>9-4L%rwiHFmX)jSfJA-g^OZo<)D1`r%q?lET(!jhs^ z;mrN`d0`0$O<=PlR zq+DqEckQjEZ^v(#S7NF@jAZr=Xs7SemWglK_?M~8Q_VaSox479m7e4lNGYi?aRiL2 zrkY^D^n31Q;7<6~%sbg^^{dN{3d_^$4QWoLwnn~W2%S?O%C!N_aP`*m(iIZ}D}GvxC1IW`SWGN0nUWA1oSjfhf>|-H zF`Y3d2#X-S!T=k6?#x+faOKsYaDp%4Ig7G$`7%!o1yjsux9K5j71KK`n^YIBvz$az z4B^xxeIvG406TbWyS`9ju|TPHde8+nxcF#VeIOycf1JI0xr_z*Qw!#eged_rid>{q zZH=JC!{5xtZMN_3wryV3yJd>bfA4mG=pX&xyWcH_f8IWo%a<own7PeB*;f7yNXTr}jRZA39uoPcW_$R&h)XcZdA6-1eKV>Y`jvXz}^8d^4vaA;v z(u-K4Hx7(j&I(?tD|i$qC(5cIu@e_=lqbUIbum)p^3f{|MNWhw(g>9&+>HDD3rDXu z213Lm}H^AJt9-T3*N27ED#0u>+N zH$}lL2&+EbN3!Pi=9-D?<%} zw`jjaQ;!t+q-VD3V4rGohX(X(5!d2$u{F2=ZGVAI6|z)XBbL4r>#J4-X>1l%k()?O zj*JKBt<4rYW3v2oh;tdLM}!i1G1X~qQfezqsIzIr$VcW{VRka}SI&g!7yhdPA2IZ? zhFxgeIDCuTC_^yq+ndW(%!_a(xrEi>YBfx*LC83^D-}Pl^Vbvz2YYP#xFV+x*?Yu^ zRXy2d5CyauveD>$J1CQx?XnNt?O}>}oABCE*KSn=mUg@umv*9$UdSx0Uh=z2RuK-k z`n+zhxE^_$s21E>U0G0^M42nO{+j)0b^-$r1hu1-YPm$b)+O6Ul*`lru{nG z+BhUx7^NG-9}(50!nR9oBfQ1gnwS|W>l(I0X2jWHR+kkeiW=l{CN3ZR>>3VHxni%nR>&jAVeCT~Ep1TBD3k;ux2o)~x z5+>`mKN&pM9xRLOaAB1!#tZY~qF1_E(%k9&ZWp&g?v99pIF$0LRe#OcILx`M#PEHv znUaK^QF5<`-R}GlJU9k}0QvwS4)l=($o*)$$NeNhEI-;l>`Y@x0@Z%BooM#*Fc=aS z`D5*Ef7qTgoJyM9Kh_Q-^xh7*7ScjEpKQ+`E&aRp^0|QMMI{z-j}o2s(0xse<`$h5 z)=t;kU}229HjE+l1l#Q+w_;8MAPdPz)QpSVg_Bk*wUr{k%5@3;i?NZZ%u%3P2*fGRezHF6h2_R43|bm z9^p`Qw&wt{2V_mjajXN|uK$gd&(>D{q>gZ1QQsTqFQ}@UWtuYN(a`r9t3Du}039u_ zVMonRAPUYO+O|ddieuPnMvB9{IB^D{^?S^!_kiuD zT1kwVgF_1ea`hzi^AD3PkvdjieKXp5*Iw+tcO_`(E*G@#TVG$3}E%<65=q0@79MD zxFTWK^BO)sQMN_yb*j znUgIACMyK#Q6Jpac2!0lqpCz)u{`O-`a&MjbXl>94L|tc#AVE$6DdFmK{^ll^QuN3 zrGmbg7l-u;Tq-w)Fz*ucFsbRwVyEtWo-XI=0yN)#s3$;$K=^}S7Grx>-V0i^P(&OIi>&(>P-6i=W!`Qp z4+39#UaW`({^wpJ?6=qdn2IS$Hg%@psZRdKo%?OuZQHbBKWj*Vp7ci>2c;m$a zEy0!nzSl$&c6*=p!_RJ9GSJkTpCwstQY}AIE#C4q-@F(E=`|mZn=3sxezR7|5?Xzn zEo8`C1U1_;%d<|`kahbye5N&P3OVE4Tv^5oW1-CN4j%Xl&iI27_lamPDD@huf&f~y z;r&60w3azmv z*6v<gd6aQO*f#Pgxoao*JuPkhjOKWv0pMl|B~HvWVx!8Y83 zjj1x`SL)_kHB+ar9P$Di9}2{dy8Y@t(ow>B`eA#Mb4a=)TcOhu--YW)0&wn$^g5CV z{Izzk$q;go5d5|F;eBZluA|r55ra#Up&X?Dpgn&$W{@bHAJRG{4F7{{of3!tLHqFj zw20L)aVXYF6<=x3&&CWgb?1k)PKm|8lC4vM@vpQGPo_nv^DFJgW)wE1EkDd7pY1Jw zwWC!Q0S=X3aymjT!W+&-=KA6-_S@|j<*!idR%EnFOn;qtT7(qD&z1G25bZnOuR-o9 zhPYZ?zPxD4OuM4YWlVHBwgL^c+u7<%mE~TXvL6v~K>wYX9cDwNlM zXz$#XyaZ=AEWYhe+KIjQ?ebN5JU$!6mar=buq9UCq#lB#ND_2s#O{#~c9^E2v>xdh zcGZ;lOge*^e$Wkh0?;xmN7FG0Kl&%_-6P>E-TagGQTL1(nOUN(`l=x6f1PDVb)7{v(p?R8>sHfKN1_ZgnimGd3m;Uw zmZ>P9(OUF0^^})~OqtZo9VqJ%!=*=VquLK_)UO77XFo8AuLgW)KQQR827G5ffbYH< z@SXbsIQLcIyJ!8lspES(^7~3}tRJ`bqYE(&ZIgeV6B;%jzb6E0Lb#L~(|!w=eou!d z1eU|v9NujQ%zmKX-_yavlrQ>D(aHC9 zt;7!>=*Vv`{R7O*YP%2bvFXlR-z}B|$34nyvz@moFslP&YW$R>noiM$TYw@>g9QDs zp)y!}!JebmTMQGt&t;!1v_N1X?aV%ARZc?1;4lNrsNsqxGrDw!M3X;|ogvZW4|Mpa zV6BKv2;l+#X=k#-h5VkLzqL4>iF)kLdogier}$bL$>h9#`}QrDrDU$%Hx}GOMVD5u zP9r4q(TrSU#yf{C%R{cLq?jNdNW1m zR&OlKStU;_C4JzEOok^0QleKiVaIc=?|j_1bZuF|fu_JK)9gfRciMfT>T3O zUvJC5i4Z|=`JdYp=vrUPuGZui^GRz@G1u2poc*~x81B}~D|&OUJbP^BMEOlPxPzab zdg?Tn^iw=Z3JarWyP&F)HlGXy|2cbDBCzSBnz&M5|+{;uC zPfx%2;)^V`I%-pP!wsW4{nWYBXP-HLc9PCg;B89^C&12~&zw1T;oP&&kb1KG_%q*He(Sks&LCz$ zd%{`}jswN3u6u6_hsSpeJQJE1$klX)Kr{@>JrKZV#|*-x_ZIvB-4ML0Fa*4$VwiZ3 z+;rW2m5{W~q_wS>8)z9yx_BX`rI;(W?6yB!i@Bke!}{J?%#E~si+=3vc7M7bM_VfP zV^YlNPxs?k%Z&Xpw}`@Z*|{LY8lb`^I_zc4eczI-QfiWiqIE?)Vr>F-1Uq+Rk|#djuM zXOPO9ecIOB*kNsqRt7^G$U|IR54RqE;@CT zSgCK1@V|?SkTMp<~?t)x_ zKOf}r3=mc)Rh5pi^7e{yMqF+NtvUj<30_q_dXfC22!$+Atr5Iubb(DVhbasan)7H}?vl#ovChj@@bb zNBUoOC*wLK;5~x9y)aL(H;8@nlijb3rt0#Cxz|drT=vPK@cp7h{O-rfFXfZo^Q!#q zzV0IL^)6l+Zv_$L=J=~vO!CS<-o`IobM|-ffuw5*{>2nB<2gR`&DJ0IXZU^rea&2_ za_TS4zH-%-%j0^yGK>PdrdgY9yp6)-$>-q?D7Okggb}ti7?5NO4Go zu_40ADMpd&B&LnI-q=Yp_T@v3STd68^cgW^%=LAJabw4r>myc#YmIL8=Xd*zm@SeD z#jsk;^>>AlVzij+$MM${>i~k~kNRRAR5E}kh3ghC`Q!$68jWOLdB`U>KmcS{j4d&k zKjkxaQfx497Y7-6m?t+_nGN44HhAKsFV+Rh%OCfjx+qqRt?|xIuDEkDe4|(q7Y5fF zIBy8Co9h;PlvEfE&*tQY;=1u_PHu=tb6hbn<8b~#U#y#A!?BZuInNEpPIgml_{6D5 z-G6N&F`{f|T8f~1N7zdvqV`!mkb%U?U++k|j2No923lW3*G2HRLf3TgtkVnv2d!AcI`}Jux0~0EO@(crGH_;v15l%sf=N zJ96~1R7bAC5<#&%SChY3PPzdU$bL;#$DNYnX3YLX3%x$p7FRT3>g-DCZn#o1qwDec z->&S%BS~J5hxvT{%Yf%-Dcu_2#@E91RZy8nii_1J#litcD(g6eo5lhHNj62)yvCy_lbDv;55 zzZL8teVSy``(}VF-LqT0Z;GdqE&>9YWo>nQ(AILDZItF!LGZ&BvveIVTI1^#jCqSE zxMFdDxF{evK4b;Q>vm5(Qrxj*eS)0D2a_Zo?CSWi^>poWnY@(`aD%0rrQwvm-iYi} zGG>Nc%kvmXp|gz#rOMgUVHiz6XO2;oi5oR*9?98j3L1XP&5fjAGv%6Y79qJi*eta~ zM@VnoW0@s7Z%n%3E^aO_Ig~4qw{Zs&S45zxcsA(^8`Y|)jwiMUHrnyMp_FQ=7LO;L zjuBj5F?`oZlAkp`ad~AfW-LCD^xs&xdK;G_6T77FZk-+9rxKZM2R=1HTecF>gLP-H z--={v3AC+`l8s%DT!N!*&=p5OMLwV_mMCsdx~?z0?KR9|;#~2Lqc|CHd zbH4^T)XCm}91dHS269+Kl18>blIZ-+g`1ZaRvdgErTVV9#QkJAo&75o*V$B#k8MF3S|Ja6%ZLZUZfpfB(fSiv#iFTM}v36Y6PAE$6Hv9fIW@X zh}hFujmR??s}Xnx$7%$g0S!&AJMs)Dm2=&ZXCToN;kaWp0vwm9swcv6jlL(sabq|PixEtef@|2%fGWO%$=Q7IU zuRm5|YzVq3|BV6k4~01~HUy782i1)Ynf4i*u^|Ed8yhk?<%<~`62|7(kgzz$hHMWE z5zm9dlWf}@yKuy)F?L|87?0C%Z;B1J7@qoeEx)QjfeM0g)R?J z$+q78;Tx4~I}o-BukPix%|77U9xUcc@#G9rtQ1*G!ffP9JHuY)y}De9SI*sZ6%ps> zkNEnF6x*KP9#RzBz9Y2FM#ydFeOXs*sF>RkyUZhLq(Ya6sANZP*pxWV<#y~3UFL%Nttp6U|k;P=o}XuXqASiYhCfz>%U@#nX;fCH8uu z2nmYq^+FL+6x-_w94Y1W1g;hRb#7nYO$P}}h0%y^?eo-vZ&b2x$Q^r9RI<+>`&M+` zx&3*!FeEJHBrBvSwm)&lh7`s2V`QO4Yt`5ec%cOeOF5whDT*EN+mjT<4tSwOD^av_ z2mQ_>L9v5=XOW`VK~IxOQS6|n$*pbBrU~qN+)9ZyP58sWCyGr}oUDTs#U`-cah-%V z9m>Da7vpJSQelE5Fges4rbLwL(2<8iPAWO{=o@?`P^!amO(ifn9M@Eo>hN|)uUp$h zsSfj&s%slcbtHCK0+SLIb<|6BTHAUkb~F|fr8?@RI((zp zQ7_eLZG%!x##QX4*ktUaXw#%8-ejcMBo9owPC}ce@{XLgwuv@P#ceLyG=(d&n{&~o zDNjyY+n`O;v3`PXkxG0<(WdEcCsrdP#il*YZ{;1*+_6}UC_EZxlQ3uZq^T;bQIqPsB*D)gFjjjpq_`4|uxEH!69+(_KlF^Zic;EUS|V-!2(<$|qk17+TTu*3_mX6#KCtnI{mpoJAeGBY|PpTyOlJ=7gF zFG51yo+df#ZMzP+= zAqolgM&=8e*B7-)yr4xYaEQV_eUU>H_UVfpBHilG2XrYetv|LV?9(4v9$}yU$nubJ zz+bj4ZQ{!Y;!Fzr40y=IH;N5-$b{BMnjLrRlc178PxDAoY%ubp!ajqM9|ijqYt%!< z$Os7g6eA-b>{HCDhlV_1ZfO(t8H%V{*k>rBYGI$D{h?pt(uO>lZfOJiq*@+qMK9sBPm}<1(lA7k54hGDJh$$UN}A_QRo$S+0HYzsbiMJ$AsnE!1T0H4S z)8a`tnl^pR&nsgah!PUS2tex|pk#alz?Aix8lXo2r)4Cw7 znfZ%T4!sUg=hL1@6z?68h=S@GB0&Qwk?8%}5s4s*bwnbZb|Vt;v^Rk|0R>@L56N(h zriVIFaB4&%+NKzh2=zV8v;?bUqX!&@o?{y?GeMzK_vW~^RR zQyHrl?G6!h4@Jh(n7gQVG3GAfMq}=xy2hBh04b${8;)$OF?W%THRf*bem^#Ok3_|k z1luE#AC+KxBvNw;wns9SfVI@Tx_b3%M9t4z%io~p&V=t9)O=&#m~T*XqkkKs*>6yD zDE-$7HUHaquNyYEK+L8sDb~5+-I24-XL%Lvsl`hxz;4r(+&@>HwUr+N+-u@WFDO`F z4O96~tx4f+nwo}t=JmF0eJts@;pWq6q+G}AO~W%&KG*H@2VIo}l&-8eht2rj+<{o} zUwP%o*u6x|(Tc4vg~^>fwHIZHe@+}`0?#cmK~F?!X2lj!nqYEIR5k#UQxT+OiM=%% zk=`hj5KQhx1nJFa23lBvU`8|0=_D#*b zbZqYXvZ2`Yqisp&nr@JHrYzZ<qU*?<*?m!*Mf{kmvLmxlqwa{$N@wJGa!d*0dziwAKWm(X`eC0MWD-;?tj>vU80MF2}V$GRY{=92n4 z2cWh2j@L_{H}%e=n~4sxxbn#2ieiKOU!Crv+g5kc*~uF5u|e`Jr;~TN=ra7t`_&f1 z(FGg~(QXvmiXawmS|*If<>v`7kcp?AhV$aHg}8We(FIzy$lJuyNv^x#HXSY7N@vRF za2X-kM6qV<3;$(=`snXJ67tW-! zWoKn~HjlpBYgScNMG5jg?Y#24Teh{99w$l(N|&k&cuQy@zxQ0jdO3waG=wWwSU;j1 z`K%V%r#x|PPQkarP2b%)kjw^~ho1akWk1o87I9iF$GBjMqU@pxg?1?Kjksz!1q)8X zm(;+k2aLYYY6q+0TF+F7-3w8i8tM~x?~Nv00`I*wmS6I@zh?EZDFz53{7xb#EBc=% z%!h`Gl`=_JGjCI9;uS!{W!CG(J|>K2tzyOnwk*yhGY(OV!9a~Y#y~U=ld5$9#^925 ziNp|L@7`8^D~?z9sW;MK1UAKKaEGFGh~Uf+)*%mCZvZeO`Tdn6X~4LZ&?l641T2*& zDKS@~3u+v()Ey&{{WInyvVX>$!2bP3YlDpA`BSCk@&(O*CIUuiX|1)Wq(qj9H=CqP zAdE_Uz;E4^5v@<%RYdDkcNNk4@r;i5i(SC>m5ixZaRWNPkzvTs6GF#)lj|i%uLE|f zb%z#@v#yderCm>Kl_dW(Z!0KVQ&R=we~~14B9P>X%FZlFe(B74+vVPLj>9q^2=Ztv zXFf}iU7Vwds(k+y+z!H&uEC)@BGNs{l$|)(F%juK>kw%(XWR;bzHBvfeEK1%Z*L^1 zR^h!Nrm~4ktzSjo`y(-xOnWcGMuCI62kDMIU_m%&{CTg2pD(Z0O_+1?qc3wYT1EVw9G{H811Vwn&b zOMf>tqIWFdmMzP+O7_0$$zD?_@qdwIZ!1XjTLa-6Yb`xpOZeiR%L0pVO16Yb2b1Gj zf_GpYf)^W&XGb2GsQ|k8 z#w$~YLU$x+8;ac#g&K<8F=R@2zRSi3VH*WC-dYniW_nc%;qM7-lw@Hv8j}d#jz(h= z!Q0UcZ2Xlj6A|28Can1)Z>2Z|h~<9|ONad(Bw#rIhSK|6Bj5{MtdrX`yqF+aQ*6+^ic?c!4J5cZ z7C0`F@ZfL_9vt?L>bNVX#|fx7V+S(4kg3jL5uh)U#8_v(y=BWvLu0N9IKO* z{2{>`Eq17@`yLUuAnV+eG9f@p2}VO;RWyN%dH`6V<_Nzgrel{j z3pgsVYGVaye9^{$qvJ`(3yUkaSLbh7n7huokSv0%!z@>cWhVwd8y=yVH=V!ri?!;^1Dy!QXBT@JZs^cQxYfY`ypHE=eW05;~+3 zTnQZ{!CkOku@I8reoKwe;of&BYinZ9e-IBf*kkMZkq{TxN_Q8HaJiLgSb=PZ!u=-n zJyL_dM{3ab2tJ2W-w#td}IRZEe+M{D|Zz^Q!)s>Z@o_cEl&>z=X65`QlYiiPJ=)P*>I-0sk((uLrU{z$R_3Vk_K;!uFjGMZ;P(Zk_KtCZ@Qr46?>!n)jAS>Co^IW77N{UJ`?lCjO7xn}a(qkB-cZOQCaC}#rCF8O zLphySVh`n)Q0Wb(Ao5G7>8Zl%8o z{oNn?%e9!>ANwnZi2eHx`x%u(#Qw?Yh~qw3Ncx$H>dQATE#GLyidMdvFe3J~0fYsF zlnp(<7w7p)Ro*`(aJt?bu<-L;b3Nh5=lE^QH~nvU^N8-R@lF30cVTw4bhnn?PG=$9!RBwdZ2QK_b@Q64_2rnHl*v0`=esSBDvQbY6W zYLlL{E0TL%Xq_f_+=HOGLAcVA{Lad*^5cG~-P00YS6WxCxTG{LyF^M!cW_J6 z#guH{5qINzyKOgeOQ0Wbwi_F4Co2Dz=d7GQyyGvOCy@~Ro3B~J2XX*_N*`JtaR%8YP4s40NF>wsUP6f zPd8Ei`?nmmOQT&!-M~c#(qJJZ=@rf#h4h}Z$zip|nVdsBP!2Vyn+G~clsD*S%pVhA1ajLOaV%~9dMl(au*+3yh%E+w5ecsF@v z{zet@t049kf5baE4}Xmj#p`Dl_Vz#(hg(Z;siBHId##0jJ&B^< zT48ev$J{MZ^i{roMA31+CMn)iIuQ}S-tXh#&#-%&3U=#;uV|=)5xtvKIfmyo72I$L z{%k6^-R0zgKq#exJ6OKJ5kTNqZ?Z{#+5$m-6} zTHrylivJCBCF0Ms=CuM|}v7&2yUuvsn5I@oDq_+FMZYb|o%pl(FsC0MBzE;eTYwW+w z2&f#6;$2efZl2z9CY|2+>&SXsr-`&e%Mns+#vtOR5h~DzG<@%AgtE1Rsu$Va1*F}` zAndSp%&7M;MtNBS;<`SCOKLOPzNb^VT&jH2dH}Zm4Mget)@axfY!}(uo9EVm+95#g z^VTr;$S8u*cQ+A?*415iP2P!Y)R{blo5|$0Q8sGwT4bY-Shoy%ZmUc+N+4@{C5e|w z4tYW_?lM8+@hF8fgWM<NlHz|1T}I zC0XqDX#62;y*(O#NEW-D$d-S>x`-@x7gFLYYf6dN@8X>ZiWRhKR}>UWin}WciWS0T z7lL93Cy?Tn4NjbqalbRru}9*k%IB{yuim&~?=A-$op3BVS)X!bEEMad99b8|dMU%Y ze6Lf2Bfs67f3UQ=rj5?}qrWGHI+Eq?jcX-Y?%udolI8BrM1A?iAtxKn1nb<$!n>K7 zPN|8`yYhjxqch(b5V~vKc4Gi&C$Xvv0R3>XEj9JezBVOEncz@vZY<4^c{d7~SS{{q zuG?M%cQu1m4hz*ImJMOmOd5RIX~EajOvl*E0YeERt%srRFdp+(G1Oo4n(v8kU?|{e zy;GC4hyZF3!iLrXJVnS)Y*Olx$A`__UW|ZDhOem#y6EUF= zGF*4n-vy@HNZATO@=)3P}UpAxau2^3n=u&mpsXc0^dNW$?qgEU6YAnAC zue#IoK2Uy*XwQ!^ETN=@WAS1XJ{pUW!-bE=h~nTNI2pI)C+@_nO5kW)ly{nbIthA8 z(@zt7&YA0S?d<>>zP%|lv|!YA`{Yg_VKb$4csSOS(m=xH0EBjf)h?}r)tYtc&M}%` z(C&Ee3kL0u_r74zZZO(kaWDlOR6&XRaun(KQ2pfzLqpX=O=UV^hnv#bmB?yvGu|4h zjb7Gvs?k|PYVuSGEj4+ngci=K>srb)--MOf2)}rohK`w)P z%DEc3%#v9X-6d4$?%aYeo^9xG%WOsn<8A=X${N0SR$(3azYCbKk?5stRK$y3hH6AF zHACBsz{QDiIQT)L1NOk`b@|YO?gbn5~;okS*B7`o}WmPKGb##FQhM(Zy>2}#+d%^M1MQ0 zD()l2+rb;rAgGsbF0WQijn_Gs{!nLeyaBDtSR8Me-0{+f84!Q{c;s!C+6`pG~ znm95VWOzoMjw8bhj>{<-YzmA0RIhD{c?ZCFV-gvxGmS*fq))K@Vz(oaD=VAzSJ|{c z?^V%F)q5Z5X00!VbHZCwc$J}yUrV>=U;etYKii7FZ_BbOY}#tAHz3H`b$3aSdkB{q z39@8W>k?!;K7nR!MpP9EvP4zQ2(s09?+EfnlB!6M3GrE}Bgi#_6G0AvKb==a2>eM3 z8mz#dUb{hRB)=8P=*E0cDPyzv4nZDd@g1Vwy2$#-%xvPtbpozE>#M$xMEpe36$T*i zyDlf6<}9wOcaf%M9lcAl_e5M2!+Pb(JvaCGa+kx{+rOczxC>Q4wl zCUG~6p`G~VCe|#ep0{T6`4KX#>=5fLUgFkqdXiw?VtSIO!!SJwI*b?@uEZ_1c4WBF z+TJIT}vqw;^VX9c2QkjUAlaGad~NT7gZB!OcU35`za38yyZ)^ zQRph)S4cXa^iAKRi|nqg3;tYt&aZp-%C2&qySK*cKC$b56JGa}3Ts^T{_}OEp7ls& zF3ngcIqO*;TV(me1OCm`KE_h}KsPF?C*qT<8K3^%^(((qpZ@n29b7p6HHHh%Vncvv z>YjybwO3*x8J#W2K7)P2_V9LW(&GMv)FN^Vpi?e}6bO@Xt1CF5?4E8o4QaphXwx)ZZXnL6x_W|gw}+#Ss- zW$LgynpI-+xyRJ;4Y3hIf3zgcobUI z2co}>EIJRw_yICpI1u9p$Z+8RPs01oW4Umsrt|TR-Aw00=FN0I+|G@im#hAv*m>DA z9EzQnJ;R~cdD$}@qVq4=GV^xfQGy>l-%RlC9ewI1`(7~)-Sqfq?6ICrJQ_8UdN%QB z6e{W2#G?d5IBz}fDdwj0<IDI`dKONr# z>Y@4R(UQM=dT4%n=k8#~(_75V*4XjXM_7PAaY0JbPMI{WKHp{*{J9W+r?Jbu%-?LB zzg`9~8|SZ=0nEnW4806sHWQrTm&P0$F@NL6C4$c1XEvhpH}dcezO8TY4KLkVy>Vme zg_)^&f{Cx^V0Et}Zq;D_rW`|{E^A}|4MJ{Zv40w;YXgSiPBHx-4mwOf`8CG$ub;2& zX4UMQjMJrTPzJb!hHzftPO5U3``F>VEt3tg!_oH|1t|wgcbEJ_FZ_e^?SV<^gMXM> zM}ObYc*GrIB>E!m5F^o7!$|bONZhi!ginJo5|BgEbt*ARL9m zop2Pxa1`&ZF?haT-4bgt9J?jfVz`F27>2cQL7CVwia}7WF*j)JR+h&|LlB6^NJ9{4 z_bCLyn{6$)&c@*}9%;g3G;A}8HrHo1Qr|Aq{nRiU<1ia8ycQc}JIuy>GiIZ{(R;;p zY>)6>T*vkru46k~hqDr6J>=4LZEdb&qyF6~`;mHeiTy~uy2O6StLrgaE!dAT?8mW9 zu2wTXq+G*?lxz5qGJMDfoz&YHk(tt8iU@TB)}V1-obB{I;Spp!y*Gj`8BgzxFxwcM z2(yjBA;y>=1=iDIaMDpk65E_dSYs5S)Ml__xXv4)$&z}{wzPS8agqZ8Q%V{~8}{yW!q<8+RdzBkpL)C2Mj$53D3E{C!)2Xxr8 zAjSb@5d0@bk^yWoai?5Zd|{Ic>pRv1RQ_Eq>6mj(eFMLLo#6K^TfP49fP>?QzX8YZ zENt#3;rM%;%Rq0-;nvaxFsXkq4ZBR@v=}+KcWAsndDt#{kH#n0LF4spZwZV$=Pl5N z!1$#`Fy2u4>xac%2w;!J-&KRf?^CZf1I3-=poikSYoK^TueO53-;_n-4>w}F`pR_y z-X#!sp*%bge@_!2Uf<^Hg~O{h7aoUST@#0I)V=!!!(H$^55ozbS05p{zF%6ZJ3-+e zs6pZ16_MZiD7?P)dn%~kItcfJ@E|-LM1a#!&uVq~vfiM)Qhssq_H`2+uQ7;FXfx>V zUSja?uEF5dxDpXrNBp`*$79CL^!#2z@EG{(NB5cJImBDsoaDJakZ?&qxPXVQ0{g*- zBXgE3dio&-7IHsXEt!xTX5C^gT<&|Fk5kFgW=re7H+`1EtY(7n%Xda?2YHD9sR653 z{(XDWdD=&H{aRq^#%Q!I)NE}u+Td2|B6hgv&k#%BSiHQjR1M)}L$avgit|g?R(ZtM z$Cr)i#;~;tvQZzlb}H#`L4LzK62nt9PR-{nUi4hZR3yLK2H^pTy8P!XD(hUxr2KA| z1lyOo{Lfjy!nu&CcqZw$&@mUoR;rFWS@!n2ekqXE+visn=P%t@nCr7LAz4+c&WXD^ z?yOttT0L)@l2O^e)#5}_(6+3O_n9qBv9_(Ve429^ibs-m^Mk35_gmKN+u>-s&dLX9 z&S$aA+RoMSfu@=Djm(y%_=trec0F2N86PzJoo%%}Vf%&*a|&7<5_%9M9Es|9(Hg5W zGJ4WmkY>=tVR>k@gnwom>rZ=oh4t;=4u z8M#;A9$iyi>nbNErdH7Lpb^!67 zWHP5R4JzhPmcp*xXb+7}#ztjPHW{Z=7G;xhl(HzBWR&h<0u0Kg^M^AlsC$2NP09vr zIyNaAu<71ieq^!%o8G-Iq-b*b;2|&2?JMSH@<%I^ah%S(KV!tX_AvWsb0)UgN1HRf z;YF}M+MFpL@NM?d=FFiZzRmt(?s#pRLKB-CXFqKok8SqT=JD8OKW!e5ZT8dVaoTht z&<2XR6RhWv^68X6$+oyQ2^pY`6H!w?KpQ7^h66Z28z)#krwJb{=1%2j(S(Oh8qi3# zp|z)TkfEK5LmQ;oQ&FQlNVBJ+MtP8CPhq&}Zi`|u_Yn5EGvz1i6|UKK*B)SzmLAH7 z5H&?wdZ-j$%K{eV9@>A<4{)fMdnA8=0eW^SMMjzZvUWp5H1tS5yvZ>{Lyv3=hkuBM z9@)D;%7^~9!DMJ*@zylweCf*k%9W~@5cQ^V06ri7AzW(D`z*!oq~mSRy!Dx9-|@^q zOR18l zNE|SJIiXrjP%&CDPpEy2q;^e^a6UW{;bq(3&>ZPg6%QvT2 zmu_L)d1c`RUffu|ypuXtF9h3A?oPhr}9#=J+HTJ3QEz% z_P%}|s#HCE>d5!;Hu>4P)04Bu$`_WOUs#eH-+CCU5J2p3ut|leqNAr*FS?T=(V6eB z9Iz_bN~ormCXrrTTSU^cR)uP~(}4t4p*ni|5`3XZvERF>aGUGX?D4hg5PI{EW~mf) zbWsOywUB~fB+SpDGTV4k`?&mEbz$|&@+5Pfd~A-E*YRh~K% z=8CXc)CsQXrp}>I=WO}8mF1Tf7qmidZiUafW9b5=yD9BP#R>0;qdIl!)LNqw66=XG z(@q^dj0(FldH@pZr3Yo3nHkPq`DxaEajmL^y?SGJI;g6b?f@65irw2sReM}joZ9mF z)l1dOD~q=bkT&c9!K=PlS0{D#Q5UbLQ5W#4pSt$Cx;XUZ^9z?(R~B!-yjIVIocd#J zUDVc3Z75Qy4dgTchc)SIn_=lV4~tOnm&+S%D*>f}SZ_kT1APMm;MB_@9i*2BUA-qy z#9fYFD4fGH3%A|Qh)XIYG#Hnon;Hju`;$XfBS@%7jXSJH?Xj?(V%4!4VH+RJg0A#X zO_6HQPmu!K3^Cwo*D)wy`Si*H($d-T#LB`AQ@7xn41s#-~Hfn)FigjAZEhvJZX zsd3?5DuVaICG5+J>nORVpn3PDZG0x9jIaCr{b_ zf0@C$nD6IrEZZ#HXZ#Y zRNdwIr805bGYfg!NUYI*pDS%n5Mw+xSERXdnnUBv^aC-r(cHtXIj%Nn|BZ!ftf9L8 zt&0mpi4VuNX6IOg)wB`8i*2!yAsX36BY;5~8J45`8M#LUfDWYUq z#Bcv49s}1an7p>_lllT*efc_H^fnD&e6n&fX@7S0_Bu6&a=yk;?xV=Ip*^;!>WrQh z3!Ty5#iL34qIz1TFA6J?)n91LHjFu+M>6?k>xO$_t9v#plUH`v$+?g#J0j_zG9&t- z7&Guct8TrQ34@<7*;~^IBNR*E0m7VR!)a*}!h~lvAk4E@=jds&#(A#M=Tv^TH5mxK z2uGu7Zw8Xw>dFn4SVI_*%UZ}`>%<+y=}w|B(_NAzepFU;GK4Xo9PEU!|I z82gH@KE2Hp{Lri+cMbB&s=OmSJXMOyI-}Qb3;47XvEGacB>B{ZjrYDr;}X|(8UHvc z6)Sg-y@rr~g4SKpuG=1a#je{`4iQZ@sN7SiSh-MY5{bd#!1oder9}@8E@5)2AGun zjWh21&Xm{A3T3E$z|RUPRpDoa6txd9D~~ZNZ3Lsy+odygvl91BEpHaNe5M~BEw8=} zqbiUDxlMDR2>7)UX($GohD6m5?A7xhTd=GgFd6Md1Q&9Pm(O+IdkahCO9F!Eqhu^GK@>DL6=g3P`9vl$@o=OtvjG4dzc%zd#NfK zBG+X?iIRm*?eu$@6vcP?y-bQu?PN*iD3sHD>|#mFYc6T%haxd_PPV-vP{SD_dl=SD6T=Z|hUsO`mu-`8#Df+kHUkOG8 z4&?VS_$NJLtRii64%c2y+EBR`Hn`PO0rPyI*F6zSilz>XI_WVfnmT|wOiCY4o0Jo~ z#Kk-H^+xSzJ%cub(zJ8XZy-{%bI@-fQnYiB4fIx~yim*^X_;*;y|HG>r9IiY94jvw z$&t?SWP$+{H1|iD`|UO6xyWo{<$nIj$^0Mn^G}Lej{5m0MQ4vP{|Bv3K27F_@Yj6X z+*5%xHmy>(!ep#c^E}xtFUSHN(>zZO7VVrCG|y8kY1sv7^seh+6&w4iiJkKLObS!+ zl-FmHqT(s9&nzf0ogbAxv)(qfp>`dbfHLE(=+sR6i;dc7X}W9B4?(A9dU(WWdO<6H zj3G>Jyek{Wqo}{fJl&xtMt96_Pg1mb%x_Opw0VrtiS87HMP}HZhd0=sjSUuPFz8RH zh6ZQ+J|#tiGk%|vqQM!zPl+ggqUBV>KD~j6Py3)@Mw!pmTY8inJ?W*F%S#KlUtC^! z-cx1T-)oj%#S)7F9%wVmAM)N7>Z z^vT0VB6s}Nq7&&y!nJuGxm3$mSN`9&r0Yzef5qd*nAj;bc6A+2MjVS}EWRO0n5wHp z`GlAnPt-S?4OZzH2%q68DEf`LObJ-0!L-E2yNV}?Dh3Q?m z5^^dMC%sBP_{_{3J+*~4GtJr;Ke8OuT+Dd*O45Hi&YMk3aWLt9=Glv_QxxeZpe@2O|sk^Qap@DH{oLuoT{MvB{$ zv6`kXUU>7|+4FCH_Ng;8x+~dM*J$SRU+yTDlkE-dXL9`eTyaM-UfY$-=PP%>Grrfq zMSJYdct)|09H{~!yDCoC($&(}S{l{)%x+B6gxIBT3Y4zGaMEppE)H~(AJyqZ>ZQ|} z%u~L-MH=YW089DsD zd07CdX^jF6bx4u17n2U67(nLogDs=2rBY^0ak(?&QlAD37=@XgKC(_cIl;OM~8A@wXhAaDhX(nYPzt>97WJ=GZr8QF{PTNdrse49t zSCVP)37WQTEyr3*dsFHhNg!NGRr;};3)Lz{*AD+_y|+Qzol`wqVS9d}^hmshC=+=E zY16Xc0b?3sh`u-vrt?&G;flYF**Vbs?a_`&t!&>O{BA|_w-e0it=uQ3ciWYpDZN3L zlHafOt!BR55RDB`Cba97R;r97bvaV6X=5@{Qi8fVQ|4l30WA>h?Z`*$@qdUEX_CY95qIwB%%!DdjkW)$d z!ga}Ys^v@b)kV%2nyLA8_t+hBdUu$2h_kh!G3A3g=ceOfl!4pyfrAl%{Y*#FgG-7ob~6O1du!H|6Jb_f zc3J9y*RQlDIS56OSL(w6^en417CD1QHl}k|xm82HZTtk9rTg_+SkN6L{*L z9k0VhX9CQtL0^w#AfI#vn-Km+=(lCt|1a~DZZY4|GF*3yLuXoBMr06y47jc3bg+`} ze+J2K<`%!{=y)ep5o$yfH?u1^TxjeUuP$Cr1vc1#ufXKr)QdRi;cqQh=WnEE(5Uo$ zy2WnJb40Jmz=BQg5x(eiXJ@yG6`|dN0HxA;p|`^d#Z51sG>MzuP(*wlT=YKS&UezFq*Gjwq;~rg7oGzwHN!6ws@HND=LxP*>zrD`1C9-Us<@Q294jT z<+kX{)H8g)z~{M6<UGgWvU>36d1nTo0AGYiq2 zW3D%p(uZo1o`xT)JRGeW>Kut4_w&KyVE(VFDBEK7;sQ$fm8JO`#us(YC5u(5>GezT zSTY>GUJM&fG*EtQxw&HacG}Z-XyF6NX!tcPVMI}(oxA2@eW8pIM@q%;=NGw^ZyOa* zOL`imTUi?F_I1+=qkvFeYcS&E( zUDD^}rH(1+LlSW#+$D-Baj`L`L~YH?8&)}0v6H%L?(msPT`FmCH;pI_?xuT0!QEU0 zYZ40X_RgAs68ED^x_i>VZn}HYz;3#G6xi*DBQG(Qe?#f7wnj_lu+2=H%zf9yN4~Dl z7HX@em{^G*x^EhjwFymcj94WpZP2`70m-1odJp?;B*tRw$U`B;pvE43EP1~h6g#B^ zGx{A3W4eRkY%~&lZXfqIO5+G5_APk{D)yF)pcL)A#Zr`_owrzu5^SxDy+XzvgvFa| zl%m&6y{0)_H}UYv4`xSHn2Sx=5d-0gP1r#oytmmo!TNF+B8oRR@jVK)M!*TTQXAja zlb0qPkiX2Xc=~0txeHm2JN@#P*|n#F#$Kl%EL}#z@ZIv%_a5K0 zVzZU^?N82F)0lWxX!=x>vB%3+=-XYzHv0Kn=;JQSI4#b#9=fi?p~?ufg80V`RqivD zz58YC#!xW=-IqUvvD-PM(6>SUo*{?s#P+UajriAUGNH+Ru}Rs7?u+rY6Z!3Xs~oh62UFcFnnJLT-bA2>nCnGeEd&F0$4R=pIb^L$)g2KqLd) zmB>Gqu9~0*B|;wNzY3@o7#_@U+6oeI?zuVpEZ`jL1J*VH&Y_ocX~r!>zAyN98~5A^ zSG~<%wqWNJ@Iw%T4XfDBBNu)(rQcq@HR;$!=b*g`yX=*n z8zCaI%o4+W+Y!iremvM_JfQJ`E{M>INn` zpEy4CfoKkw&pVzIezXy>_<_|lAxUaqlo^Qu@2hc(?E{=VX9S8_9Yh#+x(R{0wX%o@ z2VvJ&5L9v8!;Z0_Ine?j%u_u35~B{r;TbTB5;OxwNYI=sDTH7+zqfR-<{nt9)mXn& z#lsO08p`Po_l%(&?iuGcWjNv>Mo__9D~>=AycsCqVm&t(TdD&hv>Qx-fF;c7*l^(U zCE*;~f51x-$XLqnLW*!<`8L9wREQbcm(7uv%%j$@sjO{TQpi%ALxT)SaNjb>fTq}8 z<}CEi{K3+j;~1lfS2Mv9rq2+8>Y*m^uC@d1%-zn2U?hUv>2<&eBpLe7U18|L7CRZb zn{u#483;Cm1|w_?oxDvCyn}YjvE2^ZEl1=eNKuZ+NsyvEeJqMT|JG&yRtb>|&i*LfXyJm3NZ9@^zae4 zAw@~HY)i6b%a$y~PFp+n+8b{&_Bv(bNp`ZyY%-Zm?DXENon$B7ah$T7vcL1ydmkPs zik|$D840}KednI@)$^V2e5XtsHA=#ljNkG<2dgl};vJcc0wBiKIWtmt?1;RUdmV8QL(X()cZNX|eQp%AFv%77TME_|)2@RtI z()h6Pisjc7ieF1cC1s;&x&E5y4Oq0-n{8{}zvdU#a6A7GnQWD=W>Jf@UGAC)k}dM} z)VAeoepI5K6>5)K^9x%~H!OO?O%IESY@~+emV5VBuY{RiNBCbH?LKCL)$cFb_HJfI z{HGbct*tBT%H)146Wb}_83pXhni0d0SDCl6$dYPeHOYl@D?2rAdPXp`v^q_>;}KV9 zw#8{rKx+leZsNj+VNy4_yu3JjVP$z{sVB~2YBF^h_7Tq#Wkh5fu2z`mJ?iG-`eo=M z;m$7enK2h8Q@E{$^4+le=Q`}xE~qUCeFLV)xrx=M9#;!F@mTX?cWI?}idinLT!aAC z+Jr@^W972v*0|G=?77}nSyU4>Smhm8wc)3_U}Nr3QoACXuH^{v*uvcGwD^QcyRBH^ zYU(J8-op65iNZtB)~d^LDM7I=x4|ew*n+V!&TXV&S}(LVQrTOrb+OiDTkB#GDMMCbA3`5;bi_46_FA92SoT_RYuj7{5WTGv1v2k}xmKJhqnY&*Xl@GB3|rU?ENdaLuFrT9}pT_Ga0W z?W0@fPQ{(A`PHgUq0fas$!gtN-JlW&C{vVeOzlZKwJq`ZG7G3^{J!y74m}3I8qrc> z0IU%$C2F?K%yLQ$z&2*Nh||jKrTfj!F1~`AO(sPNYTahIDM78<%q~h$>o&6svlqE1 zf3vfT&mdp!JBg%)MS=@$1+Jf8fLiw$#U#9 z%aIZ|dyT@FlAwWSiNQ=ps?rC}BMN7dN6zc*bI0V|^~oDcao*C%tJ9$^Syx2C1kFB2 zQ_co`j;64pK4=On$_N7=`1fK(U{~lhW1>Vo1`I2rL_G#Jbvl9h{6QcQb3jWQW2UhG9@QHF*_NF;tjZTVT4Lk1_a~L=ytbT1JpF+n&WoMd#)gu1hsU zV7mnw(SAv@?2?$An_bp{1gw~sMa=t}R?j2nHK1zv<4im#dxN-!)2`&kulj)7D|(Uk z$T^L{DRB{DDbw*f--lkWbcY*NP-6-$h)(Mtjp1BReEsq)60E(~_oQfsmS?l8w&tEy z@;0KdjLL$HH$+i3;WL?#l-=en%)G&E-onfqjOU3q*K9DJCzM#94V_(XeSWclOLEqy zQtTkRFE2#t<7}?P^38w3>OMK)6e%Z-4NviFe12CeCe4|5^$*cDud&oRM`IFQtck=R z+78naCt^`CCJmy6If(Agxo|EGi{3P$Zp=+&8;%)9qkoKWZ+&v+hH3}ytvp7%vXv@g zh^lYex>+dL?+Y60aQVT^ZLpvptko=Nd;#KC4`XzIH<-;+W-LS{_q)+{rcD7f{-M+qFo?YbqqBfdT zJl;-8TQ?(e>MQuV><1mMY($0loEp`YE3+1Jqat!NA%w1|iYMi? z(p639BrdPaPhQzYT##uM2%>RxTtJ@eesmzX>ZmOD2lULBAGnr&IXsb|J_sI>}Pf@pbh_LA6ZHjc< z=4@(3Aa28q?yGvfP!ikkFU#I4(^2ELTc;eRHB~b=ZP@!;n4M}MVYM=)WHltm)MC{O zL4MWYn+)hNOVln>foE9?_p$r0x2v z)ZJeC(Wz{-a23I725}d&J|pXfKGc~0b?5U9MAo=^449}o8;p&gIg8iHx@^VZ&=8?o zcsMyamY*6YG8q4!7$+#0(Bnm<9(dCvzYISZHVe9uu}6ms zXTlcwagfhj<;OFHuuWb(%tO08jGh?}JETrW9~mDGa|+YRQ{e{vPzX1whrvR)DXP!b zJTQFh*x&D^RdBGr-lpRK0zSQ z=LSzr42S(}+jUYL8XO-yb!KoV97w(y8+mj%+@E}N?9ACm!UItq=ZrH$!|L~gwxoVL zB&8FBV`mE^RO4{en60Jf9Pp9E3k81{YT<^$@c2YwRO+BG-kpA@;O z{E=|TRQS}$>5=hpSUU08$-$A)k)iOo&>R~+b=>yq3EjnG!^ek*!;|tM6*#KskH`?6 zWlElv*mtK@Up^>gPcu;q!(l-_)z1gRF@YIVFyjIL**cVRP$9>@i``8~&*~fu! z+CJ_NXYAvF@S=S@7+$iEhr-KJaiK=Yy;=9XH+;f9_k~Zo=Y8Rvd+rbC-Sa?r#Xav2 z7u@rK@Tz-07{1*-9|{-kGa>z!-1FXW***7#EADw;c+EZchu7WnK=_n<-XGp@&j-S% z-Sffl8TWiBeAYhi+Y`RSJ?{7M(-=jfhbXyWYN@Ld`6*cZOrKJE+OV;}p&=k4P_ z_=0`hAHHZG4}|Zvj|ao|*~dfSOA=49Qb_Cx-|wFHh97Xxec{XQd0+TJ_uL;ZwsW_)3BQU4})vPNV4yzn+1oWZ_EVBQSBW{a^F>x#7Zi_%8}} zWEAEM`}tReO!$v1@502f@$la=NB2M4e=ETy^`3b||06eFpBc}tiz>^?zEECtQbNqi zlyx{iiU+(O#RJ(dpgktYWM!3nmiw=nSnt2ZC#0nrbwFCUILyD=z4&y*-7 zvJIbNb|=x@RH#HW9F-!qS5?-Ea|Aw+C^(29iF1U=4QPkwxW&*PfJnwAg`YK9F zbWJth`b3hZ#80(BLoOe);l{L7g1aHXPjlZS;p1H69WoJaYXiJ~loO_MVRJw{HnXPyD z#Eb`TV$)ufBh9M4h)y2g^z5}+6)taedquU{?2t)Z%Vv;aEkos$wA?7xGAV3JvzKtY z!q;p~q@pKnb0Z?*F54Ip9Y_u#Ge-^YjFH%wk`gIK%fX8?a*CQpqMy8o-+;sKhDNSt za;~Zp05eBbb>Kj*W;QWX_QfI~-V|+7?HzWxiP_}pEHN=RQRkzoBb0sR`rLrbBEjz_ zlFVXqd9BQ$Q*?8RySeKN#z;jBob*&uMwI#tMb}E4%(y-jy*VX}D7RqnbVMfBTKJ2n zS!pU_I%#683tp&ffr_4Mm`-j}a}5#MH(}-}ZA&4#)78^M>>{_hK9{(e+vszwPQi{@ zWH;B$M`JH(D=XS7C>f<=q^IKxvpD%^yYRW0i_2COs;7`Pv!}+cWfeDE*7AuI zzDp{==Hi+tRa|g~Qi5vsf>OsPC8%Z}b8uJ8$s$=tGvjVrRSB=z=lWT~YxZRuB!n~_ zL3qsp@De;VT~~wmjjAm1HU}JPiMKfbYNDruns}QB>D8Wi_`#U4h*M9Zc^2b>x5MJ) zM*aekFJ_4QD-&9sME!i0K${0$Pe`E6gY<+BvP+=NBSDnwj`c~(qQ>%hGQLD4PZJwT zPQXvkEQ;HmULz7z^N3p`5>)d@{d&2KqpAeeyoX-c9&;i~_AV3b`YcgS1-LkPw+es)ig9OCglk zt1(J=%pq4p36D8M4K>D=sN#ge$XT-#MtQv&V+$BhIE*b|JORcdsux?Miu;3*XjgJ* zP4UT5^7dW0fme&sn`p(O=ndWQw1W74$0A!nd_R|R=N00%sNytLEyQCdPbme>*h$w3 zu1l9L&%y!}9}tbEE-vCkj3i>k5cHm++!I?-eA|5h<~E3*cCBiI_-R_D11Gdc6{A6; znMCaXjyk}007o5QM^tgf0d@d*#sPK!cm_bMJ(z8|sGW z!Tzwrz7gyXgMD1pep6KO7%Tiltko4MnLu5;$v?8 zZ-U}utbZL;w==4E9EwA+NZ`YTn^82~q;+;^$G8`in=#pw#FxvF>xA6nj$9|?9*3M3 zD7vDGNhZKPMNa8mQWUjX?kaa_AhycCH1;mAPrAYH0{bL`ucucWRZIu%OfPASRpZ2S z3zKp`7ZYrVo3M+qQri1_N^wI=t;ZM&(*epLHN9deOgFWO-6+#*b5wB&3fPSr3ZjHa zHDPJ?X*U6si(3l!W^i9}xHp6Q61cUvl8-8$0QV7xTa-PlkE`5NQhf=Wq$F2F6w~Fp zDaZlyGsF|{i#iXLCmfYLRGxr}9)T@U#XQCYjDS&EtzCPxpo?6>py-q{j2quAV4v4l zh4jc4u+KL(nOM+Uql&9wzguCydHvJaMVcvU#a8HCb#%5u=PGmt)i~S{RV+cLKep<% zR4Xot!OJ3ff9y&uwJPoa{gOj}2k4hTe_Em67FApe+H&{B34L9PLTZ%h9IjN=sFYsv z+aPt#G01I@x)!x&A5x^YM-?|9b-yL`2A#GBsS@3{9ilfJ(d`hu0Z{^jFlalXif3`Y zzbj5_8`o^22|cM+&V`kWT+_JOumdvBx_~-6AoFZXhlD?YOm|fA9Au6s$lSDftI3pT zS2qNoa|F8~_#6aB6~UcR@SaR^;6xvpYL(qq)DpVMz}2h8zY}XQ5H=#5%T}|qT#EGK zy^7kMQSf30Znigey4RAl5`O;|<`$-&r0+DoJ3$YIdRqkjiy63?<_A4d@KT0Jewf9i zb-5|*Mf-um%u>BDbA{lCqzzX5K-1}g4ybToQqAar&Py34`><-pt|)j}nt=_b)e@%& zEzfcK}74GQxp`Ug#W?XM0P_2 zJhlUOL*$hVyNeFl-Wvt4Wr9|WV!cv3MQD2VB7K8qfm<%aMoYG(7cyXKFdfzlnb$Jw zTg*1ICkj3y1G8VakJ6Q=hzR$Yo1N!`c2gRApaB{?D0`ss5g8OM$Lx)QZ^4Od$%vRHqeNpgn-4eNu;I^QMhFrAII8JSer03Q?D1gMaWFHhhE-lgP zus;euDdVBmp}K-dkw`9ibB~LfMN8m%LG*(j40b5`LH|h^3awfhh=NbkIuthCX@Gg2 zFeqAF#eWME;F)=E^~5?!tnUHv^65G=00ZFtbOvEqE7A5x!DlkcAxmA6q~#PPpSTTC zS93q;_@c(3+Yh?WWa>hL?m!fLx2&+uvA$Ztc%B$TPViyA6rno+I=--L=>X`yTh@}! zWpOYHJ}1MLH|P#}eCj;28s9M1!7aiSRCVes*ZZSP_5eZS`&N21^h8P0Hr zV!1?$mBgUj@6~i)z}QOyxCjFg8--V~ff5n1_1S5LhiA{pc z9MN^?p1KDj;IVbS2O>Wzb=Dbk?u~*UlVukRmrYfA^4jF=oHD+E)jDkVf{hRCV!Ib? zKPHP!Zw>cF!A}T}(8DX22-qJiqL^V!+1)rvDdAewG*7I|UtLN&4=U+bSNcB4fXVWT z`ylfZ!YfXx;T?>EpOl`tCsx;iyX5b_zWD0gq*%2ewrc^=yV|K9iIIi1GB3?P2B8Hy z+d+fS`bp`aIz{Vf6#NvlOlKYimZF6{3hYmL*ke)fMGt!nSc(?*7_eXTutQPsB@a6U zEJX`D1nieQ>~IwPw1*uAmZF6n2KJ{t?C~i084r6LSc(?*IIutCVNXQC&wAJsz*4lZ zCxHD~4|_5Se$K<51eT(OJqhg3dDxLC_<0XI0xU%fI|A&_d)WJ<;1@jX{lHSRu=fM| z3m*1?DELLVkr|5zfTd{X`2)cIqHr2LZl|K)mptq#U@2PIQ^5X`hdmtyzwBX81544u zo(A@pJ?v-{{ECMi1(u?P9R>DRJnWe$_*D;k23U#~_6)GU>S51D!LNDPv%pfcuxEk& zH4pn>6#Tk}eGpiR7WP44f8E0tqTn|?Yynt`7PbKFZ+O_TDELheI|eL83p)nvZ+h7A zDEKW8I}R*G3p)<%Z+X~>DEMs;I{_?33p)YqZ+qBtQSdt+_8hPjE$lg9f5*c<6a~NQ zVIKmPqJ@13*x&WA4@bf8dDw@6rD$Ov2KM(n>?2X|`yTcYU@2PIM}Yl(5Bq2o{DFsk z6j+KD_EBK}z{5Tk1%K#a9|M-6g?$XzKlHF~iGn}!ux|mDqJ@16uz%!X-x>v9_ONdS zmZF7yE3jYou#ZQcxu z-~s|Tg@>I6mZF872KFyJ z>`WB=rH7pXmZF870roFF?8PYfD-U}SSc(?*BCvnuVJ}6&Uwha~z*4lZmw^3i4|_QZ z{>H;z29~0Qy$tN%c-Yw}_^OAU1(u?Podx!*9`=bS_*)PA1h5n>>=VHLt%rRw3cltU z{FA^^v<&`9V87-W{9F|Lorj$RmZF871NQGc?0gh_-NViUOVPs41N(IkdnF3~-osu2 zmZF8d0_@*=*o7$g2M@adEJX{u0PH__*sD?Sj~@0auoNxqRbcj6>9axGM z_U*v_lfddz<6;#2Gq7@Md@%pEa4a*ttWv!1@H5)?*Nvfg?$IG@AI(lL=EL(-w7;53;RxBU-Gce zMZx<$>~p|Uw6MP& zW356N?7Nlr33_~g-hC2pLwpyzen)#LA5J`@0D`6 zysqu@{QN5T%+JpYIAsg|ypVs@gTKJfANJrc2smX6{(^vi*n_{w&#!s#7X_TM1%FY% zU-RJa<>%Ku_S&gYHN^LV{-T38pP43*}faC9` zcDYEXMiHa?>U}~Fgf*r!-Y4`vDzjGi)l2;R&3>p}5^&14t6viEZbxKYttG zoFTQ*na<~_lpJ!;$?pRL^&tbhZG69rFj!%ur3p; z^`rt-?rzi-4hQ_Fd{bYRdO)boboI+pk580yk{wa?_#i)jO8V}w(cW_-n=%wrV{I*s z)Xjj>S$Q`?*W?chDR9|d{h*Ngl=SM8iqwbr`8&(G`g%*8G#5->&A(Ci;_fb<4~y4a z>lufc#S-oQkW>b0cD;Q_D)XJ?+>aesm3f7qzpEU@7q^JY-m!0uNu%#4oo=5COClos z{(VL0fT-5=?<+#*yUNjrk!2IE^eR7pwj5>keVE}{6Ubzf*+g-Ty7h_mst^Pt?s$sr zy($DhTaMQHs3Q1be*U}+=spHiOe{q~#-{Bo|IC1r$O(Huq0YT7CP0^z#zy1(u+RXB z9mx+1jn8}D_!>WdpLAYVY%DjGo0kLx;c9o5>sRI6;AX~af{zbuC%q>4zE3)7TGjb= ze*OWO852rLZEZi5%4Tr^m*@0EH@+jv2!dPjB~jKIKMpaQR7?n)CVwNZTlKos0y1_= zye_r)0j7lW%lLFQ+peqLo3OcD%R3`i!iOXON+w%7;_Wq2k5?^Ryoj}^aucj9n34*5 zbCuX>(>4`MG7P!tK5co*C)xvqcs_);)Hz@33hJ2*Bem$YY<_7I>L>Z?wvA_BHPO=A z-h}O}b9COAUC>U3>&n_PxhYAfF6OQ>jQK?GxKNeW4c7Vh!E3z(U}>{iCYv*hWu{^O zsshKZt8U7ECWCXkGJqw|WA0ls%4tXsgYodiR8k$^^wc8Cxv^-~w?zreP*K$u1)jbh zCpZNBMn%6_p1Gv_ZH+sYWl9d6`BseUW+h`tIvXC9#`Zw!iK%FDymMujAirVbD#;~{ zBOaHc4LDY5N4y0+fozjZrC8Dl;}m1PtTWe3T#G~(%W$|2+L;j1Tyx8v?1t;JYW#0Zm8uN@O#)h;7h@O^Gm(h7*o> zs6y(K+h%W{taVtIPiH1V1~H`yoB8lJLoS#R5;pGEl2o(xrW);p*F44~;Zkc&FUnjK446dqy&~+a7_i*xDV%>iyRHB;;GQVjl+BvFbrSzxXB(+8 zZ-}c(Ds&@Vn8*aS7?HEuZWSsLL0!R>^FP8|E0}yWMD?%I^- zI+YXYucA=8PC5!;$vWvsbgoX(&TJrySS5E$rz3mfq9ey=18NC)C7BtFCU$?(>2}F1IaCgh`gg zDjTM)sbyB#H6!3h+r<`NoXj-ncv2E@*yNP znq8L?)!bOC$CDByHZq=?1cfffbLY**Q*SR?jxZvc4nNi9NXW+CWyV&ApXy?4F>a?7 zFy%bqZ+Gi}AhTDP@Fav1Q`Az^({KkZG4L@=Ja4?;DM2Qm(@}6KQThDlykp{D&Ssm_ zOngld;*FSnuIcg&r}4|Z`X7xaxAD@#!lk*H-pQ-8y(GCJUWPQoF#f(DFVC(U6BWYL zOmqpS;+f^BW3|L#HiBHP)K7Y%=eytY%U}7X@-5Nk-fMe%O^crK+r~S3pD~-nJEAGl zhjM;U=YZQK*QLmH$bLnZod`iU4eyHRkn@!TV6#Pk{aPny|Ecvj*LAspH(h3h{%kv@2%V zwPR;|a(w)3d}0_&6dn4>1ViyrDoTINAxNUkC>wb(be`mrF(K@zl_!;@?)9YGVuz3t zT~c4S)s|R!^}Q!Wt17>dkLD6oij@qilXU~Z7%^FR%+w_HnX`N0S$y5_6(a)NhQDxaGT1YUd+lu<8q6GoQ zlxS-=1{ip?CK1CeP7rYlN(C6N+<+7zSaY~{@2;=-blb#)=? z%dVq^7};u#R9b@7G!b^?_ksn?9~B8(y^9WHYv=$Rl@=E5!7s^%HG&}nQSh+&*NK{K z-;+6@nrLU@CvA}=^=KN&um&hN$YQOTh|)EMq}EKtc(EIsUbucmiSacBSB7Tm#aWKm z=Pkr}Qw5`bYgWIWHlG{nkxq4{gFctfPD`gMpFtBwTNgxKIEyFd)UwJ0R#Pw~G7TqE zL6aguDx7$e{}DDdO9?%pM2}RXXybnKP9o))5!8XGhqDb!3oDD9p$O4)73G6!X;JPi znL)e96xeAERjAirnPN1NZ5DFpttRQb(!ofOHA&>PC9%us;TQ*a%p|QlF5&i;3Xvd4 zzaukpjksuX0$Q9=r<0n3e-Vu`xt$)zQj{DNwSAjcQAEr(8XrS1^xx_?`JXJ$)~8x2 z_)=jxKA!M=!!Px|;g@%IoouIXfTHHFarP%!UPz>^o2 z7Upn_GjqoQ51RLqhub1JPdaZZq~}n*eLE&ECH*B?9;&6x02I=5EAv;>1S6Y=eNFUy-U1?!m zgypo$-o-L4aoSCPo6-;>lBLB8*SUjrI4yE{-yCGGSDP@*GgMTem zlXhIg*;!0W&nH$zoqajVC?4&9wC`4ePN>QsQGX@m#OF6?`R49YN8NT8abmAHTR_ zocB1^iORW(%Sm<@DY5fZ)g)EURj8av-okJEvoG2yU#EyI$Emb>#J>seQnsW^RxT&E6!~7bUPDKqxiQMlC|quY5wy$=IjrN{O0B^-5e6bRduJ*kymC z=Fy(LN}-_6rcJ?yd?#|DyKb^0w~9zI;vJuYw#jIdDS@`BBPVW(kYqA62krTNL`2cM zt;}_X4o;!Zo<`?wNpSO`qhz}V$r;+_UjZMqn#}>16118*;NGQZQD`CAR&RV9eyo2~x6T%Dg= zYnA6SeI)1S)=-Qcq{jekV?E}z&}wgzZ!+Q%gt^UCypoEynUx7LP`9x%^>kt~vAa$<~h1iAcf2@!m8 zR`#eFo$LBm$Vf7`4%dctkm)eGH4sCl1Krv^tT3kbrn0RW>^2fBjOA~~TK7AhHN9eP zTX5-2um%~{O|XV7bTtW`7XC4h4zFRZ^z%9X%{GG8E3iOr8 z63ba)PjeBbJuiy;yOMfu2{Z=;5B1)1hrWHF1dT0+4iliHoKz3N_OiVhQIA;$wWRdH zS{P3DzMpSQ5@Fg>^X=6wN|hJLtlGgeATE%Im#ijSzSGywX_RKB@gc3WIqfNdl%UG0 ziz!jn9ZZcLxEmSv$3A{VlL~~AwXunE7qb~VV9Kz9% zOdh+9ED$JGzPnzlpD96ccT>BWUc$^n1u~a~CVQ zG79?34rGW3lw8Scu)0-iSw^D2I+xu>MJr`34+Puu9r4*oR0V6-{5Ayl$c*q`pN)Kt8kMSL2x!;T>CHi8&3G7ZukT&ZyDU_hM zpF|di=!>c-I9zsjhNw%4zVL@*%R{vc?MVt#lL>OTx?Q~Zf-32VBSBYQk`7{epiW?^ zG(Y}Z*%^VSf+kjxl)!bwWQL$b1&@%Vh9FD)#!q)Ky?f$w=E$Z){+7CvC?+DkaF{FmSQwax{yo+Cn^-52rmD0wl+adj4@bxtE2>>(TLKPWlQJ_kKr0LE_pXvFVE&lE_kj^sYw_-^y{=;XC4<R7zd9g83I$KnUoi3v@7Wm&f9#3aW#)78Qfyd^3EDpYMN%;qa|tFn57IeaottJr+o zQaK(iHp3Y0>DXGs2!<*ngz*~_r;43cA7=S!ox&%wl4Ve<@X16hJ{;?vTi@HR1D`%^ ztHZIJw$Dw@5o6uRoU0JZ{!(pbHfLpOQSDCKvY%G7WfKI8(>4XNndP^y-iRzx*@7f; z;8Qcxt^;H<_4&zUGxhn&WHXigWFi%DUr=8b7D+{G4T!xqF#{v(u^wYR{JizOZv)GG zOU$HIvG0`P&vrn1Sj`!nI@(O^`qbTER<}NNH?UucIHazB8-rtrLxbL|%!GwVO&5(< zIBBCh+lz@?V|~Bc2lXv*Ca|4 za2YMOFp8BGV{-!YkY~qG4D%3%k{`@Aol8kg$$XHfdP^9)xtJ$@!OhU~b9ZXy|R4Qh=u_QAcF1~X32Knbt)N8fk z<~PAV?`C}}{#l(NWJYp-SEgVlOxrP zHg1+NnwP+iI+?R!&M7>m$$SKNviTM@cd9cST63p5IH(*I6nCm;3&GVyf-?xmOJbCu zV2Ti2dMQQUk&=F>PZ_Gzn{y$^VNvz$E<^N#Qa`q5atBlW;FTlABGqK7BBJW`8c3}o zF&aowk&LdX(*TGH+O&;E%V@S!N>otNHj0WwZDdXK#mzJ>0D;ct)1bsQ(&W%ddz(Nf zn~KpcHnXX$dDKpejC=v^X498On`rvdXcNs&txl~i%!>A+Gj=gTtv1wF!+b<#Tg>5_ z5|wRX9*78ynol%tdMrFuxO7=gaGTg}iSMoSjj92Rm zEncNBH0LOzFXSB6&var)H%Qj=9m(lr_=il{($hzJV1vIS~#*)_Qs z>~#YlGEUZViV{dSn&m}_ZrwG&FiBH9L!xnx)ao)Y@d^Dy@CnWYn3IK)VTb zrc5nVW}@}mkl#{DA6^=_Of9b{lzMdUWq7O-euIK{6;gnP?r*Q7g9{RIM|=xoQuG`ZNq=gSV}l7nDX!n4 zL?cSjjJx;R5;Wuf0VgQ^zpiY%7nJPNO=P58-RxrT%Q@h%(RErHUgpj!2xg1)+rO#^Ex<9yWHVc6l&GG z(UtiNGmBzqtU)BCR(n>7Nj2)tNnS)~2NOm*=M_+`0%}aWSD-XfwoFvV)9rPDR2N)X z&=?D&#q$73g!T4%jmEw|r(Z{1+1iQ&dvu)^OmuBU1*v?FKnY`4#Ufn{s*q>RQw0CM*j($sW z`)t9N_>ir8*dVSMlZ(?!?M+IET%QmkXBT%5kDSHU!NSNnAL)cVRLhg+ zR~F}%+M889>g>x2-bMFjvrbG}YHv|!lO}+!Zo5aU#J5yPd=eea)&gS>&+V<$y|yoD zBj_<4^KgaaN95mZVm6#lvJ2#w_BJ&j5kH+voLKlJdTX{N34G(c7Q>d>+f@TfYbugR zZk$$fTcJ6HM!#H&PGuXD@1-ss3UM;^pKn(RaiREAN%zNTu02OX8kps_c$zua^3=Wrs334%7awBDFKyHXE5v_D{)-*~gxse$?N#-l_>Us!xn!W)*_b5@a%y}8ba zX4(|6&TML0iBiX=<}3_EqE0J$R^gNVxZYJ+_Tze2Wl@`m*t}g;nL?76jCM(G&ZP|KXsyTh$@frxxQ-@5FvjSj!u zKQw}0_H~tf0{egV^|Lzi+q~Q}+5JXa7g(d%Rjm*KFmxRw0-$#XkgErA2hcNxEq^`A z>O10Lm4`%Z#qDmD(A+2{X{3fSbsbMqM(O594 z&Fzhm%N2t?X@CIak+}rY>A@o|fy5Y~Os*K3xMJvyk4mUk8r z&2Hk?K&-hvr|#Ix%E?jDLXVM)H({&{+jWFpt8|ORZql_W3mI$R04m6|)LPfhEM!_b zZ6GZDJv&kMH}ttip~CR z`_0M)Y63gFb>OuI4txvVHdpaF@U~HLy^u*;(axafit$P+9dSZ+DCp|IW zWOYiQZ132h?rX~MVOM4iBx@+Pze@In6HXk31}Jp6&S-!_hq>DZClor`I*cn12`q9f zvd&mbXVMo*p(Pe+#-VKlZO%>1M$qQm0%!znu4}X55G1eI6zt{Z$J#wvvBt4Ab%B$- zeR5PtFv!Q&fsZ7E6`NcZ;Siden(tJSKPfVxxoP(v39HVcBeO+Jw(-63_*ywkiM+Wq zMc`HO$2H#5BLzoyJ(ObCy7f?s&5;+}P>MHpW+xOS@?C5RcHyaHTj%@~5q}mTAX8tM zBdwmq`f3L<7fG8|Z$wPwLg8yx)x6CV|I$Juon})-ADz@zGF`Z4ajBR)| z?TV31lpq&R6iy|(HW3BCcvESD<~B#Oi7wdYI$IKIY->iOSDSDXG`DTtW;h%PHM)bl zaENdMpOSuWk!mwkyB*bLTH0N22UU`8boW>v&1R@}A3CCxWo6|g-RKDhaJ4$-g+#0P z_siJDW6>3F0ew$kJ;x;jN6*$?)2J5E_w@BkHWy|P88~`_Ja@NiFE{vI>cEQB=O$1q zz1Qnjon++bt+AiP=&@CTOE0`&>u1(b7J1 zod6Lk&^K_uX=xi3=sSJJ3?ErJ27)1mFDaGMmRqCR4%GoiwH>Mh^}7unN%1kzt1mIi z%G;qjFnG+cGg5pUBq&X{O5LpVj=o8byC(yqK~>JswDZ`q@l6D0TEBHeLFFy_YYMgCh6 z(F^}>p1Vh~t8$Ykec)YR$sMf{rV?q%zri!e2aP{g?sm=~3D?{_eAl?NF)rz68 z^Qvun6JE7g`YK+bFD{x=UbRh0uUf>w+wiJwHCwp8Pi;+k)wW{OC#J#5tF|LJC>c!5 ztasbU>RlR{-AlZNDS?3z=`c)?5=^ke#2KIji|W|9&ooocdmZ}^I2QGl%50lkc9uom zOh0)G4DAivQvZ<4SnHO0MZ2YzzFV~Zo26NVg&7lHREo zvsDvUF!_Bl`i4lR98^8Y6@?lH)o+kj;iH4SQdwEc?eMA|uP@mqro!SdS`8{pg>T|8 z>Kc&_2*W*?@)?zg0mN_>XG+{pgZfIDPEulW)uenfYwDC>D8Dh)YWl37qWENHtLv;M zUzzdbQ?E2;7(`>xY%vQXX~g+M(-9BI#>S)vWaGet2@l8+^9tkbX+0q2m7V7QAEL6| AkN^Mx diff --git a/dist/protosets/unpack.protoset b/dist/protosets/unpack.protoset index 6f88938cad8c4d4d546010fd4c8d3a589a078eb9..e15b1fba3010e2d700035dd16dcd556d056ad416 100644 GIT binary patch delta 4408 zcmbW4U2I&%6~}kx&Ry@F{hs~)aJ)7oP05GJS3yLo2w$}doS%hF>lF#Y?OV$axSKE%`m zX>x%A3mN1B>05O!77`cVXDCt9^`oE=p<_A-bPc4glEsnuQ(+L4IHU!es zhMg89PUO?f4(cZ;@n=lpP%uJb|4|{J;pZ8XxS;5dm^q;W8O#X@_J~PbP-@TOk#jkDk;?FVc^uTCg|B((>16H_tj^*+iM&d`qASfM369grGGz`L4;#fE< zwhYOjpo01zQWsS4s1jWrgo~K4ZAhCSux}uHLG&r{JmWbXaUWR7pkoE^1N%J7Djjf4 ziQ|mdH5&s9SuzsraaOHq)=}aF>ThOs07IMQZ~&hOmqRMyF<#Z4Bv{D2kzhSms%Xb? zB~FHwh=Yaf(`+2kbP)*}HJ(gcwJ`~pkSu}W)~RN_>)&PlM42|Y9k z_7qE-bxtYqVpz2lSV+?oDX=fH3{}k~$7v;A3WG=khBQH>0lyRmkx}C1kj;RFG;9X! z%ORUp;&jMn!9p4~3-&Z~d)X-^UI}3Z7}CHB@GGI?oDyfkhRK12G>w@9dxj;0BSi4L z60e4S^I##3-@FU>)zEQ4iPsn}>zWn-LzJD|in;j9B-A#J@n17P1_ zF{%AFlz2DjpL?kO4ZzT*ff|6{4I5}siHo6e5G$M5qWJ0~7ucR7FI zGP-sD>`beB?bB)RlhrKi-FS#yS+7!(Pqxdl!B#qB_@xGAVs3h>GcmbuYO>vIm*Wi! zmN-4z;y?1PCD}%P!|q=H>?_`HGt6PRt9?`KbLP_3K}5KttgN6;uu0&~k`FY5V!sE&q{3TZg$5-qMN0S=4uBF)RMNP_IcKSS!;o;IZd$%OI(s$xFgqE` zU5Uve-9@LS_f1VVCnj61$?oC5-R2F6%mu>G~KjT}xbNkrs-Mc=^dnuPqImd*=ngl$1`S{`>X|?cZIj9I>DkFW z4|~^kh>@XVmP`eDtl6GL5=~W<(ROFDGuJLN%GNtv5i8vt(%CaJ-Dyqk>9orh);zxc zOKazRM{DQTtqq*7UFvD=-Fn3Kx#nEc_#X=$RsYIl;lDy^_mUt|JJ#R(|IM~EhWq`z z#&mw(w|~TH59FoYY_(=u$clPA5JMv}wW-P^||#z((8df%?mOa$9Q(u3{e zBjY3Y;JuQR4(XAxvHQ9|A77<{!fX!yP0a4T_t)M>A6j+q!Kx_9amfYlS9T=st=}oe zQ+BK%H~4!5x9dLd;!oJ7?#PvNf877ZL6bzV=zZmiyv>Ku4^j+y=?~b(&1e|e+Yb!; zLH70o-MMAHU-u1z3)vWyJ25v7g;ZqFYwi*|GpSfnei3f{kD`podmrr*E7rhKM)gW#15++??>Q_aJEEoTT>y@icL+*->sF}#kLX}C+%Bb@$NrDx|D-@j-) zCD5PFhjxtb$I{S2%V=;ztkbK8&j_gCpoIx}G?GKc1~-kHRvQH;jp182AL*(eQ4N77fNWk*)XFH0UpJH{eu z?|0u6ckc0D@=;o0;fR#qz@$Jss4!Zc6iVo%*BFJuIJfV@>i9N%p2%2I%B*w<74O~n KU?_NGD)(=Z=`u0^ delta 3448 zcmbuCO>A7%8HVRO_q*e{XJ$MzXJ$N}u^o>Gnl^4_E4TqfAq`Xl1yCe{QVF%F7<)*q z6g%;Zjiba|ejBQU5NgN``GJH$5`IEagX9gch$0nrfm9*bu%Q*3?&zkgO6_~@J!g(U z?7Hycz2~{_`TowGfmHxIxx8_N==K~1g<4ump%;6Wp7NG@mL4pZdX^r* zrJf}#Z&{SgZVYf)5*xWE5d?lfGaU5 z@Q!~V^&};g6TlAmmDoY(${jR8L15{i2?`1h2Tf3+(66nUJRxG0lnx5ys>xI6>O3y; zal8-!9~T*`^jbD&_D1Exo};c@XeuX!u3QMm9NH@ctB{`{QIL5w7!rd3DXkP*=5<$v z@2T|Dl==g5&01`IJ6Cd z0Y7IGXO%uoI5|n;nmkN?Qb5*;AF+u;VG%M(91=E1Y~rkgf8Hhzl}MaF9WONC=WXJw z6F-VaW>LQjndFAWc(tfUp7AOYe}P2RusU(bq#0NQ`vR3KhDGAXTo8=&r?m}2Cw|NY z;VXX8?W#W$kV!>Z4?m=-D2ue>Ke`}rWVEzF;LJewg6LDcMxv|(4iSGJVCbaFkbu{y zq)fya#V?TzqZ+3gyDg|zJmz`pF-Ar&7d5jKpI1PooV67X@V z)s1mhapWqI1q<0{*euwHKql?TDLz3s`bl4NU?FV~Ij|?FUw=|{>+-1oE3VIZz>qof zZXWO}RIq*SSA5cx4X^ftg|su#5B4M#ZPf~jPq`opU?FV~1+b@*AVM8QQSoU97Xd?B zxCr>Pi@2otjAKh+AuU@1d&aR!@vDwiU?DB5z`jahuM}m)uesip0YlosECYUx^2s-Z zMMd#hXIudbX^ksj&$=M0iqDZ4G$pNqg|r8&8Uj8?)tc$Yfa2Fl)D1iU7&0DIlxYC$ z>ohQE*qY+=ZsKcTA(KxjiyGMTr0lU9RQ!e;u0gPndf-ES_6GsKL8Y=Wt}A}i8P@?r zTH`v{H=S`q@da0j23Sa2i3ZpUt`b9vFFJMz>_rND@DSjO4jxu~$-%>bA+7N+*h`Kb zQT&#Ra0D!5@|9*W0`@J+>0c2&Ya0~5?br<=U}y_(0Q|OtM-{*0b{z!^>6`A1f_;ZF z(ik@tzw73w2^P}MPZR9BZhpoTUrrVWb^XTxL$fg+1AO_)o)7-^XK^?aZQV_G(1+_! z?xx!)qU&fX_>?8ScBxb;`qvh^eeF;G2&lBaGDrWR^>6mjsm!5kD}+C>er?73;H&)E zK(=NU=DUm2Gu=+~(Fix9XggP{<(Y*?A6=NA>~yEQOPz_miwoU_Mzp$}>!NjMwD2)) zioSS&H_(abpC8kMxBg59J(odldOynEFfy?;zju0O&&2ZPiQd}8FU(#$9UtAkgMTiL zq@&ZHh@t4r4sO;)WFQ58D?C5dlDni}{FG%<{n3Aa#k-mcKB#3W)u6`R&7ILVpL^Bl-Us>C{!*qWH%aFBN?DHX zy-GhGFSGt``}!H&%EK+I;8y;@MmZJpSQ?1VU8OBs2RObLf!DhaNPW2U+XQ}~HYm5n zJT5qOzPT~gv~_6Cw!71Fzl&%;jOJTh-GK{Z-Q-0Azg%8DzsY#%YgK)G$|^Y5Z@lT@ zbljXN`L!==y+TiR+KbC`GwtZub{_sti|f(uhj=vnJITKL6H3iX@2+-N4S#RXcDDB| zwL9I$_jhz>yR&y;zSC}vKlRzyYvOvj=0^V{jU`QOaVu1+49o}FE6cRH); z5t*Ld6_3aNx94cQXT4SV_MXY)-9qE>Yz2Q2$(g9e|6n8|_7gW^8|79h((#B@qbH_$ zTNr=J(AooMNhGqme?9hi)ui+*mGdU?sGKl5-fBmp! z9^p%aM;OEcSFE!hnL;N14@IwSg>|7YZmjhL6}H@GtO?e|Oxao!C)WCrorM1ZPjIEI diff --git a/server/parameters.proto b/server/parameters.proto new file mode 100644 index 0000000..7786b98 --- /dev/null +++ b/server/parameters.proto @@ -0,0 +1,34 @@ +syntax = "proto3"; +package unpack.v1.server; +option go_package = "github.com/unpackdev/protos/dist/go/server;server_pb"; + +// Represents a contract request message with details about a transaction. +message UnpackRequest { + // Identifier for the blockchain chain. + int64 network_id = 1; + + // Address associated with the transaction. + repeated string addresses = 2; +} + +// Represents a contract response message with details about a transaction. +message UnpackResponse { + // Status of the transaction. + bool status = 1; + + // Identifier for the blockchain chain. + int64 network_id = 2; + + message ContractQueueResponse { + enum ContractQueueStatus { + CQR_UNKNOWN = 0; + CQR_QUEUED = 1; + CQR_ERROR = 3; + } + ContractQueueStatus status = 1; + string address = 2; + string error = 3; + } + + repeated ContractQueueResponse contracts = 3; +} diff --git a/server/server.proto b/server/server.proto new file mode 100644 index 0000000..9b04b6f --- /dev/null +++ b/server/server.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; +package unpack.v1.server; +option go_package = "github.com/unpackdev/protos/dist/go/server;server_pb"; + +import "server/parameters.proto"; +import "google/api/annotations.proto"; + +// Service definition for the contracts operations. +service Unpack { + rpc Unpack(unpack.v1.server.UnpackRequest) returns (unpack.v1.server.UnpackResponse) { + option (google.api.http) = { + post: "/v1/unpack" // Endpoint for the unpack operation. + body: "*" // The entire request object is used as the HTTP request body. + }; + }; +}