From 36c770760c69169ba4e5b52b923877d8a167dc97 Mon Sep 17 00:00:00 2001 From: Sebastien Binet Date: Thu, 27 Apr 2023 11:29:09 +0200 Subject: [PATCH 1/4] all: update to latest Gio API Signed-off-by: Sebastien Binet --- api.go | 6 +- context.go | 48 ++-- context_test.go | 8 +- example/hello/main.go | 10 +- go.mod | 8 +- go.sum | 406 +-------------------------- path.go | 219 +++++++++++---- proc.go | 40 ++- shapes.go | 154 +++++----- testdata/api_shapes_curve_golden.png | Bin 8494 -> 8347 bytes testdata/api_shapes_golden.png | Bin 12382 -> 12580 bytes testdata/canvas_golden.png | Bin 6272 -> 5853 bytes testdata/gopher-image_golden.png | Bin 29014 -> 29735 bytes testdata/hello_golden.png | Bin 10667 -> 10823 bytes testdata/path_quad_golden.png | Bin 5321 -> 4649 bytes testdata/push-pop_golden.png | Bin 3219 -> 3410 bytes testdata/shear_golden.png | Bin 2841 -> 2755 bytes testdata/text_golden.png | Bin 2423 -> 2731 bytes 18 files changed, 313 insertions(+), 586 deletions(-) diff --git a/api.go b/api.go index 9157ef5..a8af61b 100644 --- a/api.go +++ b/api.go @@ -9,7 +9,7 @@ import ( "image/color" "log" - "gioui.org/text" + "gioui.org/font" ) // Push saves the current drawing style settings and transformations. @@ -55,7 +55,7 @@ func Fill(c color.Color) { } // LoadFonts sets the fonts collection to use for text. -func LoadFonts(fnt []text.FontFace) { +func LoadFonts(fnt []font.FontFace) { gproc.LoadFonts(fnt) } @@ -65,7 +65,7 @@ func TextSize(size float64) { } // TextFont sets the text font. -func TextFont(fnt text.Font) { +func TextFont(fnt font.Font) { gproc.TextFont(fnt) } diff --git a/context.go b/context.go index 011997c..a08551a 100644 --- a/context.go +++ b/context.go @@ -8,9 +8,10 @@ import ( "image/color" "gioui.org/f32" + "gioui.org/font" "gioui.org/op" - "gioui.org/op/clip" "gioui.org/text" + "gioui.org/x/stroke" ) // stackOps holds a stack of Gio operations and state. @@ -35,61 +36,64 @@ type context struct { tau float32 // Catmull-Rom tension, used for Curve. - state op.StateOp + state op.TransformStack } type strokeStyle struct { color color.Color - style clip.StrokeStyle + style struct { + cap stroke.StrokeCap + join stroke.StrokeJoin + dashes stroke.Dashes + width float32 + } } type textStyle struct { color color.Color align text.Alignment size float32 - font text.Font + font font.Font } func (stk *stackOps) cur() *context { return &stk.ctx[len(stk.ctx)-1] } -func (stk *stackOps) save() { +func (stk *stackOps) push() { stk.ctx = append(stk.ctx, *stk.cur()) - stk.cur().state = op.Save(stk.ops) + stk.cur().state = op.TransformOp{}.Push(stk.ops) } -func (stk *stackOps) load() { - stk.cur().state.Load() +func (stk *stackOps) pop() { + stk.cur().state.Pop() stk.ctx = stk.ctx[:len(stk.ctx)-1] } func (stk *stackOps) rotate(angle float64) { - ops := stk.ops - aff := f32.Affine2D{}.Rotate(f32.Pt(0, 0), float32(-angle)) - op.Affine(aff).Add(ops) + op.Affine(f32.Affine2D{}.Rotate( + f32.Pt(0, 0), float32(-angle), + )).Add(stk.ops) } func (stk *stackOps) scale(x, y float64) { - ops := stk.ops - aff := f32.Affine2D{}.Scale( + op.Affine(f32.Affine2D{}.Scale( f32.Pt(0, 0), f32.Pt(float32(x), float32(y)), - ) - op.Affine(aff).Add(ops) + )).Add(stk.ops) } func (stk *stackOps) translate(x, y float64) { - op.Offset(f32.Pt(float32(x), float32(y))).Add(stk.ops) + op.Affine(f32.Affine2D{}.Offset( + f32.Pt(float32(x), float32(y)), + )).Add(stk.ops) } func (stk *stackOps) shear(x, y float64) { - ops := stk.ops - aff := f32.Affine2D{}.Shear( + op.Affine(f32.Affine2D{}.Shear( f32.Pt(0, 0), float32(x), float32(y), - ) - op.Affine(aff).Add(ops) + )).Add(stk.ops) } func (stk *stackOps) matrix(aff f32.Affine2D) { @@ -98,12 +102,12 @@ func (stk *stackOps) matrix(aff f32.Affine2D) { // Push saves the current drawing style settings and transformations. func (p *Proc) Push() { - p.stk.save() + p.stk.push() } // Pop restores the previous drawing style settings and transformations. func (p *Proc) Pop() { - p.stk.load() + p.stk.pop() } // Rotate rotates the graphical context by angle radians. diff --git a/context_test.go b/context_test.go index 8862735..3245e6c 100644 --- a/context_test.go +++ b/context_test.go @@ -10,9 +10,9 @@ import ( "math" "testing" + "gioui.org/font" "gioui.org/font/gofont" "gioui.org/font/opentype" - "gioui.org/text" "github.com/go-fonts/latin-modern/lmroman12regular" ) @@ -28,8 +28,8 @@ func TestPushPop(t *testing.T) { if err != nil { panic(fmt.Errorf("failed to parse font: %+v", err)) } - fonts = append(fonts, text.FontFace{ - Font: text.Font{ + fonts = append(fonts, font.FontFace{ + Font: font.Font{ Typeface: "Latin-Modern", }, Face: face, @@ -54,7 +54,7 @@ func TestPushPop(t *testing.T) { Fill(color.RGBA{R: 255, A: 255}) Pop() } - TextFont(text.Font{Typeface: "Latin-Modern"}) + TextFont(font.Font{Typeface: "Latin-Modern"}) TextSize(20) Stroke(color.RGBA{R: 255, A: 255}) Rect(20, 20, 160, 160) diff --git a/example/hello/main.go b/example/hello/main.go index b92fdf2..6bc962b 100644 --- a/example/hello/main.go +++ b/example/hello/main.go @@ -9,9 +9,9 @@ import ( "image/color" "math" + "gioui.org/font" "gioui.org/font/gofont" "gioui.org/font/opentype" - "gioui.org/text" "github.com/go-fonts/latin-modern/lmroman12regular" "github.com/go-p5/p5" ) @@ -48,11 +48,11 @@ func draw() { p5.TextSize(24) p5.Text("Hello, World!", 10, 250) - p5.TextFont(text.Font{Typeface: "Latin-Modern"}) + p5.TextFont(font.Font{Typeface: "Latin-Modern"}) p5.TextSize(24) p5.Text("Hello, World!", 10, 300) - p5.TextFont(text.Font{}) + p5.TextFont(font.Font{}) p5.TextSize(24) p5.Text("Hello, World!", 10, 350) @@ -66,8 +66,8 @@ func loadFonts() { if err != nil { panic(fmt.Errorf("failed to parse font: %+v", err)) } - fonts = append(fonts, text.FontFace{ - Font: text.Font{ + fonts = append(fonts, font.FontFace{ + Font: font.Font{ Typeface: "Latin-Modern", }, Face: face, diff --git a/go.mod b/go.mod index e3d521f..66f4827 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,8 @@ module github.com/go-p5/p5 go 1.19 require ( - gioui.org v0.0.0-20210729070555-8cec7e04eb71 + gioui.org v0.0.0-20230427133431-816bda7ac7bd + gioui.org/x v0.0.0-20230426160849-752f112c7a59 github.com/campoy/embedmd v1.0.0 github.com/go-fonts/latin-modern v0.3.0 golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 @@ -14,10 +15,13 @@ require ( ) require ( - gioui.org/cpu v0.0.0-20210727122813-41509bcd3462 // indirect + gioui.org/cpu v0.0.0-20210817075930-8d6a761490d2 // indirect + gioui.org/shader v1.0.6 // indirect + github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 // indirect github.com/go-fonts/liberation v0.3.0 // indirect github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9 // indirect github.com/go-pdf/fpdf v0.8.0 // indirect + github.com/go-text/typesetting v0.0.0-20230413204129-b4f0492bf7ae // indirect github.com/pmezard/go-difflib v1.0.0 // indirect golang.org/x/exp/shiny v0.0.0-20230425010034-47ecfdc1ba53 // indirect golang.org/x/mod v0.10.0 // indirect diff --git a/go.sum b/go.sum index 4ddcfa3..a9e07dd 100644 --- a/go.sum +++ b/go.sum @@ -1,372 +1,57 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gioui.org v0.0.0-20210729070555-8cec7e04eb71 h1:oRGgse7ULwcwja22pwaBn1AX55J/SvKXshLevDd8+P0= -gioui.org v0.0.0-20210729070555-8cec7e04eb71/go.mod h1:N4QK6T0gTQc7ogB7rniAyYQb8/klqI6hQkqV+HAh5Mw= -gioui.org/cpu v0.0.0-20210727122813-41509bcd3462 h1:JZyB+d8tPExZHNZwMiGKeeAVd0mkFTc3Zsmegdn178M= -gioui.org/cpu v0.0.0-20210727122813-41509bcd3462/go.mod h1:DkhBDuHokSMOUxX5LZQ7IcxyJJzs3OON8Z5ojaXUXxo= +eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d h1:ARo7NCVvN2NdhLlJE9xAbKweuI9L6UgfTbYb0YwPacY= +gioui.org v0.0.0-20230427133431-816bda7ac7bd h1:2OPwz+Wcl1tZ4XweWGLiPdKHAPyBWE9c/zco4v+Rtk4= +gioui.org v0.0.0-20230427133431-816bda7ac7bd/go.mod h1:8CFQM/4LurRd9G3NUYdacFb9j2pK0LrAyVO2mAZo4mw= +gioui.org/cpu v0.0.0-20210808092351-bfe733dd3334/go.mod h1:A8M0Cn5o+vY5LTMlnRoK3O5kG+rH0kWfJjeKd9QpBmQ= +gioui.org/cpu v0.0.0-20210817075930-8d6a761490d2 h1:AGDDxsJE1RpcXTAxPG2B4jrwVUJGFDjINIPi1jtO6pc= +gioui.org/cpu v0.0.0-20210817075930-8d6a761490d2/go.mod h1:A8M0Cn5o+vY5LTMlnRoK3O5kG+rH0kWfJjeKd9QpBmQ= +gioui.org/shader v1.0.6 h1:cvZmU+eODFR2545X+/8XucgZdTtEjR3QWW6W65b0q5Y= +gioui.org/shader v1.0.6/go.mod h1:mWdiME581d/kV7/iEhLmUgUK5iZ09XR5XpduXzbePVM= +gioui.org/x v0.0.0-20230426160849-752f112c7a59 h1:IdvHx1hSmuL9xs/p3rppWJnH01RXcBhz5HvB7pj9LAg= +gioui.org/x v0.0.0-20230426160849-752f112c7a59/go.mod h1:nMctdnZS2HKxfSXb+bCPnhw1n2LLsXoxtTarZjtIBuI= git.sr.ht/~sbinet/gg v0.3.1 h1:LNhjNn8DerC8f9DHLz6lS0YYul/b602DUxDgGkd/Aik= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyRiyQj/Ud48djTMtMebDqepE95rw= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 h1:uF5Q/hWnDU1XZeT6CsrRSxHLroUSEYYO3kgES+yd+So= +github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0/go.mod h1:ccdDYaY5+gO+cbnQdFxEXqfy0RkoV25H3jLXUDNM3wg= github.com/campoy/embedmd v1.0.0 h1:V4kI2qTJJLf4J29RzI/MAt2c3Bl4dQSYPuflzwFH2hY= github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-fonts/latin-modern v0.3.0 h1:CIDlMm0djMO3XIKHVz2na9lFKt3kdC/YCy7k7lLpyjE= github.com/go-fonts/latin-modern v0.3.0/go.mod h1:ysEQXnuT/sCDOAONxC7ImeEDVINbltClhasMAqEtRK0= github.com/go-fonts/liberation v0.3.0 h1:3BI2iaE7R/s6uUUtzNCjo3QijJu3aS4wmrMgfSpYQ+8= github.com/go-fonts/liberation v0.3.0/go.mod h1:jdJ+cqF+F4SUL2V+qxBth8fvBpBDS7yloUL5Fi8GTGY= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9 h1:NxXI5pTAtpEaU49bpLpQoDsu1zrteW/vxzTz8Cd2UAs= github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9/go.mod h1:gWuR/CrFDDeVRFQwHPvsv9soJVB/iqymhuZQuJ3a9OM= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-pdf/fpdf v0.8.0 h1:IJKpdaagnWUeSkUFUjTcSzTppFxmv8ucGQyNPQWxYOQ= github.com/go-pdf/fpdf v0.8.0/go.mod h1:gfqhcNwXrsd3XYKte9a7vM3smvU/jB4ZRDrmWSxpfdc= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/go-text/typesetting v0.0.0-20230413204129-b4f0492bf7ae h1:LCcaQgYrnS+sx9Tc3oGUvbRBRt+5oFnKWakaxeAvNVI= +github.com/go-text/typesetting v0.0.0-20230413204129-b4f0492bf7ae/go.mod h1:KmrpWuSMFcO2yjmyhGpnBGQHSKAoEgMTSSzvLDzCuEA= +github.com/go-text/typesetting-utils v0.0.0-20230412163830-89e4bcfa3ecc h1:9Kf84pnrmmjdRzZIkomfjowmGUhHs20jkrWYw/I6CYc= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= -golang.org/x/exp v0.0.0-20210722180016-6781d3edade3/go.mod h1:DVyR6MI7P4kEQgvZJSj1fQGrWIi2RzIrfYWycwheUAc= golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 h1:5llv2sWeaMSnA3w2kS57ouQQ4pudlXrR0dCgw51QK9o= golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/exp/shiny v0.0.0-20230425010034-47ecfdc1ba53 h1:sF0Ip2V6Qkmm6XD01YbQQxqTj3FRjStwRmm8XQq8Hek= golang.org/x/exp/shiny v0.0.0-20230425010034-47ecfdc1ba53/go.mod h1:UH99kUObWAZkDnWqppdQe5ZhPYESUw8I0zVV1uWBR+0= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/image v0.7.0 h1:gzS29xtG1J5ybQlv0PuyfE3nmc6R4qB73m6LUUmvFuw= golang.org/x/image v0.7.0/go.mod h1:nd/q4ef1AKKYl/4kft7g+6UyGbdiqWqTP1ZAbRoV7Rg= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20201217150744-e6ae53a27f4f/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -376,81 +61,20 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.12.0 h1:xKuo6hzt+gMav00meVPUlXwSdoEJP46BR+wdxQEFK2o= gonum.org/v1/gonum v0.12.0/go.mod h1:73TDxJfAAHeA8Mk9mf8NlIppyhQNo5GLTcYeqgo2lvY= gonum.org/v1/plot v0.12.0 h1:y1ZNmfz/xHuHvtgFe8USZVyykQo5ERXPnspQNVK15Og= gonum.org/v1/plot v0.12.0/go.mod h1:PgiMf9+3A3PnZdJIciIXmyN1FwdAA6rXELSN761oQkw= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/path.go b/path.go index 715bc80..8894640 100644 --- a/path.go +++ b/path.go @@ -5,10 +5,13 @@ package p5 import ( + "fmt" + "gioui.org/f32" "gioui.org/op" "gioui.org/op/clip" "gioui.org/op/paint" + "gioui.org/x/stroke" ) func (p *Proc) BeginPath() *Path { @@ -17,9 +20,9 @@ func (p *Proc) BeginPath() *Path { } type Path struct { - proc *Proc - funcs []func(p *clip.Path) - vtx int + proc *Proc + segs []segment + vtx int } func (p *Path) pt(x, y float64) f32.Point { @@ -31,88 +34,210 @@ func (p *Path) inc() { p.vtx++ } func (p *Path) Vertex(x, y float64) { defer p.inc() if p.vtx == 0 { - p.funcs = append(p.funcs, func(path *clip.Path) { - pt := p.pt(x, y).Sub(path.Pos()) - path.Move(pt) - }) + p.segs = append(p.segs, opMoveTo(p.pt(x, y))) return } - p.funcs = append(p.funcs, func(path *clip.Path) { - pt := p.pt(x, y).Sub(path.Pos()) - path.Line(pt) - }) + p.segs = append(p.segs, opLineTo(p.pt(x, y))) } // Cube draws a cubic Bézier curve from the current position // to the (x3,y3) point, with the (x1,y1) and (x2,y2) control points. func (p *Path) Cube(x1, y1, x2, y2, x3, y3 float64) { defer p.inc() - p.funcs = append(p.funcs, func(path *clip.Path) { - var ( - pos = path.Pos() - ctl1 = p.pt(x1, y1).Sub(pos) - ctl2 = p.pt(x2, y2).Sub(pos) - end = p.pt(x3, y3).Sub(pos) - ) - path.Cube(ctl1, ctl2, end) - }) + p.segs = append(p.segs, opCubeTo( + p.pt(x1, y1), + p.pt(x2, y2), + p.pt(x3, y3), + )) } // Quad draws a quadratic Bézier curve from the current position to // the (x2,y2) point, with the (x1,y1) control point. func (p *Path) Quad(x1, y1, x2, y2 float64) { defer p.inc() - p.funcs = append(p.funcs, func(path *clip.Path) { - var ( - pos = path.Pos() - ctl = p.pt(x1, y1).Sub(pos) - end = p.pt(x2, y2).Sub(pos) - ) - path.Quad(ctl, end) - }) + p.segs = append(p.segs, opQuadTo( + p.pt(x1, y1), + p.pt(x2, y2), + )) } // Close closes the current path. func (p *Path) Close() { - p.funcs = append(p.funcs, func(path *clip.Path) { - path.Close() - }) + p.segs = append(p.segs, segment{op: segOpClose}) } func (p *Path) End() { if p.proc.doFill() { - state := op.Save(p.proc.ctx.Ops) + stk := op.TransformOp{}.Push(p.proc.ctx.Ops) paint.FillShape( p.proc.ctx.Ops, rgba(p.proc.stk.cur().fill), - clip.Outline{ - Path: p.path(), - }.Op(), + p.outline(), ) - state.Load() + stk.Pop() } if p.proc.doStroke() { - state := op.Save(p.proc.ctx.Ops) + stk := op.TransformOp{}.Push(p.proc.ctx.Ops) paint.FillShape( p.proc.ctx.Ops, rgba(p.proc.stk.cur().stroke.color), - clip.Stroke{ - Path: p.path(), - Style: p.proc.stk.cur().stroke.style, - }.Op(), + p.stroke(), ) - state.Load() + stk.Pop() } p.proc = nil } -func (p *Path) path() clip.PathSpec { +func (p *Path) outline() clip.Op { + return segments(p.segs).outline(p.proc.ctx.Ops) +} + +func (p *Path) stroke() clip.Op { + return segments(p.segs).stroke(p.proc.ctx.Ops, p.proc.stk.cur().stroke) +} + +type segment struct { + op segmentOp + args [3]f32.Point +} + +type segmentOp uint8 + +const ( + segOpMoveTo segmentOp = iota + segOpLineTo + segOpQuadTo + segOpCubeTo + segOpArcTo + segOpClose +) + +func opMoveTo(p f32.Point) segment { + s := segment{ + op: segOpMoveTo, + } + s.args[0] = p + return s +} + +func opLineTo(p f32.Point) segment { + s := segment{ + op: segOpLineTo, + } + s.args[0] = p + return s +} + +func opQuadTo(ctrl, end f32.Point) segment { + s := segment{ + op: segOpQuadTo, + } + s.args[0] = ctrl + s.args[1] = end + return s +} + +func opCubeTo(ctrl0, ctrl1, end f32.Point) segment { + s := segment{ + op: segOpCubeTo, + } + s.args[0] = ctrl0 + s.args[1] = ctrl1 + s.args[2] = end + return s +} + +func opArcTo(f1, f2 f32.Point, angle float32) segment { + s := segment{ + op: segOpArcTo, + } + s.args[0] = f1 + s.args[1] = f2 + s.args[2].X = angle + return s +} + +type segments []segment + +func (segs segments) outline(ops *op.Ops) clip.Op { var path clip.Path - path.Begin(p.proc.ctx.Ops) - for _, fct := range p.funcs { - fct(&path) + path.Begin(ops) + for _, seg := range segs { + switch seg.op { + case segOpMoveTo: + path.MoveTo(seg.args[0]) + case segOpLineTo: + path.LineTo(seg.args[0]) + case segOpArcTo: + var ( + f1 = seg.args[0] + f2 = seg.args[1] + angle = seg.args[2].X + ) + path.ArcTo(f1, f2, angle) + case segOpQuadTo: + var ( + ctl = seg.args[0] + end = seg.args[1] + ) + path.QuadTo(ctl, end) + case segOpCubeTo: + var ( + ctl0 = seg.args[0] + ctl1 = seg.args[1] + end = seg.args[2] + ) + path.CubeTo(ctl0, ctl1, end) + + case segOpClose: + path.Close() + + default: + panic(fmt.Errorf("p5: unknown outline-path component %d", seg.op)) + } + } + return clip.Outline{ + Path: path.End(), + }.Op() +} + +func (segs segments) stroke(ops *op.Ops, sty strokeStyle) clip.Op { + var ( + shape = stroke.Stroke{ + Width: sty.style.width, + Cap: sty.style.cap, + Join: sty.style.join, + Dashes: sty.style.dashes, + } + add = func(seg stroke.Segment) { + shape.Path.Segments = append(shape.Path.Segments, seg) + } + beg f32.Point + ) + + for i, seg := range segs { + if i == 0 { + beg = seg.args[0] + } + switch seg.op { + case segOpMoveTo: + add(stroke.MoveTo(seg.args[0])) + case segOpLineTo: + add(stroke.LineTo(seg.args[0])) + case segOpArcTo: + add(stroke.ArcTo(seg.args[0], seg.args[1], seg.args[2].X)) + case segOpQuadTo: + add(stroke.QuadTo(seg.args[0], seg.args[1])) + case segOpCubeTo: + add(stroke.CubeTo(seg.args[0], seg.args[1], seg.args[2])) + case segOpClose: + add(stroke.LineTo(beg)) + default: + panic(fmt.Errorf("p5: unknown stroke-path component %d", seg.op)) + } } - return path.End() + + return shape.Op(ops) } diff --git a/proc.go b/proc.go index 2599432..029a5e9 100644 --- a/proc.go +++ b/proc.go @@ -22,6 +22,7 @@ import ( "gioui.org/app" "gioui.org/f32" + "gioui.org/font" "gioui.org/font/gofont" "gioui.org/gpu/headless" "gioui.org/io/event" @@ -57,15 +58,11 @@ var ( defaultTextColor = color.Black defaultTextSize = float32(12) - defaultTextFont text.Font + defaultTextFont font.Font ) // gioWindow represents an operating system window operated by Gio. type gioWindow interface { - // Close the window. The window's event loop should exit when it receives - // system.DestroyEvent. - Close() - // Events returns the channel where events are delivered. Events() <-chan event.Event @@ -135,12 +132,12 @@ func newProc(w, h int) *Proc { proc.cfg.th = material.NewTheme(gofont.Collection()) proc.initCanvas(w, h, defaultTextFont) - proc.stk.cur().stroke.style.Width = 2 + proc.stk.cur().stroke.style.width = 2 return proc } -func (p *Proc) initCanvas(w, h int, fnt text.Font) { +func (p *Proc) initCanvas(w, h int, fnt font.Font) { p.initCanvasDim(w, h, 0, float64(w), 0, float64(h)) p.stk.cur().bkg = defaultBkgColor p.stk.cur().fill = defaultFillColor @@ -212,8 +209,8 @@ func (p *Proc) run() error { ) w := p.newWindow(app.Title("p5"), app.Size( - unit.Px(float32(width)), - unit.Px(float32(height)), + unit.Dp(float32(width)), + unit.Dp(float32(height)), )) p.head, err = headless.NewWindow(width, height) if err != nil { @@ -243,7 +240,7 @@ func (p *Proc) run() error { case key.Event: switch e.Name { case key.NameEscape: - w.Close() + return nil case "F11": fname := fmt.Sprintf("out-%03d.png", cnt) err = p.Screenshot(fname) @@ -330,7 +327,7 @@ func (p *Proc) Background(c color.Color) { func (p *Proc) doStroke() bool { return p.stk.cur().stroke.color != nil && - p.stk.cur().stroke.style.Width > 0 + p.stk.cur().stroke.style.width > 0 } // Stroke sets the color of the strokes. @@ -340,7 +337,7 @@ func (p *Proc) Stroke(c color.Color) { // StrokeWidth sets the size of the strokes. func (p *Proc) StrokeWidth(v float64) { - p.stk.cur().stroke.style.Width = float32(v) + p.stk.cur().stroke.style.width = float32(v) } func (p *Proc) doFill() bool { @@ -353,7 +350,7 @@ func (p *Proc) Fill(c color.Color) { } // LoadFonts sets the fonts collection to use for text. -func (p *Proc) LoadFonts(fnt []text.FontFace) { +func (p *Proc) LoadFonts(fnt []font.FontFace) { p.cfg.th = material.NewTheme(fnt) } @@ -362,7 +359,7 @@ func (p *Proc) TextSize(size float64) { p.stk.cur().text.size = float32(size) } -func (p *Proc) TextFont(fnt text.Font) { +func (p *Proc) TextFont(fnt font.Font) { p.stk.cur().text.font = fnt } @@ -382,13 +379,13 @@ func (p *Proc) Text(txt string, x, y float64) { case text.Middle: offset = x - 0.5*w } - defer op.Save(p.ctx.Ops).Load() - op.Offset(f32.Point{ + defer op.TransformOp{}.Push(p.ctx.Ops).Pop() + op.Affine(f32.Affine2D{}.Offset(f32.Point{ X: float32(offset), Y: float32(y) - size, - }).Add(p.ctx.Ops) // shift to use baseline + })).Add(p.ctx.Ops) // shift to use baseline - l := material.Label(p.cfg.th, unit.Px(size), txt) + l := material.Label(p.cfg.th, unit.Sp(size), txt) l.Color = rgba(p.stk.cur().text.color) l.Alignment = p.stk.cur().text.align l.Font = p.stk.cur().text.font @@ -403,7 +400,8 @@ func (p *Proc) Screenshot(fname string) error { return fmt.Errorf("p5: could not run headless frame: %w", err) } - img, err := p.head.Screenshot() + img := image.NewRGBA(image.Rect(0, 0, p.cfg.w, p.cfg.h)) + err = p.head.Screenshot(img) if err != nil { return fmt.Errorf("p5: could not take screenshot: %w", err) } @@ -525,8 +523,8 @@ func (p *Proc) ReadImage(fname string) (img image.Image, err error) { // DrawImage draws the provided image at (x,y). func (p *Proc) DrawImage(img image.Image, x, y float64) { - p.stk.save() - defer p.stk.load() + p.stk.push() + defer p.stk.pop() p.stk.translate(x, y) paint.NewImageOp(img).Add(p.stk.ops) diff --git a/shapes.go b/shapes.go index 0e6a65d..ebcb4a2 100644 --- a/shapes.go +++ b/shapes.go @@ -9,7 +9,6 @@ import ( "gioui.org/f32" "gioui.org/op" - "gioui.org/op/clip" "gioui.org/op/paint" ) @@ -32,50 +31,48 @@ func (p *Proc) Ellipse(x, y, w, h float64) { switch { case math.Abs(w) > math.Abs(h): ec = math.Sqrt(w*w - h*h) - f1 = p.pt(x+ec, y).Sub(p1) - f2 = p.pt(x-ec, y).Sub(p1) + f1 = p.pt(x+ec, y) + f2 = p.pt(x-ec, y) default: ec = math.Sqrt(h*h - w*w) - f1 = p.pt(x, y+ec).Sub(p1) - f2 = p.pt(x, y-ec).Sub(p1) + f1 = p.pt(x, y+ec) + f2 = p.pt(x, y-ec) } - path := func(o *op.Ops, close bool) clip.PathSpec { - var path clip.Path - path.Begin(o) - path.Move(p1) - path.Arc(f1, f2, 2*math.Pi) + path := func(o *op.Ops, close bool) segments { + segs := make(segments, 0, 3) + segs = append(segs, + opMoveTo(p1), + opArcTo(f1, f2, 2*math.Pi), + ) if close { - path.Close() + segs = append(segs, segment{ + op: segOpClose, + }) } - return path.End() + return segs } if fill := p.stk.cur().fill; fill != nil { - state := op.Save(p.ctx.Ops) + stack := op.TransformOp{}.Push(p.ctx.Ops) close := true paint.FillShape( p.ctx.Ops, rgba(fill), - clip.Outline{ - Path: path(p.ctx.Ops, close), - }.Op(), + path(p.ctx.Ops, close).outline(p.ctx.Ops), ) - state.Load() + stack.Pop() } if stroke := p.stk.cur().stroke.color; stroke != nil { - state := op.Save(p.ctx.Ops) + stack := op.TransformOp{}.Push(p.ctx.Ops) close := false paint.FillShape( p.ctx.Ops, rgba(stroke), - clip.Stroke{ - Path: path(p.ctx.Ops, close), - Style: p.stk.cur().stroke.style, - }.Op(), + path(p.ctx.Ops, close).stroke(p.ctx.Ops, p.stk.cur().stroke), ) - state.Load() + stack.Pop() } } @@ -114,20 +111,17 @@ func (p *Proc) Arc(x, y, w, h float64, beg, end float64) { var ( sin, cos = math.Sincos(beg) p0 = p.pt(a*cos, b*sin).Add(c) - path clip.Path + path = segments{ + opMoveTo(p0), + opArcTo(f1, f2, float32(end-beg)), + } ) - defer op.Save(p.ctx.Ops).Load() - path.Begin(p.ctx.Ops) - path.Move(p0) - path.Arc(f1.Sub(p0), f2.Sub(p0), float32(end-beg)) + defer op.TransformOp{}.Push(p.ctx.Ops).Pop() paint.FillShape( p.ctx.Ops, rgba(p.stk.cur().stroke.color), - clip.Stroke{ - Path: path.End(), - Style: p.stk.cur().stroke.style, - }.Op(), + path.stroke(p.ctx.Ops, p.stk.cur().stroke), ) } @@ -140,20 +134,17 @@ func (p *Proc) Line(x1, y1, x2, y2 float64) { var ( p1 = p.pt(x1, y1) p2 = p.pt(x2, y2) - path clip.Path + path = segments{ + opMoveTo(p1), + opLineTo(p2), + } ) - defer op.Save(p.ctx.Ops).Load() - path.Begin(p.ctx.Ops) - path.Move(p1) - path.Line(p2.Sub(path.Pos())) + defer op.TransformOp{}.Push(p.ctx.Ops).Pop() paint.FillShape( p.ctx.Ops, rgba(p.stk.cur().stroke.color), - clip.Stroke{ - Path: path.End(), - Style: p.stk.cur().stroke.style, - }.Op(), + path.stroke(p.ctx.Ops, p.stk.cur().stroke), ) } @@ -198,25 +189,21 @@ func (p *Proc) Bezier(x1, y1, x2, y2, x3, y3, x4, y4 float64) { var ( sp = p.pt(x1, y1) - cp0 = p.pt(x2, y2).Sub(sp) - cp1 = p.pt(x3, y3).Sub(sp) - ep = p.pt(x4, y4).Sub(sp) - path clip.Path + cp0 = p.pt(x2, y2) + cp1 = p.pt(x3, y3) + ep = p.pt(x4, y4) + path = segments{ + opMoveTo(sp), + opCubeTo(cp0, cp1, ep), + } ) - defer op.Save(p.ctx.Ops).Load() - - path.Begin(p.ctx.Ops) - path.Move(sp) - path.Cube(cp0, cp1, ep) + defer op.TransformOp{}.Push(p.ctx.Ops).Pop() paint.FillShape( p.ctx.Ops, rgba(p.stk.cur().stroke.color), - clip.Stroke{ - Path: path.End(), - Style: p.stk.cur().stroke.style, - }.Op(), + path.stroke(p.ctx.Ops, p.stk.cur().stroke), ) } @@ -247,32 +234,23 @@ func (p *Proc) Curve(x1, y1, x2, y2, x3, y3, x4, y4 float64) { itau = 1 / (6 * (1 - tau)) - p1 = cr2 - p2 = cr2.Add(cr3.Sub(cr1).Mul(itau)) - p3 = cr3.Sub(cr4.Sub(cr2).Mul(itau)) - p4 = cr3 - - path clip.Path + beg = cr2 + cp0 = cr2.Add(cr3.Sub(cr1).Mul(itau)) + cp1 = cr3.Sub(cr4.Sub(cr2).Mul(itau)) + end = cr3 - sp = p1 - cp0 = p2.Sub(sp) - cp1 = p3.Sub(sp) - ep = p4.Sub(sp) + path = segments{ + opMoveTo(beg), + opCubeTo(cp0, cp1, end), + } ) - defer op.Save(p.ctx.Ops).Load() - - path.Begin(p.ctx.Ops) - path.Move(sp) - path.Cube(cp0, cp1, ep) + defer op.TransformOp{}.Push(p.ctx.Ops).Pop() paint.FillShape( p.ctx.Ops, rgba(p.stk.cur().stroke.color), - clip.Stroke{ - Path: path.End(), - Style: p.stk.cur().stroke.style, - }.Op(), + path.stroke(p.ctx.Ops, p.stk.cur().stroke), ) } @@ -289,38 +267,32 @@ func (p *Proc) poly(ps ...f32.Point) { return } - path := func(o *op.Ops) clip.PathSpec { - var path clip.Path - path.Begin(o) - path.Move(ps[0]) - for _, p := range ps[1:] { - path.Line(p.Sub(path.Pos())) + path := make(segments, len(ps)) + for i, p := range ps { + op := opLineTo + if i == 0 { + op = opMoveTo } - return path.End() + path[i] = op(p) } if p.doFill() { - state := op.Save(p.ctx.Ops) + stack := op.TransformOp{}.Push(p.ctx.Ops) paint.FillShape( p.ctx.Ops, rgba(p.stk.cur().fill), - clip.Outline{ - Path: path(p.ctx.Ops), - }.Op(), + path.outline(p.ctx.Ops), ) - state.Load() + stack.Pop() } if p.doStroke() { - state := op.Save(p.ctx.Ops) + stack := op.TransformOp{}.Push(p.ctx.Ops) paint.FillShape( p.ctx.Ops, rgba(p.stk.cur().stroke.color), - clip.Stroke{ - Path: path(p.ctx.Ops), - Style: p.stk.cur().stroke.style, - }.Op(), + path.stroke(p.ctx.Ops, p.stk.cur().stroke), ) - state.Load() + stack.Pop() } } diff --git a/testdata/api_shapes_curve_golden.png b/testdata/api_shapes_curve_golden.png index 4e98e9ed49174a13b711efaab20968487b41ad51..49aa03a94ba45e358982e802a6f417e0a8e5ff11 100644 GIT binary patch literal 8347 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 literal 8494 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 diff --git a/testdata/api_shapes_golden.png b/testdata/api_shapes_golden.png index 09ffad5ac1d84dfe4354141d061a33f3d18019cb..11516cc6898798522d0a371fbb64cf3df83f1e34 100644 GIT binary patch literal 12580 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 literal 12382 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 diff --git a/testdata/canvas_golden.png b/testdata/canvas_golden.png index db0742bc942cc0bf05aea5a35cc2ae57b0208fd1..9af67147301f70ee8d228ea28023c24eb143b17e 100644 GIT binary patch literal 5853 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 Dp-(lh literal 6272 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 literal 29014 zcmWh!byQP-8y`J-%IFU125D)eyGt7B?sn2CAT1y*-QDn`Te_vYyWjhA4&$Gl9q#UP zzn^>}RFtGK(TLDMAP}akjHDXyckuteV0hq_N`QX|1ac;ol@!zP`gLsR>4&rT&{^L8 zLH=@W*$W=o>=qf}+YeBh;?k&5MkcL&`cyulV(qu%U__aP43NnJGqDiJEc!0N-g_va zz96GB&iymNG64=a@8%A>N~v z&*0!eL4Bt0qWVCfHgQA=b_`HZ$@x*s@a4*Z@+%Z|Zf0iXSPE-P5e_J* z|Jd+&D(>y&bmP}A*SoLdzxb~#E1d`$KR|9p$l_2yqLVWZ#{;*ww=FFK60+k9DI#Cv zp0B5s2e!UO!Kfgt^NUlAkGp4;?YBfys$kekTOan;9MXcm_j==7*9AkIk4VEd**_WF zl72Ls{`a@x7td*bat&Fcvc&FTlUw?44_)w4eQIC6RA?|d_HTwcA8o$hF%+=$Ig9HF zVh4-0YlPsFEpmw*Yz1~)^8QXQEMAHhO!yoJT%+xLMSHa^S-*WyRPgN7RD5*vjQa=D zqN@e!2CYnP&NV^fof!fUh(1!U%2;e@*fa7>E`y)(n@MV2U0p`?rOC?QCK(;ZB(&bD z-!&2wO7e|!KjA4v#YG z%cfam73kd9uN6zPv&uE+Cr%6mP*7)QCo|P)%pO?=hck2b$OYE@^;11ms@g2{LL{~$ z_(m@`?(WQ~fANW_qyKHqhGI7&Q0VWV?87oj#M|NyP7>aY>pLmc?7(MX#c656p^{l! zG<5X&a{Wf{tKH;ey!1lHnGlSvIe5Ns`J(!I_kxKo(~6yiN?4GJ0{sS~hBNW{>+2q- zb@myue;o)RNCmq(K?$YfWLbMR+TO;7k%h&u&5HvO({7)S>(tBR!jY zJRf%?TxzYOu)D|X08}c5RM2C!#l71_&O2bpkS zOfN1Du}3eTkbSh738r4>z)-K<8EA}WJWJhVTeFa&LA+~nBS=TXMmKwNaC9_k_qj33 z4xF1>TDf1CAsp!R*@~H8M0K2T$K0YtcpWi%-Fy+9=I&*OAYMH9K@fFCevj-hg7V`E z2X?i2(<9Lb{{gf1+^>ircAk(%VBFBv_eg>S|84n1NnU>W-qwR;@mr3Jw0>zvyX)yn zbKr{p^G+y>e1BmOMfg_JszaCw0ql22E#?-_0Pasu5J*5!P$WJkzr(BVs2nf!!JtmDB*(jafH}TSB&dmmz znwrhc%}iQlO-l28(HTKZPG!K&{&SKOXp$?;1CQLO%aPOc=G9{&_;A^~C9J#dg6PdH(=8Fxy8sp`% z91Z&PEv&cc#0e>ChigKp_RnPkfkkMpRV3rX;ri--li2h|G7I(~(0zV1i`UcQ`NQ3P zZ01r}2{_|}&va`xot%h_nw0(1Z=Y$;xZV}jiaFZCiNV1&eUbr;=R z{+g_)80Zd|66}UaJk%#9SCjAkEr+kpKcB2D*f48$N%AC+`o|twtuV5-GO6XoZF6Au z@|7zoQ#YOh6&3Y>Ocp{)N?NK_zBGc3p6ZVef?;&I9WR~_%>*wjEG#W8RaI31ga2QD z|Ch5;vi`GJrY9XyhymUZlhG0maqSSIf0pma~ zIF7ug-ET=HrPv{JoBKl}=&9vHGW*A?p|>Xy5D51DyU6{&?GAintICrTPWp+q{F05JZX
    AYL>CHMOG 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

    h0Zw|s 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 diff --git a/testdata/path_quad_golden.png b/testdata/path_quad_golden.png index 1c77ca2c1c82ff656ec80beecbbce98c3805f100..4ada10d8c8fcda4776ff21bada12701ee4d79a19 100644 GIT binary patch literal 4649 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 literal 5321 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 diff --git a/testdata/push-pop_golden.png b/testdata/push-pop_golden.png index d69e4431be64b4afd3cc13ce236253f64dcb1996..c4147cfa2cd548a5deae366dc2cab25958e6fa34 100644 GIT binary patch delta 3032 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 b00960rjP;=xQMIO00000NkvXXu0mjfHF0xl diff --git a/testdata/shear_golden.png b/testdata/shear_golden.png index 249e258f2a6b670cb2239842430392b82a88241d..c4d20a22da3f07a98169c03f40cef41d8ee621cb 100644 GIT binary patch delta 2454 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 UNa4&_dH?_b07*qoM6N<$f*-u{`v3p{ delta 2562 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 Y|1#*pi0yrr4RZ;LCU`&WmC5>oOL z;?LVXIeqT2ZoYQ@%@n=Vmq=}P){Fe7S9D$|y;RxUr3upX^>4OOO7c5$!;Af^(_g9i zWynn6kcTJ?(!CZ)3JMDhCrc{bqPq1TwDP0pO-j3Kmg+?Q;cS~M4x@oOiSZ` zQ0e(~6y)0#D-h){WiQIfhXYOG^#p5+Izw5iyK*Nx47v3yMzL}{`HMh?O4{Qs>kUeA z%!ykC%a9xI>PIhv#~>ZkW97UCQ);UPT8$NK%a#-t>n7hjQs~dhqtJ&PvK|R>UwyqM zf~f7+U%>{p9=d+q_RYv31BLY}>DlbWHD&Jz2b1fvEV#We~s@m5aV88_~2GflQ185}!ZUxi$Y2!&5+ayz-% zB?Cp)fcAJdY~BnI)vecij(eI3RcZD?iH~~)`mf`xx(O}YQQI4~!C;eEf(qmF`!pj$gYnHZz5HR#%i#EvmAtwM?;Bvgpk zW(J2M(9iYjROf63J9bV1=XE}HiQwE>m$R3ZHyYDi=87pL`I=rJ78CZ}Ubw()=Je65 zrO7^ii<2&K{I0eYKFdJv(}uB4B+=y^6S;p~>AAdj%O`HaqXsjlH@(vDV?d}c*3NMY zIKeS)IIYn_cQmmk&5B%tqCd)3sZU+L`hC2Johe0rwi%vGQ@IE-B% z5lTflh9<*~HNScJ;1!y67bE(eQ#cXTKu>*QTORfLo0I_BRf7u_ zpHG&Ut$Yh-4;xmEaPc|VGWJi{Bzyd=!ql%R1$CA~_gwbX=B;b*nBPpuTh-9)aR`1#^ZQ7)nMx@M?pn2{7oum*G zPyE=^+Kc`@+lMOh_SUD)W|Z>A0@Hl?qD9xDHo~)oKcsujI>r6mP+>uso&UT;ow7T$ z*r$=AD;Cc7yfZ&}{4B8WQ-M_|3rBqSbJYYT%%cQL>-)Jp$eh>q<Rn6Id4=O-aL)+<|}9#rHyYS^Oz5qckPPN@R9pAr5>$c?wSSIUP<)y*b17w&6?Os zIcRY(tS@_=aA}Gbd-;O|*bnFD_JX=ft9omDzuffdB!sJS$vlKQVQ+*{hqXLxi_Md< zRTH23YH=82Y_>}P=7z9!2TL`WyK0V=U&T=J^`JXPwN>Xg!Oyj{2D&DP6F$3{Vjc2= zVIki`8GI*yvgbaX^~orZar%r32MP|}E1wex&5PBtaEEDzAxWXtMguW{)r{Rvu#H5J zfE{hZ#kpvhRy9qBmu_>x*r#2>l(sED8u?u^3}#8v+-KDtRnEI*fN zXqe3-s9pL1eG}=>-*oUgNz(u<)ssU>*uce-nI*Ii%#(dWho&4U~7{}LTScbn^ z=b}U*sif1}Oqs6utV++@XA?^bmoJ+CQe5zMdahwE5)?R5du=}ABeIgnCJn!-`!Ug# z{ME5?=#o=xrgNN}zEfx5N9gE7%({%Oot)`HE`H=%1Otp1_g?;R|3b|@>rD9i;{Y89 zTXyF}U!;Tggk!Le2OW1X+nVAJ#xfKI0 zx{LS?w_t0$3MEs*Z%}Q>(o~j*?=})Q>SHWkv-SO_5#axW%e9J;oED&)et`cTt@OV-?LW5Lh64aQI}NXDvM7iK Rl^+NNSe~;odvnGs;csl-9pnH2 literal 2423 zcmdUx{XY|m9>+(wl#cYsJ(hM)os!4hIvqusQ@MGF5!o2F4k>XmPh-XibrE@}7zxEZ zjcs`-#x^CA%~Q%|9)>(_Y{P6bGPnD>f5AP!o!9I0`F?);{P6kZ{Y`a&+G=U)X#xNM zEqgl~*YEl9zuu|-{T{Wn=mG$CLF{cVUdKLP9F9rX$EbBIhc}vL&ivFLSgZH+4TocL z{mZ>IhrQ(TM-$s(?^mXJp!TJIsQfjs|0C!_yN7A^Z?QIyQgt5gP|y8`QOZ+NO4=QA zi+j~?X^3|k7-JEoE5Eyk93>Xx3+1lN;xkVK-J|2G*s7LwG$sxS&3f-9kCrl&hPIz}iwFPQzHt(}>X5vkyb zB_7+w@Z@R)8dQ<_U}xfALn*xP^Az$7#^!Ri4}AI@d|?q2!P$DO`kM2=)fCle_ezel zsK$KSAZ{Wp>ZEN7yEMjWGt+00erXN1 zi|ERcI8>V0tUY~w{2;{E(xI6tQ)^tmSIVl#9j5UHnIDw_^7<9}8 zDex)Q_1CP(984%fQV5Z75u?;w=`_gKC}b-f45o!=?RLU6pxL=tfBGHn{RnrODv9JZ ztOG{nlP3T_dFbaIV+AjzjxY{)!CnFDPj~F$REA`(o=4>v-YF_5 zn!=e$#|O*_o=>2W`L;5b;e2Eq3a3c0T17=GEd-@V-q9ZPP>XG|E5gjGUMduY|6(LC zgvu)$+$?XG_b@1apxa>Vk(wrlJfN}JF=!gL5e98MHf<=-5x6G5 z7IzHjvSK4%256pjXdzbQ0uAtl$E!Mmxg$-Zp%bq`1l0+$MaVhcEt%Y|Z;6$+dRefa zDk+k)?&d;HY+}p94UMG4{5=c3FU~vwmW7x3l>y5{s;I&~rMG}PmK$B)(Drh4LcNoS zZh2>Ub=|+wAL4^6f`8C6=Su>M=NME)ZuQs#$+%g1TMlE4941ihxD9!dlcR$DabP@~ zZN0XeULyQhlEojn?@)D~qa)}tjof^5hn?gmnJE()Z6p#}^lV}vG)FU0xQWk*- ze+tx%>7Bi_B|huW8Rcf1pa1d`R=xoM`7!pzD!73~dXh z%o<^Fx7G`n38!TBqK6=!n2>!ne!~z&1~E~V3f;q>hQ4jlb9Kkk2tayNT=Joz#SHfD zXU)f|iN8x2ToF|FVg3h6^C4p#vk~h#+NINy8v9oN+fff~d#>dbDXyCDuT>Q|b3}1G z*THz?T=v&t?Z(iXx~@)>w~57X))dO}q_jOOPjQ&Js#<#(G*4Ft(!F_Sgcb-~Av}12 z-hJs)Pjhw6;4$WciD^Y^rW{P1pU{Qb<6g=2(`p4a%ow~o`H!ucrnYIi|IP%ymZ&8;??`-aa6xgR^>xhBt~h-^3_L#I%C>zqzN-ohie&E2{P9y$?Ys#(OBFtG zs)Y!OE?f3>R>C2?udg56l9s_^X5J$y0hSZAnQ^1pUkcm?uF1-|SdK1MX(a$@0i&>h zk(${8*h#hTo&E!zjJhl9ZlC!KE%N(QGXbrq5_5okAsX|Lc($x*F+4U+HChkc!{nFN zdupLiI#OZ1`wwY*L4z!BT;o;Yx}{z{;m7sesjf4gt^I84tK){icF~ctB7}Qeo^AG7 zWv%nLmd&eKJJ530lBKoFMgu%}m7wxOC5dLT>qp7itC0fWOn+6_)baqrd4PF&oj3MO!>xI z*=$$orS!%uw+q<=)!&GVr{@@J?|Ni#>&D5CyUUWTwD7f^{sxWwrtZs|;AV+8c*!j; zj{ag!6Kn?O4}Il&#wP?vr|rj4ky1}><-)VDE7avv1Z>^9Dx;SS3Y?ni0qef@zj^bf zuWv~Y)P6%wt58<9mik$FTbBr5C0psYzU_2u4P|NH1BE6?5!T_15mUBk#^lSz&$ndd z*P=P`QMH}eqvRG?)d{Wt@k=I1p!p5<^DmP1I5Tu8dlrsEoP` zL+j<-#=9=!^USquKtX%|SZSX%Om5ao)=Dh%70w$uWB*)OOP5krorhbr2IEW|j+QIJccL5Wc%pnjycO6iY k`QT3skg~NM0NC29a;)mHx@8vd{h Date: Tue, 2 May 2023 18:22:07 +0200 Subject: [PATCH 2/4] ci: add vulkan deps Signed-off-by: Sebastien Binet --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f838397..e065ed2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,7 @@ jobs: if: matrix.platform == 'ubuntu-20.04' run: | sudo apt-get update - sudo apt-get install -qq pkg-config libwayland-dev libx11-dev libx11-xcb-dev libxkbcommon-dev libxkbcommon-x11-dev libgles2-mesa-dev libegl1-mesa-dev libffi-dev libxcursor-dev + sudo apt-get install -qq gcc pkg-config libwayland-dev libx11-dev libx11-xcb-dev libxkbcommon-x11-dev libgles2-mesa-dev libegl1-mesa-dev libffi-dev libxcursor-dev libvulkan-dev xvfb xdotool # start a virtual frame buffer Xvfb :99 -screen 0 1920x1024x24 & From 9e0033dd2ce2218cf2a6f4a110bf0895f739d0df Mon Sep 17 00:00:00 2001 From: Sebastien Binet Date: Tue, 2 May 2023 19:10:01 +0200 Subject: [PATCH 3/4] use-raw-andybalholm-stroke Signed-off-by: Sebastien Binet --- go.mod | 2 +- path.go | 26 +++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 66f4827..a67fdd4 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.19 require ( gioui.org v0.0.0-20230427133431-816bda7ac7bd gioui.org/x v0.0.0-20230426160849-752f112c7a59 + github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 github.com/campoy/embedmd v1.0.0 github.com/go-fonts/latin-modern v0.3.0 golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 @@ -17,7 +18,6 @@ require ( require ( gioui.org/cpu v0.0.0-20210817075930-8d6a761490d2 // indirect gioui.org/shader v1.0.6 // indirect - github.com/andybalholm/stroke v0.0.0-20221221101821-bd29b49d73f0 // indirect github.com/go-fonts/liberation v0.3.0 // indirect github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9 // indirect github.com/go-pdf/fpdf v0.8.0 // indirect diff --git a/path.go b/path.go index 8894640..0e32b67 100644 --- a/path.go +++ b/path.go @@ -12,6 +12,7 @@ import ( "gioui.org/op/clip" "gioui.org/op/paint" "gioui.org/x/stroke" + bstroke "github.com/andybalholm/stroke" ) func (p *Proc) BeginPath() *Path { @@ -214,6 +215,7 @@ func (segs segments) stroke(ops *op.Ops, sty strokeStyle) clip.Op { add = func(seg stroke.Segment) { shape.Path.Segments = append(shape.Path.Segments, seg) } + pen f32.Point beg f32.Point ) @@ -224,16 +226,23 @@ func (segs segments) stroke(ops *op.Ops, sty strokeStyle) clip.Op { switch seg.op { case segOpMoveTo: add(stroke.MoveTo(seg.args[0])) + pen = seg.args[0] case segOpLineTo: add(stroke.LineTo(seg.args[0])) + pen = seg.args[0] case segOpArcTo: - add(stroke.ArcTo(seg.args[0], seg.args[1], seg.args[2].X)) + arcs := arcTo(pen, seg.args[0], seg.args[1], seg.args[2].X) + shape.Path.Segments = append(shape.Path.Segments, xStroke(arcs)...) + pen = f32.Point(arcs[len(arcs)-1].End) case segOpQuadTo: add(stroke.QuadTo(seg.args[0], seg.args[1])) + pen = seg.args[1] case segOpCubeTo: add(stroke.CubeTo(seg.args[0], seg.args[1], seg.args[2])) + pen = seg.args[2] case segOpClose: add(stroke.LineTo(beg)) + pen = beg default: panic(fmt.Errorf("p5: unknown stroke-path component %d", seg.op)) } @@ -241,3 +250,18 @@ func (segs segments) stroke(ops *op.Ops, sty strokeStyle) clip.Op { return shape.Op(ops) } + +func arcTo(start, f1, f2 f32.Point, angle float32) []bstroke.Segment { + if f1 == f2 { + return bstroke.AppendArc(nil, bstroke.Pt(start.X, start.Y), bstroke.Pt(f1.X, f1.Y), angle) + } + return bstroke.AppendEllipticalArc(nil, bstroke.Pt(start.X, start.Y), bstroke.Pt(f1.X, f1.Y), bstroke.Pt(f2.X, f2.Y), angle) +} + +func xStroke(bs []bstroke.Segment) []stroke.Segment { + vs := make([]stroke.Segment, len(bs)) + for i, b := range bs { + vs[i] = stroke.CubeTo(f32.Point(b.CP1), f32.Point(b.CP2), f32.Point(b.End)) + } + return vs +} From 32e23d672697b9a00bef5bfc6b2db7ed333404e7 Mon Sep 17 00:00:00 2001 From: Sebastien Binet Date: Tue, 2 May 2023 19:18:24 +0200 Subject: [PATCH 4/4] test-new-ref Signed-off-by: Sebastien Binet --- testdata/canvas_golden.png | Bin 5853 -> 5952 bytes testdata/gopher-image_golden.png | Bin 29735 -> 29972 bytes testdata/path_cube_golden.png | Bin 6054 -> 5537 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/testdata/canvas_golden.png b/testdata/canvas_golden.png index 9af67147301f70ee8d228ea28023c24eb143b17e..5d1cd35c4f097abd3378ba1f3ec2652c617c40e5 100644 GIT binary patch literal 5952 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 HJ4XBmWn(@| literal 5853 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 Dp-(lh diff --git a/testdata/gopher-image_golden.png b/testdata/gopher-image_golden.png index 4bcd1976bca72076a8ef34c259acb7e9a67dec52..b689c99f362b49f784ec4c0d71db210c358a0586 100644 GIT binary patch literal 29972 zcmV+SKnTByP)#EriowQrbacS(>h7xQ zukX9>-tXRv_w@82i&(_f296*Igs|{8fC$tfG8jw8B%LSFVl!=`NfdzVeUgi~`G6t_ zk`^RcRwPwB9mzfu2ES#hba&|~g?+9+lg>-m`wSOxQ(}@>41w!V*EJO}*@ivkB|u(n z11prVKzbxT9=hIVxQLq)lS?6i5au-q0T={SzXI5j`U zRh^(2f?%OqqGcMaxXsL=D2n4ailW#1LKbmjVUkz?AS_L4noj2hR1mT>_iRqnbuuHS z0B4cn$T{4cbe7XDWQi0vtKyM79I#dP^c;HtW_XrPCX-I5bCFw%n28VBfMF;Ub6hrt zB8Y}z8jfQYn?^AQZDlEE5g@5s)WnlP=1woZZ1|Xxh>n*p3uzR~vYAXq*Y)dq6^ppx zFln(wQJnk>$1Ck@ER$~!_W|A(H(3#Yn!Lq;AdEw6u)Npd?T$}`yW7z$X4ZrWBstO4 zv}mptaWT+>t-??g)pgxO;${-9BP1l7DlCxz;KcNylBPolgTdfqk3HrXI^B>y>jb%> zo^!^_uj^GT;)X-Pc_#=Xl$FipCopenUQy0*UzQY-$J)ybr8C49qyb6)*|Qm z0aV447z?6muSSFr%+Y;99PX*8U$WW?Fgcq7Y)4#BQM}0KQ+1tGB?}Z?4CZmWF${x~ z+fA@YwLcz!`BFL%!v2)>Zy`N$WLf*Ptefnv{o%0y7CpRaPodl`&^{$Ec3U z5O4r0nnvNc1<{;BqBs`{dYv>y0RRYspeX8EU*aOJ2k`lx001yRD^8EcFrZ)rLQ<2= znzT4TQzTW$LtWP~0n(Y$lyf zr>#~i%d*$@8W(XLu#nS@Dq^t^C6W_}Bp_4y#7O`Q0~n4#U6V!H;Zcgpq1na&P^M&W zL*sYY^>uWndi)$YKCIBDL`74dfbv!wMN!EDuE}*R;yPn)VnGNsO`}M{OK7aFK$1l@ z)d|(YQixzAjX5H>Vc1d5B?PNyH2JQMv=G_2ypVVxa~CJ2IX zI2@X$UE?cU#C5?1OQ9%=(=N8Es=Ucmi(=s{8d0RG-jgnubGNMu#c@p%afYQG?wPN( z0L_M}I6nD?p-`y1yL&95Fp_3Doo&d6I)tLC>KdNs7m4*pf(wXsUO$6i7-o1v9LqTK zN>MiAWk6PkbS5sF?UOz{Kqptj8PFi2=~FK+D=R|~gg@JLs<)>I%X=-fo|%Y**qp`w z%f2iz*8jOXSK|bsDvGY_BuUZ*U>J4{FMJW7EG{4i!!QQDWLY+B4*-D0fQ)h@x>KMm zI%Pso6zVzxXTMQIM~6hPG@E4^#$+-DgTe8MSbU`S{?=tWgy(t&1_$~@PKfCi;H!8w zq_8$iR+13}^0|ad9`>8CvXT;>=O;O;X&8nr#wKoR%-$8svaG5qP1D9|I5HY)Pvh~@ z;t0bdD29;~0>G3bf8qBY!>A6G@ef8Ol9}GTUXSI+F|+I_9gAnqc6J|9?8vISb%)Q& zun0g$F$_H)(;t_mzHEvd8z_F~y~gSa2%)N~x~{KSv0^bcar0s}vB(09zcq*?L?vx< zAv8O4odN(%QVT+4rct5jegt_woKjMGseaY5b0_oJOgg0>U`y7-nQ-L=Xfc9rQ`wghgC^EM&0^=!#sUk7xP^2!aMsPa!zONlcc^Hizu; zPaOo#yIcT4F?{^+E>H71(qf%T1f7SPP5%cr)w+BMMUemiUDtQ)*byEbmM6xuMU{lf zj37udm$ys|)s_XUR;#gR^msgr#JcHl35zvJEC|yo_VBVY70D;k<0`B1CX;A&oXW`i zB@s2;`5DMhgafzVhjWwryIBst5FV{r>6`Z91VQ+xfBL88%a`jIDUXk8vc&9t(;FY& z8K2nHvZSo6th%~d5QIfm-Hf<2vCIWbdglmYa!t8Af`FE5($W62d07Hx2f}iMyI{Qv zS!%+>&-qrmBFd6H{Z99)H`}?9QD#DT*2y8Ckk? z=~cVdMO;H%dMTU<2%(`uCI}qS_0+`p?JJkt(&O3wPR3tuLy-(bG$BuLW@Iiiqok5| zI54}_YW$NRh^0%HmY0`%y}pjK9mUePg<}As^E4TWL{4{f(KKx~n-`PTHzO9ZSg-)& z??Q+HYMLfV5{6+UNpd7=lQVt8qZ61}D|6K5BR1YNrgKs%!Fr13d_&e(y#3hjlH#K2 z=xb$VWiS}ry>}lNe(m$0e!yY1kR(Bokl1cl@*5`*kqhk?UIdIj&`3oyB zmU~aL)gC&$W_7E<6#zggmFgTBH(4FUK9AdO9h->lJ$&NGsWXHlFc9v*c*`4ayy0*- z005y-2*WU&&E|AEeLkPdtKAiH^ zcvd$#8keIaxr3y+;xddNbzK7hWJd-XrTDp@|NExq#+H^Am&*kJ&@@dDgvDs;je~g= zq!$B1s3^+J@>EIF-yM^>7&oKI5W^$917LWfv)xwRfGl83G%X(h=n7KgUJ*8A2AJVV$0)&De=RAG#1`hyF3q{7y~aNQsxr{c&^H~spL)~;QPqNpGU zIF9G@`7K+v82PA0Twh#zS7>-Pv*a$57D5!0*?dM}6}u@zIw#E$S`e6Gs3wURGrz}; zVXQBh9UF1Btiw37lF#KP#-gW>+NSleS*^Ut8d0PUZs^&sNjMIzEieo`|Ufhi6s+t+;=L2P=iGSxan_NqpOEy1f z@|OS}g{BZVywhCWhaBaUdfyb{9r7007zQl34qmfBo*KKJ_VzqG+17 zSS;WE_O}55hID5U*9(_rvG4+BKBDR{t7u6XDi$Y#ov%HF(0u6KrB*th%cS@BpM;!y z`7OBVyx%jmoJ|77amr%TBq?%Y|C(?7(6j2+IX_nz4>j%l<qMAw^o5B=5W z|I%Wy;5ZHdz%VQr41VRyUtZF8AaZQ4K~t03nQu4ifXra8 zb;Zh=k7TpipZw$}Pd)WiDwQI;jtLWCIg_H^dB&F+w#)JlUme@BWsBKtCP}iTrR5`E z*CMV8t}LZ96H~>_y2__VC{fTLN}wnXC-;wJXr3U8Jd!1`QX8W@4x@P-|t`9w6u@3$A9=gKE0-{wyHc>w=F?EF;O2P9=RDZdP+9NpN7ms>__5w~A@Ml2gJ%<%$0L z*0wHp^Hg7(dSZ`KyXriVAk-3f^t!GkKKfE<0HD}tQn5MxE6o;J zmNS`Dz#69z>n(CZSJ^c4uJEN#+T+li@J87Cm zQB;y7MNy38CR3>LU|E(Rh((fp(zs$`&D?MS0L*4HP16uUu>h0FG@S_2b-lI{{+}0q zr{a`%`7J93kNvr0@cAOkym6%QE^3QvZ9O3(V=mdnR7bq zJkJ}I8q<1>#p1K8iz_BpG#b@3%~)KB0*pWa%d)dlbtaR^i^`tXO$f_V{byEcL!+bQ zcD4vHA>eY7$0#~nv-!5&_){7LCK5BVG(}PAbb9NyZQOlN)3LTtB&s6#!GZYB zf!K&GKnAOAoEhR+Cr(l}CyJBC&QVttEg36P^UktuQ8jQysr>x!ZP0BD*v znM{jW?W=_=CYHrwF}xPTei#v^Iad}O$NenEB6?m|YvX+!i@Y_4Ms5ij&(0?XoC$kl z^K);U+w;nH%w4>Jhigh41PY#g`PIEe&DQEA@4nyF^UT(Kpw_bH4rXbQpD}%ypoCMA z2qVvklO%59q7YG?fuY#=X!j}C$q#Bu15}|0&Q#Mmlc}z*j%C@!c1u?US4^zS-)*5N z%9~gMLIA-?JpIg=l30H~Nm59Gl&X-w^jkorA@Kjn8$YpD2h=u)O9(Z(`AV(Dm9l@({|?^A_xT0M1hNimuEw(mlk=gCWfXJ zMTtyI_`CbxY1@;^XDoHg364hyQn$Ocy5{y+^khdD%d#Gi$7msO^yty*>guARqD5kT zOnfY2866gI9A_A2reC6}>WTKVLxY2(5)iAgnaLU$9b@GLN0B%N`+M5qlC>ANftWl@ z*NxQ;U>Iq(<;F%dF;DUqb9pu6^38oV5OSHs5^;Quhg{N7Z3r<`RW+N<6iKT2%=XTs zlFfk@mtzbINE&q)5lw6NbR7x$JXWg}MNyVzB}vL;GK(#7K0ZFyCdg1KUmO+^1mVSy zvMs7kaBgH~QyPGX44-4HdDbRay+=-+G6gFM&U~@Cnq<|~nu$>sYpSn969v{+JTI#X z^^a9by4As3bV})u*fZ~M7UvgHb2gf3*REi)7x7*#? z+R88tyeM(Gh%3b>;H5&y@%)#TxF@{exO2%MhR-A&R$ezQ3SnKxNZMAjR96*jK2LeN z0+ysXUx4)nD4TQoBQ9PCrDSZGgRUvEm`tV_=K}lt`+x9*A9QzjZ`ra1^qy8Kmm+RI zggTT&JsHzjzGFCC?hmdY_(eJ>+8F_yPZy_QJ}kskAsh% zguWyI031WbPacS395mYzbheoRD5_*qp43>anXcw3AF2|uFdQF&76&BHcgBLcCJH2H zMsae%zyy*X53RM4#SY8NNSjf>!*N_DlUcE11x-;&1sNF`Vmc2LxvV6PXLI@Cc)r(F z*LLh!HWpzi((CoIENg_|XO>l7_51UOjZctR5JHk9oxEw_ofrF6ob?7S&g7W9#o*Ap z^|jRjpO*nzHawD1q3ZM_ByGHft|)RkSs)g%FtLG6|+5`&j zIV=!MN+lSV_mU}M+U6R{3{^&BHk)l`nw;af>gwvUvNAysj<>a|6T{7=&Xo-fG)*%U zDJx3vSp1d#evIXC1-7@h4-XHsESt?{olcS@i;9YPp0`*mi`=>#e6qO< z2w`7$=dF#UD=U5PoZ2Hwv2j-!$*_5VB~e0$GSo~gEKx&%!_p^j|ECOw+|y}9m5q_#tA}AC$ypNCS2`3(XOQ8>({LIcsw*s z8_{4RZED1a7njSK_{5W9y}iA~Y*}1{x2$ZDWMwFPA}dHTM(PBGqZonXK^xP!qN+Ps zk_}c*`t>^0B%yxybKiKdd9ULCv24BEPeMW3>fS$gPT0BEUsB=XD3{q}wOTO@({(+a zP9HpYa8RRxGcY(7kxz9Wh{6TuGh(k5w!;ea3!l9C{gvu3ThB9WLNkG=QSds}TBYc`vGK3_Z@x7+QROePkK zH8wUH@s34qT}@))I35ax!r`#P;V@#^lg_)-dH0rkXX*tm)(+TgHvh;D2|j`VAdH7T zXG?lr&R@Op!MROe#KGj(e3_AOl%N!sFUwj?4o}8i^sBQ+``_Nm;OJ0B**6rHoj$&y zx%BbRO&TN&2N+i1>r4g!MAtQ0loC-nozzu@D=sBCbD=XYf|4Xk*db?*!aF=?_eT3q zFI~EH<;s;dn+-)#Q53tnx(*yT(A?b2^ZcT0@G284P{5Uz^$`ToTx{Q0$Pcn-4&Jf8 zb^HD!uR2?ctPWk3bxlR)OeoF)h*GT4=m=00QqlO#i~BJI6273Vb(7N{z$ga$aN5*` z(4m^k$h~KZaxoVaY$Te9#m@Gf&IhWoKn1~BFp@-26c8llFNy0anal4xbfmt%-tYIL zC`wUORaI3sn>~2&pvU8>tgJM8*8kDsItz~s3Zf`#u~-U;XNQUwWvIm$qa9OxuAT%65j*RNmy$=$abAD;-ZF5g^DAIWhXRAq!9G8-OAdkQBZ_z zSF}SR*~&VusAT3e;fvo6B}qP5p$d7ZY4MH|-j;QIu!0LL)W-p8niz}Nwmtu;+nQVd z8+k*Xh%dH{R~aq$rn{HR{z+6lFQ4wka=3FYn%G;Z5t-tuxAj6h(>0 z<2IXZvDx!g4#~`?3s4kgbaXTtjn4O~P$*=y`vw?Bn5{xC3sBq>DDhQPVJ35DG{u(H znEWO4CU(wGVL?%hve?20w@2F!>#FKp(qi%zFL=fXsmj*gwuf$MYH4mZ#2Uu_gCGdI z-QLvH^z@UDl}z+y_r5DWM5z3OiD7P)#m{B!Kuyz1LOVXKpG=; zL`R8v*0Mr+2$>oK3kcpq+1+9y>RQ%{v)r`CaBkt3rgCEDQvuWZ)vJtRis?&GRW+GR zc6WCt;_=&>mm))5*`eN%t&0V$>|%kS^rzvt+QiLTS$Pkj!b5mP{UE7`b87V|1j0R)nL-G(PLpU`w_tT31& z5JnKLWvfYx?UHAx$)ahvbHy!HoQa*amD6?ocfb4HYp=Z~2*RdKn*zAnGuUIRYbv}< zgR-P1CZHsytiHCkwyLTsqjYio`t|8_T9)N2x>0|4_+*K-@NyuE;ybD>UD4tO7~?5c zX1^B2ji!D8upU2DRV9}p&GW}gjs9G^F2*CQr^w_FT>R|C&_od=Cm3ewtVE5j>yji5 z4Go!0rt0eIWHO0DB-e9Bir)q>Oz1gFcb_0fI;~5JI!r{PlX<#Dto(H|%I^1+xqi_>c}JUoba1AVxwsNvV>SMc7>UxxzJCp!0j56EE_Kw?X{MOog5eQT9=xA?O zWOO9ge3vqlSOp*JlHIvxemn%|#ad((MHz-MTALm|e7Lo>702--T?3hcuIzZIUqpBl zW3`w=;m8ESl-%{`07PDR>1DUmv258gLjhrIkPXSrbh6=(XRCNa1V}Lq+ZePyb7HTx z<+l0Kf+lYu*~yFz4;5EdYnrAb2o+C^DGY7*eE41Ix+)3T(E-NkLCH%E(JVOoIAanh zE*uVX95>5(M^V)8_uq5RJsUS})HLnP*$z3ELCziDTxx5nuTWHtr3pLF&{jJ}Quey0 zjV(F=l z_ToVB;;)<}NxR){%rX|G69Pt->5)%Ac%R2p5F*<6b$? z*4$8gbYQ$MJb?q?uy8J$Rm^3F#$&PZ(7H8iFcg%Pl^HEn|F8|%H6qrAjDCXm6$m(*czB2I7hOUvJ;fSJat&0mkh^&Wi@2rUDcr00Kx-m!!)t z-$Dseu(;kj8f%RwR7EzrYaS}A zsxQiBbVasSFB#^{C_zv-0d+mD>j@N#eG+IPv^XCyGiP^~)!>d!VrC17Ok<2MA?#SS#wr;^Uk@ zNZRbv4ZsmiV-k@iHWR?{VN@Tu+>EtxW{5^o>5{r1|K?SHbwj0<^04HpRV$~X4~CYj zv$OMTI4Qe=V-xXLw(dXaZ()j;IsWt>XmObt6GqVme@a6DdXZuRVHlQi`#V)t@FUEZ7Gb8>U4u^{= z>FG!AN$+}N+qNAL!wD0Q;<(Wqt6)7a1R$y)pae-6D)>TMc{H7{0OhqnD*zT=5D0gD~l5%fCEJg@7zAPC{`_<^HGfBwqbZCQ1EWGLyb zR5w0hUw0QBsL*Y0oHZHwfWmd5=X;YBN{e(2prA0b7$AkP2*#LjyNmJ#iPCz|ak!_a zXZ!XK`uqEBHd`*2v)k>mEQdm&d_M2-cxL7RZbn>FA4`^HqZn)EEi2&(lU;W$X z|Loy-GUWaz#V_6!|o zYA2j#RqTdW*n9!1YN3pF(z>v|KzGw!cRc+U1&1S#fUs6)y^?H3ipV#Z9NHRV;lqs&0855F=m-rt*bIX zQIacEPG81Zl9=l}CB5;> zzgiwxSLRt(5v(r{QksnQo}M^&CZ%XlRVkYTIdAGvl1egWplU-0cltc;nwlCTFk##x zK@k4+U;lMvWCTK3R8({`_UpRV7K?{6(mC6<=C4O;CX0 zgxMxG->#=J&%N|YX=&*#x7=b72u0CYEY{W4<@I{=`TR}VNa7~@DNOgb#S5Esl%gXh z_v>AwwGaI1!z)@;MUh1@K0cO8CU;4UwR%ZGaf-|urhhR|f}riLp>3~wTGnSr`c*~Q z@Pn5CHhW^!+|bncZ+`r@cdoi?^M>h|yD`03bR99d7XgIL(esnq_HQ$#q-Chs@wA}@Dz4v#|n#-!a zE7unqyIsZ^>w2c+789&t5&VTFbv1>y1Kf`%F6EU?&9L&n>6%rO?|8dA`a6nCu6agF?M=B z$3j)r?(XhUPmRFvMht@B&3WF@lM+v!J`-~W<>D$K5hF|-?YKON0RRXvYUhD4F;=|c zUe@jVu+s!Y5U9^5me)j~sb}AxJ#??z?VcsPfe_~N`S$kq?c28x4GlG~Sn>XQ@2R}q zTHT0FtE(XbHBC^p$mnqF)S)}?*lf^q@@p$}O-}+WtTN^EO>9gUswzig*7K2z#O-;kY!#zDcH)$8R z>%SD@IL@-HQ3PfP?D(rGEIeJFFKGi zu8AJrWpBCF*3hhp`N-j&Y&4YJ^*XLeilQEfr;2QReSN)gHzP!0f!pn$SEX1zp{WqaMSD?2L$0fq3#oX-LP zTrSu8_3L--+9e1=EEW?*v9zS*XkQ0JQR%IJU$(N=X}978-rGNTcsQBn+`T0Yy=C9cJ^QwC-UJ!P=hr-iFc9;{`+_ktd#b z!k8mu`ubL^Sdq`?F_PA@xzV?OV}g2T@4)y(%g${Ln3CX=eD6QR-WzW(Ew-Mymqf_+ zqj zPqayrtV{Vs=jr&F;{ht}4nzxc%(e3Q9S9_G~hl z^!a>^jg5vF^#(LuHx03-gW5QTRTX(cgMA``s{V4sG>_dXBziroHtafe(ALn*RuoY- z2TfhjtowYZ0$?-)Me!q?6V7tr)(2jG^>vriiD8)6>z(x-PyaKQ%f({xwzgAPHX%v% zzkO$0E-y@|WM|c_}hTY|Cb|x~^Z}u9i0qv8G`RRH_Pv#L&4BO&9&8g%QAW z1wv8OTv8>a;+dfyOKBB`Ul`PYg~2LDBgskc{-cdK0bE(l&bP9?Zyc!RsRkn7($Z2{ zSvl*VY&JVSKK}ae-&Hu9BFk;Pqr%chxInqhYI9l~0K-1)gyZtgGMu0gZ2$!oHNo*Q zUDs?r!emRN6ZvyTySHu~9v*(|vByS7N1aY*G#ZV?VuOQ&6h-y*^*#33V`XJ!*M(l! zI;FEPE+^Y+EGrDdD3Rf@vuz%bXjgCHo@_Ts;le(wJ_VfBS036B^vn&BGZH$xfw z)?06V>mUEu;h4x3m(gy2(O17`U(!N5JKj#csD74Ra((+PHD!kAC!{p`oG8n>Wua61fJrv4~~BsBNEa zdpr{bjk}u3WFnD>oQ~DFOdFO~>>g@Al5oqDd$iKR7jVH24yR~ypghran)3xQ+K__5 z{P?K0?d6s_Ge_gmc=E((IyDjY$r65a=bierq+ zb4p#cnj+u+w;w$J{PRneESXlE5(L4r?AO2k_3wZG`}_CrU$J6^(YEBuF7Kn_###yu zXqqNTQg?TEI2<-Qw+svnwON){uq!Lmxh6%a!xl>$uEx}s~u~3m3>kszsfAH27iDc?%Uu3_fMuG_ADZ-gK zq6P~?SLAaq{7d8)AB>Tqrd+Ct?8~6 zjJm$Ad{s?ZMUhuNcRbV68H>kJ&aA5{&VD$B3ZNK9(nFNB98-_)+Qzc%(xpqMQ)I?q z4!hm{%rnnKB9VAJ?)7>ve@5=d!HsCKjB??Uk`h^#4c(mI@1GVq8DbJe5}}TZik6X) z@|t?yYSVR?lJXfPD~L#1*3ycmkgO(4P>~5u9R&GYCW&~95dhRgtRgmWXKU@5b3Of$ z^m}1dSyKl{Dztx_t7)|+39P$lq3G*{fKU%^yuZ+52}htVr<3_;*iunf@$hGyOII3H zzBF{09T~`tk8aNPm)*Jg)?3$86a^s^MKP61x!vy3(b3<%@tg7PHY8YG@hAW3!xsWj z7$b@g)U9`|iyS_Dc>VhI#^`_Jd6s2IMn>Lz^UcxG(fjYezrVkK$&w`>;Y+zv+=#?7 zdc_((!JO_qgwWz}k7rY9ElKmXU|E?VV{$=Q=pCBMWO6c;NnAlmwD5*xac#*F98DW; zdpcI3ggYj*l)oN#kgesi0uxy^s<2dB_Zh-$V;r7KicY72k+k=gO|dh_?R8CRKAY@0 zV-8e!zx-`SV>31@x-mb5iLv~S*B|oHci(kqFc_TKTiR~7^E~hO`=in5;UhaVeaM z`EG&TZr1?L@Ya&D^63bnp}OID-fp+M-EKz#cDtS9I9ZlQX;+rFBLLNgdV=ZEQ{hz8 z<}IaljV^z&&2As*>B=FP=&NwlH{pzFT26DxkSRb>3@7^D`i&~&q*Njw9`Q7|q}t12^JQ zc$v7QKz=509H#&@nuS1%lU#c*u84{(_mA}BB*}UMCYt8689A4k8b^IOA72=+j})v5 z*RTX~2R?T_lkx1mV*IsLDYhzjV(MKOOsp7=( zefGL0$C3+*nsiNtI3X5Qy#24wZr;3kdNs6IEMNWVSC=hY*5BWM&6=a$pv1bQA21zv zFuaEa%)7zAcs#BbRRCkU2?kJZGB9piHVp1-^Dg;7dVyrsRSG{`UoUDQnN|N-!2OoUrJKu@LVhDn?x3_=!OaJBP zyH5asPW=W7wd933MJ(BU2BR6@U5|Hmb~ZFLcsw41nk6MARaI4o4jsB?#bh@qvF2oz zrfGs8Xqu*~DoK*Y3_+44=L`K!E13jAIDPtb(y?s%i5bDhDINfbT1u3R!YPxf>K@B9>Qy5gC?x*}_mFyAE`uD8+5{F~qWW-J!lwrv}RVWCq;u&Sku%S+ju zN;Wg}{%;wmjlK92LKSobq+~7XaxPuE)ZuU#o|d7&sjRH@`~6pXh93<#D6!^*rfKnb zJd??IJRXuHHBB>{&GUU9nx+e)psJcE3ghDuKyxfZXN;%kNm}EKiLyGfgS|xka&!SR z^Wn!#aZ442@nd^S?tJ)4uL$b8D&&=HY5_x%&1MaW^S8hKZB5gvtE*8Iy|cOTw4y*= z&xc1wcfDiU_q#_nti=B8A)+9#Io;9SIUF7w9IUIWo7N%r^z)s-thPyW}s7M~fMJil{9R55R_T~g^c zWiTN1wWBBw9KQDU(|COgfuW^dZ?19mEQd*z&=W%7wUS@@4a}mf&mmojbQr5 zjT>Ki+oXFvPd&sr>&>HG6Zr=_nBv2L^)Z~%bE>8Kn$J2Ws*O`&pmAndImSeZ`jYHGT=yHNmgBmL>Yp8lZ`uh%UrswB$? zQpjy2wfXtoZ)_~fBxA>p9cyoI@9*!w@4owdKA({dGXz^k)ty1FPl9JxfmqQ*l3^H@ zB5#nUnuZ?S!m(SHRpu&vx~?B?KbH!WD;R#s)}#Q#ZB_O8&I5`hIsHYj&_T`Ya1M8! z>mQFMf{o^jUZP22^z>2p@-pHJ7#2M3gGMh*wW{$F+38UpsYip~`W}_&|=m4m9 zb}HFS^vv;W+o3IMmRqfs-u?lAAe7Bn=-0~CJpEt!NZWgFztPz{@QrVL!{hNpqtSi) z_U+iQ!{_r24i1)-l&oC2QdQLzD^>`CU}z#P_v9}FAD38pQ9Rf^C{wHx)oTMjr-eta zH@Bt-x7zJ?o6RPQVtH}q(82BWy1S=FT`crsgmL{Bl4^6 zF}vs3QYqPVJ{m5RDqhKjpYLZxT5Ln+;?dDjqqFjy#~L!2+S*#0re#@%5QgI^+U{u5 zlbinI!*!LVnm)N2_6`oe@Xya4{-2*4c=I^~K_2@2(}zyH16BEj7haGg>FCj;e!t&p zwW25*kH-Z;2!%qscklk%*S?0LD93TP+;Ypb4g2``xWvlk@{%C%feKMkc6Sf^Ftya< zoNgmFAEwL3XZ=R6?vgs)%B(aP;CheiLLRv!u_j%3lV{5l+g|?Z*+cszK@jpe`pLhc zJjLuhp#+R(Q+=JtCByXdfH3h1U-{t^hpVcpd_LcNhZ)5=M)f@a;K;!PvEJdB1+RK! zlig-{;`9HFGcmy;e?C0oZrzXz4VFFp^gsXeH#R@J7bQrHqEVbErx{HYbWKHB&YekR z2Yb2?eDLtYjuR(NoI7`}zrX)SKl+i;icC?Ik8iy|PfyRse2aKG(>)Rf6q64R7yEr2 zLtCv@ilP>vNLrAft~10Z*z|mwqYy$#miHYywTrLRE0>~|QR}Q`Geg_oP%^2&#s?^i z9i!=sJ+tYFQMxSc`qC4(|Mazwe5!IPp4j&KSDXAEkEgD#&X_7a=jA{MGnq_JPtWc5 zJ|LqwnTn)y0)ila|2KcJXZaJjiRS|4l+`}zN&=wfG8kh*=P9I~n!YazN;W<4=JTO{ z|G$w)1jDdRn>PK!Km5bYLRn)Ux@*_24I4I?%@_LubK~P$EC?ab&?~A+A%ZAgoAIk! z*zo8&{N3@cIPY$y<)y`rISZ#|eZ)r~-^}jcIEIzD?arRgLC(qsDgd%zrw|0e7}i`? z6FI&g0VqmQbNKrOZR+{=N1>{G1kZgM1ZR=Ww*P;378_FUdiPz6#qxzOeBt8DF(SRm zWb$vn_TMtGC|}o9?DG_T^}D8`l6IE!%otx~ME?nHArct-24LcF6Ib@&p9Syv6Cn~B z{nlro0m3Qn4VOl;)j zanR<;?L@lTrNitBthVk zBpEJ|F*cW`X;oFz>Gb=Zqe&IHvpC&QUAgeZ%=at+fTroPB41Hwcc$ZDI8}oOt1yZd zqG36gA$bdBu}}U!roSElFp6(Kz@5=-N&(5 z2m)Dev7wSMm)9Ib9v%74cmL)~U-bL^MhoEI|Ni$+KKbNhk3XJoSSx<Jh1`)yT5K1y5G4qdASQRyG@E+zzdeaz@4ffl(@#JBzyl8~U%uSo zaI9Us)<|^-g7D{m{^yT8^2p)ChyVJo|9XMd=4uklNNj1Ewt)CmR&|QAm`x^GQ*{(O zv2RzZszy@PoQjxv4$a0>nQWk}Vmvfr;Y@&JGJ>=#E+Qz_lFG~~vbdrp5=Bv)&35am z6+3tA2p>5}uD&Cmh?U>_IAwF9IBtkPH8GFTQ+Enr80QZTZhM_|`?#V~aJ~uy>XWpR z#z(o|{@}5v@ABhOK~pKttjRKVsX^%TL01%ORpa!vn9FO1@B6F&^q>Fp|M=!VoIZAB zcz8G*4nMSe821*poWErByw+;r5RWFyN;aJv=^uXoRe+-T@JRT;2eh{^*w<<@ulg{O93t_-8-+*|c9}bS36_e*5(&cai}QD$mr-G|oC&|2Jq+s6I%XVc1& zv=;GH^^54fNVYv8<{_eohf5HFz)*^!j0Jb5Z$6!9oAVYMONl6o*=$yp<%0(g68S`4 z#~kbKB6$l=GXNt1iUJfvFC1e&xoT+o=-&5T%UX@jTL=J9m2;uNt{;B$&H%k>ZHp|) z$If>Du4ByAw0dgB{YSWUn!4{RPc?r2e@s7uV)(9Se)_AQ{&?rnlk(aJ_^1BHFlkrh zYl`vc=^uRarCc^QV8nVgz5wkW{Gw0X~KN=c)2Su3`BqsA~QK_UPpbUlZnRO=>EQ)OLOFpNhK zC7Yqdybu{XtK`L0-XA&bwpnCOc6RB^dGGpGCO z9`ui1nQ52BMBcPS^0%nLz7DiXj*$M#dI(=7KL2uHiPZ0QkF44@S-#)H!ty*@UoD?r z{Lof!K|kDdr}1f*kmnj}&%FzIc`hg7Ma1(20rAH3ulI4ee#D^B`*Z0^%KQEKua1Bo z-Pk|gr#r5LdjpcRj|YCtIb7Gzz&D!l{fg22HXXn#+g(pR4+~Q<#Vjo?A4k=@t~$?s z>=w9m*o_bZ!(a|B9?_v#C|s@%0&3mMT%-s&ero)t7EegyBP*|HjjmZlSTLzDSC*GQ zueUdPB9n}aZdjy_6q%Zt zL7xWz_2uPd68Mgu^oqx1B3N;!~4_jcRDL2qO>_w;(%+9djNLnh&|3 zE0qHW@7rTw;-2*1V9DV%pBq7WiT;$yhIN+>c*eK3opq|Gw=L^J`4>|&8_otd>;4?S zk?ER$5eLE3f9kqlH-|W9zv?1S36_}{+}B4MHX9M*4xc6uI}IK-pAwt+l@%T*Slz4 ze751c*(j^!j~}uWpK)@ARLQZ0Hh1~Y2bL033_SRWoGvm`VkVE0(Pd3t%|W**?e^(n zd+B&A@QCp$Q3dEGGe1Y-O^RGiE4-HmdThxOrkCv+z*AV%R2LvTmKT z^9LD8EdSz2@Y z97;-s^^08{A@_GV`I>4e1>Gy7cx3|@ittTtYl_zHsRJz-dj8;N2A)gCIv^$Qk z(bk`~)#tq#SQoRv2fkOUCxok}|Nh9oJ2jU@EJ}{{XAo}_Y0$$D&+?#>h>|ewh4q^}!owWq{ z#9rrw#Hwjcu{r!sMdnWh9G^*o1V4Kw>S59&EvT=m4>Z+;5<;j2$;^KslOcK(*+nMjpZBSkJFj1tLeEw|EOZ;Qe7c7KjP`_;D(N#>eJ) zb3jD;QsY5yFvyZdPsxQFbUNLEvbg=j`5^|#w!XVW@BwW(o`O|{3eQxu!;Viic6vKTn6 zacGIg!Dd&??wA*SXvTR}b^N|Ojy;4!V;4$Jy0SBaaQ<@05nHX3z+N@{E4%b@o>=X~ zwki4i`rF@Qs&RgOM!pYz-gj{ws@B4C&m+;*6E9;tWU3pDny)|e`>FK2t{{Xf&r&Fw z^w@<;2*1i?zsxRFYFBqX9jOTSK6Hv!V@raCBr894?;09ztOJUqBaj+Y)J@sh*#R=} zcIzEn?CkSq^|$=f7jB0G-;4v)foJvnQ=g3+0KoYJ3NhqElam-b&Cbd4-KC~WS`)uS z5hf@8n6lWaSzKQ~yAshN7Y=g=W9`sNR~6!wxhTbJRi2s867MX};eBODF)=Y4A%k6> zb_i@D4kV%YBw47GKmoX!G2578?C_j9%=IfZ=yQyUYDz(7OO@MyUq4BW$!K4Lt5hNZ zDVOtvox^hI`$28P2^#bOtMdt}?`iQnxO;D!b(EU#457aVrgk+%H>R;n0m#R8c&C$q zD5TU>Rk1KJJFZ6QAhE=NEil;o6TaQ%TMR1jIFEdkQm)8B%U7pVq4(#y-M&6amN<~h zT4RWrxj7(&h4gQ=I_=**oCFuu)I;f|W`C&qoVlVVVeM%)J&kuWXf>1&GjmU=umGlJ4Y{hC+P5Fe z4ZuugLS1-uLy&EnA9{)0A1q>+x~6!`x_yuReg;>o@vP^2qNcV0yfe>T zD?eL4`55+OVHtRsMiXin>g7l^6B&3DRpgbK2*vA_$DAfWX3Xj4o-9NVj@so6~c?7jjuFzcl?c62q)-{|6otYu{6RkQLsP}f_hkQc_9A^qJ4k(f6FxE(cqh|vJ z{%`#NZmnI%sI_xyRe1B2%fYkC)a}E}KCKK|s5!ZOlB;Wn& zT&Z&Yb0JwgH5i!;L7P~7Tkjl-hDv` z5*f|STt5`7%w7_kv^rbx(a}zy$_7$@*QCQ9k4MPcqnq1awh_jY zivDIFsrq>B8!;BF5FS3hBIYjVSzag+bUX~ip{h(a2XRrC%zNS~h=TF$aC9ozr4v^5qb7B8b8~5| z<`X#rfT%LV_M>@a+{_6ua;f`Z5&D@9R1S;F;4#mki(oRwu@OU~X~i}Yeg2e#BBY#$ zYQ~68*xa;9f3fuV2^k3r{2EM1ND$O->@|RL z^WSb+syBD5rmj2{vVJag)3;cExFYtuHt@7^^t7rQ$(^-khkI;&;!^ ze_l><($$O4YKjq2s7A7n!u(0=lp%G@gyj<~Y3f)kA&(gwp3pJU=2f{ONX_EE!LHYP$J_*1&SS z^UO8dw4_Sz$MjD226}5y+^lbZz{J2I(G!?!(l{n&FcJsC12qr{EL*VxZx8j8{MPkL z{_NhsUUvMqI+SEs(`Sy&SaEy*{OxZ9C2W8bfrRMYm$pv4$wVVXE30%3dRuGjSqnCR zi30K+?Z;K^Uu4tg%tv0ryee`x(3lOYHkNa#6@)2B?PG8}Tb#4^0aX(S=z);3)gy8A6^e{0b%g7#j5x>tzP#l~S`@Fs2pLbjgtu$lp3&D3i9^z2WANw)u zV;*edlPxTDE~}$5w?*_(k3*~7% zMXq>d_OyxIV}S$<@gofZ`*s>vp0z67zbC~dLt>+GJIzU9)Y@ZjUvK|1q*?=(CT9!)rn+oVFc4ThIg-N)g~q6TC< za#&i$?QT0vZ{F|(j-)?Un!XAMyaPnoNhp__C^DVrrOiD?P(ur^u(WXI0Kpg{czSsz z(~M>_tiBOL$Ula=m0@cNtkY4!a7zqi;d=PT2zsZi|c=M>Gbrp z{XWTK+P}I=`enO_E7Dws1(PWD+WCiRA{Bw&HwkoD`(6(ZkKo{7m<2wGPgvAoeNF}e zJ50BJGFYKIV(#yFN>Jp+WX`CdkX`!j+e0r~sF1-aXLYZY#MpQFs~LPMzB`)^d1ihz zQso}W9EVk?ur2Fh5Yr{(I;=Td3oD`mdY>^wiD4!Ga7^6zI+uPL6L3RO%czggFpM zE8xqbbN-Na`Ne5}5La1F=emz_5*6BaQ``2XxbSPIZ?~e@M{2|X(yT8dCQ~DlwUQM7 zJov%LR&02+8obodQ3s4c+b!R}C{trnNXgMMRQVjIo!w$)f@ML0U>Wmht=CP!Zn8iA zm4qekI35+AnByT}e98DvpGA~9QH%e5KNv}GlvN^`>j22Wph(idAdcpH^#Ln+>HGch zSsO-ZY}WAD1k<6*;I_DV!52C##{^7?dsA4UsnWz7E%vFq4_poI%3H&D*kX$4W3N{sC(3-W z!1{|k#C3@YnNEqN)0en3N?v~PCo3r6Q|nQ~7vuLy(`P?^$J>r2$I^z%%0Wn9qwH7h z%I_)SUTcB4V#e2jD#OGeS68lO?uz^wS&1Vaz<<(4IY*}c)1q-~=gZaD z>j~6PjOkA&>zzC_ejSz*GiKbGY3T$-xCy-GY+Fn}oH)nItq2%m=g&&2?AY8iC_j$? zdcpog)=I1gihVt242&4BNW0npZnw7B%%8VDy@1e(bBHh~o|i9Fp-i4Flh<{QJ{Y!C z`jiT5i!Cd&EP-o)M!Ykuhq6GUSc>JS5zb>t7garfaA9T@0CWLguz2>6p&*~*iGB;L z#%uehN>}1wl{rWngWTqmpIMai16bOu>Exx)_awKd1~&1glO$F#cXJ7yo&Gf$L^_i^ z@nm%j>20*u2SgtJUFV+pX*OMDWgx44{&?Gey}q%ec$cMN4P*mi?L1#`VFOH+5CTbr zBCKpI1?(HFCVTU9Y@f5SNMZ~PV6oh71u2t*5=^lpDe35BD%H?ZV5u+>MUv3^#dMNX zYhyD4Zn7<4KlGU*8uhV(LNp=}^QZ%iz+*M^+m+9)FYfHf(WjI&(q8x=;94Eq2SUzC#(AsK?;#*N(rpIm)|;MCw&KKEI$AXZ#kH4*qT^ z$;hb<%2}+ocMZGTCs8m_<8}z#J+7Sa;pE%r{!SKZz=Eb3Q6b!GzMVj9`XD&*>F7nH;MWQ5$j8Qn%P&iT^yq2n!BdZw_N2> zCd@&mx$SEnzOK2XB;aHpKKPGg!&^CxLoPlU&3F+ogPRO`0~Zs4BSL6eTAFgv_Yc?G zJwzagL$WkbcBVpGNL>cR_5w)~M*yx&l1in>J06N&m#g~dMjxs_POC%Cl&LI%RG>q?EM@XdBC07 zy%SpJ737)CB5d#1s873cReSgQ`tCqLuEo$i$Dy>@PKA!~b=x;y=dmH|jgi0a$U;-s zlLGI6=}yvOaiwfm_^0zrLgztOc|?V`rQ^`eKEK7j8 zR1+K$Elw_`NJ1ID-7;?#Y^Xt-JT&o(evCy$p)`4hAXRew`^&7vIj*qPZK+cVT;-`W z8Jp8n5`~DPsVB{0qjmI*JEpRt=r~A{{=WYO_Z5Dzdw6{O|FFk+h5!h2Tx~Z-(JVH= zSjDX^zgBNIm6}v8t+iw;63tmmd4lcIMF5X!8!f1f`~GDw2LH)7V=Co80srk%+A&mxFXMnNo6n;z6NMDWJo zn6XBTVku;rLm9QKw-e%m36=XTYnv&*tDTX@>wWxa@dS#*efoY1C7r5{{cNutN3MP* z>WCS(PP6g!GQtdCo3~j(>orjLl6b2ww7fryd?P7HAd*lZO4j?onB1uKHCZ}9LBd&R z%psEwd?Z>BHAGDz=d=F)HS)j=fj@O-K1MiDGlLHEyBg^fW}*^JqB9R#NH}V4?4)?b zs8yp87zly%eexHF$t6a3@&@V~#T3=bT_&^nHWRAbj%Y(0`xU!5D3rpGX+WfBS*-lk zp}Ocy;SHT9JR+Ajl8m>STs)Y^tKEq_b=R-v@9+@j_SyPth25Ne zrtqk_G*PMasB$}^`aMMtv+TK~5E;`Rb+MA1$#AS5P#~SkXORec%AbYMU>ehx^)eW* zzg4=&j;*w`v`K&8IIv0ami#Wzwe{J3U)&YWIt~Fk)$2V=I#?&MAn8!altt4|z*PWE z!NwgwI!Opl)kc;k#E_FBSB{RZN3xHM35jTWZQU@Kj zxN~fIDJ>_j@b>!LO9F|)6;V_HhFKw@fU#YrQk6UfY95{y117-A zBM?GQFDj>vm7QRXmY1(4!4aAF)1q(%-xob=QaKP5n1zryvSnk3(>A>f^OPWa7gZ?GnYDgaY_`A+8;iyt* z$cR1L=6yaBP^jpOFiL!Ak<;w1DL_s^t^xe&5@#4R822~-3bzVH7Gz^fyVT1!8g*HS zLc#ou=KaLRGGT+?8%i0%Y!cTadQ_n0*`MUBR}zN!!b$Bj%Q6nRG$e9P3PBsD%_`oT z@`M{x)-No`+P*JymhJDNNA6iV^G(((NhplBvsW&p___qL*T~T@5!FOXL!5yKOo0}N zR7i>`HN#b0p#)*r(`X&%nfVQb7!?Zy1yY?-CwvQ6~k<|hGy3i5+j@(bP59zf06V<>FT3$b?oIj$ERAl_fL{T>^*yHuxgQ$RN1gH-`Tp@}nOEfa%ec7Iq2?8+r5Fv2${+T9%OzQK%Fmk^?f1@vdFi9APq~

    `lh#64?85WIF3OliG*Zb_Qih(02xqv3xsCIwD;yjxsq+5z__UI~nEl8t3agJ~Hp*EE^wWzq;y)jEgJHp`NfYi#O^=V|@Yt zlE)SGPD8JfSlLd62@`C+O0M7vUsIMB+Fv%d(3yw?bNZ8*9(SVDQGAZhLYh1^dYgyZ1-)h$G~}-!9a=a~uV?>P{-k}RQc&f4 z*ZldXxIr{tIHwKWpRYE}%Q}XfT(wV6>jUgQZxIwyzRI&@tl24>l9fxge?~dL(IjbM z+bt@zs>onQAVo9KomWEUG$n42bDA&RF#SLP1NueGa3aem;K<+=(cwcNVo*hC{@(d`p_v7 zrTYw*&zy-lwQfb_CN_(N1viksaORHkl0-Z8obM|Tuoqp%^(YDrSh5qnJS_|Nx4dA6 zqpQv6!4;i+W*Dx4jky-Gr|JDeB=AKtm{y*BS2jJdCG5aIO#vKo>-qYxaP02Q`(cJ8j)5F-BY>QqG~ zllMqk{*_;`Xoex~upO1uP_?@W^8>a1pV{6Mov+7V_<4#?i+Kev;?H7B-RtFy%W1GT zaDET3jAZc%K_t$ApKnl+wQ=BAR`&9u88cEIOY3Mniv`MF_U2rbTEgQsP87V#9|397gD0Y%;on6je^(V0r=Azn25pn=__Yl&$gSk;#Sm( zOPcMZNFfFk2Y;K?aA>(c1iHTHbnYfOmH+O^li6nE_4hZF^6FeVtdrTIRBs~H~4 zw8iQS|L{3H=>Kkk_4#@B&C6+J0C*^*4Ua3I=)|e*y>5ym4~nX5H@#JcS5u$Oo~T zwY(V|{ReM;OtEMB>!TkTu_j4P1UZ>F(&ODh>zPDKu=hUU;dE6K0vcVWKVHLuu3}2T;q9O*+NwFoy zl{fM)U?TE)${fkF4HUd`?RL{l$hDu-iO3qi9lRPNL0ShpZyfrIO z_y`d25$R85L*L3<8w=Z5$Oj8##(0A%MxNUjua$HQ7D$vz>GZujZtnfM34+3(gqq*K zgaMn{)zuYn6qKv}oAbApBdU11JXr>j#TGAv*Xo4R_aA`@erlm*i@$r8CSqVuoZ&l4 zNX-%1q38-)@m`F)t2ruaZ+^>pZFR`Hq9NQ3dMw`FCCfs$K`YeshuQF zDAtw3G!9_v3lI)kbPG*%mj%*1qGTb4AP9k``7L%oFqx*=dXud$WZ+?lBFL_Y(=Qx z4lkhwy|S5V3tHDGjxmEoGw0 z@HC&Gs!(8aW}6?tb|WSZJ16cZ@jW2LprZMn-~h9f0gH!}6het?w2w79Q90xsCzg{@ zl(j%*)b08Glh-mV$f!?2!bzyjcbHK0)nM4PM7q#%B(N1}f8t}gaEfWIq#k=8c@Fg~ zap3ms+x_m>4WH$o{#+}Ds6zht0qJ+86+`L)t1_( z=H#euT;}O+<-v%q$p0Zu5SA7mR)}7sX0zvgl|6_NvvjV0f{hoijOEHhaChky*(j&T_~^f2?=3-fQ=t*DAoKaIQGC!xX=-{ zLcm(4)>-H_V{(VFYPW3I`K{>N!#oVTD%R zPua6F)(u{|oT?G0db$WgK*41@TLQ$sCo!`*9fXdkaakRJP#I7NZP$6LMuHACZ>cyF zZ}^QqdtZz!UYg;wg8Rg>49ndYY8G#fcj)>Tgu$*NGrkm`USN6-iQ)|BHO)}Lpjasc0a~NE4=_@;}l^Rpy(I~jK zf-ddCfR4#Yzm{sJYnfc>lW$i4?DZ{l{CDjE$PwfihZuol*-qMwh1S&V zetNNx1Spb8c38uN7-pNExO&}mOfOGvWg=>?Xbqw#8qQJgDt!oK8Y?ZTekVM!A!d33 zY;y`GWP*#~jF{AtsoMPO!G8g>uH=XciZH9H=fo^`SUsi&wHkm0u&i@vhBV)@4J7m0w;q9a&58n~I*Q z$WkSad%#aE3v%$8J?F%$$ASw=u^|nnG>eqqh5KvQXqy=htH)6kJXP$38=J9?@UfwW zzkA4*CHG$PnS}CL-CiSMPH^kBa`a`1iUgjb6Ac|5Qm`=n81!8!kunq~pfKEl)_v~R zf{}34)YZLsvjK{j#{M9baAT1U4R%?3!l!5we3MCz;fzs40v7k0Oti&-6)KonM13zv zh-m7#7N#aJ(>!}9eS&|xul`*SiRV+Nl3P*|R^+vZ1-xArENQ@)j)i>Dk-K04D+K!Z zQ%X0+2W7W`dA4{?(Ot)!JTyopsMkWGF?I|2Fy1AR1X0<@e4lfy*13{}om`!w&BSX; z5oUB^0yS6|5RB58428wS25$~$?Ydv@0Q~BIUKTKQt12tMGBB(IJ#h_|v$mbL3zRY` ztF9|QV1+LJPm}>wk@R~_7&#pgGFV`m-sGdOWjnw9VBmU}0YK?(uKkvhDQmD)v*K{{ zno5Ngl_D((E8g|=R*dZw`ZBE!UjQK#hnfNAr-*eFc6$+#{;=!}v&9tDj6`fX@(9;f zQWDiGvbuZQE%z`jM7N8Dr@x~|I*HZTbcq(A38!XrcdbTAPDVzw;SaF~3K;NV6vBB5 zoCF_ti+YlQE}5UbQ|-w=w}Da>HJ2R&V_8a?&-0Bgj`!WeBqei6sN`W#y{|jRnzV~A zYx~(nZQ*GApHS)p)gtq+rXpha?$>G&1LDC;&>K=F7>6EFe_ zcJGGUL($}vbU0|7Aw?Fd3SRAvts{ce=~0g#gaf5^TfWB_a4t>@8G_ujO+WJpfkp!4 ziZ0!oz~7|o^K}a3XQe19rUHl#^S+?kV*rQ=w$ROOLqo$l{LcwdZ3!>Kkh7#cv zueQhAZUOItam9yr98oL2QjR>MI;#3D&0NkrLiJ?_1N8>hij}y-nrpk*^@dBV5JTWp zMR)#Vc~!a;lB~m4&W&-j)uLg|bSKvL?OzDos3i+4t17Lky1IHuecQA|v*2g(RAFh; zK+(NK+E3N9o^=&kQqf~_n%o{YF+aUXrIZ%tO1ZPJr-F6W)UYBo$|L?FXL}E~n2RpD$(fzU91p@u z1bf)FZS~EK(_zDxDmY~n0)r{9t@C)_yfwI8CFp>7p^8<-G}*J)dQkz*ashnk6kNH6#BBV;_6b z!OSY+H!bQ(>uI`&l(d*z4HhWdw!W(6%ri|VPpPy+uX;t(V;%N{p5su7nm2XUez?apLWyS!!{_xloozZ-_uP^ZWJ`ui&hLm;aA2#)N zL1U<%li-HKJ`VeI1tg)>%A+gFl$QEl1WEjXJE8Wt+H6qv_7rhxN&23*(V zb>8{+xl$&vdw~2vk2O-1B@KDi2bk|MZ@1%*=o3Q*J_Qi#AkB%1&(Ym<0|<`>#ph@| zjxCM)wY~BJ&6v21A#6EH5c6uJ`w7_%I1pteZfzOhGN@QjDP^MWNtU=1JLP1W-F~Y^r=Z8iC44w| zWbpIXOrRLSWi=z<^K|xF>cY2eF$9XJJHwTF4UKAl8G=b3KDPKkF`lM5+fDgZxlk$D zRnZXP(2BgHYn3x!Vh@sb-<8UHI?yvRGxj+*_2dsvK#Ka$XA}8_v&g>#^$Vl|{ z#?N>EL-(nIS0)Nj5dc@h%|$7er=r^w*(=&KYvg2300A1S^xW25%<7knY6t4e`0GV- zv3CJZ2}p9{D%iXjL5FO`)sGp~78DoXd-Ry@)I#}t=pHHRpaT~%%vm)8{b(g6)HF0S zjEs!5v`>KH&KWZnuJCdb&fh>m9xRI*YJ7jT#>K^jmmSKG5gMJ}FCA*XsFc4e=`%Z$b?aizVFdoX<#7q zWImYs^W$XhSV z93IoNd3e9)u?*X`QbzVenUJ_Oyt)S7+d1V|0;j*t zT4P`bD%&~4V3p84$`dmGjKF(tZ5byr1ylz-ab1n7aQ*>1Ixsx|udd%#FivJQ-x;qa zzuVdBUwyyMx;n?z*KT-7O)t`|4vxw=zGi(W;kWSx4sgh!KFLD_1kVh)(t^H?WYfbJ zkjgVS>^}0G>s8}~Y+1M>QDP*w#PD?Z9?rspDIf?0*43Of7B3ILl{a^Oh3dQurU8qp z6i~xh(i91Yv&HZ3`~O%Wx-+g`;1ChrtntaJ$>CwJ0@`teVKj)LKzlDU#e{+j;Oea; zc1bTr2hD4ugL|&W()L=3FTlD1; ztG|uFfk?)t;KX&lOjTf``M2@LeK;!&>TXB;@ZnB|yaXMtM@Wd_;@=sj`YXChwdW}j zG@4`thc7zJ6*344VAf4Tyl6Avvw$sA?tUPC9H2{n)UcO-*PTL<%vZy*I6VaWVrY)j zx;ws9?CK5VDgoCp91^3Be5^#)>rEy*3w(Si3fHzdEqSIVXYO(jIt&a6fM(kbs2qr;}1rCNjC4fS}X% zDF4G___IZ`le-8*wrOv(E}!3C0Rr4SRg7JCmr1-{hugVc&Ljr_;0pPyB-f=yen>Ih zR%Jw`9>?K}+HTp~+XE=ot7wjONqtY_r-bC?@L9^Cq%AxO1P8yLs8W&%zlGmOus})z z>e(HB{j<7qZkn3FCUL5N(*XaZT-zPEB`i>s$Z3ck@tZ7OvQ*_8JNt+aA=UlK45nOP z0SmZ4G`Kq8>Y0j5{u^7fQl5R;2o!>XS-Ry!gA%gX0^idLkh&P8O-Bx+Q{M7J{w+r* zAiIAJXPd@-H=Kw@78I60VNw*z`!x_PBvTiS_w8>!M4p|k8Tg4eQcO@{t|fU-u}+N| zoAdx4HvDatdcxGZ6mSh(d-ulMQ(`PAaPtB>>>`5Gug-6>a~p3@HJJ9Epj;yl?(B$?VFYey!f$mzfjzT^*?Ar*yP88@ zZADjks-B&1XYJ>EoD-+6>O`y8qsp@PTt@FcRxaSN$1wU1^*C)$SEz&@dqv zpukmN`_ud)yLF(5JmyGnjsgb`$ztWi)2^@@l z?=k$Gv{&A5uM$DX_|EA=LqpVlv;M$U9FR6PNqc56TtCy`;9zLCr=N}9w=qX1`4`7!?NQ|HG$qhMMcAJ8GcW1+QLO`0Ad#r8Hqt~ zhZTEE429l=j~wz${C=F_w`MS9g{nrN-}KZAWWv~h(=$Q7TDeCy2N+pXQxjlhxSS6Z z0O}l2zUi^Y03`TuTOgi7YJTC!xsB^_Wb*wmKwID4us;L^R%mB`A5x{Ak1dZ53vmFP zXC~yaxu?Luz>|{`jq;=SrIvrS47eY68{D(s5AtK1?EWvC?(n$Y15obCU(Ck9qS|?% zBA5=~u84t~&fEbEsVk>)^70S|f{sWMKndC+L)cq?`3VIW3XJ<6{FsPhnn)M}z$#<{ zKCwBt^&A@;^8>Pd#YIKFFPD(l2E7kcY$#D5oqO&U^WdJ}fP1*Id7p826YAk+5m4DZ zcd+`OCIxTcVb*HQO~e@Rl@`_?-eI7i-rq|Z(@i^HQkQ|-PNAg4m{Qc8Z+@2!QCopbVz>IsL!S%mG1=AXp@d#m4*S5rH#j zPJQux-~Ux&cz76F!3u6R2n@qCgaC#i3{w%NAP`FC5~5}xfzLpjXoA4u?Y_tr+sMGK{m|xN{MLHRUKAvilXxQyryZl`$kr9 zXQ3pqBuTXd>IB7|5HHtYm0nL#5*bW&P|#~N z*sRtChOJQTHwR$3kdCTplUd~_c%aA`FiiK%15i?iNRdP-okFriC?YG1YqKGNHD#>+ zFr;M+@C2@CDhZ%b73}G`S|RLnSV@v(${Ogdwir1V)e; zz)(r#08Ld@S;8<>kQJHc&sf@3&WLD+#*nX&szJqkAu~=Gr&#lx%RF;F^+;Z5YptFO zhv(+zoK7cA)3^2>S8y9}wK$+!%(>DthM8eG9Yw-;9?7D7nVG>)R2 zK&A+iFxhZbF(XCi79=Tz5W#S!$~uV8%RH+rJV+Ndx7NFy4vX1r2aj z3{OrO42D1;u;TIh4Z$UXzT*3T^}NKm5Z#T=+$n zWmNWGK?q5b#BoRwL|W2Pd7**BL`_TNMVU8gs)_-CGYq(>9x=02Y@uY2&4ghXU51e+ zXNHIT*$I!4mWsJlHm^bAm7(~Fv%MY@FUo2p-f+(tr3IMheaQt<`B@&Ba7+qG$ zvb?a7fW@w_0gCXusZ5F$-gC6U4|AwdGC&V;Ayy*8Sr8HQi z07@AYMd?4!&P7Ixbk-M$vnCAUI7wbG;?ZRX%Hq@+(h(dA6=Zd)i2R^1ng@a{I2q6P zPlVqS4Pf;SXme5&O9BvvFh&sN1Va$llu#kd#%8<+jyCvRG)d@Ev$nRDqNo*m-KDtP z-9VI~|Ey>znHQ3z6_FHv!AJ*4gBSt`VMxUQytr5-sX2rF2a%!{jcN6(g^3YC=JQ;j zCvPy`^BANVNKzVvIELX!BV`+D-+ue; zrlux?!LXtt??zl=V_p6kgf^2=Rn!pVRDvwi2%`%bRw&^4j0hkkX#l}RZsEAX8d5@$ zFxv%5j1ToXJGL6@TOiEghe2k>HinnH>*I{6fzU){cep~zyf=&;+c{YTy#rInWT zI7Q1&A}OB&J-sq|93df-^wq zHSh~gtg_H5%Pjy&qd6BE<9$Ka?pm}%2}B|Hs99ULdXC*$wCqY001GB&*yjU+z9}XXp=fOB^7d9 z@4<@1)EOjq)cAtIU`0hmp-@;cub_%z9j5sW4NRTfSy4mmbK2kDKzZR=C<;@FEMu|;d~T=R5|5`&_Ya;M9K(#RiBLabGXL_IzqHwG5W<<6863xL zHk;jU_jbsLs)il#8_E-nWJIRQ8Y{vVLUu{{v0$}vEg3Z_KzWs zS0pLEcjwGIuc`<&{O7+gRMrzLw{YI_8B02FKJx-YQYr~T!_3eBY0H)^5W+&CK$2vk zP}s3!haT}GK5f36g@FU(=u+6>mC=dNu`|76wra`Z#BgGs4P~(=#O5fIb;-hTAqy2CMa@l(87rzugYk{e zJm_5A8QlJq!B+_usahSXB+mWxyU&qxkGk1aN;0(br{h_Hu{jBb1ptT^r^ws(|382K z%rnpExjGh$Amgz&*IL+o zE|(4WpT>A++vc*TR0mk#79a@PY*QsMdh*bwzxpT7`g^Z<-eP2??cMKx_e)>oc^*P2 ziehtf^EdwCANrE9nvZ=3;sj1o*xJpR=AxK&2%$g!^FQCQV@F+WO=Qn&`ZtiOO6g?2Wz)WW`!EdSdH$Q<{AMbZ zdVlw|f}4fwQiaO_$6=et9PU4y3$D=|9(^T9o2>-HW~auaT&84bFXL)T^qmge|HQ(t zOLxmoj+oc2zhp}``_KRU&!7JEr_<>)Ie0>dhNWzpe*Fi&Y{)K(|1>eXW5*7Y$wX09 zM@Pp8xvv#`aNJl(XDI-N4CxS&Nf!Y{k|bU(@6j|3*Hj@ICRjt{)L|)|M5=-mWx<1h zVMvJ0aUS1QJe=8){-VD$DYbBS+qP>n)$px1nv#C~Z&t)1Q52b8}ODP0;T> z+c!i|l%{EW_wL=YWy?xs?Cr$|B~~&KuXA#|lyiuAUdY>3fiC8mblhD`DdCB_%+%vs zH?+Bo%*Yw#)IQYQNn)6W0faD3Qz^r;@(jbU%*4p2S}R$WUD!fVR7*>Xs;W;s@kAn- zIz1ClbpOKRcFKx;et0aEj8C(kolzN!&Td`bz90qlVAM*1|1HJ`QibJ&WO`sW;qnCC zyg`zrd_JyfDq$c<8$CsuUOG9n^>Ld}C=>w^Z-2N=$>S7xUZeBHLVk9N_XMtTWMgIB z;NW0aSJ%Q82w_J@M{8@VAP5If^*Va@{>fLrz;Ud_WZcre%JbaE|K#QO1cN0OA%=#A zXqqNTQWV8}K93MG8jUQ=a%C*!Ua#Q8!wo;;%PLNJo~J9SbUh_WlEGl0D2gBmP1C%p z+R{k;&zF8KQ*_n3u8yg5PZnbXqUStcg_D#jUL(=USXukMm)~k@Ytu^+^~`q&A;)o& zB)#^^zu(_p|M)}qQ6!no=Tn*Nz*Lmv4Eed)xXJnEc+%qX0vyW-7{E9jX>2O(AX7%5 zcpNsD)4_3^t}7Sh*-CQG&BYB9E168Hs;X(4p7)|hcyJtN7>45(OsEnMj0S^?Ou5(J zgYhQw^l-Z{5}V~u@OH$ZD<;)k1_0n>bJzd(!xx_U__GB;v>FXOQ!?W+natboykmIs zce(i4SR$q21l8n zJ6oG977GACRn>exua~Sb46~vxZx(JKR;WXgqy^W2Ui}9y;Ich6P3s+ zgI!=|zi1y@{h-Wnnx@5iPdL|ZxaR3bfBB;T3GwRYt!n(yH8n_8Ui{h12Lc-~Oq=-m z3soE;`|7NZKFhd#c!?JCe4W2Sq#;ei=1UX-!jO{BYpEDBc#1u}dsTfc%d$MrD~ckD zBEv8p9UUyou5jz7;D#mE6>H>mg>u;|DXA@np#fF|*jz!{S)k_DZB*%Ugct%vC|u9! zs&;%la{QpZqVAoH{TDxdD_$sC8#fjsVb1Ma{pG)-Z4OZOoMPb8SP;_WLcTCFDP>c% z#m@Vy2!;h1AUPf}EMiy+2P3E6dE}8ty1Kdy27{`qkw|3s?%nO}?PjxiMJ;}C+ypaL zubkF3<7FQ~Sdt-#W+EFNftrSq)P>g%0CpYSK@dW!rl~4`kg+=p^{qnp8=5G3Hg2Pg zCP>lcPL|-(Z)i$BCmi3q5$3!m9w*T7`M%!%lexxr-WMcT4&XRuw#6Ge>0{q(?d`jE?ecg$ot>S=a!vLM-ZwrFv5Li_rfE2i>*+KL#L`MCNR=cx8c!Dd z5Mcli6eoP#;8??n%B3M2zrIV(LDtpU1%3@ne zsnU66iHuIy%np5|y`sWpqiI@El$P0W?cmTW-M>h#-eg<50cSW2CxFdWXx$VF&+R*W z^pOYdvs$gXv3U6K;jXT(OeV8JtPhCyPb@v(L05STSr59gtSEB-(8yFMG^ud~KfEBC zN;?RHJ!=AXh6K5QXJm9V*RTPn*()4e)5=r>kibdan420^3VGV)1hD^S5=ZAB-9FF5YpKs&FjVmtun}QEyr7pJ~WUK}ke0gQaIOJTo%`0N^<8*=L`%+wCh7 z>x1Lw`=Co!JdRfc{4R$*GLaY+y?~?^3oV?Y@bVV##%=N56YkEfS2-HewA|E~v#pCV znirp9>7G(1#n_e07Ok=@$K&ylk&$)l)}_;Fl$aI6Q-ay9%!TMh5ONE?}h~{S| zi?KN=n^ubXMG0Odt))sLq-g9~E&xrIGU@bX!bW%2LkLfwKAlJ;I@h$A3+eQ^6L8m$ z9(17lTC49{*Bo?O_U+qu;>3wWA~8BTT31)MV!3~Ce9$2DRR92>378$~jYCf6O#p|N zt>XZMQZ8c*4Yr!dYFu_J1#xTu3r}KBKSnGVI!F}-%4C7W6_$aEA;zQkTgeKyeQ_vI zmu;G+WwY7Ut5@6Y_Q^yp5|5dN-wS%26h-6;g^74>EU>oc__4&yl%~ivH8l$^_?77O z`^JYztdd1V5*C)8KJfOG1PG^hX-Yfi4oL65ym9m9V8Cx=NK(wF@V^&q|$?96I^7X!A8>*N#d|rEOJKk zm~VBVqA7lC|F*79JuoH9vM7p@B3^Vlxjmc{Z$RqAAK~;1op}n2fwSI7;wFN(E=moH3b9 z9LMEyxkMsC)3l~(PN$QiD4)+~G#Xd@^4EzEmspyng{LPsuL`Wr7vJgGUl5w(&PvGe zd4Q(@AxIKLsB+EvAAkE>riY(q99~Q7X1vS^rC1s9jELR06lifW_F2Wdvb z30V>el2XzMb#kzsP=`J?>8o(?w99PJCv+l&GMUWLqerJ12kxq#oQ;b3@V+@E%UIHDo)9h0N~>eO zJr0Bgn$i7g2w@7qG_xJ^1kcH0mK!1P;qcM^YPx4b+Zw&kpd?AzY*tlOk|aGI565vU z^wM#|*$r2LD2gOWF4h#Ps>Y(xlP8Z?R@LYO1ONb%BFS^IdX%Pq^h!c7*OoSm#l+;2N zOU69McfrK8)yNx-M!(-5kH>8`TQ-|D8jY>3tqjAg=*pWcu?T{gnVFfLoweKT>2#W+ zD3T-{4#z_eKe~9Owse+`&1Un4_6X=>0D$7$%=6Zi$LV0|1k*whBWN@%DGAg zzS}RF?V8=4boqYJdwlTaUzr)Ae=c=2me*W8v!5+l-~_QWC!&0+lDrg?aXFh( z71`jgA`M1JkN^WXMM2Vr45kQr$lJR=Hr~5t&6@S=*XwacK@iTLKY#e};m*!ZgTb&e z!0~1h3&-(588`Yxk|aAT9Q!pDgE)Wg$V2yR+;iyI%Z@I;#ad2nxbByP5KfjONDxAb z2KB8!{LwywplEM}b@OK4TY=L|X*Y-&w2APmsYgVcp@I_8$MGAHsTd^ zl+gr9sxyH5HN+yqI`%Wgu0BIJuzJWLX9@>sZri z@K*zZxbk;P=C=yd2}@+cJ9FmA`?qi`Q!EzKX_xQ(VBfj!Qv+wYmJV~{YP=+C0mib5 zzb2i{PQLxKq0uqF->MdUkR?_&;kHbl(DK#Ddv%)B>GNyHr#6p)*1p= z^Hv~D72*-gTR(bcTj$3A^cg)p3jiRBqSxzn_V&*G;#b4jH0|_o9{+siJ;$@nZ3R*M z>AMHa243%Yqvxe15(%5lCJ4fZ@}%w_+#)kmQIzTF=~yhb+zvA{Gk7_<6hfRbnuUB0 z;)JKN+F#c|@TT7JDPvtriB-#VM?z>mk^>-4nQgO&cE`>h)nwVRdOhc+J5&_&jzEzx&5!pxvZXZQ8LmP*1D=4uWEW{@BUma zr>ZJNQ56*xX0v&AcGhNFHVfl71RpN35{bm%;9w$=$Y!%XpU>fNT(*Pm2TCTBqobpX zx3g7^{fK}23Q`OGflEda#`BuBX`m%3xybu3{qQY}-U|Je*%Qpexq< zYpQA}WB9qZzK= zC<#Ti+)~h3S*r+z3)z3y1|%t0dlzNC=mSH`1R6C_Qqs{QW1t(dzmcMG))kM$;nBh(b&|~luRZe2J%C_(uQpS#|y*f*r8KosNW*w z^ZDGrNz%4$+jQ?JMNvG@uXN|Soy0O4jeoYv8jUJxd+Y9&jZjrD>khy0vUzVX-gi<= z!~jlcVi5y4z;TG*91}(xsWdwi%U~w^r0AIV`Gs>q^YT? zuC9J^HY29ux#4sE(UTj!EZb6nG;MNf_U(hm_Uzg7)KgD!92bklOeT}t?Y zUKIw*n4Fya@ri@pP4_Ri8_64RiWbKDjbct3I0*;}*xj1NiEsk5yK$3s@y?JS8N2g3 zLn{brIMNn(h|r_on50;4=BWtJUBN!Rp@*~zLZ!9AxKhJPu^O5XbixmxyTSgmSyk1|9%MJv17+JZrn(aB2z9eOs^L$k|b%dSV)rm4VmtFM-U6cu$GpVbwB>`1j{R{ z)?KlcH%`-Zee3ZMbanU6l^w3%@NS5$2>oH*Hiw(sTd7vgi34EOf= z=@yOYi5BKk8C6pa3~e?T6d^y67%FDcYnmGghy^Puc%Iiwn--tz*DPE0P9YY8 zS+qERbv)jcNGh_-ahyK3_`*qnuG9oUh{a>k(ShdX0LRejY(5-~y?%BoW~)p!cKIu6 zRiTJ96%W>pnaq%+AVF%Hn%7VSLOGp~W+&T&>fxD*ndAGnw72@a-e53ju~_ujyza~^ z7K=1Z|Jt-z`fyW|ZwNfkr&GzHSH54YXlASqJ%dhv#kzfhlN4pL<>sdBtJ-O+{lXFw zVVXvzV@)&&;EJeW;n5*eW!-hELJR{MhEk$3e6V|_h+^?%CLVFx?F%zFG)+sTQvCx1 zyH5>_6;w{lMkV;R>g~5R;cfRREgMXYYj|If_g5PHLDFc!ISx=XMv#CcAw>a_!a1IH z`qCD6%Ip@M72_hD>pc~np0t?F>2z8Y#YiMFJUkqYMu&%obGe+JLw2`|t~-TT2%*{8 z*#Ij(_w=L5cV5~3)>|0Ek(>eIB&KQlRDqKD1)-RT;v`L(t+1TIhg1b+Qcb6KeW6lr zrj(Gx3{FoQD{67_3e8Kd3;-Z!IQ!n=^t$c60?hUtcUz2RqfyheLZL7{JA3HZi66Yt z-LDYIbUIG?;LThByIn0+jwMk4-=&YY(Yvi5z8_2XF$B6kvI1 za{`A~v-_oilT(uur%#=nnwsKyUJwMM(I`n$G#V8}(Q38ACG`P!7jCKGl_W_wW-p%- zpsKlC?&TN$<@29;dNvaE)i!?Pp+-R{oE|!Cw!3pAH>aXW)|#7{0FbOqPERGHyf=WA zsDs3GQrPvA2RiIPlLtm8M`@Ncn66(H>fy!GS4>u5FhRTXB*Zhj-u>kLB12IV(=$Ka z`SvLhXM^?L&D*PNPK301&l$iLx+cvZr=0$(DTAm(6DPm$7NnCOyP-^B(^##VsWkgfN%Ojf{+_ zs_J&T=jP^gn+C^mhr@vzoukvSiCFI52OrV>K+UQe4u@xFhx~=Yy#@nDmyTd*uYO_g z30YA}dPqpo-c;AViQo(+ek`eATXYDd2}LO!V$v~tGHe!7s!$9k)9F=RRG@~myC6x=PjkU> zoZ~Z9%}#)_`*-d=aImSVDG&(gYf^?`?!EWk-Me=mJ9ezPy4q&584QNIkzTiySU8Te zEZfk~pf?oJd+I?5i86lo_kORxzyF~f4=f%q=J)%3KHuU_wW27tIk_H95fH)(IosHo z$F{7U4o8kfl%Xb+0%S>c747aZ8D%htjUtx=lCU zJ3BkC_^ri1<2dfNS%z>ZU!!Mr%O(eV94+mE`yVscHkTyXRlki?MN7pqum0e7Hm&aZ@)rL0Qt?{rT^-*F4bGX|vfDysWY; zI~)!GfGkUrP~3g`V8R!)cHToU+7oS+>Z+t!EE2h{xs4mLJ6>b_IGp%R8+qobov zr}K*467PK6DXYQ-T+>geX<8XeRyP;zfqZC;(Il~u&lSbqiJAT9M{O+~ zdLzlJh^x{IyWq@#B$*i-oIAD;XE|Hr8piIrVsE!4htRa4o*hQ%-p!lbZr6f~RafzP zS(w>u_PAVy$n@AiKk!!47TdfBxV&b>X$Hrz@x$G%b=4lXTPGGtl7|i*ipS%fot=6@ z&IfsQ* zay>mg2M->cn3!m6s6Tn~WEN-5wM~nBY)DfSK@^j7VQqS3LuZHH!cM0nj^mo9H8wUb zt!ujTar;%F-s4|U6qaRGRkc_wx(&N@Prc?ipU)2r3;7{q$vSe*&EjJ(`F4<`rv4vDMKYZ@~H4Rp?X{k#SA(TiY z{_!9GabREo0I+%U=B=w6-;9SfNknW((;-DhvaFr+E98aIn+r1#A;inw z192QPRn}!gW2z|P^fg{`orn|Jm;O!?C zS;p1(QB^e*&%8dCoS6#AlY{PUj}sRI)fe9AqF2jU9R_bjc6`WG(*OW0+id_qp!Xmw z|NnAHrWEs1E^{43ya=RfN+Fle<*x8iS$n3_X@pRBcQ?mz)z#G;$F|y7QPad&IMH*= zKX_zAz(jY{W15!EX7?UG9*IOoMn;;Nng9UBGFn<%?$YStU31X|NhWC4$x^2Jx|FvP zTW*+n83b>%Hnhgi9%HQb%*cQy2?S>#IG*(c0K@@KQ07Zgxb(CLQ$dvEGcz;w_4SpNm8ndxl!#~qB}Aq(S$9DY2w6@S<;;d1q^h0%+5fwKV)Dd^6QiS} znM~&4hac9nYwpH@KX(VQFbp#o40^k4NYU?{JxZ_Ja+NkAB~?c=q`_n}u+?>S1VtfD z^H)@~MWcfQ1Lx+VW?%iqy-OCBQcOg7Ul5^Xy%PvSmsMl{oPaDp7me0c1((Vd2%*tv z+`M_S#bTM9oNQ@n$>wrB{pYn@CO7zo(?~~RaY>RaCgaKRn9xMn>YLr2TlXK@(|4}7 zy1M$IhaMtHvQQ}KK2lkhaU9p%hF`@Py>oEa5KDIsQ55C(dK~A^6oew8*{eKQoTB-b zj$`{@uUpebvy7}NiD-0qe6o*q8ynXy-V-6D6!O{0QG0V6c9kmYMXb`-3y>gax4(aM zu)U?(Y&I|b3PBJ~r?a!ObJM0xf*=eH59ef6nGLm(xvs|_vf0dvtY8?Hm9%}M=M|wS zrxGjy!c!#{>g`oBnM^vJCI~{7WrktgZg)PPU$ttL&e}UUN`2Q5YoYBCOEa4t)V@fl zNHGM*EoTxz95>dknmF^`kv(rSoI#YNn88(aH<;{hbeZK|GOK`6%wK;3=ls|fh;zZ( zqi-JBFgn(@X7%D?*ZJMb(7S^`2vtQH9iNnEr>Zutx_4u{C@ZJ?28)s+sVF})nVTA; zI9@b+@JD}t$ZntEI0=I}R;AsVk!6u0D~ZU!_(&zC^bZbYQYnwy-PF`*Fc_95zFthJ zy?wZAh_xs(4eNvckuxX9Fo*@~%5v*UPq3^FE$y4TPad?c>R|mI#_lG|L|l|3kMva{ zPBZ9g9p{(1BnWZNkZIcRM)!WF!%mW<%jv>#xcF-IAN1jMiA1u0XvhxaqA0zw_q|+E zh$z%xy87GHVn+ z6$@`-6_3pvf~dc={<>heIL5v!Cx3g~;d``uw2TVzF8*y6{jnEj%~3ci(}Z zz4pd9##riGF;&KX@5@GyAK-)nA%2+((=^O< zn)UYpqFku~=RLGbU$*WQ!;q$ml3L8EqKH9AnJhR>>p2m+lE)bu(iGwhqsrQ*hl(>t zyS-lTqmMqiZrwV&-L5z66h$!}kH7fhi&Ilm_uO;OEuJ5HClX6h6x~i=`XI`*QFFOm zEEbE;PIlJ19^btBo&F<7X1!#`y##M44^z2BE#fp|4Av$Gdw5?^@05fgtQekF-u}1s ztBeMQOr+9hLfKq8Ws@b0 zmpj@>^582!`qj>zEiElP&+Ctlq9~5zKKt3ve(!tVJAV9lYip~%<<`*aP9&B-32|&} zOqWbXqcIwd>Rs~`MbYz4Cq_pa-F$spwInHnp@@@~(cGD6J}fu_K+_b4FJd51P?9KW zib5hy4o|6t99H&=s*=d1qpsrg+WJRk<|1dOvu9mhoZGKS@1sRbxy58OypZjKvz*9q zFYkJ@V#{`K`-A?Dt(3(E=A9K+?M0|*NL33HL#drFJ?JyIop#5%TAHS#QSZq!r$f_2 z(O|Q2%?6S;(l*CM8;+(Zm-jS|S8kX(v+I>N-+WW=Fu35PWm)!t2OjwLx4%6+JnZ-T zySlneCe!ISs)fQ4LQ_QKAS|I(s7hjye>ZW@TQjj(aF(BX7`*TaXB1A zi8Jq+o7bw6#5%ns$6q7wbRH$M-`TdYM2oVHl`<(Y6}L65t$5_O?5*p_k}$hgn5b+_ z3DXlwWab`Ws_KD`t_|y%a;l6dikVEt?Q%}f%_6ZCJ7i#t)&hoU= zGu7C|&qYu7_VxGouU@@+A)A?H*}1v7o}QjiD71b1_Q}b~*4EaW^rEhYJCRsd&tTSH zM6jlAD4ZM)XI+8H%BpI8v28`jW0P{ZoQpzbeX7td3jkJ4)5clxFo|c%d4w>XsF5NA zF_d!E6SYixK$6sWUQI|i)jQZrm~FJxv0Oi`rGOOeZ0kx7_gNZRlzcWl+-L9xoxi`q zwyKR_u1m2Z3<tr6Jm{6&f*>g6B9vQzJ1Eib`T+oN zI2?eWY%WhluyVostiKPAruV)sXVYRjA;cq&HR~;PtFGCH z_u>I0v2gBqXL07Yo_s722+%aGFX9#k*y^osoKC0JVm{Wr2MGdZv@mwJZfwnS3nxgU znI>s4eA;R;SC_pE`bUBwy!qyviA2KTaJ03x+3oh5@D8qpyOLPCy0lm<#w!JY7hK*8 zziOHmkH<%WDQ7NOCpg0mh7-x0Fgr3dGu$5<9-7stQQSBdjnig3=kme}!#l6aDt*Yc z?qDSdh6{D?BpA-szKM0Zub)*2Y4Xg(c5(Kj4{i-sROo3~i?3gnWwl)Usyp%hPWyp9 zyEUuRSks7;4`?86%`e0)~vBuu6NkS2f>}F z3a=k}tDx%{%0-eS19T54Ko&c7?-RHvh_W~_8^TG7c6u3-;w4$ir8HGpuA9;&D4SFO z;JOQ*vAZav#n!Zz^8_wyABUDSl)Ly*iB@v0R@_kQs|ffPw~bf;j^l|$V&~4C{r&v} zLG0MEgVV(1*`wzAR{QGC#n+>$ibfDcZ}s7KUb<(?=8B36U1*uj=I5V({@r)q9UB|F zWzA9VR$}RuDOK=IqXQ((uq_)02M3#)n!H}GZXN`K!MeJ-GiT1+vZ=&( z6R}iP6$C-gA)zQrA0w#OQeX31XV0EZITn%{E|#)_g`x=n489Yijl?iyT8Dtf~rUnNr@Tw)vH%KolbobK-07&N!8WWx2%WdT}G^UJf6*FJsuBD z(~6>)Os3@+psH%2D3n=MoD0uE*2pnzX8yy)U%436BUqlXISb(sX)r+&zYsZG)bHj} zU(|(_BT|K8aKhz6KN${%LXC}$R;yLd6Vx3Ix5kNeml2Dis9-R- z_}At3)HE%f$sRg!x_@k9sP7y^ntlEKh+v7UzIcM;?Je!`v&VQ}m8L3kE?u(pX;z=I zsS77^QKHU;-dva>3Z`IfITUk))Iz0$q%ygDKCe4|m+rzajMZxO`~AseGMmksOr~P7 zxMub0!BDIao=Oj&)As)Sfh}wN9w&xjU;gv|{>k5ZVmvgZDcUQqywcd%$g*s)SUi9J zye!MLwY9gbG~;d}*7XA+6pkm~V*khEX!uISxJlv@klW`=LZ7PR8>*(h2n;FYbSpH>j$4~D~3a#{8a7q z^fZp+qobocckX=p>8BU65j9QwurmaIJ&6SX@Hp*t<9!q3qYX4J)dpwXwG_u+eFOo3 zC2eT(RyZSrn_3?r*0q*Ys-o1ntjXwHbZSac@>ul}x3zA$2db~j>2>)jF^nLJq9jR@ zUiG!~MktD^tE+qZ>8EWr+wAOYXJ=-p_acOjob5|h)W|q-ZC@vW^TC?z@Nrp^tS+}+BFh;~QzJv;@ocK1d5Lk3 z6j4YHowGK#>C?-u6FLh4ge1pDvxQ_bsh2)q`Cd$>&dyG&)vB{0lgSJY4J-MKaQ=)j z)PLXRPK(7f7m3KSOj{jgoo;A+?vD+zo&(+QOiqQr@Wn4W9F9aHapcI6J$v?eJf6wP z$*QWV&dyFnQP!#lq5+AVUbi8a>f=V`QTIAnrf>w zgaC#{#zQau(~pk+#plLf`w@m=Pd)#cmwvGeVc?~gUXo?`#EBC=pHKIiCK8E4p)fr? zy>H*XuYK)n5JH2&(ACv-6J^*3C04#r5DEozuuhWYy~9&pC|9{1Ua$9>*LMq&vh{1A zX}Y?yf*(GCgu=D6VgMkFCfj|F?fumYLp`TuRTD*#c;wT#)5~!D72}6E%@pRQm!H;i z^|JwzH^m)+qi2rS)YkfazN-Wh^x~Y7^$oDIr;cYwLsYX~&5ZCk6%v z#>dCM^{sDtz23^oN<~pVxb(USGoh2&-1*5F$Z+}D$%=sA$TAj-tV8u{;5D1xB27%ELftztS$1!{kFwZE-ng_w_yuzfDWZ7te}1j= zPycU7knh8I$1qGz#b#`Hk%z98v5ja{G1?)>Ci~F zAYd5wS6}*r1MQz6c%z}BhPK$sd8a_hXK|K?%RBu`)|OC|bD8niUYhyg|B6H+IF4`M zzWuNN`mgQf_P+X_dH}n-yL;QVZP)LuxCv_2z|ftIH5x*)$I5Znj^}F#{rq@;!tCv0 zgtZmU54&9*C>c($(rtGR4ony~#Q^uPYMk%2x(^V&eu>cF3T zgZEdS;|y+-Wzij!E|@f2jRg8&Y`_}`-cbG2e+Yi$b(+uP5bJ0}Rj*T4St&wlo^U;XM=6-C**cdy^?zxGXi@F29_uU1c@x-5XY6bPYE zBLDA-1y$6^v1kC7jK-^Zs})6=jl_gP{)0@12LRAC4YG-;QzvAb2j_SM;YDxfk}6dI zA!Rh@rY8#F5bvqLnWcq52x)40BrI-L#j(TP{(Bz2dM~c4UtjkhJig&?zGJAU9pydN z;p0BP-&~drx^Gi&G(SB({m3Jaoa-OhbE>!g6Q5Hhsq@>f87gW>gK0i9_EMC`X|}uWo=z}Dr7YqF_O*{gncOqBghSzjHYRe#o_gv|N5R5i{;)8>$y$OP%D7`&BS|XfRfw|)z%498>P~}`_fWyl>jsk#G zC3^OlrM8(UFDC)OG)2jW#*+W`-TOVnrnSwgqMjTKy)iOpZeEKoS2}ymN2e+Wzw+tU z&;QqjEf6QVzxS;dzVodk{lkR~j~GAoC0(T5(D8*ttmhy9>hxd!!5Sfaf35GC4Xd}- zRWwvq{N!)`RKHWk;lU8POgTb=gcOyiXmO04?(XhpS+=XIYq6w&5EhHY&d$!a-+p`l z{{27w=}#Yf?6IX6b~7c`;j`zQo%c}9o}tK;C6NsJeGJ1~ws3_2P*Tpk@0D0(tF3)A z+`L_3IGH3%W{sxh0i?Sgq!dNbG!-X|7?SfjMko~LX3oilVlp3?JL|Gpj7Fo=>C|)L z^d5hLAV`v=D2m<{J)6yP9H&Qi5kf4>Mk0~2Y)~H9u-ZUjiM(>){Na(QQNFpIFqla0 zqSt#t5CR-G_$z0Q?2)o*+G;PGDF~?=m>qZL!ymcl6UlTsG#h(uLUwQ1mLBSJb!=H` zu3ZmQQFL`|)wSFF7Fj9|_Yf_ebyQSc7siJkkQlmQ2niXwySux)5lQLp5|Eab?(POD zk&-R}=@OA{`0l&bw-)>fGjr$ObN1fP?|Dw1+1y!B$97T~arR{-Cc{CaoThExOInuE z)wSi>Q3U*!%a?c4;xE~+JBi!pcdvI>0jEJX9vhnK=ilez`rbf`YcO*PHK(5l=Q`Y- zyU#~1r$whPpDd1-9b19X+{+(Z(G=^Brlw0K)B7L1z31`cwOggwRcbH|P?KLbI2bmW zBjoGC!(Z>}(PWO@fGGY&(dGsQzcOYEW-=wunuTsc5b}6(M)7b#&+GKd`(jtVXYJ*Q@kgf1!-A)W$6K5jreE{% zCbw>1`87G0Q!3CGkpCDM?*?9VlU^mV8Yjn0Tsz+ANuepQFP|N^Aj}an#>^b8uT1Si*_XX ztVxyc$NWxL_yOHD;_WWJ0o2&di*~pR!B6yczUNic?+lJoI`=kFbuDv!Wy7m!(r|H@n-?llM&a$rr-i4UR2rTvh9iMypY6yq z=G2<8lKbFiO%J2;Ku|ot-8of^$i2zUoc8a_e|YI`O~XWbPS^a~s#$f6V(8*pcyrwc z`_3cW)}mgabx}*!i%Xxs_sRT=L5&Ur-Wx&|A-CP{y;z%?`}nps-LlXmOkbxj3fWq% zRwGSk^@gwKlf0YN1}zR>alWM_{p4ET*w|QK7v`$ZWg~wRX`ZAOEe$XAUNXTXw=&tL zjJ60NnG2paU`VBz?jS|NAJX+NI%f!dyaD~_<5w#_oEWu0tWmdmFbae=c$`6xsIf)% zSC4OQg00*EIb~SCBL1i=Ir(C#X8ahkv1C=t81|2RA?d0GV9$;>NGs5erV;6%!*#5} zYFjLe@a2RzrpstSq={f5EmXADYkbjs)MGW%10|{J=f= zq~X4*PY~#+O@8tyF2%QXt<`te&Lv!SIl4Yl;cjKWa`2BpVm&uE=<&>SGiY-nlM{up zsQZRF+8_w1mO#cI4gUSK)Muly4+A{ad810Tvn-}?{m!q86_QsKn1!N2PW!6e|m~R z-+FL8^*cFp4HOLRNIusi?Q*S1g*`ZP6_4mcz8i9uAv%>DK3`ORaOe>+F_-jT5zil~ zS$T$^VFb6g<=7xlWFcR=)qEwrRq+KU<*N=+r2JBqr%zIz9ZI8}J&&#i$KGbp%QG%h zdNH9AM{#k*S%BNh-}H@Dw7wQ?V=fGttp=yl>a|akEBw5h*q;0jynQ?etj^|W3(JXq zU?L8;ZA#$gdS5nUM`lk6K)M;@k_Bo|2pdWKe>IrLl5xhTALYSVX_%#V@Kkce>|hBphtu>U9m(QVr0OHH~>P#wvgszT7-34e+yF$ z9n;_M3QGK*T5dF!Y#t<=&B4U_S0qN={d1w^1|1}nMD%5|P>?dM)EdheQ9qW1*-Iog zdd;Ve+DKzol|Xdjy3kX}!^0ym@TID**FaOV$^ZW1;=(Ozed;r|@zJjW!jc#e;y`+x zh``fM2w=b&{dK}a^SMOkjqQ{3cRBqlRz?>=5VJF;N4-9EuXSs@ zlxo8H-XL}bhKGia7O~>U!orfLo|-YI>0Bouh4dWI7PS-2K1`EJDd5%&I6Q!V$BPwp zDvB^zuS7RKF|iv^e~#W|`WyOrM-@y{FO!%tA?;3&dM$4s7nET31!@ouF8cPhCin1^ zVpK zK&25(dCW?6sqvykQi+z#^;V!NQ4MZ0b<-Jw7O@%h8t|t>98#=NF*`T+pSoinXT}U zTK|{7R^z*UmWcnIi<_I9jLgW-WB!dGMTk^BHUxbnC1fb$wjY>eKq(g_zKYoMS&qvX zLV_Xh(rDV311fd0vbb4N{xyfe{}E^xe0{k-Xa!$Pu_Y8(dY;#Rwa>CG2!S2~9lL|Q zz0XcOF9=l5uaji4{7!jNW0&AMU^&ovE-E`*VRDQ&pAgv?3jQp?C_ls6d$%oijDkKW zQ2;>{Uo!Su|M}k7Wnh~R(53$_T7R`&Bd4L-{+r8+l!i0&^^ar1&fP=V_V#vcIyw0i zMStq*Z5QZG)m1r*GK_%LpqT*=4Io;8R>te)>ApL2Quf?uGRB-Jdon#Wl{RH;q`1RI zKb>~0NH#H&j!`8=GLN8?%7FTvX5~e!d|yUP_^33&=GlJ9cbdLFnyQyyC!3ja%f?>* zSE@*%U(?eGh$4w2eeSlREKy5<1y(xFDg*}Glyz#kpING8Jtv6L@ zjVSip{;9`k2CCb%De~*&nXn~oI`@xiPy_q-wj401J zwXNAS0iPQOao|zW-QC@qV}&705ld-?AEX81LbaiS>7{6922@hW0X|&H`9eMy!-S?VCMG6UR^C!;-vE(?qkc99 zycv1oUY@AY9d;sghS(ogjleiPY~ZUJ!>(J0NnK)ESb|7KJ#1|rz=LK1UhzY#3K79? z`J)=@>n~P8kWX^S8ezud1GSg}N`HL3@k`ahAVOP&x5xr(O@TLx2?dfjET_fxl9+pi zTZE(2Se{tSp7E4qHUUN+ojE7I4c`AbO7 zW$sXn8MHqcktTsj99@Q;J(2^)t5$#KS5;M|$$$r7TM8wObE`4$F`hNexT?eoRWBa= zw_Ipj{{b=#@aaVqC1`Pmjf{$ngjegBiofbXL4bf|Mvjv?YfrR1+S=SFjADDWd2u8amsh1 zvZwEmMN#5a=mt}~>wvms>sy3>B0KsZh3{d39IXQSNTZZ0Jvo}*hjo_3Hs@8~8QPJM z;=`jxgdbY{psJwY;Oq=6#HMXd#(>BF>HadR2Cm~bC&8#|lFM?PqAep%Y*CHSch?#U z(MdOi_4e+lIWxB1y**&LM~#pWB1^JEFJ41(g?)megQbO3(4_7}908j^LxU@jiov8) zEvKrQF=U)O;Yud0xw+`|c_oF)KFXvvG^=X1$=zs~LDAgt1wkBf0IxE-gx$j;5GIBx z{_`?Fi1J_i+OdPF|6baC9VX9s5gGycVRJd1iVd+%arksd7@6m6L3`NanZL&LBm=s-^JzAuB??Spt z*$$sd(aeyj0R(Z6Ltnp=#F20NgL9q%U&BaQ8&pZrenzK4=r9AcmWq$RZ{>Yr0o|QHu z;vtC#Cf5X|%0?u%D+ z&b(Q^q#>6^?k<;Fw2c_zUxXtf;-50`nNA3L^*EX>Q7Cb17MFmGHv%IrHuS0m2Sjla z5)!nfmxjkE=a;+h0hcz)3*~sdVlMZERd^hX?;u~xL6PPOJG&ZV7;$w#3_(PEHe>9z zqOVM4Ku>)rlDL{`1_t+`IKvcy4p|j~$;cvYIKW)cVXTxy$RU z_k4s@c8Ts@m7&z;&sy7=mNhpnDrGvt?aPufQLIf#W)#7WJ6V}FqX!AT@*J)Fg~^Cw z6JF$?c|w8JK6;krj-@(E1c|Zt{_M12m85pdrEU5}HHQ#s*}BuK+d=KV<(?*;73>T5 z+}^n_Lc!m^6p5nC<|m6^W^+}_2Fw7L9%fWgb+u9zxhct9rU`!8y~-ust_6J`0<}44 zcw1ozB(4{1vr*p}V;viK{iU-UFXg+8ftYHY1vI=6$9?2pmuY}O=kBMb>hso3#2dm! z7*m>p?8U;c9_@2r-}v5x(<>H^dt_U~ey?fmXZa!O8U1{?@kTu96udnwL_gy^+8zSw z8Fodp5eRI9S}^||atEU@u(%`T^JXQNyxu z9?a?F!djg&emjL7(zs1AE_@JLz><(YRr?2TXKQ3Cgh?g`bjo*S z$uQ0>c-_*fDYp}d4t9NeE-ioH8sN5k8V*S%wZ@L;Ul)(23PojXPA#>Ob}JLPS+=a} zzWBjFVfG?nh39wkM}41wxXxfzMrJlSg_@RIt)3ct_U}h+ttI~TjXaZsF-_*hS_-mJ zEJ_i7AOH+YA&w-P9Wjo+NWk{551w>Df|F7XWw$nAEyA`Oy{$4|eMy5`m$PwhY01BEJ(jzto`|HS0` zi0+2SIH4dI*v;ZNC8eD;*D>B5XMQILFAhn2*PK$e7WlNN?XHz(3WF#{uJb?06;a}k z&YDwGU8g}}?aQW~|HNTQcx^rdF*=tX(_uGTZ@Hyi!}6+9!rwEO~q=SgQN4SzB6( zoRRG(-{k_k7U>Bw1PHcMR?pY6ZIqy1s00u4^y(T9HkU`g+gITRgoA5x%6TXtt#z~ zOk!CT3hv-5cCpY(u4u5X&B5geK9MzCNhn;1p6~uwyKBArD#_#=x*~fb{C~R}{;|^e zfphleyrQ@L&!S6W1#FXA}>9c)`{l>NbA~N+i>!XhC;(2{mC;QEN*U{P!#p7f2=i4Kx-0yYj z^cucdG&ruc#$R%d0Cvx`1=FJrud|KB*Pi>yE-<$9vhlN0+<+yxf3(F^Mc7$yZ=G5)7O2360(a`B5^Rbp3Tv>s{C0a!8k56Lq zRFFtmvIP|@R0Z-hVjsy2!n~F0@as&_ClV;%dQ|iU=yJW}CR=RuJPKyF(B!a7rzbOx zO(0ri_Dr@&;KAfq4=U1bE51&dM(0eyV6@0 z0)-FJ(iFm7%GOB#_3LTuHMV(V0YovuUEWkos-L0pM!22CcLzWMt_lHV^P-CUEh$Wi<}5BuK3>hIDb2cN4O zyEVgTHIYc zH)EeU1UEYm#-pdnKa>p;?z^+aMvzo$6`vJwx24b?T_fFSaU;bBG^*(3oCNw3DD^LWcUqqTj9Og$wKnIV zs~K4zUChupDm(=7fA1BLoz`xuOrOy}!FhQUTEXRbZg}|BJv)nHP#2a^e91qTu{{!j zuJJ8KXVV)f`pXN-2q1qIDbYa_LIN~)_mP=cgxs&1Jr4K`>9OW&EXTN*ZB1=e4lTF2+!@0fsOEqpK{5PpCtKEJeNYi)i199W^HpsuB$5UW$gov9SSqeZI` z)Y!^3u9gaGLxN$D$JcI92nnN%gntIbGhZQK;6Xyol@Kkz1-Eb;2qPnazH4ANw#nM^ zt9xoUNWm^pB>b=_>p;qKCYZ#`_X>Q4ztGvw)gGFD#1pzw|$=wgf> zOX#22HhFPaY%)6>JW~sNx_L-bp}@gbD;#!`o-vnlF*ipNTe0dspH3`wff*#Szf$ti zn!%;K$#Sb@T$Y$>v)ykj`K|vAzGxnR1YB@y_)n@j)_jtpUKd{H_{{Ky9cd7;=9K4z z{;c(({pVFgW2lC!0RcFNiY->1IShmn=Q4Ozh0yAmU>+=zxkE%vB&6@--fKQEkIJP? zS?BEFCVf09&>*#O{+uzF?`@4|edSMPj4t1ZN9^Gb3hUUB`8thAC1ed%_D1^B10n@{KDZJQY)we`@48UzbRfwX#Gh?QoA3NX*8jtm7(V@0f zqe2JG^VcLk2RIg)!S||k4I&h3CR@w2Ol+MGepBZtAHfKPa$umr99Hhb2KHH|Kk@6@ zHyb4E$i-%nfLpjuwcpQMeQ9X(B?7^2;owW?W*5KT|6%}VvQf=%s^Xh{8-PVbn|BCD zC2)VdLX5v(CB8(QQG$i&tzHb2Ht$spG`ZulpkCWt&EbbaU_2$t-8*fLTFwM=#kK?i zMCqkg7YU22tE&_9yS)pj_>M0hM}yX%fAb-}K@`uc$!D#LH0L8i|HcL*NVJJ_B|A9s zh;F)U4^&{JGqdODs^%=8l5UEtGMm%=)R-Y?YFnCIa>>;Wo!9(gyu4uP6$O{VWzKaU zz{47;-L?|%@qrr8>By6G&OKgU{z;1-C&o%6(}3~p^z_<0l!2HQY|*O+3nxp}|AdA| zk$Ai2i6yHEoh`GXw$L{YzV^SA3;?4lb*SX&!jh}*+TPBR(7@K(+G%#)JHtr@e3ujY zU@(H(%LPuuN@0SNfK;kULbSBCk>G=+KFLyB)s4H?H$GHMOq?@EbUU8E0peFRDpK1} zWcg_!V7AX7o-d3EmeG*i#*@HbftCdYE)tDj;=arGp{L)%AH3Bg8%N}0BQB}U(}GZc z8$Hf)FPkLoLH*GV3jL~6)nha8Ed|4aY?Z}z*vWFaGcsS zU3uSSzf@WF0Kk?Ys>EMe5!Cp3LE&$pC4;u=C+tlJhhrRr*vea zsTei+Bl2b}Rb}qp0E=w=on#&!I}-uw3G+IKCIN*hzuFTdMhfs`3*=%(ZkfwB-4`De z9C`TvWkm$Rh(qq4Y!I;-=3~b=#Uat$SO+vxpFwlR?t?E;IU8RikMX}w8r9mn- zM9xp*SmSz{54j@#j_ahHoWyV=X}3`)9#}5VJRioOy)W+iMev4w~=3^0?g~DOLV_$XlmjN|Cw|( z;v>6xe8!VbqODM4xFbTMbdQhf%X>u_WHYI2>+Ka8<)S*aCz^WWL7+~`FiV0Kbn8Ff z>J_&rB3#REiZh;MNkoK8A?WjC=aRQoZ&Bp3ZE16vXwC_jQLn5s*EFIePm@0M_2p}Q zJECI#?qb%x;r^s9=!Db!F)A&(o9ByV3UMJVD}96i`Am*{>{&EzngTu=l6>+x-#>7u zOUExRW$Y~%2BMFhMk_u@KRy{TA!79Hk7_g)ij`cZv{mN%Bju@`{1si@q_w zeH-MvR|AS-F=_nx+bEB1KmsBaU$ie4MTrC)z`fY2-zBgrsG7@le4RC4jjTrnhjQSUJFpVMk|dMJ zIIsPBIW$lI8kotINQ@dV!WwI1Wkn|J`*9Gc-D^C5w`H)A15Tb?jld7;fa_{^BIf?% zn2?m9L5QIQ=-w#P4LyRjbwdCqm+a`}ts*}`?&JPEmm$%Vv9R(-BNJUlwxXDbEHGHz ze816DOv9(X=sMX>|Lc-_sEbtQ;LFly*X5zj# z;IFA#7sdGZ&F? zXsFEmmRcByUK?weIASil{8A*0C@Wy(s5I4ads`_#H(K1|vZQ-y%M^ipB0z{Y^I5=1 zLxVbH>@F*HxfF4_5QusI?J6E_xNGNj<2h3RdYAULG%~axL=9TfQ##MUeb}547H6*X zuSVQPjoDK*t6)*SktoO@~ z+Hzc4AB1!C1khY1bAE#`&pRe+v^#Q`2DR=|K34|vVucc2b&`cub~#WEa;&@6@bUND z+wT7^&Cq`W-HAF^HA@k1dy>T2iKF)m>6R;~8 zw;dxmk6HU!fe40I3VYID-(M;ZcJA*DsDd52KN^zub@wvJzU4UPR!>lBEbL4;JmsGz zCCh+&Llqjb-e#?yfQHj%(#OTXDWM48e7iY{KeDh8c|Ow= zg!#Gil>ct9RM~lp))w`i-#Sw7ZJNG@`gd)8G!hMA) zru%qb72p0&ptzgTc4x49kFq?Mx<0tZYiq-?zIy}>{Va0(_1p}t<@ujU1ku{fVx$YL z#GI1ybA{>amcEjYdW&inSS5=qhQy+i&W(|a2puOT9E`-DpjkOjHj0f{&?tDDUkSxH zg6oKceBxV?11%!XGVE1eCshwj;1<833IDkuJmx8+&#bC4{*5IUOW+3E*2X4saO-HU zOf`$^=VGq7OVBEbn8qSt;UWQs_r@7=TGZ? z&fi>L*Y2`xGK56|dQWX6`^S$+c;RM5_>q5jOce*k+;|d7X(();yXsQ+RUtdn;Bb*g zo4VoEw*glz>_@J+z;npZcMHU_ONx2}p(ID4CfS8Ytt?%F-?+uys+1^)tjXv|NDP@l z(bj5&a{Jdk`U&x zT`1TyexztWwE>5(epoLvSX&BIH-35*4w_Qd9C^c{VEZ%RpWyan*(Q)iCvM2v?yMXP zrE7sd{4->jjZxk`%tsX*gWVtnO%DO%C>J1_f%>~WQ8$?SL6+rl4z*J_Au`y78E77i z1`Tp}MX!C;P@wn8I$CB0a@!7_o+eHky$&)LmL|JnN{=3F#=Fj*8b+`cI!@S?EFnjq z)Cr2W7{O4y1w5rw02R<79%+Cn$`}RtecapEWsLRo@vj4v@kLJwZ8f)<;!4v6TyQu^ zj|lUJ!^OC*WmM zdc7V%Agh(j=GQD+NSGZzcIy|bAc+wLps1Yk3WBDA>TfV3+Hj~^k;ZQ#0dD=`s)u(B zygz+7{ofUdQCrfO>xCmghQwVqQBcHTV^JMn-!;JL8B`NMSpdBCumSv67xXNJ+9ho z_1op%rH$>n^=+QraJRItnYXC_NJ^F4PgILm`?yRPvgg3@JKozEHjXB>9awvB_ltMg zeoTow4BCD_N1omG_vd7v>*5>Rtl#vsr+!LOU7?Mo(SFP6UWD8ec;gQXc3l1oOva3kiZII+@Nm13NWLf$7(0#r*uFtTwC^)3!|c&V zu0gB2CyGRRvKT&Q=8Y*8XTCx>w#)&%b3aK>Qh1j~(E!`oy4PT|-6vG;6x-^aM`GtW z_ao81)5=@Sav&4k&Ru2lY8tM18W$~MBj9$uAe%+`2`47hSp}9P=WR(5vLzOM_gC&i zx_nsCKX1jaEQVi+($iCP-+Oe$tg;P*X|rPZafd8iKcyiefv6(Kig7}r%?@c}Uw7VD z6jk%tBPQ**@IAHqG&o{ILJ>9YpO`nhRJ6)3%7Xv>&hW-|K=+CI(B4+o(&C{vvZP2r zL^-b=qB}fc6hm2+FrD8AWfJtWdv6R5y@Rnt zntv1^2Zwg&JN_0dk__Q25uEXNKTRD{+s*@y9x5Chs>T)Uyu66C7U@e3)S%}itocYR#t>RJ!{-5&zzS(xh>f9jGcN{c*!h<9L2 zZCpdye(Cc|oEj8LrhK~EaamE8N8eL~Yjj@! z4PuGpvjS`gCufS@bGyyOr#C#i=OLCWH@W#w^-k8-)_ZcCi+d%O&zm8f6*N1%k0&Q5 zZ_v=XOB7EQR`gu;!;1mLuOZ;k^XiXQjpCd1QV!BUB5U&QMm!VGLtGlMe4k6>kNvU_ z!lgb-8KQxY0Iw2tN*7Q8`Fo1G2K!IMmR&iBH8VE(!t1;dX+6#s@i6orsDhaQbWl%A zON&{VQDwY$UJ~JflSFUP**+Ow%-np7!Ouh=4foTf66T^q3n`DIOK^#w>W+juq@Vjz=p=*)jOUW& zXaV!(%S*!W^BRkNhcGzQT-Iyt@&sry?}tXzU8L(-O#h|%wyk?+HyuM>$A@j}$-xQM z8QejBCpB$4IywnQL%q~`8G^B~u^f&r;=VE|N*$VvTCOtphJw zV*vTk94nizFSj3>&=2|zQp7%ssOrz%0+U17IHpAe8G$b1iJO$8$Zy;wfawED{;Jk( z2~Ourei!!fq&UwCphUj%0n29S!E~w?;s{w24z&LJiy?hj0|aP4ojdl@X|P~t4_nzy zCoH%D>vnvNo;#+N_meQ`Q0QSB*JQj{2AE#^C-=ytNZ)_CjdE)l@*0^meBe=zzepEvz!ZQtP*l~kLt$!by9~%sxKE#usIeot7`n%F} zkZGGoOgK1=KhS9vy(ybmSguf#1+-W>{O+EotJ?KJ<4I){P~qC4N~4CU^`*&tO#%Mb z-I%Og-gMY(93~mx@7qUur7vu?O~&%s9YlOlPniXPb*-l61Au+j^}YE1m^IW$ul|WQ z{SBiOF&-NNH?bKk*)Asq0TxeiWHb$cwAa2?4eqV<1@-Avk?X?KbptOf75@iKMnYm% zgbIv<7QvBO-O{3cd{(*MW@xMz8~qkaEeAG5zy_xRyY1>~j0^2bISLnbw}if0-9^8JdRHSQ_IJY#1` zRmf0Zb8~)iW`2uEz9%b@(6aPqy-C>7atv(vLDke}m+FNTX}u`Or5G0gBoDjFPiaR z9Vf9dlEfXzyEsFY%}@i5Kd@$n)&LGDYI(Q4A88D+EP&7o;40hSNb70kfg@`GJw(4| z@yshACU);XbjQ`zHD~|y|L?*>U_DG#sOx;?+Bd%QNpG^{J;lS_PGVEjqh`AHJN)rR z`A9eTWdahny9|%c#s!jVS2J3Tj za?CGrfupB!y@cMiU9P_2Gp>c6kmd^s@ zx&RTfK(9b~Y`8rrg(&VqcHr4{FB4=^mvQ#)`#3|s#COh$gy!-YuF13MMn|9*Y9JVi zVG8va114-0n`ffFSBK7lm)X0!yI7)6YVXn#dV`d3x0%eMtRtZEZnTn#Sm-(KA-nhk r5BAU-hx_||w<1gO*jHQ-==JqTB;i&6La7-z02CxIts+$`VHWy7{Vd=n diff --git a/testdata/path_cube_golden.png b/testdata/path_cube_golden.png index b19c3537e91bf6cb2cc085beb2688a2eceb1e9c8..0718b4afd6b0bf856d144707adac9e10ed587a0d 100644 GIT binary patch literal 5537 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 literal 6054 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