diff --git a/.licenses/go/github.com/djherbis/buffer.dep.yml b/.licenses/go/github.com/djherbis/buffer.dep.yml new file mode 100644 index 00000000000..9b2814197b3 --- /dev/null +++ b/.licenses/go/github.com/djherbis/buffer.dep.yml @@ -0,0 +1,32 @@ +--- +name: github.com/djherbis/buffer +version: v1.1.0 +type: go +summary: Package buffer implements a series of Buffers which can be composed to implement + complicated buffering strategies +homepage: https://pkg.go.dev/github.com/djherbis/buffer +license: mit +licenses: +- sources: LICENSE.txt + text: | + The MIT License (MIT) + + Copyright (c) 2015 Dustin H + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +notices: [] diff --git a/.licenses/go/github.com/djherbis/buffer/limio.dep.yml b/.licenses/go/github.com/djherbis/buffer/limio.dep.yml new file mode 100644 index 00000000000..f8bc0a1e105 --- /dev/null +++ b/.licenses/go/github.com/djherbis/buffer/limio.dep.yml @@ -0,0 +1,31 @@ +--- +name: github.com/djherbis/buffer/limio +version: v1.1.0 +type: go +summary: +homepage: https://pkg.go.dev/github.com/djherbis/buffer/limio +license: mit +licenses: +- sources: buffer@v1.1.0/LICENSE.txt + text: | + The MIT License (MIT) + + Copyright (c) 2015 Dustin H + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +notices: [] diff --git a/.licenses/go/github.com/djherbis/buffer/wrapio.dep.yml b/.licenses/go/github.com/djherbis/buffer/wrapio.dep.yml new file mode 100644 index 00000000000..43e4add2660 --- /dev/null +++ b/.licenses/go/github.com/djherbis/buffer/wrapio.dep.yml @@ -0,0 +1,31 @@ +--- +name: github.com/djherbis/buffer/wrapio +version: v1.1.0 +type: go +summary: +homepage: https://pkg.go.dev/github.com/djherbis/buffer/wrapio +license: mit +licenses: +- sources: buffer@v1.1.0/LICENSE.txt + text: | + The MIT License (MIT) + + Copyright (c) 2015 Dustin H + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +notices: [] diff --git a/.licenses/go/github.com/djherbis/nio/v3.dep.yml b/.licenses/go/github.com/djherbis/nio/v3.dep.yml new file mode 100644 index 00000000000..061bdeb19a8 --- /dev/null +++ b/.licenses/go/github.com/djherbis/nio/v3.dep.yml @@ -0,0 +1,31 @@ +--- +name: github.com/djherbis/nio/v3 +version: v3.0.1 +type: go +summary: Package nio provides a few buffered io primitives. +homepage: https://pkg.go.dev/github.com/djherbis/nio/v3 +license: mit +licenses: +- sources: LICENSE.txt + text: | + The MIT License (MIT) + + Copyright (c) 2015 Dustin H + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +notices: [] diff --git a/arduino/discovery/discovery_client/go.sum b/arduino/discovery/discovery_client/go.sum index 6ee34abad18..5de1d6d0afb 100644 --- a/arduino/discovery/discovery_client/go.sum +++ b/arduino/discovery/discovery_client/go.sum @@ -77,6 +77,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/djherbis/buffer v1.1.0/go.mod h1:VwN8VdFkMY0DCALdY8o00d3IZ6Amz/UNVMWcSaJT44o= +github.com/djherbis/nio/v3 v3.0.1/go.mod h1:Ng4h80pbZFMla1yKzm61cF0tqqilXZYrogmWgZxOcmg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= diff --git a/arduino/utils/stream.go b/arduino/utils/stream.go index d210ad08a3b..7636f5935dd 100644 --- a/arduino/utils/stream.go +++ b/arduino/utils/stream.go @@ -16,15 +16,24 @@ package utils import ( + "context" "io" "time" + + "github.com/djherbis/buffer" + "github.com/djherbis/nio/v3" ) // FeedStreamTo creates a pipe to pass data to the writer function. -// FeedStreamTo returns the io.Writer side of the pipe, on which the user can write data -func FeedStreamTo(writer func(data []byte)) io.Writer { - r, w := io.Pipe() +// FeedStreamTo returns the io.WriteCloser side of the pipe, on which the user can write data. +// The user must call Close() on the returned io.WriteCloser to release all the resources. +// If needed, the context can be used to detect when all the data has been processed after +// closing the writer. +func FeedStreamTo(writer func(data []byte)) (io.WriteCloser, context.Context) { + ctx, cancel := context.WithCancel(context.Background()) + r, w := nio.Pipe(buffer.New(32 * 1024)) go func() { + defer cancel() data := make([]byte, 16384) for { if n, err := r.Read(data); err == nil { @@ -41,7 +50,7 @@ func FeedStreamTo(writer func(data []byte)) io.Writer { } } }() - return w + return w, ctx } // ConsumeStreamFrom creates a pipe to consume data from the reader function. diff --git a/client_example/go.sum b/client_example/go.sum index 476f869e4dc..5f94f6a6de6 100644 --- a/client_example/go.sum +++ b/client_example/go.sum @@ -74,6 +74,8 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/djherbis/buffer v1.1.0/go.mod h1:VwN8VdFkMY0DCALdY8o00d3IZ6Amz/UNVMWcSaJT44o= +github.com/djherbis/nio/v3 v3.0.1/go.mod h1:Ng4h80pbZFMla1yKzm61cF0tqqilXZYrogmWgZxOcmg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= diff --git a/commands/daemon/daemon.go b/commands/daemon/daemon.go index 425f93a2a95..2cca2aa6704 100644 --- a/commands/daemon/daemon.go +++ b/commands/daemon/daemon.go @@ -266,15 +266,19 @@ func (s *ArduinoCoreServerImpl) LoadSketch(ctx context.Context, req *rpc.LoadSke // Compile FIXMEDOC func (s *ArduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.ArduinoCoreService_CompileServer) error { + outStream, outCtx := utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.CompileResponse{OutStream: data}) }) + errStream, errCtx := utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.CompileResponse{ErrStream: data}) }) resp, err := compile.Compile( - stream.Context(), req, - utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.CompileResponse{OutStream: data}) }), - utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.CompileResponse{ErrStream: data}) }), + stream.Context(), req, outStream, errStream, func(p *rpc.TaskProgress) { stream.Send(&rpc.CompileResponse{Progress: p}) }, false) // Set debug to false + outStream.Close() + errStream.Close() if err != nil { return convertErrorToRPCStatus(err) } + <-outCtx.Done() + <-errCtx.Done() return stream.Send(resp) } @@ -345,27 +349,31 @@ func (s *ArduinoCoreServerImpl) PlatformList(ctx context.Context, req *rpc.Platf // Upload FIXMEDOC func (s *ArduinoCoreServerImpl) Upload(req *rpc.UploadRequest, stream rpc.ArduinoCoreService_UploadServer) error { - resp, err := upload.Upload( - stream.Context(), req, - utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.UploadResponse{OutStream: data}) }), - utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.UploadResponse{ErrStream: data}) }), - ) + outStream, outCtx := utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.UploadResponse{OutStream: data}) }) + errStream, errCtx := utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.UploadResponse{ErrStream: data}) }) + resp, err := upload.Upload(stream.Context(), req, outStream, errStream) + outStream.Close() + errStream.Close() if err != nil { return convertErrorToRPCStatus(err) } + <-outCtx.Done() + <-errCtx.Done() return stream.Send(resp) } // UploadUsingProgrammer FIXMEDOC func (s *ArduinoCoreServerImpl) UploadUsingProgrammer(req *rpc.UploadUsingProgrammerRequest, stream rpc.ArduinoCoreService_UploadUsingProgrammerServer) error { - resp, err := upload.UsingProgrammer( - stream.Context(), req, - utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.UploadUsingProgrammerResponse{OutStream: data}) }), - utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.UploadUsingProgrammerResponse{ErrStream: data}) }), - ) + outStream, outCtx := utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.UploadUsingProgrammerResponse{OutStream: data}) }) + errStream, errCtx := utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.UploadUsingProgrammerResponse{ErrStream: data}) }) + resp, err := upload.UsingProgrammer(stream.Context(), req, outStream, errStream) + outStream.Close() + errStream.Close() if err != nil { return convertErrorToRPCStatus(err) } + <-outCtx.Done() + <-errCtx.Done() return stream.Send(resp) } @@ -377,14 +385,16 @@ func (s *ArduinoCoreServerImpl) SupportedUserFields(ctx context.Context, req *rp // BurnBootloader FIXMEDOC func (s *ArduinoCoreServerImpl) BurnBootloader(req *rpc.BurnBootloaderRequest, stream rpc.ArduinoCoreService_BurnBootloaderServer) error { - resp, err := upload.BurnBootloader( - stream.Context(), req, - utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.BurnBootloaderResponse{OutStream: data}) }), - utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.BurnBootloaderResponse{ErrStream: data}) }), - ) + outStream, outCtx := utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.BurnBootloaderResponse{OutStream: data}) }) + errStream, errCtx := utils.FeedStreamTo(func(data []byte) { stream.Send(&rpc.BurnBootloaderResponse{ErrStream: data}) }) + resp, err := upload.BurnBootloader(stream.Context(), req, outStream, errStream) + outStream.Close() + errStream.Close() if err != nil { return convertErrorToRPCStatus(err) } + <-outCtx.Done() + <-errCtx.Done() return stream.Send(resp) } diff --git a/commands/daemon/debug.go b/commands/daemon/debug.go index 2ef82f96ac1..11bd203b21f 100644 --- a/commands/daemon/debug.go +++ b/commands/daemon/debug.go @@ -50,6 +50,7 @@ func (s *DebugService) Debug(stream dbg.DebugService_DebugServer) error { // Launch debug recipe attaching stdin and out to grpc streaming signalChan := make(chan os.Signal) defer close(signalChan) + outStream, outCtx := utils.FeedStreamTo(func(data []byte) { stream.Send(&dbg.DebugResponse{Data: data}) }) resp, debugErr := cmd.Debug(stream.Context(), req, utils.ConsumeStreamFrom(func() ([]byte, error) { command, err := stream.Recv() @@ -58,13 +59,13 @@ func (s *DebugService) Debug(stream dbg.DebugService_DebugServer) error { } return command.GetData(), err }), - utils.FeedStreamTo(func(data []byte) { - stream.Send(&dbg.DebugResponse{Data: data}) - }), + outStream, signalChan) + outStream.Close() if debugErr != nil { return debugErr } + <-outCtx.Done() return stream.Send(resp) } diff --git a/docs/UPGRADING.md b/docs/UPGRADING.md index 0e171c8666b..34c00a402ac 100644 --- a/docs/UPGRADING.md +++ b/docs/UPGRADING.md @@ -2,6 +2,25 @@ Here you can find a list of migration guides to handle breaking changes between releases of the CLI. +## 0.25.0 + +### go-lang function `github.com/arduino/arduino-cli/arduino/utils.FeedStreamTo` has been changed + +The function `FeedStreamTo` has been changed from: + +```go +func FeedStreamTo(writer func(data []byte)) io.Writer +``` + +to + +```go +func FeedStreamTo(writer func(data []byte)) (io.WriteCloser, context.Context) +``` + +The user must call the `Close` method on the returned `io.WriteClose` to correctly dispose the streaming channel. The +context `Done()` method may be used to wait for the internal subroutines to complete. + ## 0.24.0 ### gRPC `Monitor` service and related gRPC calls have been removed diff --git a/docsgen/go.mod b/docsgen/go.mod index 103b07df790..f7ae2aaf1a2 100644 --- a/docsgen/go.mod +++ b/docsgen/go.mod @@ -21,6 +21,8 @@ require ( github.com/codeclysm/extract/v3 v3.0.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/creack/goselect v0.1.2 // indirect + github.com/djherbis/buffer v1.1.0 // indirect + github.com/djherbis/nio/v3 v3.0.1 // indirect github.com/emirpasic/gods v1.12.0 // indirect github.com/fatih/color v1.7.0 // indirect github.com/fluxio/iohelpers v0.0.0-20160419043813-3a4dd67a94d2 // indirect diff --git a/docsgen/go.sum b/docsgen/go.sum index a41105f928f..4ecc5bb0182 100644 --- a/docsgen/go.sum +++ b/docsgen/go.sum @@ -88,6 +88,10 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/djherbis/buffer v1.1.0 h1:uGQ+DZDAMlfC2z3khbBtLcAHC0wyoNrX9lpOml3g3fg= +github.com/djherbis/buffer v1.1.0/go.mod h1:VwN8VdFkMY0DCALdY8o00d3IZ6Amz/UNVMWcSaJT44o= +github.com/djherbis/nio/v3 v3.0.1 h1:6wxhnuppteMa6RHA4L81Dq7ThkZH8SwnDzXDYy95vB4= +github.com/djherbis/nio/v3 v3.0.1/go.mod h1:Ng4h80pbZFMla1yKzm61cF0tqqilXZYrogmWgZxOcmg= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= diff --git a/go.mod b/go.mod index 2c191e1793a..e335d26045b 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,8 @@ require ( github.com/cmaglie/pb v1.0.27 github.com/codeclysm/cc v1.2.2 // indirect github.com/codeclysm/extract/v3 v3.0.2 + github.com/djherbis/buffer v1.1.0 + github.com/djherbis/nio/v3 v3.0.1 github.com/fatih/color v1.7.0 github.com/fluxio/iohelpers v0.0.0-20160419043813-3a4dd67a94d2 // indirect github.com/fluxio/multierror v0.0.0-20160419044231-9c68d39025e5 // indirect diff --git a/go.sum b/go.sum index ff5d7567959..af28bd4122c 100644 --- a/go.sum +++ b/go.sum @@ -90,6 +90,10 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/djherbis/buffer v1.1.0 h1:uGQ+DZDAMlfC2z3khbBtLcAHC0wyoNrX9lpOml3g3fg= +github.com/djherbis/buffer v1.1.0/go.mod h1:VwN8VdFkMY0DCALdY8o00d3IZ6Amz/UNVMWcSaJT44o= +github.com/djherbis/nio/v3 v3.0.1 h1:6wxhnuppteMa6RHA4L81Dq7ThkZH8SwnDzXDYy95vB4= +github.com/djherbis/nio/v3 v3.0.1/go.mod h1:Ng4h80pbZFMla1yKzm61cF0tqqilXZYrogmWgZxOcmg= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=