├── .air.toml
├── .gitignore
├── LICENSE
├── README.md
├── Taskfile.yml
├── app.env.example
├── cmd
└── http
│ └── main.go
├── config
└── viper.go
├── go.mod
├── go.sum
├── internal
├── auth
│ └── middleware.go
└── user
│ ├── controller.go
│ └── router.go
├── pkg
└── shutdown
│ └── gracefully.go
└── web
├── .env.example
├── .gitignore
├── index.html
├── package-lock.json
├── package.json
├── public
└── vite.svg
├── src
├── App.css
├── App.tsx
├── assets
│ └── react.svg
├── index.css
├── main.tsx
└── vite-env.d.ts
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
/.air.toml:
--------------------------------------------------------------------------------
1 | root = "."
2 | testdata_dir = "testdata"
3 | tmp_dir = "tmp"
4 |
5 | [build]
6 | args_bin = []
7 | bin = "./tmp/main"
8 | cmd = "go build -o ./tmp/main cmd/http/main.go"
9 | delay = 1000
10 | exclude_dir = ["assets", "tmp", "vendor", "testdata"]
11 | exclude_file = []
12 | exclude_regex = ["_test.go"]
13 | exclude_unchanged = false
14 | follow_symlink = false
15 | full_bin = ""
16 | include_dir = ["cmd", "internal", "pkg"]
17 | include_ext = ["go", "tpl", "tmpl", "html"]
18 | kill_delay = "0s"
19 | log = "build-errors.log"
20 | send_interrupt = false
21 | stop_on_error = true
22 |
23 | [color]
24 | app = ""
25 | build = "yellow"
26 | main = "magenta"
27 | runner = "green"
28 | watcher = "cyan"
29 |
30 | [log]
31 | time = false
32 |
33 | [misc]
34 | clean_on_exit = false
35 |
36 | [screen]
37 | clear_on_rebuild = false
38 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Binaries for programs and plugins
2 | *.exe
3 | *.exe~
4 | *.dll
5 | *.so
6 | *.dylib
7 |
8 | # Test binary, built with `go test -c`
9 | *.test
10 |
11 | # Output of the go coverage tool, specifically when used with LiteIDE
12 | *.out
13 |
14 | # Dependency directories (remove the comment below to include it)
15 | # vendor/
16 |
17 | *.env
18 |
19 | tmp/
20 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Benjamin Davis
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # golang-auth0-example
2 | An example backend with GoLang that uses auth0 for authentication
3 |
4 | ## server setup
5 |
6 | 0. Ensure you have air and task (https://youtu.be/Q7uh85_i0-M)
7 | 1. Create an auth0 account (https://auth0.com/)
8 | 2. Create a new api (https://auth0.com/docs/quickstart/backend/golang/01-authorization#create-a-middleware-to-validate-access-tokens)
9 | 3. Setup ```app.env``` file with your credentials, follow ```app.env.example```
10 | 4. Run ```task dev```
11 |
12 | ## client setup
13 |
14 | 1. Run ```cd web```, ```npm install```
15 | 2. Setup a new client application in auth0 (https://auth0.com/docs/quickstart/spa/react/01-login#create-a-new-application)
16 | 3. Fill in the ```web/.env``` file with your credentials, follow ```web/.env.example```
17 | 4. Run ```npm run dev```
--------------------------------------------------------------------------------
/Taskfile.yml:
--------------------------------------------------------------------------------
1 | version: "3"
2 |
3 | tasks:
4 | dev:
5 | cmds:
6 | - air
7 |
--------------------------------------------------------------------------------
/app.env.example:
--------------------------------------------------------------------------------
1 | PORT="8080"
2 | AUTH0_AUDIENCE="https://quickstarts/api"
3 | AUTH0_DOMAIN="PUT_YOURS_HERE.us.auth0.com"
--------------------------------------------------------------------------------
/cmd/http/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "github.com/bmdavis419/golang-auth0-example/config"
5 | "github.com/bmdavis419/golang-auth0-example/internal/user"
6 | "github.com/bmdavis419/golang-auth0-example/pkg/shutdown"
7 | "github.com/gofiber/fiber/v2"
8 | "github.com/gofiber/fiber/v2/middleware/cors"
9 | "github.com/gofiber/fiber/v2/middleware/logger"
10 | )
11 |
12 | func main() {
13 | // load config
14 | env, err := config.LoadConfig()
15 | if err != nil {
16 | panic(err)
17 | }
18 |
19 | cleanup, err := run(env)
20 |
21 | defer cleanup()
22 |
23 | if err != nil {
24 | panic(err)
25 | }
26 |
27 | // ensure the server is shutdown gracefully & app runs
28 | shutdown.Gracefully()
29 | }
30 |
31 | func run(env config.EnvVars) (func(), error) {
32 | app := buildServer(env)
33 |
34 | // start the server
35 | go func() {
36 | app.Listen(":" + env.PORT)
37 | }()
38 |
39 | // return a function to close the server and database
40 | return func() {
41 | app.Shutdown()
42 | }, nil
43 | }
44 |
45 | func buildServer(env config.EnvVars) *fiber.App {
46 | // create the fiber app
47 | app := fiber.New()
48 |
49 | // add middleware
50 | app.Use(cors.New())
51 | app.Use(logger.New())
52 |
53 | // add health check
54 | app.Get("/health", func(c *fiber.Ctx) error {
55 | return c.SendString("Healthy!")
56 | })
57 |
58 | // create the user domain
59 | userController := user.NewUserController()
60 | user.CreateUserGroup(app, userController, env)
61 |
62 | return app
63 | }
64 |
--------------------------------------------------------------------------------
/config/viper.go:
--------------------------------------------------------------------------------
1 | package config
2 |
3 | import "github.com/spf13/viper"
4 |
5 | type EnvVars struct {
6 | AUTH0_DOMAIN string `mapstructure:"AUTH0_DOMAIN"`
7 | AUTH0_AUDIENCE string `mapstructure:"AUTH0_AUDIENCE"`
8 | PORT string `mapstructure:"PORT"`
9 | }
10 |
11 | func LoadConfig() (config EnvVars, err error) {
12 | viper.AddConfigPath(".")
13 | viper.SetConfigName("app")
14 | viper.SetConfigType("env")
15 |
16 | viper.AutomaticEnv()
17 |
18 | err = viper.ReadInConfig()
19 | if err != nil {
20 | return
21 | }
22 |
23 | // TODO: add validation
24 |
25 | err = viper.Unmarshal(&config)
26 | return
27 | }
28 |
--------------------------------------------------------------------------------
/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/bmdavis419/golang-auth0-example
2 |
3 | go 1.19
4 |
5 | require (
6 | github.com/auth0/go-jwt-middleware/v2 v2.1.0
7 | github.com/gofiber/fiber/v2 v2.41.0
8 | github.com/spf13/viper v1.15.0
9 | )
10 |
11 | require (
12 | github.com/andybalholm/brotli v1.0.4 // indirect
13 | github.com/fsnotify/fsnotify v1.6.0 // indirect
14 | github.com/hashicorp/hcl v1.0.0 // indirect
15 | github.com/klauspost/compress v1.15.9 // indirect
16 | github.com/magiconair/properties v1.8.7 // indirect
17 | github.com/mattn/go-colorable v0.1.13 // indirect
18 | github.com/mattn/go-isatty v0.0.17 // indirect
19 | github.com/mattn/go-runewidth v0.0.14 // indirect
20 | github.com/mitchellh/mapstructure v1.5.0 // indirect
21 | github.com/pelletier/go-toml/v2 v2.0.6 // indirect
22 | github.com/pkg/errors v0.9.1 // indirect
23 | github.com/rivo/uniseg v0.2.0 // indirect
24 | github.com/spf13/afero v1.9.3 // indirect
25 | github.com/spf13/cast v1.5.0 // indirect
26 | github.com/spf13/jwalterweatherman v1.1.0 // indirect
27 | github.com/spf13/pflag v1.0.5 // indirect
28 | github.com/subosito/gotenv v1.4.2 // indirect
29 | github.com/valyala/bytebufferpool v1.0.0 // indirect
30 | github.com/valyala/fasthttp v1.43.0 // indirect
31 | github.com/valyala/tcplisten v1.0.0 // indirect
32 | golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect
33 | golang.org/x/sys v0.3.0 // indirect
34 | golang.org/x/text v0.5.0 // indirect
35 | gopkg.in/ini.v1 v1.67.0 // indirect
36 | gopkg.in/square/go-jose.v2 v2.6.0 // indirect
37 | gopkg.in/yaml.v3 v3.0.1 // indirect
38 | )
39 |
--------------------------------------------------------------------------------
/go.sum:
--------------------------------------------------------------------------------
1 | cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
2 | cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
3 | cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
4 | cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
5 | cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
6 | cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
7 | cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
8 | cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
9 | cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
10 | cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
11 | cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
12 | cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
13 | cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
14 | cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
15 | cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
16 | cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
17 | cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
18 | cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
19 | cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
20 | cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
21 | cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
22 | cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
23 | cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
24 | cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
25 | cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
26 | cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
27 | cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
28 | cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
29 | cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
30 | cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
31 | cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
32 | cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
33 | cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
34 | cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
35 | cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
36 | cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
37 | cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
38 | dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
39 | github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
40 | github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
41 | github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
42 | github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
43 | github.com/auth0/go-jwt-middleware/v2 v2.1.0 h1:VU4LsC3aFPoqXVyEp8EixU6FNM+ZNIjECszRTvtGQI8=
44 | github.com/auth0/go-jwt-middleware/v2 v2.1.0/go.mod h1:CpzcJoleayAACpv+vt0AP8/aYn5TDngsqzLapV1nM4c=
45 | github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
46 | github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
47 | github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
48 | github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
49 | github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
50 | github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
51 | github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
52 | github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
53 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
54 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
55 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
56 | github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
57 | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
58 | github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
59 | github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
60 | github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
61 | github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
62 | github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
63 | github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
64 | github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
65 | github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
66 | github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
67 | github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
68 | github.com/gofiber/fiber/v2 v2.41.0 h1:YhNoUS/OTjEz+/WLYuQ01xI7RXgKEFnGBKMagAu5f0M=
69 | github.com/gofiber/fiber/v2 v2.41.0/go.mod h1:RdebcCuCRFp4W6hr3968/XxwJVg0K+jr9/Ae0PFzZ0Q=
70 | github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
71 | github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
72 | github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
73 | github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
74 | github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
75 | github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
76 | github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
77 | github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
78 | github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
79 | github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
80 | github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
81 | github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
82 | github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
83 | github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
84 | github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
85 | github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
86 | github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
87 | github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
88 | github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
89 | github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
90 | github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
91 | github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
92 | github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
93 | github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
94 | github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
95 | github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
96 | github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
97 | github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
98 | github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
99 | github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
100 | github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
101 | github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
102 | github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
103 | github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
104 | github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
105 | github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
106 | github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
107 | github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
108 | github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
109 | github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
110 | github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
111 | github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
112 | github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
113 | github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
114 | github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
115 | github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
116 | github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
117 | github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
118 | github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
119 | github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
120 | github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
121 | github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
122 | github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
123 | github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
124 | github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
125 | github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
126 | github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
127 | github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
128 | github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
129 | github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
130 | github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
131 | github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
132 | github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
133 | github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
134 | github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
135 | github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
136 | github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
137 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
138 | github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
139 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
140 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
141 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
142 | github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
143 | github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
144 | github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
145 | github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
146 | github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
147 | github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
148 | github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
149 | github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
150 | github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
151 | github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
152 | github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
153 | github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU=
154 | github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
155 | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
156 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
157 | github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
158 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
159 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
160 | github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
161 | github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
162 | github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
163 | github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
164 | github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
165 | github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk=
166 | github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=
167 | github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
168 | github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
169 | github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
170 | github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
171 | github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
172 | github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
173 | github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU=
174 | github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA=
175 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
176 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
177 | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
178 | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
179 | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
180 | github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
181 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
182 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
183 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
184 | github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
185 | github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
186 | github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8=
187 | github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
188 | github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
189 | github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
190 | github.com/valyala/fasthttp v1.43.0 h1:Gy4sb32C98fbzVWZlTM1oTMdLWGyvxR03VhM6cBIU4g=
191 | github.com/valyala/fasthttp v1.43.0/go.mod h1:f6VbjjoI3z1NDOZOv17o6RvtRSWxC77seBFc2uWtgiY=
192 | github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
193 | github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
194 | github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
195 | github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
196 | github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
197 | github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
198 | go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
199 | go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
200 | go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
201 | go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
202 | go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
203 | go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
204 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
205 | golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
206 | golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
207 | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
208 | golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
209 | golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
210 | golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
211 | golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
212 | golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM=
213 | golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
214 | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
215 | golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
216 | golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
217 | golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
218 | golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
219 | golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
220 | golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
221 | golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
222 | golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
223 | golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
224 | golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
225 | golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
226 | golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
227 | golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
228 | golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
229 | golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
230 | golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
231 | golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
232 | golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
233 | golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
234 | golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
235 | golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
236 | golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
237 | golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
238 | golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
239 | golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
240 | golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
241 | golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
242 | golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
243 | golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
244 | golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
245 | golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
246 | golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
247 | golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
248 | golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
249 | golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
250 | golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
251 | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
252 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
253 | golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
254 | golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
255 | golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
256 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
257 | golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
258 | golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
259 | golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
260 | golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
261 | golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
262 | golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
263 | golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
264 | golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
265 | golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
266 | golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
267 | golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
268 | golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
269 | golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
270 | golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
271 | golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
272 | golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
273 | golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
274 | golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
275 | golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
276 | golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
277 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
278 | golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
279 | golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
280 | golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
281 | golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
282 | golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
283 | golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
284 | golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
285 | golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
286 | golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
287 | golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
288 | golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
289 | golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
290 | golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
291 | golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
292 | golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
293 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
294 | golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
295 | golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
296 | golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
297 | golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
298 | golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
299 | golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
300 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
301 | golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
302 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
303 | golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
304 | golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
305 | golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
306 | golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
307 | golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
308 | golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
309 | golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
310 | golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
311 | golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
312 | golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
313 | golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
314 | golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
315 | golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
316 | golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
317 | golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
318 | golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
319 | golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
320 | golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
321 | golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
322 | golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
323 | golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
324 | golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
325 | golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
326 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
327 | golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
328 | golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
329 | golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
330 | golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
331 | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
332 | golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
333 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
334 | golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
335 | golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
336 | golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
337 | golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
338 | golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
339 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
340 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
341 | golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
342 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
343 | golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
344 | golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
345 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
346 | golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
347 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
348 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
349 | golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
350 | golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
351 | golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
352 | golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
353 | golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
354 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
355 | golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
356 | golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
357 | golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
358 | golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
359 | golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
360 | golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
361 | golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
362 | golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
363 | golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
364 | golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
365 | golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
366 | golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
367 | golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
368 | golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
369 | golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
370 | golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
371 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
372 | golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
373 | golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
374 | golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
375 | golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
376 | golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
377 | golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
378 | golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
379 | golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
380 | golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
381 | golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
382 | golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
383 | golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
384 | golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
385 | golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
386 | golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
387 | golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
388 | golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
389 | golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
390 | golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
391 | golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
392 | golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
393 | golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
394 | golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
395 | golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
396 | golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
397 | golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
398 | golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
399 | golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
400 | golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
401 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
402 | golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
403 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
404 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
405 | google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
406 | google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
407 | google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
408 | google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
409 | google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
410 | google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
411 | google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
412 | google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
413 | google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
414 | google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
415 | google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
416 | google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
417 | google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
418 | google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
419 | google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
420 | google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
421 | google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
422 | google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
423 | google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
424 | google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
425 | google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
426 | google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
427 | google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
428 | google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
429 | google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
430 | google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
431 | google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
432 | google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
433 | google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
434 | google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
435 | google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
436 | google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
437 | google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
438 | google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
439 | google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
440 | google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
441 | google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
442 | google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
443 | google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
444 | google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
445 | google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
446 | google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
447 | google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
448 | google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
449 | google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
450 | google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
451 | google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
452 | google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
453 | google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
454 | google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
455 | google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
456 | google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
457 | google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
458 | google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
459 | google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
460 | google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
461 | google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
462 | google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
463 | google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
464 | google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
465 | google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
466 | google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
467 | google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
468 | google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
469 | google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
470 | google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
471 | google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
472 | google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
473 | google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
474 | google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
475 | google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
476 | google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
477 | google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
478 | google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
479 | google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
480 | google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
481 | google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
482 | google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
483 | google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
484 | google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
485 | google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
486 | google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
487 | google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
488 | google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
489 | google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
490 | google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
491 | google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
492 | google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
493 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
494 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
495 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
496 | gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
497 | gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
498 | gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
499 | gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=
500 | gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
501 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
502 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
503 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
504 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
505 | honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
506 | honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
507 | honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
508 | honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
509 | honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
510 | honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
511 | honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
512 | rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
513 | rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
514 | rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
515 |
--------------------------------------------------------------------------------
/internal/auth/middleware.go:
--------------------------------------------------------------------------------
1 | package auth
2 |
3 | import (
4 | "fmt"
5 | "log"
6 | "net/url"
7 | "strings"
8 | "time"
9 |
10 | "github.com/auth0/go-jwt-middleware/v2/jwks"
11 | "github.com/auth0/go-jwt-middleware/v2/validator"
12 | "github.com/bmdavis419/golang-auth0-example/config"
13 | "github.com/gofiber/fiber/v2"
14 | )
15 |
16 | type AuthMiddleware struct {
17 | config config.EnvVars
18 | }
19 |
20 | func NewAuthMiddleware(config config.EnvVars) *AuthMiddleware {
21 | return &AuthMiddleware{
22 | config: config,
23 | }
24 | }
25 |
26 | func (a *AuthMiddleware) ValidateToken(c *fiber.Ctx) error {
27 | issuerURL, err := url.Parse("https://" + a.config.AUTH0_DOMAIN + "/")
28 | if err != nil {
29 | log.Fatalf("Failed to parse the issuer url: %v", err)
30 | }
31 |
32 | provider := jwks.NewCachingProvider(issuerURL, 5*time.Minute)
33 |
34 | jwtValidator, err := validator.New(
35 | provider.KeyFunc,
36 | validator.RS256,
37 | issuerURL.String(),
38 | []string{a.config.AUTH0_AUDIENCE},
39 | )
40 | if err != nil {
41 | log.Fatalf("Failed to set up the jwt validator")
42 | }
43 |
44 | // get the token from the request header
45 | authHeader := c.Get("Authorization")
46 | authHeaderParts := strings.Split(authHeader, " ")
47 | if len(authHeaderParts) != 2 {
48 | return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
49 | "message": "Invalid authorization header",
50 | })
51 | }
52 |
53 | // Validate the token
54 | tokenInfo, err := jwtValidator.ValidateToken(c.Context(), authHeaderParts[1])
55 | if err != nil {
56 | fmt.Println(err)
57 | return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
58 | "message": "Invalid token",
59 | })
60 | }
61 |
62 | fmt.Println(tokenInfo)
63 |
64 | // Go to next middleware:
65 | return c.Next()
66 | }
67 |
--------------------------------------------------------------------------------
/internal/user/controller.go:
--------------------------------------------------------------------------------
1 | package user
2 |
3 | import "github.com/gofiber/fiber/v2"
4 |
5 | type UserController struct{}
6 |
7 | func NewUserController() *UserController {
8 | return &UserController{}
9 | }
10 |
11 | func (u *UserController) profile(c *fiber.Ctx) error {
12 | return c.JSON(fiber.Map{
13 | "message": "You are logged in",
14 | })
15 | }
16 |
--------------------------------------------------------------------------------
/internal/user/router.go:
--------------------------------------------------------------------------------
1 | package user
2 |
3 | import (
4 | "github.com/bmdavis419/golang-auth0-example/config"
5 | "github.com/bmdavis419/golang-auth0-example/internal/auth"
6 | "github.com/gofiber/fiber/v2"
7 | )
8 |
9 | func CreateUserGroup(app *fiber.App, userController *UserController, config config.EnvVars) {
10 | userGroup := app.Group("/user")
11 |
12 | // middleware to protect routes
13 | authMiddleware := auth.NewAuthMiddleware(config)
14 | userGroup.Use(authMiddleware.ValidateToken)
15 |
16 | // auth routes
17 | userGroup.Get("/me", userController.profile)
18 | }
19 |
--------------------------------------------------------------------------------
/pkg/shutdown/gracefully.go:
--------------------------------------------------------------------------------
1 | package shutdown
2 |
3 | import (
4 | "os"
5 | "os/signal"
6 | "syscall"
7 | )
8 |
9 | func Gracefully() {
10 | quit := make(chan os.Signal, 1)
11 | defer close(quit)
12 |
13 | signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
14 | <-quit
15 | }
16 |
--------------------------------------------------------------------------------
/web/.env.example:
--------------------------------------------------------------------------------
1 | VITE_AUTH0_DOMAIN="YOUR_DOMAIN.us.auth0.com"
2 | VITE_AUTH0_AUDIENCE="https://quickstarts/api"
3 | VITE_AUTH0_CLIENT_ID="YOUR_CLIENT_ID"
--------------------------------------------------------------------------------
/web/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
26 | .env
27 |
--------------------------------------------------------------------------------
/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + React + TS
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/web/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "web",
3 | "version": "0.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "web",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "@auth0/auth0-react": "^2.0.0",
12 | "react": "^18.2.0",
13 | "react-dom": "^18.2.0"
14 | },
15 | "devDependencies": {
16 | "@types/react": "^18.0.26",
17 | "@types/react-dom": "^18.0.9",
18 | "@vitejs/plugin-react": "^3.0.0",
19 | "typescript": "^4.9.3",
20 | "vite": "^4.0.0"
21 | }
22 | },
23 | "node_modules/@ampproject/remapping": {
24 | "version": "2.2.0",
25 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
26 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
27 | "dev": true,
28 | "dependencies": {
29 | "@jridgewell/gen-mapping": "^0.1.0",
30 | "@jridgewell/trace-mapping": "^0.3.9"
31 | },
32 | "engines": {
33 | "node": ">=6.0.0"
34 | }
35 | },
36 | "node_modules/@auth0/auth0-react": {
37 | "version": "2.0.0",
38 | "resolved": "https://registry.npmjs.org/@auth0/auth0-react/-/auth0-react-2.0.0.tgz",
39 | "integrity": "sha512-3pf41wU6ksm/6uPYAwjX5bZ7ma/K4LethibagTrKkMPuS8UatBvxLDtl3Aq52ZlJi1I+I42ckEfzWqloNxssIg==",
40 | "dependencies": {
41 | "@auth0/auth0-spa-js": "^2.0.2"
42 | },
43 | "peerDependencies": {
44 | "react": "^16.11.0 || ^17 || ^18",
45 | "react-dom": "^16.11.0 || ^17 || ^18"
46 | }
47 | },
48 | "node_modules/@auth0/auth0-spa-js": {
49 | "version": "2.0.2",
50 | "resolved": "https://registry.npmjs.org/@auth0/auth0-spa-js/-/auth0-spa-js-2.0.2.tgz",
51 | "integrity": "sha512-sxK9Lb6gXGImqjmWBfndA/OSNY4YLPTPwJEVuitXIOZ1p3EoqHM4zjIHvcdiYIaVo+cUfEf3l0bf8UA7Xi4tjg=="
52 | },
53 | "node_modules/@babel/code-frame": {
54 | "version": "7.18.6",
55 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
56 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
57 | "dev": true,
58 | "dependencies": {
59 | "@babel/highlight": "^7.18.6"
60 | },
61 | "engines": {
62 | "node": ">=6.9.0"
63 | }
64 | },
65 | "node_modules/@babel/compat-data": {
66 | "version": "7.20.10",
67 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz",
68 | "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==",
69 | "dev": true,
70 | "engines": {
71 | "node": ">=6.9.0"
72 | }
73 | },
74 | "node_modules/@babel/core": {
75 | "version": "7.20.12",
76 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz",
77 | "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==",
78 | "dev": true,
79 | "dependencies": {
80 | "@ampproject/remapping": "^2.1.0",
81 | "@babel/code-frame": "^7.18.6",
82 | "@babel/generator": "^7.20.7",
83 | "@babel/helper-compilation-targets": "^7.20.7",
84 | "@babel/helper-module-transforms": "^7.20.11",
85 | "@babel/helpers": "^7.20.7",
86 | "@babel/parser": "^7.20.7",
87 | "@babel/template": "^7.20.7",
88 | "@babel/traverse": "^7.20.12",
89 | "@babel/types": "^7.20.7",
90 | "convert-source-map": "^1.7.0",
91 | "debug": "^4.1.0",
92 | "gensync": "^1.0.0-beta.2",
93 | "json5": "^2.2.2",
94 | "semver": "^6.3.0"
95 | },
96 | "engines": {
97 | "node": ">=6.9.0"
98 | },
99 | "funding": {
100 | "type": "opencollective",
101 | "url": "https://opencollective.com/babel"
102 | }
103 | },
104 | "node_modules/@babel/generator": {
105 | "version": "7.20.7",
106 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz",
107 | "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==",
108 | "dev": true,
109 | "dependencies": {
110 | "@babel/types": "^7.20.7",
111 | "@jridgewell/gen-mapping": "^0.3.2",
112 | "jsesc": "^2.5.1"
113 | },
114 | "engines": {
115 | "node": ">=6.9.0"
116 | }
117 | },
118 | "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
119 | "version": "0.3.2",
120 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
121 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
122 | "dev": true,
123 | "dependencies": {
124 | "@jridgewell/set-array": "^1.0.1",
125 | "@jridgewell/sourcemap-codec": "^1.4.10",
126 | "@jridgewell/trace-mapping": "^0.3.9"
127 | },
128 | "engines": {
129 | "node": ">=6.0.0"
130 | }
131 | },
132 | "node_modules/@babel/helper-compilation-targets": {
133 | "version": "7.20.7",
134 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
135 | "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
136 | "dev": true,
137 | "dependencies": {
138 | "@babel/compat-data": "^7.20.5",
139 | "@babel/helper-validator-option": "^7.18.6",
140 | "browserslist": "^4.21.3",
141 | "lru-cache": "^5.1.1",
142 | "semver": "^6.3.0"
143 | },
144 | "engines": {
145 | "node": ">=6.9.0"
146 | },
147 | "peerDependencies": {
148 | "@babel/core": "^7.0.0"
149 | }
150 | },
151 | "node_modules/@babel/helper-environment-visitor": {
152 | "version": "7.18.9",
153 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
154 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
155 | "dev": true,
156 | "engines": {
157 | "node": ">=6.9.0"
158 | }
159 | },
160 | "node_modules/@babel/helper-function-name": {
161 | "version": "7.19.0",
162 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
163 | "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
164 | "dev": true,
165 | "dependencies": {
166 | "@babel/template": "^7.18.10",
167 | "@babel/types": "^7.19.0"
168 | },
169 | "engines": {
170 | "node": ">=6.9.0"
171 | }
172 | },
173 | "node_modules/@babel/helper-hoist-variables": {
174 | "version": "7.18.6",
175 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
176 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
177 | "dev": true,
178 | "dependencies": {
179 | "@babel/types": "^7.18.6"
180 | },
181 | "engines": {
182 | "node": ">=6.9.0"
183 | }
184 | },
185 | "node_modules/@babel/helper-module-imports": {
186 | "version": "7.18.6",
187 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
188 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
189 | "dev": true,
190 | "dependencies": {
191 | "@babel/types": "^7.18.6"
192 | },
193 | "engines": {
194 | "node": ">=6.9.0"
195 | }
196 | },
197 | "node_modules/@babel/helper-module-transforms": {
198 | "version": "7.20.11",
199 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
200 | "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
201 | "dev": true,
202 | "dependencies": {
203 | "@babel/helper-environment-visitor": "^7.18.9",
204 | "@babel/helper-module-imports": "^7.18.6",
205 | "@babel/helper-simple-access": "^7.20.2",
206 | "@babel/helper-split-export-declaration": "^7.18.6",
207 | "@babel/helper-validator-identifier": "^7.19.1",
208 | "@babel/template": "^7.20.7",
209 | "@babel/traverse": "^7.20.10",
210 | "@babel/types": "^7.20.7"
211 | },
212 | "engines": {
213 | "node": ">=6.9.0"
214 | }
215 | },
216 | "node_modules/@babel/helper-plugin-utils": {
217 | "version": "7.20.2",
218 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
219 | "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
220 | "dev": true,
221 | "engines": {
222 | "node": ">=6.9.0"
223 | }
224 | },
225 | "node_modules/@babel/helper-simple-access": {
226 | "version": "7.20.2",
227 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
228 | "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
229 | "dev": true,
230 | "dependencies": {
231 | "@babel/types": "^7.20.2"
232 | },
233 | "engines": {
234 | "node": ">=6.9.0"
235 | }
236 | },
237 | "node_modules/@babel/helper-split-export-declaration": {
238 | "version": "7.18.6",
239 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
240 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
241 | "dev": true,
242 | "dependencies": {
243 | "@babel/types": "^7.18.6"
244 | },
245 | "engines": {
246 | "node": ">=6.9.0"
247 | }
248 | },
249 | "node_modules/@babel/helper-string-parser": {
250 | "version": "7.19.4",
251 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
252 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
253 | "dev": true,
254 | "engines": {
255 | "node": ">=6.9.0"
256 | }
257 | },
258 | "node_modules/@babel/helper-validator-identifier": {
259 | "version": "7.19.1",
260 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
261 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
262 | "dev": true,
263 | "engines": {
264 | "node": ">=6.9.0"
265 | }
266 | },
267 | "node_modules/@babel/helper-validator-option": {
268 | "version": "7.18.6",
269 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
270 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
271 | "dev": true,
272 | "engines": {
273 | "node": ">=6.9.0"
274 | }
275 | },
276 | "node_modules/@babel/helpers": {
277 | "version": "7.20.7",
278 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz",
279 | "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==",
280 | "dev": true,
281 | "dependencies": {
282 | "@babel/template": "^7.20.7",
283 | "@babel/traverse": "^7.20.7",
284 | "@babel/types": "^7.20.7"
285 | },
286 | "engines": {
287 | "node": ">=6.9.0"
288 | }
289 | },
290 | "node_modules/@babel/highlight": {
291 | "version": "7.18.6",
292 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
293 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
294 | "dev": true,
295 | "dependencies": {
296 | "@babel/helper-validator-identifier": "^7.18.6",
297 | "chalk": "^2.0.0",
298 | "js-tokens": "^4.0.0"
299 | },
300 | "engines": {
301 | "node": ">=6.9.0"
302 | }
303 | },
304 | "node_modules/@babel/parser": {
305 | "version": "7.20.7",
306 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
307 | "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==",
308 | "dev": true,
309 | "bin": {
310 | "parser": "bin/babel-parser.js"
311 | },
312 | "engines": {
313 | "node": ">=6.0.0"
314 | }
315 | },
316 | "node_modules/@babel/plugin-transform-react-jsx-self": {
317 | "version": "7.18.6",
318 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
319 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
320 | "dev": true,
321 | "dependencies": {
322 | "@babel/helper-plugin-utils": "^7.18.6"
323 | },
324 | "engines": {
325 | "node": ">=6.9.0"
326 | },
327 | "peerDependencies": {
328 | "@babel/core": "^7.0.0-0"
329 | }
330 | },
331 | "node_modules/@babel/plugin-transform-react-jsx-source": {
332 | "version": "7.19.6",
333 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz",
334 | "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==",
335 | "dev": true,
336 | "dependencies": {
337 | "@babel/helper-plugin-utils": "^7.19.0"
338 | },
339 | "engines": {
340 | "node": ">=6.9.0"
341 | },
342 | "peerDependencies": {
343 | "@babel/core": "^7.0.0-0"
344 | }
345 | },
346 | "node_modules/@babel/template": {
347 | "version": "7.20.7",
348 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
349 | "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
350 | "dev": true,
351 | "dependencies": {
352 | "@babel/code-frame": "^7.18.6",
353 | "@babel/parser": "^7.20.7",
354 | "@babel/types": "^7.20.7"
355 | },
356 | "engines": {
357 | "node": ">=6.9.0"
358 | }
359 | },
360 | "node_modules/@babel/traverse": {
361 | "version": "7.20.12",
362 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz",
363 | "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==",
364 | "dev": true,
365 | "dependencies": {
366 | "@babel/code-frame": "^7.18.6",
367 | "@babel/generator": "^7.20.7",
368 | "@babel/helper-environment-visitor": "^7.18.9",
369 | "@babel/helper-function-name": "^7.19.0",
370 | "@babel/helper-hoist-variables": "^7.18.6",
371 | "@babel/helper-split-export-declaration": "^7.18.6",
372 | "@babel/parser": "^7.20.7",
373 | "@babel/types": "^7.20.7",
374 | "debug": "^4.1.0",
375 | "globals": "^11.1.0"
376 | },
377 | "engines": {
378 | "node": ">=6.9.0"
379 | }
380 | },
381 | "node_modules/@babel/types": {
382 | "version": "7.20.7",
383 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
384 | "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
385 | "dev": true,
386 | "dependencies": {
387 | "@babel/helper-string-parser": "^7.19.4",
388 | "@babel/helper-validator-identifier": "^7.19.1",
389 | "to-fast-properties": "^2.0.0"
390 | },
391 | "engines": {
392 | "node": ">=6.9.0"
393 | }
394 | },
395 | "node_modules/@esbuild/android-arm": {
396 | "version": "0.16.17",
397 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
398 | "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
399 | "cpu": [
400 | "arm"
401 | ],
402 | "dev": true,
403 | "optional": true,
404 | "os": [
405 | "android"
406 | ],
407 | "engines": {
408 | "node": ">=12"
409 | }
410 | },
411 | "node_modules/@esbuild/android-arm64": {
412 | "version": "0.16.17",
413 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
414 | "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
415 | "cpu": [
416 | "arm64"
417 | ],
418 | "dev": true,
419 | "optional": true,
420 | "os": [
421 | "android"
422 | ],
423 | "engines": {
424 | "node": ">=12"
425 | }
426 | },
427 | "node_modules/@esbuild/android-x64": {
428 | "version": "0.16.17",
429 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
430 | "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
431 | "cpu": [
432 | "x64"
433 | ],
434 | "dev": true,
435 | "optional": true,
436 | "os": [
437 | "android"
438 | ],
439 | "engines": {
440 | "node": ">=12"
441 | }
442 | },
443 | "node_modules/@esbuild/darwin-arm64": {
444 | "version": "0.16.17",
445 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
446 | "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
447 | "cpu": [
448 | "arm64"
449 | ],
450 | "dev": true,
451 | "optional": true,
452 | "os": [
453 | "darwin"
454 | ],
455 | "engines": {
456 | "node": ">=12"
457 | }
458 | },
459 | "node_modules/@esbuild/darwin-x64": {
460 | "version": "0.16.17",
461 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
462 | "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
463 | "cpu": [
464 | "x64"
465 | ],
466 | "dev": true,
467 | "optional": true,
468 | "os": [
469 | "darwin"
470 | ],
471 | "engines": {
472 | "node": ">=12"
473 | }
474 | },
475 | "node_modules/@esbuild/freebsd-arm64": {
476 | "version": "0.16.17",
477 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
478 | "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
479 | "cpu": [
480 | "arm64"
481 | ],
482 | "dev": true,
483 | "optional": true,
484 | "os": [
485 | "freebsd"
486 | ],
487 | "engines": {
488 | "node": ">=12"
489 | }
490 | },
491 | "node_modules/@esbuild/freebsd-x64": {
492 | "version": "0.16.17",
493 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
494 | "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
495 | "cpu": [
496 | "x64"
497 | ],
498 | "dev": true,
499 | "optional": true,
500 | "os": [
501 | "freebsd"
502 | ],
503 | "engines": {
504 | "node": ">=12"
505 | }
506 | },
507 | "node_modules/@esbuild/linux-arm": {
508 | "version": "0.16.17",
509 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
510 | "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
511 | "cpu": [
512 | "arm"
513 | ],
514 | "dev": true,
515 | "optional": true,
516 | "os": [
517 | "linux"
518 | ],
519 | "engines": {
520 | "node": ">=12"
521 | }
522 | },
523 | "node_modules/@esbuild/linux-arm64": {
524 | "version": "0.16.17",
525 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
526 | "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
527 | "cpu": [
528 | "arm64"
529 | ],
530 | "dev": true,
531 | "optional": true,
532 | "os": [
533 | "linux"
534 | ],
535 | "engines": {
536 | "node": ">=12"
537 | }
538 | },
539 | "node_modules/@esbuild/linux-ia32": {
540 | "version": "0.16.17",
541 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
542 | "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
543 | "cpu": [
544 | "ia32"
545 | ],
546 | "dev": true,
547 | "optional": true,
548 | "os": [
549 | "linux"
550 | ],
551 | "engines": {
552 | "node": ">=12"
553 | }
554 | },
555 | "node_modules/@esbuild/linux-loong64": {
556 | "version": "0.16.17",
557 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
558 | "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
559 | "cpu": [
560 | "loong64"
561 | ],
562 | "dev": true,
563 | "optional": true,
564 | "os": [
565 | "linux"
566 | ],
567 | "engines": {
568 | "node": ">=12"
569 | }
570 | },
571 | "node_modules/@esbuild/linux-mips64el": {
572 | "version": "0.16.17",
573 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
574 | "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
575 | "cpu": [
576 | "mips64el"
577 | ],
578 | "dev": true,
579 | "optional": true,
580 | "os": [
581 | "linux"
582 | ],
583 | "engines": {
584 | "node": ">=12"
585 | }
586 | },
587 | "node_modules/@esbuild/linux-ppc64": {
588 | "version": "0.16.17",
589 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
590 | "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
591 | "cpu": [
592 | "ppc64"
593 | ],
594 | "dev": true,
595 | "optional": true,
596 | "os": [
597 | "linux"
598 | ],
599 | "engines": {
600 | "node": ">=12"
601 | }
602 | },
603 | "node_modules/@esbuild/linux-riscv64": {
604 | "version": "0.16.17",
605 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
606 | "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
607 | "cpu": [
608 | "riscv64"
609 | ],
610 | "dev": true,
611 | "optional": true,
612 | "os": [
613 | "linux"
614 | ],
615 | "engines": {
616 | "node": ">=12"
617 | }
618 | },
619 | "node_modules/@esbuild/linux-s390x": {
620 | "version": "0.16.17",
621 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
622 | "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
623 | "cpu": [
624 | "s390x"
625 | ],
626 | "dev": true,
627 | "optional": true,
628 | "os": [
629 | "linux"
630 | ],
631 | "engines": {
632 | "node": ">=12"
633 | }
634 | },
635 | "node_modules/@esbuild/linux-x64": {
636 | "version": "0.16.17",
637 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
638 | "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
639 | "cpu": [
640 | "x64"
641 | ],
642 | "dev": true,
643 | "optional": true,
644 | "os": [
645 | "linux"
646 | ],
647 | "engines": {
648 | "node": ">=12"
649 | }
650 | },
651 | "node_modules/@esbuild/netbsd-x64": {
652 | "version": "0.16.17",
653 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
654 | "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
655 | "cpu": [
656 | "x64"
657 | ],
658 | "dev": true,
659 | "optional": true,
660 | "os": [
661 | "netbsd"
662 | ],
663 | "engines": {
664 | "node": ">=12"
665 | }
666 | },
667 | "node_modules/@esbuild/openbsd-x64": {
668 | "version": "0.16.17",
669 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
670 | "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
671 | "cpu": [
672 | "x64"
673 | ],
674 | "dev": true,
675 | "optional": true,
676 | "os": [
677 | "openbsd"
678 | ],
679 | "engines": {
680 | "node": ">=12"
681 | }
682 | },
683 | "node_modules/@esbuild/sunos-x64": {
684 | "version": "0.16.17",
685 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
686 | "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
687 | "cpu": [
688 | "x64"
689 | ],
690 | "dev": true,
691 | "optional": true,
692 | "os": [
693 | "sunos"
694 | ],
695 | "engines": {
696 | "node": ">=12"
697 | }
698 | },
699 | "node_modules/@esbuild/win32-arm64": {
700 | "version": "0.16.17",
701 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
702 | "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
703 | "cpu": [
704 | "arm64"
705 | ],
706 | "dev": true,
707 | "optional": true,
708 | "os": [
709 | "win32"
710 | ],
711 | "engines": {
712 | "node": ">=12"
713 | }
714 | },
715 | "node_modules/@esbuild/win32-ia32": {
716 | "version": "0.16.17",
717 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
718 | "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
719 | "cpu": [
720 | "ia32"
721 | ],
722 | "dev": true,
723 | "optional": true,
724 | "os": [
725 | "win32"
726 | ],
727 | "engines": {
728 | "node": ">=12"
729 | }
730 | },
731 | "node_modules/@esbuild/win32-x64": {
732 | "version": "0.16.17",
733 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
734 | "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
735 | "cpu": [
736 | "x64"
737 | ],
738 | "dev": true,
739 | "optional": true,
740 | "os": [
741 | "win32"
742 | ],
743 | "engines": {
744 | "node": ">=12"
745 | }
746 | },
747 | "node_modules/@jridgewell/gen-mapping": {
748 | "version": "0.1.1",
749 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
750 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
751 | "dev": true,
752 | "dependencies": {
753 | "@jridgewell/set-array": "^1.0.0",
754 | "@jridgewell/sourcemap-codec": "^1.4.10"
755 | },
756 | "engines": {
757 | "node": ">=6.0.0"
758 | }
759 | },
760 | "node_modules/@jridgewell/resolve-uri": {
761 | "version": "3.1.0",
762 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
763 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
764 | "dev": true,
765 | "engines": {
766 | "node": ">=6.0.0"
767 | }
768 | },
769 | "node_modules/@jridgewell/set-array": {
770 | "version": "1.1.2",
771 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
772 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
773 | "dev": true,
774 | "engines": {
775 | "node": ">=6.0.0"
776 | }
777 | },
778 | "node_modules/@jridgewell/sourcemap-codec": {
779 | "version": "1.4.14",
780 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
781 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
782 | "dev": true
783 | },
784 | "node_modules/@jridgewell/trace-mapping": {
785 | "version": "0.3.17",
786 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
787 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
788 | "dev": true,
789 | "dependencies": {
790 | "@jridgewell/resolve-uri": "3.1.0",
791 | "@jridgewell/sourcemap-codec": "1.4.14"
792 | }
793 | },
794 | "node_modules/@types/prop-types": {
795 | "version": "15.7.5",
796 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
797 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
798 | "dev": true
799 | },
800 | "node_modules/@types/react": {
801 | "version": "18.0.27",
802 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz",
803 | "integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==",
804 | "dev": true,
805 | "dependencies": {
806 | "@types/prop-types": "*",
807 | "@types/scheduler": "*",
808 | "csstype": "^3.0.2"
809 | }
810 | },
811 | "node_modules/@types/react-dom": {
812 | "version": "18.0.10",
813 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz",
814 | "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==",
815 | "dev": true,
816 | "dependencies": {
817 | "@types/react": "*"
818 | }
819 | },
820 | "node_modules/@types/scheduler": {
821 | "version": "0.16.2",
822 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
823 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
824 | "dev": true
825 | },
826 | "node_modules/@vitejs/plugin-react": {
827 | "version": "3.0.1",
828 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.1.tgz",
829 | "integrity": "sha512-mx+QvYwIbbpOIJw+hypjnW1lAbKDHtWK5ibkF/V1/oMBu8HU/chb+SnqJDAsLq1+7rGqjktCEomMTM5KShzUKQ==",
830 | "dev": true,
831 | "dependencies": {
832 | "@babel/core": "^7.20.7",
833 | "@babel/plugin-transform-react-jsx-self": "^7.18.6",
834 | "@babel/plugin-transform-react-jsx-source": "^7.19.6",
835 | "magic-string": "^0.27.0",
836 | "react-refresh": "^0.14.0"
837 | },
838 | "engines": {
839 | "node": "^14.18.0 || >=16.0.0"
840 | },
841 | "peerDependencies": {
842 | "vite": "^4.0.0"
843 | }
844 | },
845 | "node_modules/ansi-styles": {
846 | "version": "3.2.1",
847 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
848 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
849 | "dev": true,
850 | "dependencies": {
851 | "color-convert": "^1.9.0"
852 | },
853 | "engines": {
854 | "node": ">=4"
855 | }
856 | },
857 | "node_modules/browserslist": {
858 | "version": "4.21.4",
859 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
860 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
861 | "dev": true,
862 | "funding": [
863 | {
864 | "type": "opencollective",
865 | "url": "https://opencollective.com/browserslist"
866 | },
867 | {
868 | "type": "tidelift",
869 | "url": "https://tidelift.com/funding/github/npm/browserslist"
870 | }
871 | ],
872 | "dependencies": {
873 | "caniuse-lite": "^1.0.30001400",
874 | "electron-to-chromium": "^1.4.251",
875 | "node-releases": "^2.0.6",
876 | "update-browserslist-db": "^1.0.9"
877 | },
878 | "bin": {
879 | "browserslist": "cli.js"
880 | },
881 | "engines": {
882 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
883 | }
884 | },
885 | "node_modules/caniuse-lite": {
886 | "version": "1.0.30001446",
887 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001446.tgz",
888 | "integrity": "sha512-fEoga4PrImGcwUUGEol/PoFCSBnSkA9drgdkxXkJLsUBOnJ8rs3zDv6ApqYXGQFOyMPsjh79naWhF4DAxbF8rw==",
889 | "dev": true,
890 | "funding": [
891 | {
892 | "type": "opencollective",
893 | "url": "https://opencollective.com/browserslist"
894 | },
895 | {
896 | "type": "tidelift",
897 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
898 | }
899 | ]
900 | },
901 | "node_modules/chalk": {
902 | "version": "2.4.2",
903 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
904 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
905 | "dev": true,
906 | "dependencies": {
907 | "ansi-styles": "^3.2.1",
908 | "escape-string-regexp": "^1.0.5",
909 | "supports-color": "^5.3.0"
910 | },
911 | "engines": {
912 | "node": ">=4"
913 | }
914 | },
915 | "node_modules/color-convert": {
916 | "version": "1.9.3",
917 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
918 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
919 | "dev": true,
920 | "dependencies": {
921 | "color-name": "1.1.3"
922 | }
923 | },
924 | "node_modules/color-name": {
925 | "version": "1.1.3",
926 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
927 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
928 | "dev": true
929 | },
930 | "node_modules/convert-source-map": {
931 | "version": "1.9.0",
932 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
933 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
934 | "dev": true
935 | },
936 | "node_modules/csstype": {
937 | "version": "3.1.1",
938 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
939 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
940 | "dev": true
941 | },
942 | "node_modules/debug": {
943 | "version": "4.3.4",
944 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
945 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
946 | "dev": true,
947 | "dependencies": {
948 | "ms": "2.1.2"
949 | },
950 | "engines": {
951 | "node": ">=6.0"
952 | },
953 | "peerDependenciesMeta": {
954 | "supports-color": {
955 | "optional": true
956 | }
957 | }
958 | },
959 | "node_modules/electron-to-chromium": {
960 | "version": "1.4.284",
961 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
962 | "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
963 | "dev": true
964 | },
965 | "node_modules/esbuild": {
966 | "version": "0.16.17",
967 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
968 | "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
969 | "dev": true,
970 | "hasInstallScript": true,
971 | "bin": {
972 | "esbuild": "bin/esbuild"
973 | },
974 | "engines": {
975 | "node": ">=12"
976 | },
977 | "optionalDependencies": {
978 | "@esbuild/android-arm": "0.16.17",
979 | "@esbuild/android-arm64": "0.16.17",
980 | "@esbuild/android-x64": "0.16.17",
981 | "@esbuild/darwin-arm64": "0.16.17",
982 | "@esbuild/darwin-x64": "0.16.17",
983 | "@esbuild/freebsd-arm64": "0.16.17",
984 | "@esbuild/freebsd-x64": "0.16.17",
985 | "@esbuild/linux-arm": "0.16.17",
986 | "@esbuild/linux-arm64": "0.16.17",
987 | "@esbuild/linux-ia32": "0.16.17",
988 | "@esbuild/linux-loong64": "0.16.17",
989 | "@esbuild/linux-mips64el": "0.16.17",
990 | "@esbuild/linux-ppc64": "0.16.17",
991 | "@esbuild/linux-riscv64": "0.16.17",
992 | "@esbuild/linux-s390x": "0.16.17",
993 | "@esbuild/linux-x64": "0.16.17",
994 | "@esbuild/netbsd-x64": "0.16.17",
995 | "@esbuild/openbsd-x64": "0.16.17",
996 | "@esbuild/sunos-x64": "0.16.17",
997 | "@esbuild/win32-arm64": "0.16.17",
998 | "@esbuild/win32-ia32": "0.16.17",
999 | "@esbuild/win32-x64": "0.16.17"
1000 | }
1001 | },
1002 | "node_modules/escalade": {
1003 | "version": "3.1.1",
1004 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1005 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1006 | "dev": true,
1007 | "engines": {
1008 | "node": ">=6"
1009 | }
1010 | },
1011 | "node_modules/escape-string-regexp": {
1012 | "version": "1.0.5",
1013 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1014 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
1015 | "dev": true,
1016 | "engines": {
1017 | "node": ">=0.8.0"
1018 | }
1019 | },
1020 | "node_modules/fsevents": {
1021 | "version": "2.3.2",
1022 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1023 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1024 | "dev": true,
1025 | "hasInstallScript": true,
1026 | "optional": true,
1027 | "os": [
1028 | "darwin"
1029 | ],
1030 | "engines": {
1031 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1032 | }
1033 | },
1034 | "node_modules/function-bind": {
1035 | "version": "1.1.1",
1036 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1037 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1038 | "dev": true
1039 | },
1040 | "node_modules/gensync": {
1041 | "version": "1.0.0-beta.2",
1042 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1043 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1044 | "dev": true,
1045 | "engines": {
1046 | "node": ">=6.9.0"
1047 | }
1048 | },
1049 | "node_modules/globals": {
1050 | "version": "11.12.0",
1051 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1052 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1053 | "dev": true,
1054 | "engines": {
1055 | "node": ">=4"
1056 | }
1057 | },
1058 | "node_modules/has": {
1059 | "version": "1.0.3",
1060 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1061 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1062 | "dev": true,
1063 | "dependencies": {
1064 | "function-bind": "^1.1.1"
1065 | },
1066 | "engines": {
1067 | "node": ">= 0.4.0"
1068 | }
1069 | },
1070 | "node_modules/has-flag": {
1071 | "version": "3.0.0",
1072 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1073 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1074 | "dev": true,
1075 | "engines": {
1076 | "node": ">=4"
1077 | }
1078 | },
1079 | "node_modules/is-core-module": {
1080 | "version": "2.11.0",
1081 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
1082 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
1083 | "dev": true,
1084 | "dependencies": {
1085 | "has": "^1.0.3"
1086 | },
1087 | "funding": {
1088 | "url": "https://github.com/sponsors/ljharb"
1089 | }
1090 | },
1091 | "node_modules/js-tokens": {
1092 | "version": "4.0.0",
1093 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1094 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
1095 | },
1096 | "node_modules/jsesc": {
1097 | "version": "2.5.2",
1098 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1099 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1100 | "dev": true,
1101 | "bin": {
1102 | "jsesc": "bin/jsesc"
1103 | },
1104 | "engines": {
1105 | "node": ">=4"
1106 | }
1107 | },
1108 | "node_modules/json5": {
1109 | "version": "2.2.3",
1110 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
1111 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
1112 | "dev": true,
1113 | "bin": {
1114 | "json5": "lib/cli.js"
1115 | },
1116 | "engines": {
1117 | "node": ">=6"
1118 | }
1119 | },
1120 | "node_modules/loose-envify": {
1121 | "version": "1.4.0",
1122 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1123 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1124 | "dependencies": {
1125 | "js-tokens": "^3.0.0 || ^4.0.0"
1126 | },
1127 | "bin": {
1128 | "loose-envify": "cli.js"
1129 | }
1130 | },
1131 | "node_modules/lru-cache": {
1132 | "version": "5.1.1",
1133 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
1134 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1135 | "dev": true,
1136 | "dependencies": {
1137 | "yallist": "^3.0.2"
1138 | }
1139 | },
1140 | "node_modules/magic-string": {
1141 | "version": "0.27.0",
1142 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
1143 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
1144 | "dev": true,
1145 | "dependencies": {
1146 | "@jridgewell/sourcemap-codec": "^1.4.13"
1147 | },
1148 | "engines": {
1149 | "node": ">=12"
1150 | }
1151 | },
1152 | "node_modules/ms": {
1153 | "version": "2.1.2",
1154 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1155 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1156 | "dev": true
1157 | },
1158 | "node_modules/nanoid": {
1159 | "version": "3.3.4",
1160 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
1161 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
1162 | "dev": true,
1163 | "bin": {
1164 | "nanoid": "bin/nanoid.cjs"
1165 | },
1166 | "engines": {
1167 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1168 | }
1169 | },
1170 | "node_modules/node-releases": {
1171 | "version": "2.0.8",
1172 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
1173 | "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==",
1174 | "dev": true
1175 | },
1176 | "node_modules/path-parse": {
1177 | "version": "1.0.7",
1178 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1179 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1180 | "dev": true
1181 | },
1182 | "node_modules/picocolors": {
1183 | "version": "1.0.0",
1184 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1185 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1186 | "dev": true
1187 | },
1188 | "node_modules/postcss": {
1189 | "version": "8.4.21",
1190 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
1191 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
1192 | "dev": true,
1193 | "funding": [
1194 | {
1195 | "type": "opencollective",
1196 | "url": "https://opencollective.com/postcss/"
1197 | },
1198 | {
1199 | "type": "tidelift",
1200 | "url": "https://tidelift.com/funding/github/npm/postcss"
1201 | }
1202 | ],
1203 | "dependencies": {
1204 | "nanoid": "^3.3.4",
1205 | "picocolors": "^1.0.0",
1206 | "source-map-js": "^1.0.2"
1207 | },
1208 | "engines": {
1209 | "node": "^10 || ^12 || >=14"
1210 | }
1211 | },
1212 | "node_modules/react": {
1213 | "version": "18.2.0",
1214 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
1215 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
1216 | "dependencies": {
1217 | "loose-envify": "^1.1.0"
1218 | },
1219 | "engines": {
1220 | "node": ">=0.10.0"
1221 | }
1222 | },
1223 | "node_modules/react-dom": {
1224 | "version": "18.2.0",
1225 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
1226 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
1227 | "dependencies": {
1228 | "loose-envify": "^1.1.0",
1229 | "scheduler": "^0.23.0"
1230 | },
1231 | "peerDependencies": {
1232 | "react": "^18.2.0"
1233 | }
1234 | },
1235 | "node_modules/react-refresh": {
1236 | "version": "0.14.0",
1237 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
1238 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
1239 | "dev": true,
1240 | "engines": {
1241 | "node": ">=0.10.0"
1242 | }
1243 | },
1244 | "node_modules/resolve": {
1245 | "version": "1.22.1",
1246 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
1247 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1248 | "dev": true,
1249 | "dependencies": {
1250 | "is-core-module": "^2.9.0",
1251 | "path-parse": "^1.0.7",
1252 | "supports-preserve-symlinks-flag": "^1.0.0"
1253 | },
1254 | "bin": {
1255 | "resolve": "bin/resolve"
1256 | },
1257 | "funding": {
1258 | "url": "https://github.com/sponsors/ljharb"
1259 | }
1260 | },
1261 | "node_modules/rollup": {
1262 | "version": "3.10.0",
1263 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.0.tgz",
1264 | "integrity": "sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==",
1265 | "dev": true,
1266 | "bin": {
1267 | "rollup": "dist/bin/rollup"
1268 | },
1269 | "engines": {
1270 | "node": ">=14.18.0",
1271 | "npm": ">=8.0.0"
1272 | },
1273 | "optionalDependencies": {
1274 | "fsevents": "~2.3.2"
1275 | }
1276 | },
1277 | "node_modules/scheduler": {
1278 | "version": "0.23.0",
1279 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
1280 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
1281 | "dependencies": {
1282 | "loose-envify": "^1.1.0"
1283 | }
1284 | },
1285 | "node_modules/semver": {
1286 | "version": "6.3.0",
1287 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1288 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1289 | "dev": true,
1290 | "bin": {
1291 | "semver": "bin/semver.js"
1292 | }
1293 | },
1294 | "node_modules/source-map-js": {
1295 | "version": "1.0.2",
1296 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1297 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1298 | "dev": true,
1299 | "engines": {
1300 | "node": ">=0.10.0"
1301 | }
1302 | },
1303 | "node_modules/supports-color": {
1304 | "version": "5.5.0",
1305 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1306 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1307 | "dev": true,
1308 | "dependencies": {
1309 | "has-flag": "^3.0.0"
1310 | },
1311 | "engines": {
1312 | "node": ">=4"
1313 | }
1314 | },
1315 | "node_modules/supports-preserve-symlinks-flag": {
1316 | "version": "1.0.0",
1317 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1318 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1319 | "dev": true,
1320 | "engines": {
1321 | "node": ">= 0.4"
1322 | },
1323 | "funding": {
1324 | "url": "https://github.com/sponsors/ljharb"
1325 | }
1326 | },
1327 | "node_modules/to-fast-properties": {
1328 | "version": "2.0.0",
1329 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1330 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
1331 | "dev": true,
1332 | "engines": {
1333 | "node": ">=4"
1334 | }
1335 | },
1336 | "node_modules/typescript": {
1337 | "version": "4.9.4",
1338 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
1339 | "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
1340 | "dev": true,
1341 | "bin": {
1342 | "tsc": "bin/tsc",
1343 | "tsserver": "bin/tsserver"
1344 | },
1345 | "engines": {
1346 | "node": ">=4.2.0"
1347 | }
1348 | },
1349 | "node_modules/update-browserslist-db": {
1350 | "version": "1.0.10",
1351 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
1352 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
1353 | "dev": true,
1354 | "funding": [
1355 | {
1356 | "type": "opencollective",
1357 | "url": "https://opencollective.com/browserslist"
1358 | },
1359 | {
1360 | "type": "tidelift",
1361 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1362 | }
1363 | ],
1364 | "dependencies": {
1365 | "escalade": "^3.1.1",
1366 | "picocolors": "^1.0.0"
1367 | },
1368 | "bin": {
1369 | "browserslist-lint": "cli.js"
1370 | },
1371 | "peerDependencies": {
1372 | "browserslist": ">= 4.21.0"
1373 | }
1374 | },
1375 | "node_modules/vite": {
1376 | "version": "4.0.4",
1377 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz",
1378 | "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==",
1379 | "dev": true,
1380 | "dependencies": {
1381 | "esbuild": "^0.16.3",
1382 | "postcss": "^8.4.20",
1383 | "resolve": "^1.22.1",
1384 | "rollup": "^3.7.0"
1385 | },
1386 | "bin": {
1387 | "vite": "bin/vite.js"
1388 | },
1389 | "engines": {
1390 | "node": "^14.18.0 || >=16.0.0"
1391 | },
1392 | "optionalDependencies": {
1393 | "fsevents": "~2.3.2"
1394 | },
1395 | "peerDependencies": {
1396 | "@types/node": ">= 14",
1397 | "less": "*",
1398 | "sass": "*",
1399 | "stylus": "*",
1400 | "sugarss": "*",
1401 | "terser": "^5.4.0"
1402 | },
1403 | "peerDependenciesMeta": {
1404 | "@types/node": {
1405 | "optional": true
1406 | },
1407 | "less": {
1408 | "optional": true
1409 | },
1410 | "sass": {
1411 | "optional": true
1412 | },
1413 | "stylus": {
1414 | "optional": true
1415 | },
1416 | "sugarss": {
1417 | "optional": true
1418 | },
1419 | "terser": {
1420 | "optional": true
1421 | }
1422 | }
1423 | },
1424 | "node_modules/yallist": {
1425 | "version": "3.1.1",
1426 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
1427 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
1428 | "dev": true
1429 | }
1430 | },
1431 | "dependencies": {
1432 | "@ampproject/remapping": {
1433 | "version": "2.2.0",
1434 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
1435 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
1436 | "dev": true,
1437 | "requires": {
1438 | "@jridgewell/gen-mapping": "^0.1.0",
1439 | "@jridgewell/trace-mapping": "^0.3.9"
1440 | }
1441 | },
1442 | "@auth0/auth0-react": {
1443 | "version": "2.0.0",
1444 | "resolved": "https://registry.npmjs.org/@auth0/auth0-react/-/auth0-react-2.0.0.tgz",
1445 | "integrity": "sha512-3pf41wU6ksm/6uPYAwjX5bZ7ma/K4LethibagTrKkMPuS8UatBvxLDtl3Aq52ZlJi1I+I42ckEfzWqloNxssIg==",
1446 | "requires": {
1447 | "@auth0/auth0-spa-js": "^2.0.2"
1448 | }
1449 | },
1450 | "@auth0/auth0-spa-js": {
1451 | "version": "2.0.2",
1452 | "resolved": "https://registry.npmjs.org/@auth0/auth0-spa-js/-/auth0-spa-js-2.0.2.tgz",
1453 | "integrity": "sha512-sxK9Lb6gXGImqjmWBfndA/OSNY4YLPTPwJEVuitXIOZ1p3EoqHM4zjIHvcdiYIaVo+cUfEf3l0bf8UA7Xi4tjg=="
1454 | },
1455 | "@babel/code-frame": {
1456 | "version": "7.18.6",
1457 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
1458 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
1459 | "dev": true,
1460 | "requires": {
1461 | "@babel/highlight": "^7.18.6"
1462 | }
1463 | },
1464 | "@babel/compat-data": {
1465 | "version": "7.20.10",
1466 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz",
1467 | "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==",
1468 | "dev": true
1469 | },
1470 | "@babel/core": {
1471 | "version": "7.20.12",
1472 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz",
1473 | "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==",
1474 | "dev": true,
1475 | "requires": {
1476 | "@ampproject/remapping": "^2.1.0",
1477 | "@babel/code-frame": "^7.18.6",
1478 | "@babel/generator": "^7.20.7",
1479 | "@babel/helper-compilation-targets": "^7.20.7",
1480 | "@babel/helper-module-transforms": "^7.20.11",
1481 | "@babel/helpers": "^7.20.7",
1482 | "@babel/parser": "^7.20.7",
1483 | "@babel/template": "^7.20.7",
1484 | "@babel/traverse": "^7.20.12",
1485 | "@babel/types": "^7.20.7",
1486 | "convert-source-map": "^1.7.0",
1487 | "debug": "^4.1.0",
1488 | "gensync": "^1.0.0-beta.2",
1489 | "json5": "^2.2.2",
1490 | "semver": "^6.3.0"
1491 | }
1492 | },
1493 | "@babel/generator": {
1494 | "version": "7.20.7",
1495 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz",
1496 | "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==",
1497 | "dev": true,
1498 | "requires": {
1499 | "@babel/types": "^7.20.7",
1500 | "@jridgewell/gen-mapping": "^0.3.2",
1501 | "jsesc": "^2.5.1"
1502 | },
1503 | "dependencies": {
1504 | "@jridgewell/gen-mapping": {
1505 | "version": "0.3.2",
1506 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
1507 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
1508 | "dev": true,
1509 | "requires": {
1510 | "@jridgewell/set-array": "^1.0.1",
1511 | "@jridgewell/sourcemap-codec": "^1.4.10",
1512 | "@jridgewell/trace-mapping": "^0.3.9"
1513 | }
1514 | }
1515 | }
1516 | },
1517 | "@babel/helper-compilation-targets": {
1518 | "version": "7.20.7",
1519 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
1520 | "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
1521 | "dev": true,
1522 | "requires": {
1523 | "@babel/compat-data": "^7.20.5",
1524 | "@babel/helper-validator-option": "^7.18.6",
1525 | "browserslist": "^4.21.3",
1526 | "lru-cache": "^5.1.1",
1527 | "semver": "^6.3.0"
1528 | }
1529 | },
1530 | "@babel/helper-environment-visitor": {
1531 | "version": "7.18.9",
1532 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
1533 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
1534 | "dev": true
1535 | },
1536 | "@babel/helper-function-name": {
1537 | "version": "7.19.0",
1538 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
1539 | "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
1540 | "dev": true,
1541 | "requires": {
1542 | "@babel/template": "^7.18.10",
1543 | "@babel/types": "^7.19.0"
1544 | }
1545 | },
1546 | "@babel/helper-hoist-variables": {
1547 | "version": "7.18.6",
1548 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
1549 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
1550 | "dev": true,
1551 | "requires": {
1552 | "@babel/types": "^7.18.6"
1553 | }
1554 | },
1555 | "@babel/helper-module-imports": {
1556 | "version": "7.18.6",
1557 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
1558 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
1559 | "dev": true,
1560 | "requires": {
1561 | "@babel/types": "^7.18.6"
1562 | }
1563 | },
1564 | "@babel/helper-module-transforms": {
1565 | "version": "7.20.11",
1566 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
1567 | "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
1568 | "dev": true,
1569 | "requires": {
1570 | "@babel/helper-environment-visitor": "^7.18.9",
1571 | "@babel/helper-module-imports": "^7.18.6",
1572 | "@babel/helper-simple-access": "^7.20.2",
1573 | "@babel/helper-split-export-declaration": "^7.18.6",
1574 | "@babel/helper-validator-identifier": "^7.19.1",
1575 | "@babel/template": "^7.20.7",
1576 | "@babel/traverse": "^7.20.10",
1577 | "@babel/types": "^7.20.7"
1578 | }
1579 | },
1580 | "@babel/helper-plugin-utils": {
1581 | "version": "7.20.2",
1582 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
1583 | "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
1584 | "dev": true
1585 | },
1586 | "@babel/helper-simple-access": {
1587 | "version": "7.20.2",
1588 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
1589 | "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
1590 | "dev": true,
1591 | "requires": {
1592 | "@babel/types": "^7.20.2"
1593 | }
1594 | },
1595 | "@babel/helper-split-export-declaration": {
1596 | "version": "7.18.6",
1597 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
1598 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
1599 | "dev": true,
1600 | "requires": {
1601 | "@babel/types": "^7.18.6"
1602 | }
1603 | },
1604 | "@babel/helper-string-parser": {
1605 | "version": "7.19.4",
1606 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
1607 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
1608 | "dev": true
1609 | },
1610 | "@babel/helper-validator-identifier": {
1611 | "version": "7.19.1",
1612 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
1613 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
1614 | "dev": true
1615 | },
1616 | "@babel/helper-validator-option": {
1617 | "version": "7.18.6",
1618 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
1619 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
1620 | "dev": true
1621 | },
1622 | "@babel/helpers": {
1623 | "version": "7.20.7",
1624 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz",
1625 | "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==",
1626 | "dev": true,
1627 | "requires": {
1628 | "@babel/template": "^7.20.7",
1629 | "@babel/traverse": "^7.20.7",
1630 | "@babel/types": "^7.20.7"
1631 | }
1632 | },
1633 | "@babel/highlight": {
1634 | "version": "7.18.6",
1635 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
1636 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
1637 | "dev": true,
1638 | "requires": {
1639 | "@babel/helper-validator-identifier": "^7.18.6",
1640 | "chalk": "^2.0.0",
1641 | "js-tokens": "^4.0.0"
1642 | }
1643 | },
1644 | "@babel/parser": {
1645 | "version": "7.20.7",
1646 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
1647 | "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==",
1648 | "dev": true
1649 | },
1650 | "@babel/plugin-transform-react-jsx-self": {
1651 | "version": "7.18.6",
1652 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
1653 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
1654 | "dev": true,
1655 | "requires": {
1656 | "@babel/helper-plugin-utils": "^7.18.6"
1657 | }
1658 | },
1659 | "@babel/plugin-transform-react-jsx-source": {
1660 | "version": "7.19.6",
1661 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz",
1662 | "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==",
1663 | "dev": true,
1664 | "requires": {
1665 | "@babel/helper-plugin-utils": "^7.19.0"
1666 | }
1667 | },
1668 | "@babel/template": {
1669 | "version": "7.20.7",
1670 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
1671 | "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
1672 | "dev": true,
1673 | "requires": {
1674 | "@babel/code-frame": "^7.18.6",
1675 | "@babel/parser": "^7.20.7",
1676 | "@babel/types": "^7.20.7"
1677 | }
1678 | },
1679 | "@babel/traverse": {
1680 | "version": "7.20.12",
1681 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz",
1682 | "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==",
1683 | "dev": true,
1684 | "requires": {
1685 | "@babel/code-frame": "^7.18.6",
1686 | "@babel/generator": "^7.20.7",
1687 | "@babel/helper-environment-visitor": "^7.18.9",
1688 | "@babel/helper-function-name": "^7.19.0",
1689 | "@babel/helper-hoist-variables": "^7.18.6",
1690 | "@babel/helper-split-export-declaration": "^7.18.6",
1691 | "@babel/parser": "^7.20.7",
1692 | "@babel/types": "^7.20.7",
1693 | "debug": "^4.1.0",
1694 | "globals": "^11.1.0"
1695 | }
1696 | },
1697 | "@babel/types": {
1698 | "version": "7.20.7",
1699 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
1700 | "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
1701 | "dev": true,
1702 | "requires": {
1703 | "@babel/helper-string-parser": "^7.19.4",
1704 | "@babel/helper-validator-identifier": "^7.19.1",
1705 | "to-fast-properties": "^2.0.0"
1706 | }
1707 | },
1708 | "@esbuild/android-arm": {
1709 | "version": "0.16.17",
1710 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
1711 | "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
1712 | "dev": true,
1713 | "optional": true
1714 | },
1715 | "@esbuild/android-arm64": {
1716 | "version": "0.16.17",
1717 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
1718 | "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
1719 | "dev": true,
1720 | "optional": true
1721 | },
1722 | "@esbuild/android-x64": {
1723 | "version": "0.16.17",
1724 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
1725 | "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
1726 | "dev": true,
1727 | "optional": true
1728 | },
1729 | "@esbuild/darwin-arm64": {
1730 | "version": "0.16.17",
1731 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
1732 | "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
1733 | "dev": true,
1734 | "optional": true
1735 | },
1736 | "@esbuild/darwin-x64": {
1737 | "version": "0.16.17",
1738 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
1739 | "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
1740 | "dev": true,
1741 | "optional": true
1742 | },
1743 | "@esbuild/freebsd-arm64": {
1744 | "version": "0.16.17",
1745 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
1746 | "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
1747 | "dev": true,
1748 | "optional": true
1749 | },
1750 | "@esbuild/freebsd-x64": {
1751 | "version": "0.16.17",
1752 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
1753 | "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
1754 | "dev": true,
1755 | "optional": true
1756 | },
1757 | "@esbuild/linux-arm": {
1758 | "version": "0.16.17",
1759 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
1760 | "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
1761 | "dev": true,
1762 | "optional": true
1763 | },
1764 | "@esbuild/linux-arm64": {
1765 | "version": "0.16.17",
1766 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
1767 | "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
1768 | "dev": true,
1769 | "optional": true
1770 | },
1771 | "@esbuild/linux-ia32": {
1772 | "version": "0.16.17",
1773 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
1774 | "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
1775 | "dev": true,
1776 | "optional": true
1777 | },
1778 | "@esbuild/linux-loong64": {
1779 | "version": "0.16.17",
1780 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
1781 | "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
1782 | "dev": true,
1783 | "optional": true
1784 | },
1785 | "@esbuild/linux-mips64el": {
1786 | "version": "0.16.17",
1787 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
1788 | "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
1789 | "dev": true,
1790 | "optional": true
1791 | },
1792 | "@esbuild/linux-ppc64": {
1793 | "version": "0.16.17",
1794 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
1795 | "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
1796 | "dev": true,
1797 | "optional": true
1798 | },
1799 | "@esbuild/linux-riscv64": {
1800 | "version": "0.16.17",
1801 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
1802 | "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
1803 | "dev": true,
1804 | "optional": true
1805 | },
1806 | "@esbuild/linux-s390x": {
1807 | "version": "0.16.17",
1808 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
1809 | "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
1810 | "dev": true,
1811 | "optional": true
1812 | },
1813 | "@esbuild/linux-x64": {
1814 | "version": "0.16.17",
1815 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
1816 | "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
1817 | "dev": true,
1818 | "optional": true
1819 | },
1820 | "@esbuild/netbsd-x64": {
1821 | "version": "0.16.17",
1822 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
1823 | "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
1824 | "dev": true,
1825 | "optional": true
1826 | },
1827 | "@esbuild/openbsd-x64": {
1828 | "version": "0.16.17",
1829 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
1830 | "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
1831 | "dev": true,
1832 | "optional": true
1833 | },
1834 | "@esbuild/sunos-x64": {
1835 | "version": "0.16.17",
1836 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
1837 | "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
1838 | "dev": true,
1839 | "optional": true
1840 | },
1841 | "@esbuild/win32-arm64": {
1842 | "version": "0.16.17",
1843 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
1844 | "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
1845 | "dev": true,
1846 | "optional": true
1847 | },
1848 | "@esbuild/win32-ia32": {
1849 | "version": "0.16.17",
1850 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
1851 | "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
1852 | "dev": true,
1853 | "optional": true
1854 | },
1855 | "@esbuild/win32-x64": {
1856 | "version": "0.16.17",
1857 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
1858 | "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
1859 | "dev": true,
1860 | "optional": true
1861 | },
1862 | "@jridgewell/gen-mapping": {
1863 | "version": "0.1.1",
1864 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
1865 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
1866 | "dev": true,
1867 | "requires": {
1868 | "@jridgewell/set-array": "^1.0.0",
1869 | "@jridgewell/sourcemap-codec": "^1.4.10"
1870 | }
1871 | },
1872 | "@jridgewell/resolve-uri": {
1873 | "version": "3.1.0",
1874 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
1875 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
1876 | "dev": true
1877 | },
1878 | "@jridgewell/set-array": {
1879 | "version": "1.1.2",
1880 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
1881 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
1882 | "dev": true
1883 | },
1884 | "@jridgewell/sourcemap-codec": {
1885 | "version": "1.4.14",
1886 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
1887 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
1888 | "dev": true
1889 | },
1890 | "@jridgewell/trace-mapping": {
1891 | "version": "0.3.17",
1892 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
1893 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
1894 | "dev": true,
1895 | "requires": {
1896 | "@jridgewell/resolve-uri": "3.1.0",
1897 | "@jridgewell/sourcemap-codec": "1.4.14"
1898 | }
1899 | },
1900 | "@types/prop-types": {
1901 | "version": "15.7.5",
1902 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
1903 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
1904 | "dev": true
1905 | },
1906 | "@types/react": {
1907 | "version": "18.0.27",
1908 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz",
1909 | "integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==",
1910 | "dev": true,
1911 | "requires": {
1912 | "@types/prop-types": "*",
1913 | "@types/scheduler": "*",
1914 | "csstype": "^3.0.2"
1915 | }
1916 | },
1917 | "@types/react-dom": {
1918 | "version": "18.0.10",
1919 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz",
1920 | "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==",
1921 | "dev": true,
1922 | "requires": {
1923 | "@types/react": "*"
1924 | }
1925 | },
1926 | "@types/scheduler": {
1927 | "version": "0.16.2",
1928 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
1929 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
1930 | "dev": true
1931 | },
1932 | "@vitejs/plugin-react": {
1933 | "version": "3.0.1",
1934 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.1.tgz",
1935 | "integrity": "sha512-mx+QvYwIbbpOIJw+hypjnW1lAbKDHtWK5ibkF/V1/oMBu8HU/chb+SnqJDAsLq1+7rGqjktCEomMTM5KShzUKQ==",
1936 | "dev": true,
1937 | "requires": {
1938 | "@babel/core": "^7.20.7",
1939 | "@babel/plugin-transform-react-jsx-self": "^7.18.6",
1940 | "@babel/plugin-transform-react-jsx-source": "^7.19.6",
1941 | "magic-string": "^0.27.0",
1942 | "react-refresh": "^0.14.0"
1943 | }
1944 | },
1945 | "ansi-styles": {
1946 | "version": "3.2.1",
1947 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1948 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1949 | "dev": true,
1950 | "requires": {
1951 | "color-convert": "^1.9.0"
1952 | }
1953 | },
1954 | "browserslist": {
1955 | "version": "4.21.4",
1956 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
1957 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
1958 | "dev": true,
1959 | "requires": {
1960 | "caniuse-lite": "^1.0.30001400",
1961 | "electron-to-chromium": "^1.4.251",
1962 | "node-releases": "^2.0.6",
1963 | "update-browserslist-db": "^1.0.9"
1964 | }
1965 | },
1966 | "caniuse-lite": {
1967 | "version": "1.0.30001446",
1968 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001446.tgz",
1969 | "integrity": "sha512-fEoga4PrImGcwUUGEol/PoFCSBnSkA9drgdkxXkJLsUBOnJ8rs3zDv6ApqYXGQFOyMPsjh79naWhF4DAxbF8rw==",
1970 | "dev": true
1971 | },
1972 | "chalk": {
1973 | "version": "2.4.2",
1974 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1975 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1976 | "dev": true,
1977 | "requires": {
1978 | "ansi-styles": "^3.2.1",
1979 | "escape-string-regexp": "^1.0.5",
1980 | "supports-color": "^5.3.0"
1981 | }
1982 | },
1983 | "color-convert": {
1984 | "version": "1.9.3",
1985 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1986 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1987 | "dev": true,
1988 | "requires": {
1989 | "color-name": "1.1.3"
1990 | }
1991 | },
1992 | "color-name": {
1993 | "version": "1.1.3",
1994 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1995 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
1996 | "dev": true
1997 | },
1998 | "convert-source-map": {
1999 | "version": "1.9.0",
2000 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
2001 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
2002 | "dev": true
2003 | },
2004 | "csstype": {
2005 | "version": "3.1.1",
2006 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
2007 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
2008 | "dev": true
2009 | },
2010 | "debug": {
2011 | "version": "4.3.4",
2012 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
2013 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
2014 | "dev": true,
2015 | "requires": {
2016 | "ms": "2.1.2"
2017 | }
2018 | },
2019 | "electron-to-chromium": {
2020 | "version": "1.4.284",
2021 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
2022 | "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
2023 | "dev": true
2024 | },
2025 | "esbuild": {
2026 | "version": "0.16.17",
2027 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
2028 | "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
2029 | "dev": true,
2030 | "requires": {
2031 | "@esbuild/android-arm": "0.16.17",
2032 | "@esbuild/android-arm64": "0.16.17",
2033 | "@esbuild/android-x64": "0.16.17",
2034 | "@esbuild/darwin-arm64": "0.16.17",
2035 | "@esbuild/darwin-x64": "0.16.17",
2036 | "@esbuild/freebsd-arm64": "0.16.17",
2037 | "@esbuild/freebsd-x64": "0.16.17",
2038 | "@esbuild/linux-arm": "0.16.17",
2039 | "@esbuild/linux-arm64": "0.16.17",
2040 | "@esbuild/linux-ia32": "0.16.17",
2041 | "@esbuild/linux-loong64": "0.16.17",
2042 | "@esbuild/linux-mips64el": "0.16.17",
2043 | "@esbuild/linux-ppc64": "0.16.17",
2044 | "@esbuild/linux-riscv64": "0.16.17",
2045 | "@esbuild/linux-s390x": "0.16.17",
2046 | "@esbuild/linux-x64": "0.16.17",
2047 | "@esbuild/netbsd-x64": "0.16.17",
2048 | "@esbuild/openbsd-x64": "0.16.17",
2049 | "@esbuild/sunos-x64": "0.16.17",
2050 | "@esbuild/win32-arm64": "0.16.17",
2051 | "@esbuild/win32-ia32": "0.16.17",
2052 | "@esbuild/win32-x64": "0.16.17"
2053 | }
2054 | },
2055 | "escalade": {
2056 | "version": "3.1.1",
2057 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
2058 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
2059 | "dev": true
2060 | },
2061 | "escape-string-regexp": {
2062 | "version": "1.0.5",
2063 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2064 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
2065 | "dev": true
2066 | },
2067 | "fsevents": {
2068 | "version": "2.3.2",
2069 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
2070 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
2071 | "dev": true,
2072 | "optional": true
2073 | },
2074 | "function-bind": {
2075 | "version": "1.1.1",
2076 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
2077 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
2078 | "dev": true
2079 | },
2080 | "gensync": {
2081 | "version": "1.0.0-beta.2",
2082 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
2083 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
2084 | "dev": true
2085 | },
2086 | "globals": {
2087 | "version": "11.12.0",
2088 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
2089 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
2090 | "dev": true
2091 | },
2092 | "has": {
2093 | "version": "1.0.3",
2094 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
2095 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
2096 | "dev": true,
2097 | "requires": {
2098 | "function-bind": "^1.1.1"
2099 | }
2100 | },
2101 | "has-flag": {
2102 | "version": "3.0.0",
2103 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2104 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
2105 | "dev": true
2106 | },
2107 | "is-core-module": {
2108 | "version": "2.11.0",
2109 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
2110 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
2111 | "dev": true,
2112 | "requires": {
2113 | "has": "^1.0.3"
2114 | }
2115 | },
2116 | "js-tokens": {
2117 | "version": "4.0.0",
2118 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2119 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
2120 | },
2121 | "jsesc": {
2122 | "version": "2.5.2",
2123 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
2124 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
2125 | "dev": true
2126 | },
2127 | "json5": {
2128 | "version": "2.2.3",
2129 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
2130 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
2131 | "dev": true
2132 | },
2133 | "loose-envify": {
2134 | "version": "1.4.0",
2135 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2136 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2137 | "requires": {
2138 | "js-tokens": "^3.0.0 || ^4.0.0"
2139 | }
2140 | },
2141 | "lru-cache": {
2142 | "version": "5.1.1",
2143 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
2144 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
2145 | "dev": true,
2146 | "requires": {
2147 | "yallist": "^3.0.2"
2148 | }
2149 | },
2150 | "magic-string": {
2151 | "version": "0.27.0",
2152 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
2153 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
2154 | "dev": true,
2155 | "requires": {
2156 | "@jridgewell/sourcemap-codec": "^1.4.13"
2157 | }
2158 | },
2159 | "ms": {
2160 | "version": "2.1.2",
2161 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2162 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
2163 | "dev": true
2164 | },
2165 | "nanoid": {
2166 | "version": "3.3.4",
2167 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
2168 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
2169 | "dev": true
2170 | },
2171 | "node-releases": {
2172 | "version": "2.0.8",
2173 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
2174 | "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==",
2175 | "dev": true
2176 | },
2177 | "path-parse": {
2178 | "version": "1.0.7",
2179 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2180 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2181 | "dev": true
2182 | },
2183 | "picocolors": {
2184 | "version": "1.0.0",
2185 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
2186 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
2187 | "dev": true
2188 | },
2189 | "postcss": {
2190 | "version": "8.4.21",
2191 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
2192 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
2193 | "dev": true,
2194 | "requires": {
2195 | "nanoid": "^3.3.4",
2196 | "picocolors": "^1.0.0",
2197 | "source-map-js": "^1.0.2"
2198 | }
2199 | },
2200 | "react": {
2201 | "version": "18.2.0",
2202 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
2203 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
2204 | "requires": {
2205 | "loose-envify": "^1.1.0"
2206 | }
2207 | },
2208 | "react-dom": {
2209 | "version": "18.2.0",
2210 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
2211 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
2212 | "requires": {
2213 | "loose-envify": "^1.1.0",
2214 | "scheduler": "^0.23.0"
2215 | }
2216 | },
2217 | "react-refresh": {
2218 | "version": "0.14.0",
2219 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
2220 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
2221 | "dev": true
2222 | },
2223 | "resolve": {
2224 | "version": "1.22.1",
2225 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
2226 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
2227 | "dev": true,
2228 | "requires": {
2229 | "is-core-module": "^2.9.0",
2230 | "path-parse": "^1.0.7",
2231 | "supports-preserve-symlinks-flag": "^1.0.0"
2232 | }
2233 | },
2234 | "rollup": {
2235 | "version": "3.10.0",
2236 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.0.tgz",
2237 | "integrity": "sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==",
2238 | "dev": true,
2239 | "requires": {
2240 | "fsevents": "~2.3.2"
2241 | }
2242 | },
2243 | "scheduler": {
2244 | "version": "0.23.0",
2245 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
2246 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
2247 | "requires": {
2248 | "loose-envify": "^1.1.0"
2249 | }
2250 | },
2251 | "semver": {
2252 | "version": "6.3.0",
2253 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2254 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2255 | "dev": true
2256 | },
2257 | "source-map-js": {
2258 | "version": "1.0.2",
2259 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
2260 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
2261 | "dev": true
2262 | },
2263 | "supports-color": {
2264 | "version": "5.5.0",
2265 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2266 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2267 | "dev": true,
2268 | "requires": {
2269 | "has-flag": "^3.0.0"
2270 | }
2271 | },
2272 | "supports-preserve-symlinks-flag": {
2273 | "version": "1.0.0",
2274 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2275 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2276 | "dev": true
2277 | },
2278 | "to-fast-properties": {
2279 | "version": "2.0.0",
2280 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
2281 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
2282 | "dev": true
2283 | },
2284 | "typescript": {
2285 | "version": "4.9.4",
2286 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
2287 | "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
2288 | "dev": true
2289 | },
2290 | "update-browserslist-db": {
2291 | "version": "1.0.10",
2292 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
2293 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
2294 | "dev": true,
2295 | "requires": {
2296 | "escalade": "^3.1.1",
2297 | "picocolors": "^1.0.0"
2298 | }
2299 | },
2300 | "vite": {
2301 | "version": "4.0.4",
2302 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz",
2303 | "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==",
2304 | "dev": true,
2305 | "requires": {
2306 | "esbuild": "^0.16.3",
2307 | "fsevents": "~2.3.2",
2308 | "postcss": "^8.4.20",
2309 | "resolve": "^1.22.1",
2310 | "rollup": "^3.7.0"
2311 | }
2312 | },
2313 | "yallist": {
2314 | "version": "3.1.1",
2315 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
2316 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
2317 | "dev": true
2318 | }
2319 | }
2320 | }
2321 |
--------------------------------------------------------------------------------
/web/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "web",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc && vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "@auth0/auth0-react": "^2.0.0",
13 | "react": "^18.2.0",
14 | "react-dom": "^18.2.0"
15 | },
16 | "devDependencies": {
17 | "@types/react": "^18.0.26",
18 | "@types/react-dom": "^18.0.9",
19 | "@vitejs/plugin-react": "^3.0.0",
20 | "typescript": "^4.9.3",
21 | "vite": "^4.0.0"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/web/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/web/src/App.css:
--------------------------------------------------------------------------------
1 | #root {
2 | max-width: 1280px;
3 | margin: 0 auto;
4 | padding: 2rem;
5 | text-align: center;
6 | }
7 |
8 | .logo {
9 | height: 6em;
10 | padding: 1.5em;
11 | will-change: filter;
12 | }
13 | .logo:hover {
14 | filter: drop-shadow(0 0 2em #646cffaa);
15 | }
16 | .logo.react:hover {
17 | filter: drop-shadow(0 0 2em #61dafbaa);
18 | }
19 |
20 | @keyframes logo-spin {
21 | from {
22 | transform: rotate(0deg);
23 | }
24 | to {
25 | transform: rotate(360deg);
26 | }
27 | }
28 |
29 | @media (prefers-reduced-motion: no-preference) {
30 | a:nth-of-type(2) .logo {
31 | animation: logo-spin infinite 20s linear;
32 | }
33 | }
34 |
35 | .card {
36 | padding: 2em;
37 | }
38 |
39 | .read-the-docs {
40 | color: #888;
41 | }
42 |
--------------------------------------------------------------------------------
/web/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { useState } from "react";
2 | import reactLogo from "./assets/react.svg";
3 | import "./App.css";
4 | import { useAuth0 } from "@auth0/auth0-react";
5 |
6 | function App() {
7 | const [count, setCount] = useState(0);
8 |
9 | const { loginWithRedirect, isAuthenticated, logout, getAccessTokenSilently } =
10 | useAuth0();
11 |
12 | const showApiCall = () => {
13 | getAccessTokenSilently().then((token) => {
14 | fetch("http://localhost:8080/user/me", {
15 | headers: {
16 | Authorization: `Bearer ${token}`,
17 | },
18 | })
19 | .then((response) => response.json())
20 | .then((data) => alert(data.message));
21 | });
22 | };
23 |
24 | return (
25 |
26 |
34 |
Vite + React
35 |
36 |
39 |
40 | Edit src/App.tsx
and save to test HMR
41 |
42 |
43 |
44 | Click on the Vite and React logos to learn more
45 |
46 |
47 | {isAuthenticated ? (
48 | <>
49 |
56 |
57 | >
58 | ) : (
59 |
60 | )}
61 |
62 | );
63 | }
64 |
65 | export default App;
66 |
--------------------------------------------------------------------------------
/web/src/assets/react.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/web/src/index.css:
--------------------------------------------------------------------------------
1 | :root {
2 | font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
3 | font-size: 16px;
4 | line-height: 24px;
5 | font-weight: 400;
6 |
7 | color-scheme: light dark;
8 | color: rgba(255, 255, 255, 0.87);
9 | background-color: #242424;
10 |
11 | font-synthesis: none;
12 | text-rendering: optimizeLegibility;
13 | -webkit-font-smoothing: antialiased;
14 | -moz-osx-font-smoothing: grayscale;
15 | -webkit-text-size-adjust: 100%;
16 | }
17 |
18 | a {
19 | font-weight: 500;
20 | color: #646cff;
21 | text-decoration: inherit;
22 | }
23 | a:hover {
24 | color: #535bf2;
25 | }
26 |
27 | body {
28 | margin: 0;
29 | display: flex;
30 | place-items: center;
31 | min-width: 320px;
32 | min-height: 100vh;
33 | }
34 |
35 | h1 {
36 | font-size: 3.2em;
37 | line-height: 1.1;
38 | }
39 |
40 | button {
41 | border-radius: 8px;
42 | border: 1px solid transparent;
43 | padding: 0.6em 1.2em;
44 | font-size: 1em;
45 | font-weight: 500;
46 | font-family: inherit;
47 | background-color: #1a1a1a;
48 | cursor: pointer;
49 | transition: border-color 0.25s;
50 | }
51 | button:hover {
52 | border-color: #646cff;
53 | }
54 | button:focus,
55 | button:focus-visible {
56 | outline: 4px auto -webkit-focus-ring-color;
57 | }
58 |
59 | @media (prefers-color-scheme: light) {
60 | :root {
61 | color: #213547;
62 | background-color: #ffffff;
63 | }
64 | a:hover {
65 | color: #747bff;
66 | }
67 | button {
68 | background-color: #f9f9f9;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/web/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { Auth0Provider } from "@auth0/auth0-react";
2 | import React from "react";
3 | import ReactDOM from "react-dom/client";
4 | import App from "./App";
5 | import "./index.css";
6 |
7 | ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
8 |
16 |
17 |
18 |
19 |
20 | );
21 |
--------------------------------------------------------------------------------
/web/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/web/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": true,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx"
18 | },
19 | "include": ["src"],
20 | "references": [{ "path": "./tsconfig.node.json" }]
21 | }
22 |
--------------------------------------------------------------------------------
/web/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "module": "ESNext",
5 | "moduleResolution": "Node",
6 | "allowSyntheticDefaultImports": true
7 | },
8 | "include": ["vite.config.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/web/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | })
8 |
--------------------------------------------------------------------------------