repos / pico

pico services - prose.sh, pastes.sh, imgs.sh, feeds.sh, pgs.sh
git clone https://github.com/picosh/pico.git

commit
39ba4d4
parent
0c813f8
author
Antonio Mika
date
2022-12-11 23:33:26 +0000 UTC
Merge pull request #5 from picosh/am/ci-cd

Added basic ci/cd
34 files changed,  +261, -98
M go.mod
M go.sum
A .github/workflows/build.yml
+81, -0
 1@@ -0,0 +1,81 @@
 2+name: Test and Build
 3+
 4+on:
 5+  workflow_dispatch:
 6+  push:
 7+    branches:
 8+      - main
 9+    tags:
10+      - v*
11+  pull_request:
12+    branches:
13+      - main
14+
15+env:
16+  REGISTRY: ghcr.io
17+
18+jobs:
19+  test:
20+    runs-on: ubuntu-22.04
21+    steps:
22+    - name: Checkout repo
23+      uses: actions/checkout@v2
24+    - name: Set up Go
25+      uses: actions/setup-go@v2
26+      with:
27+        go-version: 1.19
28+    - name: Install package
29+      run: |
30+        sudo apt-get -y install libwebp-dev
31+    - name: Lint the codebase
32+      uses: golangci/golangci-lint-action@v2
33+      with:
34+        version: latest
35+        args: -E goimports -E godot
36+    - name: Run tests
37+      run: |
38+        go test -v ./... -cover -race -coverprofile=coverage.out
39+        go tool cover -func=coverage.out -o=coverage.out
40+  build:
41+    strategy:
42+      matrix:
43+        app: [prose, lists, pastes, imgs]
44+        target: [ssh, web]
45+    runs-on: ubuntu-22.04
46+    needs: test
47+    steps:
48+    - name: Checkout repo
49+      uses: actions/checkout@v2
50+    - name: Set up QEMU
51+      uses: docker/setup-qemu-action@v2
52+      with:
53+        platforms: all
54+    - name: Set up Docker Buildx
55+      id: buildx
56+      uses: docker/setup-buildx-action@v2
57+      with:
58+        version: latest
59+    - name: Login to Docker Hub
60+      uses: docker/login-action@v2
61+      with:
62+        registry: ${{ env.REGISTRY }}
63+        username: ${{ github.actor }}
64+        password: ${{ secrets.GITHUB_TOKEN }}
65+    - name: Collect image metadata
66+      id: meta
67+      uses: docker/metadata-action@v4
68+      with:
69+        images: ${{ env.REGISTRY }}/${{ github.repository }}/${{ matrix.app }}-${{ matrix.target }}
70+    - name: Build and push
71+      uses: docker/build-push-action@v3
72+      with:
73+        context: .
74+        push: true
75+        tags: ${{ steps.meta.outputs.tags }}
76+        labels: ${{ steps.meta.outputs.labels }}
77+        target: release-${{ matrix.target }}
78+        platform: |
79+          linux/amd64
80+          linux/arm64
81+        build-args: |
82+          APP=${{ matrix.app }}
M cmd/imgs/ssh/main.go
+5, -5
 1@@ -8,6 +8,11 @@ import (
 2 	"syscall"
 3 	"time"
 4 
 5+	"github.com/charmbracelet/promwish"
 6+	"github.com/charmbracelet/wish"
 7+	bm "github.com/charmbracelet/wish/bubbletea"
 8+	lm "github.com/charmbracelet/wish/logging"
 9+	"github.com/gliderlabs/ssh"
10 	"github.com/picosh/pico/db/postgres"
11 	uploadimgs "github.com/picosh/pico/filehandlers/imgs"
12 	"github.com/picosh/pico/imgs"
13@@ -22,11 +27,6 @@ import (
14 	"github.com/picosh/pico/wish/send/scp"
15 	"github.com/picosh/pico/wish/send/sftp"
16 	"github.com/picosh/pico/wish/send/utils"
17-	"github.com/charmbracelet/promwish"
18-	"github.com/charmbracelet/wish"
19-	bm "github.com/charmbracelet/wish/bubbletea"
20-	lm "github.com/charmbracelet/wish/logging"
21-	"github.com/gliderlabs/ssh"
22 )
23 
24 type SSHServer struct{}
M cmd/lists/ssh/main.go
+5, -5
 1@@ -8,6 +8,11 @@ import (
 2 	"syscall"
 3 	"time"
 4 
 5+	"github.com/charmbracelet/promwish"
 6+	"github.com/charmbracelet/wish"
 7+	bm "github.com/charmbracelet/wish/bubbletea"
 8+	lm "github.com/charmbracelet/wish/logging"
 9+	"github.com/gliderlabs/ssh"
10 	"github.com/picosh/pico/db/postgres"
11 	"github.com/picosh/pico/filehandlers"
12 	"github.com/picosh/pico/imgs/storage"
13@@ -21,11 +26,6 @@ import (
14 	wishrsync "github.com/picosh/pico/wish/send/rsync"
15 	"github.com/picosh/pico/wish/send/scp"
16 	"github.com/picosh/pico/wish/send/sftp"
17-	"github.com/charmbracelet/promwish"
18-	"github.com/charmbracelet/wish"
19-	bm "github.com/charmbracelet/wish/bubbletea"
20-	lm "github.com/charmbracelet/wish/logging"
21-	"github.com/gliderlabs/ssh"
22 )
23 
24 type SSHServer struct{}
M cmd/pastes/ssh/main.go
+5, -5
 1@@ -8,6 +8,11 @@ import (
 2 	"syscall"
 3 	"time"
 4 
 5+	"github.com/charmbracelet/promwish"
 6+	"github.com/charmbracelet/wish"
 7+	bm "github.com/charmbracelet/wish/bubbletea"
 8+	lm "github.com/charmbracelet/wish/logging"
 9+	"github.com/gliderlabs/ssh"
10 	"github.com/picosh/pico/db/postgres"
11 	"github.com/picosh/pico/filehandlers"
12 	"github.com/picosh/pico/imgs/storage"
13@@ -21,11 +26,6 @@ import (
14 	wishrsync "github.com/picosh/pico/wish/send/rsync"
15 	"github.com/picosh/pico/wish/send/scp"
16 	"github.com/picosh/pico/wish/send/sftp"
17-	"github.com/charmbracelet/promwish"
18-	"github.com/charmbracelet/wish"
19-	bm "github.com/charmbracelet/wish/bubbletea"
20-	lm "github.com/charmbracelet/wish/logging"
21-	"github.com/gliderlabs/ssh"
22 )
23 
24 type SSHServer struct{}
M cmd/prose/ssh/main.go
+5, -5
 1@@ -8,6 +8,11 @@ import (
 2 	"syscall"
 3 	"time"
 4 
 5+	"github.com/charmbracelet/promwish"
 6+	"github.com/charmbracelet/wish"
 7+	bm "github.com/charmbracelet/wish/bubbletea"
 8+	lm "github.com/charmbracelet/wish/logging"
 9+	"github.com/gliderlabs/ssh"
10 	"github.com/picosh/pico/db/postgres"
11 	"github.com/picosh/pico/filehandlers"
12 	"github.com/picosh/pico/imgs/storage"
13@@ -21,11 +26,6 @@ import (
14 	wishrsync "github.com/picosh/pico/wish/send/rsync"
15 	"github.com/picosh/pico/wish/send/scp"
16 	"github.com/picosh/pico/wish/send/sftp"
17-	"github.com/charmbracelet/promwish"
18-	"github.com/charmbracelet/wish"
19-	bm "github.com/charmbracelet/wish/bubbletea"
20-	lm "github.com/charmbracelet/wish/logging"
21-	"github.com/gliderlabs/ssh"
22 )
23 
24 type SSHServer struct{}
M cmd/scripts/dates/dates.go
+2, -2
 1@@ -97,8 +97,8 @@ func main() {
 2 	datesFixed := []string{}
 3 	logger.Info("updating dates")
 4 	for _, post := range posts {
 5+		linkify := imgs.NewImgsLinkify(post.Username)
 6 		if post.Space == "prose" {
 7-			linkify := imgs.NewImgsLinkify(post.Username)
 8 			parsed, err := shared.ParseText(post.Text, linkify)
 9 			if err != nil {
10 				logger.Error(err)
11@@ -117,7 +117,7 @@ func main() {
12 				}
13 			}
14 		} else if post.Space == "lists" {
15-			parsed := lists.ParseText(post.Text)
16+			parsed := lists.ParseText(post.Text, linkify)
17 
18 			if parsed.MetaData.PublishAt != nil && !parsed.MetaData.PublishAt.IsZero() {
19 				err = updateDates(tx, post.ID, parsed.MetaData.PublishAt)
M db/postgres/storage.go
+1, -1
 1@@ -9,9 +9,9 @@ import (
 2 	"strings"
 3 	"time"
 4 
 5+	_ "github.com/lib/pq"
 6 	"github.com/picosh/pico/db"
 7 	"github.com/picosh/pico/wish/cms/config"
 8-	_ "github.com/lib/pq"
 9 	"go.uber.org/zap"
10 	"golang.org/x/exp/slices"
11 )
M filehandlers/imgs/handler.go
+2, -2
 1@@ -10,13 +10,13 @@ import (
 2 	"strings"
 3 	"time"
 4 
 5+	"github.com/gliderlabs/ssh"
 6+	exifremove "github.com/neurosnap/go-exif-remove"
 7 	"github.com/picosh/pico/db"
 8 	"github.com/picosh/pico/imgs/storage"
 9 	"github.com/picosh/pico/shared"
10 	"github.com/picosh/pico/wish/cms/util"
11 	"github.com/picosh/pico/wish/send/utils"
12-	"github.com/gliderlabs/ssh"
13-	exifremove "github.com/neurosnap/go-exif-remove"
14 	"golang.org/x/exp/slices"
15 )
16 
M filehandlers/imgs/img.go
+1, -1
 1@@ -5,10 +5,10 @@ import (
 2 	"fmt"
 3 	"strings"
 4 
 5+	"github.com/gliderlabs/ssh"
 6 	"github.com/picosh/pico/db"
 7 	"github.com/picosh/pico/imgs/storage"
 8 	"github.com/picosh/pico/shared"
 9-	"github.com/gliderlabs/ssh"
10 )
11 
12 func (h *UploadImgHandler) validateImg(data *PostMetaData) (bool, error) {
M filehandlers/post_handler.go
+1, -1
 1@@ -10,13 +10,13 @@ import (
 2 	"strings"
 3 	"time"
 4 
 5+	"github.com/gliderlabs/ssh"
 6 	"github.com/picosh/pico/db"
 7 	"github.com/picosh/pico/imgs"
 8 	"github.com/picosh/pico/imgs/storage"
 9 	"github.com/picosh/pico/shared"
10 	"github.com/picosh/pico/wish/cms/util"
11 	"github.com/picosh/pico/wish/send/utils"
12-	"github.com/gliderlabs/ssh"
13 )
14 
15 type ctxUserKey struct{}
M go.mod
+34, -33
  1@@ -6,43 +6,44 @@ require (
  2 	github.com/alecthomas/chroma v0.10.0
  3 	github.com/antoniomika/go-rsync-receiver v0.0.0-20220901010427-e6494124f0c8
  4 	github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de
  5-	github.com/charmbracelet/bubbles v0.13.0
  6-	github.com/charmbracelet/bubbletea v0.22.1
  7-	github.com/charmbracelet/lipgloss v0.5.0
  8-	github.com/charmbracelet/promwish v0.2.0
  9-	github.com/charmbracelet/wish v0.5.0
 10+	github.com/charmbracelet/bubbles v0.14.0
 11+	github.com/charmbracelet/bubbletea v0.23.1
 12+	github.com/charmbracelet/lipgloss v0.6.0
 13+	github.com/charmbracelet/promwish v0.3.0
 14+	github.com/charmbracelet/wish v0.7.0
 15 	github.com/disintegration/imaging v1.6.2
 16-	github.com/gliderlabs/ssh v0.3.4
 17+	github.com/gliderlabs/ssh v0.3.5
 18 	github.com/gorilla/feeds v1.1.1
 19-	github.com/kolesa-team/go-webp v1.0.1
 20-	github.com/lib/pq v1.10.6
 21+	github.com/kolesa-team/go-webp v1.0.2
 22+	github.com/lib/pq v1.10.7
 23 	github.com/matryer/is v1.4.0
 24-	github.com/microcosm-cc/bluemonday v1.0.19
 25-	github.com/minio/minio-go/v7 v7.0.35
 26+	github.com/microcosm-cc/bluemonday v1.0.21
 27+	github.com/minio/minio-go/v7 v7.0.45
 28 	github.com/muesli/reflow v0.3.0
 29 	github.com/neurosnap/go-exif-remove v0.0.0-20221010134343-50d1e3c35577
 30 	github.com/pkg/sftp v1.13.5
 31-	github.com/yuin/goldmark v1.4.13
 32+	github.com/yuin/goldmark v1.5.3
 33 	github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594
 34 	github.com/yuin/goldmark-meta v1.1.0
 35-	go.uber.org/zap v1.23.0
 36-	golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90
 37-	golang.org/x/exp v0.0.0-20220827204233-334a2380cb91
 38+	go.uber.org/zap v1.24.0
 39+	golang.org/x/crypto v0.4.0
 40+	golang.org/x/exp v0.0.0-20221211140036-ad323defaf05
 41 )
 42 
 43 require (
 44-	github.com/DavidGamba/go-getoptions v0.25.3 // indirect
 45+	github.com/DavidGamba/go-getoptions v0.26.0 // indirect
 46 	github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect
 47 	github.com/atotto/clipboard v0.1.4 // indirect
 48+	github.com/aymanbagabas/go-osc52 v1.2.1 // indirect
 49 	github.com/aymerick/douceur v0.2.0 // indirect
 50 	github.com/beorn7/perks v1.0.1 // indirect
 51 	github.com/caarlos0/sshmarshal v0.1.0 // indirect
 52-	github.com/cespare/xxhash/v2 v2.1.2 // indirect
 53+	github.com/cespare/xxhash/v2 v2.2.0 // indirect
 54 	github.com/charmbracelet/keygen v0.3.0 // indirect
 55 	github.com/containerd/console v1.0.3 // indirect
 56 	github.com/dlclark/regexp2 v1.7.0 // indirect
 57-	github.com/dsoprea/go-exif v0.0.0-20221003173339-dae547f073ed // indirect
 58-	github.com/dsoprea/go-exif/v2 v2.0.0-20221003173339-dae547f073ed // indirect
 59+	github.com/dsoprea/go-exif v0.0.0-20221012082141-d21ac8e2de85 // indirect
 60+	github.com/dsoprea/go-exif/v2 v2.0.0-20221012082141-d21ac8e2de85 // indirect
 61 	github.com/dsoprea/go-iptc v0.0.0-20200610044640-bc9ca208b413 // indirect
 62 	github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect
 63 	github.com/dsoprea/go-photoshop-info-format v0.0.0-20200610045659-121dd752914d // indirect
 64@@ -57,39 +58,39 @@ require (
 65 	github.com/google/uuid v1.3.0 // indirect
 66 	github.com/gorilla/css v1.0.0 // indirect
 67 	github.com/json-iterator/go v1.1.12 // indirect
 68-	github.com/klauspost/compress v1.15.9 // indirect
 69-	github.com/klauspost/cpuid/v2 v2.1.1 // indirect
 70+	github.com/klauspost/compress v1.15.13 // indirect
 71+	github.com/klauspost/cpuid/v2 v2.2.2 // indirect
 72 	github.com/kr/fs v0.1.0 // indirect
 73 	github.com/kr/pretty v0.3.0 // indirect
 74 	github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
 75 	github.com/mattn/go-isatty v0.0.16 // indirect
 76 	github.com/mattn/go-localereader v0.0.1 // indirect
 77-	github.com/mattn/go-runewidth v0.0.13 // indirect
 78-	github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
 79+	github.com/mattn/go-runewidth v0.0.14 // indirect
 80+	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 81 	github.com/minio/md5-simd v1.1.2 // indirect
 82 	github.com/minio/sha256-simd v1.0.0 // indirect
 83 	github.com/mitchellh/go-homedir v1.1.0 // indirect
 84 	github.com/mmcloughlin/md4 v0.1.2 // indirect
 85 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 86 	github.com/modern-go/reflect2 v1.0.2 // indirect
 87-	github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70 // indirect
 88+	github.com/muesli/ansi v0.0.0-20221106050444-61f0cd9a192a // indirect
 89 	github.com/muesli/cancelreader v0.2.2 // indirect
 90-	github.com/muesli/termenv v0.12.0 // indirect
 91+	github.com/muesli/termenv v0.13.0 // indirect
 92 	github.com/neurosnap/go-jpeg-image-structure v0.0.0-20221010133817-70b1c1ff679e // indirect
 93-	github.com/prometheus/client_golang v1.13.0 // indirect
 94-	github.com/prometheus/client_model v0.2.0 // indirect
 95-	github.com/prometheus/common v0.37.0 // indirect
 96+	github.com/prometheus/client_golang v1.14.0 // indirect
 97+	github.com/prometheus/client_model v0.3.0 // indirect
 98+	github.com/prometheus/common v0.38.0 // indirect
 99 	github.com/prometheus/procfs v0.8.0 // indirect
100-	github.com/rivo/uniseg v0.3.4 // indirect
101+	github.com/rivo/uniseg v0.4.3 // indirect
102 	github.com/rs/xid v1.4.0 // indirect
103 	github.com/sirupsen/logrus v1.9.0 // indirect
104 	go.uber.org/atomic v1.10.0 // indirect
105 	go.uber.org/multierr v1.8.0 // indirect
106-	golang.org/x/image v0.0.0-20220722155232-062f8c9fd539 // indirect
107-	golang.org/x/net v0.0.0-20221004154528-8021a29435af // indirect
108-	golang.org/x/sys v0.0.0-20220829200755-d48e67d00261 // indirect
109-	golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 // indirect
110-	golang.org/x/text v0.3.7 // indirect
111+	golang.org/x/image v0.2.0 // indirect
112+	golang.org/x/net v0.4.0 // indirect
113+	golang.org/x/sys v0.3.0 // indirect
114+	golang.org/x/term v0.3.0 // indirect
115+	golang.org/x/text v0.5.0 // indirect
116 	google.golang.org/protobuf v1.28.1 // indirect
117 	gopkg.in/ini.v1 v1.67.0 // indirect
118 	gopkg.in/yaml.v2 v2.4.0 // indirect
M go.sum
+81, -0
  1@@ -35,6 +35,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
  2 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
  3 github.com/DavidGamba/go-getoptions v0.25.3 h1:lSPcMkwWvVZU05C+Uz4DKnKN5wz4bcD1QvJ/QHCRexo=
  4 github.com/DavidGamba/go-getoptions v0.25.3/go.mod h1:qLaLSYeQ8sUVOfKuu5JT5qKKS3OCwyhkYSJnoG+ggmo=
  5+github.com/DavidGamba/go-getoptions v0.26.0 h1:3Hy0o6xTYs9icM5uPNqqck5PyZm5lZWRIDH/n5SV2uw=
  6+github.com/DavidGamba/go-getoptions v0.26.0/go.mod h1:qLaLSYeQ8sUVOfKuu5JT5qKKS3OCwyhkYSJnoG+ggmo=
  7 github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek=
  8 github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s=
  9 github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 10@@ -50,6 +52,9 @@ github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhP
 11 github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw=
 12 github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
 13 github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
 14+github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4=
 15+github.com/aymanbagabas/go-osc52 v1.2.1 h1:q2sWUyDcozPLcLabEMd+a+7Ea2DitxZVN9hTxab9L4E=
 16+github.com/aymanbagabas/go-osc52 v1.2.1/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4=
 17 github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
 18 github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
 19 github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 20@@ -63,20 +68,32 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA
 21 github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 22 github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
 23 github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 24+github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
 25+github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 26 github.com/charmbracelet/bubbles v0.13.0 h1:zP/ROH3wJEBqZWKIsD50ZKKlx3ydLInq3LdD/Nrlb8w=
 27 github.com/charmbracelet/bubbles v0.13.0/go.mod h1:bbeTiXwPww4M031aGi8UK2HT9RDWoiNibae+1yCMtcc=
 28+github.com/charmbracelet/bubbles v0.14.0 h1:DJfCwnARfWjZLvMglhSQzo76UZ2gucuHPy9jLWX45Og=
 29+github.com/charmbracelet/bubbles v0.14.0/go.mod h1:bbeTiXwPww4M031aGi8UK2HT9RDWoiNibae+1yCMtcc=
 30 github.com/charmbracelet/bubbletea v0.21.0/go.mod h1:GgmJMec61d08zXsOhqRC/AiOx4K4pmz+VIcRIm1FKr4=
 31 github.com/charmbracelet/bubbletea v0.22.1 h1:z66q0LWdJNOWEH9zadiAIXp2GN1AWrwNXU8obVY9X24=
 32 github.com/charmbracelet/bubbletea v0.22.1/go.mod h1:8/7hVvbPN6ZZPkczLiB8YpLkLJ0n7DMho5Wvfd2X1C0=
 33+github.com/charmbracelet/bubbletea v0.23.1 h1:CYdteX1wCiCzKNUlwm25ZHBIc1GXlYFyUIte8WPvhck=
 34+github.com/charmbracelet/bubbletea v0.23.1/go.mod h1:JAfGK/3/pPKHTnAS8JIE2u9f61BjWTQY57RbT25aMXU=
 35 github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
 36 github.com/charmbracelet/keygen v0.3.0 h1:mXpsQcH7DDlST5TddmXNXjS0L7ECk4/kLQYyBcsan2Y=
 37 github.com/charmbracelet/keygen v0.3.0/go.mod h1:1ukgO8806O25lUZ5s0IrNur+RlwTBERlezdgW71F5rM=
 38 github.com/charmbracelet/lipgloss v0.5.0 h1:lulQHuVeodSgDez+3rGiuxlPVXSnhth442DATR2/8t8=
 39 github.com/charmbracelet/lipgloss v0.5.0/go.mod h1:EZLha/HbzEt7cYqdFPovlqy5FZPj0xFhg5SaqxScmgs=
 40+github.com/charmbracelet/lipgloss v0.6.0 h1:1StyZB9vBSOyuZxQUcUwGr17JmojPNm87inij9N3wJY=
 41+github.com/charmbracelet/lipgloss v0.6.0/go.mod h1:tHh2wr34xcHjC2HCXIlGSG1jaDF0S0atAUvBMP6Ppuk=
 42 github.com/charmbracelet/promwish v0.2.0 h1:oM8xEx3Rzzm3h5fA6HTMyzqHq4UB0KdpFPVvIHB75kY=
 43 github.com/charmbracelet/promwish v0.2.0/go.mod h1:wzjxGnC6kf6SxzIf77+UWKA+meovSYPjFDc9yIlfiY0=
 44+github.com/charmbracelet/promwish v0.3.0 h1:qRIwx1GgPwIXanf868lEPZ4pQ6NT0ltaZJw+lkiok20=
 45+github.com/charmbracelet/promwish v0.3.0/go.mod h1:Qxm2h8DDuCR4SLoOM4+O1O67gKCsM5GovAHT7makJvU=
 46 github.com/charmbracelet/wish v0.5.0 h1:FkkdNBFqrLABR1ciNrAL2KCxoyWfKhXnIGZw6GfAtPg=
 47 github.com/charmbracelet/wish v0.5.0/go.mod h1:5GAn5SrDSZ7cgKjnC+3kDmiIo7I6k4/AYiRzC4+tpCk=
 48+github.com/charmbracelet/wish v0.7.0 h1:rdfacCWaKCQpCMPbOKfi68GYqsb+9CnUzN1Ov/INZJ0=
 49+github.com/charmbracelet/wish v0.7.0/go.mod h1:16EQz7k3hEgPkPENghcpEddvlrmucIudE0jnczKr+k4=
 50 github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
 51 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
 52 github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
 53@@ -95,10 +112,14 @@ github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo
 54 github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
 55 github.com/dsoprea/go-exif v0.0.0-20221003173339-dae547f073ed h1:2WqGwQ1z5GL8D64CGvUKD4LEO9FbITymvNrrYKXb9Bc=
 56 github.com/dsoprea/go-exif v0.0.0-20221003173339-dae547f073ed/go.mod h1:lOaOt7+UEppOgyvRy749v3do836U/hw0YVJNjoyPaEs=
 57+github.com/dsoprea/go-exif v0.0.0-20221012082141-d21ac8e2de85 h1:+wKSjK8wh5Ybb63Fx1QvTSIfWU/n1nmqEzZy+82pqbQ=
 58+github.com/dsoprea/go-exif v0.0.0-20221012082141-d21ac8e2de85/go.mod h1:lOaOt7+UEppOgyvRy749v3do836U/hw0YVJNjoyPaEs=
 59 github.com/dsoprea/go-exif/v2 v2.0.0-20200321225314-640175a69fe4/go.mod h1:Lm2lMM2zx8p4a34ZemkaUV95AnMl4ZvLbCUbwOvLC2E=
 60 github.com/dsoprea/go-exif/v2 v2.0.0-20200604193436-ca8584a0e1c4/go.mod h1:9EXlPeHfblFFnwu5UOqmP2eoZfJyAZ2Ri/Vki33ajO0=
 61 github.com/dsoprea/go-exif/v2 v2.0.0-20221003173339-dae547f073ed h1:3gxncZYV3qAHC5NLCzdSI4Oamc3jn7m2vheHx29nXbE=
 62 github.com/dsoprea/go-exif/v2 v2.0.0-20221003173339-dae547f073ed/go.mod h1:oKrjk2kb3rAR5NbtSTLUMvMSbc+k8ZosI3MaVH47noc=
 63+github.com/dsoprea/go-exif/v2 v2.0.0-20221012082141-d21ac8e2de85 h1:sgMOHQHMiddteUitH9QYgaRTwAcqqr5X9z5j4yNXDuY=
 64+github.com/dsoprea/go-exif/v2 v2.0.0-20221012082141-d21ac8e2de85/go.mod h1:oKrjk2kb3rAR5NbtSTLUMvMSbc+k8ZosI3MaVH47noc=
 65 github.com/dsoprea/go-exif/v3 v3.0.0-20200717053412-08f1b6708903/go.mod h1:0nsO1ce0mh5czxGeLo4+OCZ/C6Eo6ZlMWsz7rH/Gxv8=
 66 github.com/dsoprea/go-exif/v3 v3.0.0-20210512043655-120bcdb2a55e/go.mod h1:cg5SNYKHMmzxsr9X6ZeLh/nfBRHHp5PngtEPcujONtk=
 67 github.com/dsoprea/go-iptc v0.0.0-20200609062250-162ae6b44feb/go.mod h1:kYIdx9N9NaOyD7U6D+YtExN7QhRm+5kq7//yOsRXQtM=
 68@@ -125,6 +146,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
 69 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 70 github.com/gliderlabs/ssh v0.3.4 h1:+AXBtim7MTKaLVPgvE+3mhewYRawNLTd+jEEz/wExZw=
 71 github.com/gliderlabs/ssh v0.3.4/go.mod h1:ZSS+CUoKHDrqVakTfTWUlKSr9MtMFkC4UvtQKD7O914=
 72+github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY=
 73+github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4=
 74 github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
 75 github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
 76 github.com/go-errors/errors v1.1.1/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
 77@@ -228,12 +251,18 @@ github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8
 78 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 79 github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
 80 github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
 81+github.com/klauspost/compress v1.15.13 h1:NFn1Wr8cfnenSJSA46lLq4wHCcBzKTSjnBIexDMMOV0=
 82+github.com/klauspost/compress v1.15.13/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
 83 github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
 84 github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
 85 github.com/klauspost/cpuid/v2 v2.1.1 h1:t0wUqjowdm8ezddV5k0tLWVklVuvLJpoHeb4WBdydm0=
 86 github.com/klauspost/cpuid/v2 v2.1.1/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
 87+github.com/klauspost/cpuid/v2 v2.2.2 h1:xPMwiykqNK9VK0NYC3+jTMYv9I6Vl3YdjZgPZKG3zO0=
 88+github.com/klauspost/cpuid/v2 v2.2.2/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
 89 github.com/kolesa-team/go-webp v1.0.1 h1:Btojkbzr6tt10zJ40xlbSfJeHFiNn0aR7H03QUqmMoI=
 90 github.com/kolesa-team/go-webp v1.0.1/go.mod h1:oMvdivD6K+Q5qIIkVC2w4k2ZUnI1H+MyP7inwgWq9aA=
 91+github.com/kolesa-team/go-webp v1.0.2 h1:XCrWqxI7tNOI3dr0YufD9TUb+54vBDogg9KsHH7q5Lc=
 92+github.com/kolesa-team/go-webp v1.0.2/go.mod h1:oMvdivD6K+Q5qIIkVC2w4k2ZUnI1H+MyP7inwgWq9aA=
 93 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 94 github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 95 github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
 96@@ -249,6 +278,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 97 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
 98 github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs=
 99 github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
100+github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw=
101+github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
102 github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
103 github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
104 github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE=
105@@ -262,14 +293,22 @@ github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRC
106 github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
107 github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
108 github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
109+github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
110+github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
111 github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
112 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
113+github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
114+github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
115 github.com/microcosm-cc/bluemonday v1.0.19 h1:OI7hoF5FY4pFz2VA//RN8TfM0YJ2dJcl4P4APrCWy6c=
116 github.com/microcosm-cc/bluemonday v1.0.19/go.mod h1:QNzV2UbLK2/53oIIwTOyLUSABMkjZ4tqiyC1g/DyqxE=
117+github.com/microcosm-cc/bluemonday v1.0.21 h1:dNH3e4PSyE4vNX+KlRGHT5KrSvjeUkoNPwEORjffHJg=
118+github.com/microcosm-cc/bluemonday v1.0.21/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM=
119 github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
120 github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
121 github.com/minio/minio-go/v7 v7.0.35 h1:JuPPxWLdxQmNLSaS8AWZnO5HBadeI1xg6FGrEELQEVU=
122 github.com/minio/minio-go/v7 v7.0.35/go.mod h1:nCrRzjoSUQh8hgKKtu3Y708OLvRLtuASMg2/nvmbarw=
123+github.com/minio/minio-go/v7 v7.0.45 h1:g4IeM9M9pW/Lo8AGGNOjBZYlvmtlE1N5TQEYWXRWzIs=
124+github.com/minio/minio-go/v7 v7.0.45/go.mod h1:nCrRzjoSUQh8hgKKtu3Y708OLvRLtuASMg2/nvmbarw=
125 github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
126 github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM=
127 github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
128@@ -286,6 +325,8 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY
129 github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
130 github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70 h1:kMlmsLSbjkikxQJ1IPwaM+7LJ9ltFu/fi8CRzvSnQmA=
131 github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
132+github.com/muesli/ansi v0.0.0-20221106050444-61f0cd9a192a h1:jlDOeO5TU0pYlbc/y6PFguab5IjANI0Knrpg3u/ton4=
133+github.com/muesli/ansi v0.0.0-20221106050444-61f0cd9a192a/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
134 github.com/muesli/cancelreader v0.2.0/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
135 github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
136 github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
137@@ -296,6 +337,8 @@ github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0/go.mod h1:Bd5NYQ
138 github.com/muesli/termenv v0.11.1-0.20220212125758-44cd13922739/go.mod h1:Bd5NYQ7pd+SrtBSrSNoBBmXlcY8+Xj4BMJgh8qcZrvs=
139 github.com/muesli/termenv v0.12.0 h1:KuQRUE3PgxRFWhq4gHvZtPSLCGDqM5q/cYr1pZ39ytc=
140 github.com/muesli/termenv v0.12.0/go.mod h1:WCCv32tusQ/EEZ5S8oUIIrC/nIuBcxCVqlN4Xfkv+7A=
141+github.com/muesli/termenv v0.13.0 h1:wK20DRpJdDX8b7Ek2QfhvqhRQFZ237RGRO0RQ/Iqdy0=
142+github.com/muesli/termenv v0.13.0/go.mod h1:sP1+uffeLaEYpyOTb8pLCUctGcGLnoFjSn4YJK5e2bc=
143 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
144 github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
145 github.com/neurosnap/go-exif-remove v0.0.0-20221010134343-50d1e3c35577 h1:hVmVNttSLNloGsbFKVXAUHonXTd8KKrv30U/8UkloKI=
146@@ -303,6 +346,7 @@ github.com/neurosnap/go-exif-remove v0.0.0-20221010134343-50d1e3c35577/go.mod h1
147 github.com/neurosnap/go-jpeg-image-structure v0.0.0-20221010133817-70b1c1ff679e h1:76Dng5ms0fR+26doKZAvNqhi2UPfnLxGfPIDEr+BBlM=
148 github.com/neurosnap/go-jpeg-image-structure v0.0.0-20221010133817-70b1c1ff679e/go.mod h1:nZBDA7+RD63GDJwjZmxhxac65MJqiCIHUUUvdYOsFkk=
149 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
150+github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
151 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
152 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
153 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
154@@ -317,17 +361,23 @@ github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqr
155 github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
156 github.com/prometheus/client_golang v1.13.0 h1:b71QUfeo5M8gq2+evJdTPfZhYMAU0uKPkyPJ7TPsloU=
157 github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ=
158+github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw=
159+github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y=
160 github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
161 github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
162 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
163 github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
164 github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
165+github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4=
166+github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
167 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
168 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
169 github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
170 github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
171 github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE=
172 github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA=
173+github.com/prometheus/common v0.38.0 h1:VTQitp6mXTdUoCmDMugDVOJ1opi6ADftKfp/yeqTR/E=
174+github.com/prometheus/common v0.38.0/go.mod h1:MBXfmBQZrK5XpbCkjofnXs96LD2QQ7fEq4C0xjC/yec=
175 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
176 github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
177 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
178@@ -339,6 +389,8 @@ github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ
179 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
180 github.com/rivo/uniseg v0.3.4 h1:3Z3Eu6FGHZWSfNKJTOUiPatWwfc7DzJRU04jFUqJODw=
181 github.com/rivo/uniseg v0.3.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
182+github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw=
183+github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
184 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
185 github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
186 github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
187@@ -364,6 +416,8 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
188 github.com/yuin/goldmark v1.4.5/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg=
189 github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=
190 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
191+github.com/yuin/goldmark v1.5.3 h1:3HUJmBFbQW9fhQOzMgseU134xfi6hU+mjWywx5Ty+/M=
192+github.com/yuin/goldmark v1.5.3/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
193 github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594 h1:yHfZyN55+5dp1wG7wDKv8HQ044moxkyGq12KFFMFDxg=
194 github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594/go.mod h1:U9ihbh+1ZN7fR5Se3daSPoz1CGF9IYtSvWwVQtnzGHU=
195 github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc=
196@@ -381,6 +435,8 @@ go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8=
197 go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
198 go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY=
199 go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY=
200+go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
201+go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
202 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
203 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
204 golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
205@@ -388,9 +444,13 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
206 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
207 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
208 golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
209+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
210 golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
211+golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
212 golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 h1:Y/gsMcFOcR+6S6f3YeMKl5g+dZMEWqcz5Czj/GWYbkM=
213 golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
214+golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8=
215+golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80=
216 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
217 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
218 golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
219@@ -403,12 +463,16 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH
220 golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
221 golang.org/x/exp v0.0.0-20220827204233-334a2380cb91 h1:tnebWN09GYg9OLPss1KXj8txwZc6X6uMr6VFdcGNbHw=
222 golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
223+golang.org/x/exp v0.0.0-20221211140036-ad323defaf05 h1:T8EldfGCcveFMewH5xAYxxoX3PSQMrsechlUGVFlQBU=
224+golang.org/x/exp v0.0.0-20221211140036-ad323defaf05/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
225 golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
226 golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
227 golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
228 golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
229 golang.org/x/image v0.0.0-20220722155232-062f8c9fd539 h1:/eM0PCrQI2xd471rI+snWuu251/+/jpBpZqir2mPdnU=
230 golang.org/x/image v0.0.0-20220722155232-062f8c9fd539/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY=
231+golang.org/x/image v0.2.0 h1:/DcQ0w3VHKCC5p0/P2B0JpAZ9Z++V2KOo2fyU89CXBQ=
232+golang.org/x/image v0.2.0/go.mod h1:la7oBXb9w3YFjBqaAwtynVioc1ZvOnNteUNrifGNmAI=
233 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
234 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
235 golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
236@@ -427,6 +491,7 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
237 golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
238 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
239 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
240+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
241 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
242 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
243 golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
244@@ -461,8 +526,12 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx
245 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
246 golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
247 golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
248+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
249+golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
250 golang.org/x/net v0.0.0-20221004154528-8021a29435af h1:wv66FM3rLZGPdxpYL+ApnDe2HzHcTFta3z5nsc13wI4=
251 golang.org/x/net v0.0.0-20221004154528-8021a29435af/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
252+golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
253+golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
254 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
255 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
256 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
257@@ -479,6 +548,7 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
258 golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
259 golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
260 golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
261+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
262 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
263 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
264 golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
265@@ -521,15 +591,23 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc
266 golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
267 golang.org/x/sys v0.0.0-20220204135822-1c1b9b1eba6a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
268 golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
269+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
270 golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
271 golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
272+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
273+golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
274 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
275+golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
276 golang.org/x/sys v0.0.0-20220829200755-d48e67d00261 h1:v6hYoSR9T5oet+pMXwUWkbiVqx/63mlHjefrHmxwfeY=
277 golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
278+golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
279+golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
280 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
281 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
282 golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 h1:Q5284mrmYTpACcm+eAKjKJH48BBwSyfJqmmGDTtT8Vc=
283 golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
284+golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI=
285+golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
286 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
287 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
288 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
289@@ -538,6 +616,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
290 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
291 golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
292 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
293+golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
294+golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
295 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
296 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
297 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
298@@ -581,6 +661,7 @@ golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roY
299 golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
300 golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
301 golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
302+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
303 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
304 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
305 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
M imgs/api.go
+1, -1
 1@@ -11,11 +11,11 @@ import (
 2 
 3 	_ "net/http/pprof"
 4 
 5+	"github.com/gorilla/feeds"
 6 	"github.com/picosh/pico/db"
 7 	"github.com/picosh/pico/db/postgres"
 8 	"github.com/picosh/pico/imgs/storage"
 9 	"github.com/picosh/pico/shared"
10-	"github.com/gorilla/feeds"
11 	"go.uber.org/zap"
12 	"golang.org/x/exp/slices"
13 )
M imgs/client.go
+1, -1
 1@@ -1,12 +1,12 @@
 2 package imgs
 3 
 4 import (
 5+	"github.com/gliderlabs/ssh"
 6 	"github.com/picosh/pico/db"
 7 	uploadimgs "github.com/picosh/pico/filehandlers/imgs"
 8 	"github.com/picosh/pico/imgs/storage"
 9 	"github.com/picosh/pico/shared"
10 	"github.com/picosh/pico/wish/send/utils"
11-	"github.com/gliderlabs/ssh"
12 )
13 
14 type IImgsAPI interface {
M lists/api.go
+1, -1
 1@@ -10,12 +10,12 @@ import (
 2 	"strconv"
 3 	"time"
 4 
 5+	"github.com/gorilla/feeds"
 6 	"github.com/picosh/pico/db"
 7 	"github.com/picosh/pico/db/postgres"
 8 	"github.com/picosh/pico/imgs"
 9 	"github.com/picosh/pico/imgs/storage"
10 	"github.com/picosh/pico/shared"
11-	"github.com/gorilla/feeds"
12 	"golang.org/x/exp/slices"
13 )
14 
M lists/parser.go
+1, -1
 1@@ -7,8 +7,8 @@ import (
 2 	"strings"
 3 	"time"
 4 
 5-	"github.com/picosh/pico/shared"
 6 	"github.com/araddon/dateparse"
 7+	"github.com/picosh/pico/shared"
 8 )
 9 
10 var reIndent = regexp.MustCompile(`^[[:blank:]]+`)
M prose/api.go
+1, -1
 1@@ -10,12 +10,12 @@ import (
 2 	"strconv"
 3 	"time"
 4 
 5+	"github.com/gorilla/feeds"
 6 	"github.com/picosh/pico/db"
 7 	"github.com/picosh/pico/db/postgres"
 8 	"github.com/picosh/pico/imgs"
 9 	"github.com/picosh/pico/imgs/storage"
10 	"github.com/picosh/pico/shared"
11-	"github.com/gorilla/feeds"
12 	"golang.org/x/exp/slices"
13 )
14 
M wish/cmd/server/main.go
+2, -2
 1@@ -8,10 +8,10 @@ import (
 2 	"strings"
 3 	"time"
 4 
 5-	"github.com/picosh/pico/wish/send"
 6-	"github.com/picosh/pico/wish/send/utils"
 7 	"github.com/charmbracelet/wish"
 8 	"github.com/gliderlabs/ssh"
 9+	"github.com/picosh/pico/wish/send"
10+	"github.com/picosh/pico/wish/send/utils"
11 )
12 
13 type handler struct {
M wish/cms/cms.go
+8, -8
 1@@ -4,6 +4,14 @@ import (
 2 	"errors"
 3 	"fmt"
 4 
 5+	"github.com/charmbracelet/bubbles/spinner"
 6+	tea "github.com/charmbracelet/bubbletea"
 7+	"github.com/charmbracelet/lipgloss"
 8+	bm "github.com/charmbracelet/wish/bubbletea"
 9+	"github.com/gliderlabs/ssh"
10+	"github.com/muesli/reflow/indent"
11+	"github.com/muesli/reflow/wordwrap"
12+	"github.com/muesli/reflow/wrap"
13 	"github.com/picosh/pico/db"
14 	"github.com/picosh/pico/db/postgres"
15 	"github.com/picosh/pico/imgs/storage"
16@@ -15,14 +23,6 @@ import (
17 	"github.com/picosh/pico/wish/cms/ui/posts"
18 	"github.com/picosh/pico/wish/cms/ui/username"
19 	"github.com/picosh/pico/wish/cms/util"
20-	"github.com/charmbracelet/bubbles/spinner"
21-	tea "github.com/charmbracelet/bubbletea"
22-	"github.com/charmbracelet/lipgloss"
23-	bm "github.com/charmbracelet/wish/bubbletea"
24-	"github.com/gliderlabs/ssh"
25-	"github.com/muesli/reflow/indent"
26-	"github.com/muesli/reflow/wordwrap"
27-	"github.com/muesli/reflow/wrap"
28 )
29 
30 type status int
M wish/cms/ui/account/create.go
+3, -3
 1@@ -5,12 +5,12 @@ import (
 2 	"fmt"
 3 	"strings"
 4 
 5-	"github.com/picosh/pico/db"
 6-	"github.com/picosh/pico/wish/cms/config"
 7-	"github.com/picosh/pico/wish/cms/ui/common"
 8 	"github.com/charmbracelet/bubbles/spinner"
 9 	input "github.com/charmbracelet/bubbles/textinput"
10 	tea "github.com/charmbracelet/bubbletea"
11+	"github.com/picosh/pico/db"
12+	"github.com/picosh/pico/wish/cms/config"
13+	"github.com/picosh/pico/wish/cms/ui/common"
14 )
15 
16 type state int
M wish/cms/ui/createkey/create.go
+3, -3
 1@@ -3,12 +3,12 @@ package createkey
 2 import (
 3 	"strings"
 4 
 5-	"github.com/picosh/pico/db"
 6-	"github.com/picosh/pico/wish/cms/config"
 7-	"github.com/picosh/pico/wish/cms/ui/common"
 8 	"github.com/charmbracelet/bubbles/spinner"
 9 	input "github.com/charmbracelet/bubbles/textinput"
10 	tea "github.com/charmbracelet/bubbletea"
11+	"github.com/picosh/pico/db"
12+	"github.com/picosh/pico/wish/cms/config"
13+	"github.com/picosh/pico/wish/cms/ui/common"
14 	"golang.org/x/crypto/ssh"
15 )
16 
M wish/cms/ui/info/info.go
+1, -1
 1@@ -1,10 +1,10 @@
 2 package info
 3 
 4 import (
 5+	tea "github.com/charmbracelet/bubbletea"
 6 	"github.com/picosh/pico/db"
 7 	"github.com/picosh/pico/wish/cms/config"
 8 	"github.com/picosh/pico/wish/cms/ui/common"
 9-	tea "github.com/charmbracelet/bubbletea"
10 )
11 
12 type errMsg struct {
M wish/cms/ui/keys/keys.go
+3, -3
 1@@ -3,13 +3,13 @@ package keys
 2 import (
 3 	"fmt"
 4 
 5+	pager "github.com/charmbracelet/bubbles/paginator"
 6+	"github.com/charmbracelet/bubbles/spinner"
 7+	tea "github.com/charmbracelet/bubbletea"
 8 	"github.com/picosh/pico/db"
 9 	"github.com/picosh/pico/wish/cms/config"
10 	"github.com/picosh/pico/wish/cms/ui/common"
11 	"github.com/picosh/pico/wish/cms/ui/createkey"
12-	pager "github.com/charmbracelet/bubbles/paginator"
13-	"github.com/charmbracelet/bubbles/spinner"
14-	tea "github.com/charmbracelet/bubbletea"
15 )
16 
17 const keysPerPage = 4
M wish/cms/ui/username/username.go
+2, -2
 1@@ -5,11 +5,11 @@ import (
 2 	"fmt"
 3 	"strings"
 4 
 5-	"github.com/picosh/pico/db"
 6-	"github.com/picosh/pico/wish/cms/ui/common"
 7 	"github.com/charmbracelet/bubbles/spinner"
 8 	input "github.com/charmbracelet/bubbles/textinput"
 9 	tea "github.com/charmbracelet/bubbletea"
10+	"github.com/picosh/pico/db"
11+	"github.com/picosh/pico/wish/cms/ui/common"
12 )
13 
14 type state int
M wish/list/list.go
+1, -1
 1@@ -4,9 +4,9 @@ import (
 2 	"sort"
 3 	"strings"
 4 
 5-	"github.com/picosh/pico/wish/send/utils"
 6 	"github.com/charmbracelet/wish"
 7 	"github.com/gliderlabs/ssh"
 8+	"github.com/picosh/pico/wish/send/utils"
 9 )
10 
11 func Middleware(writeHandler utils.CopyFromClientHandler) wish.Middleware {
M wish/pipe/pipe.go
+1, -1
 1@@ -7,9 +7,9 @@ import (
 2 	"strings"
 3 	"time"
 4 
 5-	"github.com/picosh/pico/wish/send/utils"
 6 	"github.com/charmbracelet/wish"
 7 	"github.com/gliderlabs/ssh"
 8+	"github.com/picosh/pico/wish/send/utils"
 9 )
10 
11 func Middleware(writeHandler utils.CopyFromClientHandler, ext string) wish.Middleware {
M wish/send/auth/auth.go
+1, -1
 1@@ -1,9 +1,9 @@
 2 package auth
 3 
 4 import (
 5-	"github.com/picosh/pico/wish/send/utils"
 6 	"github.com/charmbracelet/wish"
 7 	"github.com/gliderlabs/ssh"
 8+	"github.com/picosh/pico/wish/send/utils"
 9 )
10 
11 func Middleware(writeHandler utils.CopyFromClientHandler) wish.Middleware {
M wish/send/rsync/rsync.go
+1, -1
 1@@ -8,12 +8,12 @@ import (
 2 	"os"
 3 	"path"
 4 
 5-	"github.com/picosh/pico/wish/send/utils"
 6 	"github.com/antoniomika/go-rsync-receiver/rsyncreceiver"
 7 	"github.com/antoniomika/go-rsync-receiver/rsyncsender"
 8 	rsyncutils "github.com/antoniomika/go-rsync-receiver/utils"
 9 	"github.com/charmbracelet/wish"
10 	"github.com/gliderlabs/ssh"
11+	"github.com/picosh/pico/wish/send/utils"
12 )
13 
14 type handler struct {
M wish/send/scp/copy_from_client.go
+1, -1
 1@@ -10,8 +10,8 @@ import (
 2 	"regexp"
 3 	"strconv"
 4 
 5-	"github.com/picosh/pico/wish/send/utils"
 6 	"github.com/gliderlabs/ssh"
 7+	"github.com/picosh/pico/wish/send/utils"
 8 )
 9 
10 var (
M wish/send/scp/copy_to_client.go
+1, -1
 1@@ -3,8 +3,8 @@ package scp
 2 import (
 3 	"errors"
 4 
 5-	"github.com/picosh/pico/wish/send/utils"
 6 	"github.com/gliderlabs/ssh"
 7+	"github.com/picosh/pico/wish/send/utils"
 8 )
 9 
10 func copyToClient(session ssh.Session, info Info, handler utils.CopyFromClientHandler) error {
M wish/send/scp/scp.go
+1, -1
 1@@ -3,9 +3,9 @@ package scp
 2 import (
 3 	"fmt"
 4 
 5-	"github.com/picosh/pico/wish/send/utils"
 6 	"github.com/charmbracelet/wish"
 7 	"github.com/gliderlabs/ssh"
 8+	"github.com/picosh/pico/wish/send/utils"
 9 )
10 
11 func Middleware(writeHandler utils.CopyFromClientHandler) wish.Middleware {
M wish/send/send.go
+2, -2
 1@@ -1,14 +1,14 @@
 2 package send
 3 
 4 import (
 5+	"github.com/charmbracelet/wish"
 6+	"github.com/gliderlabs/ssh"
 7 	"github.com/picosh/pico/wish/pipe"
 8 	"github.com/picosh/pico/wish/send/auth"
 9 	"github.com/picosh/pico/wish/send/rsync"
10 	"github.com/picosh/pico/wish/send/scp"
11 	"github.com/picosh/pico/wish/send/sftp"
12 	"github.com/picosh/pico/wish/send/utils"
13-	"github.com/charmbracelet/wish"
14-	"github.com/gliderlabs/ssh"
15 )
16 
17 func Middleware(writeHandler utils.CopyFromClientHandler) ssh.Option {
M wish/send/sftp/handler.go
+1, -1
 1@@ -6,8 +6,8 @@ import (
 2 	"os"
 3 	"path"
 4 
 5-	"github.com/picosh/pico/wish/send/utils"
 6 	"github.com/gliderlabs/ssh"
 7+	"github.com/picosh/pico/wish/send/utils"
 8 	"github.com/pkg/sftp"
 9 )
10 
M wish/send/sftp/sftp.go
+1, -1
 1@@ -5,8 +5,8 @@ import (
 2 	"io"
 3 	"log"
 4 
 5-	"github.com/picosh/pico/wish/send/utils"
 6 	"github.com/gliderlabs/ssh"
 7+	"github.com/picosh/pico/wish/send/utils"
 8 	"github.com/pkg/sftp"
 9 )
10